作者 Karson

修复前台显示关键配置的BUG

修复打包压缩后的JS未更新的BUG
@@ -51,9 +51,11 @@ class Frontend extends Controller @@ -51,9 +51,11 @@ class Frontend extends Controller
51 // 语言检测 51 // 语言检测
52 $lang = Lang::detect(); 52 $lang = Lang::detect();
53 53
  54 + $site = Config::get("site");
  55 +
54 // 配置信息 56 // 配置信息
55 $config = [ 57 $config = [
56 - 'site' => Config::get("site"), 58 + 'site' => array_intersect_key($site, array_flip(['name', 'cdnurl', 'version', 'timezone', 'languages'])),
57 'upload' => Configvalue::upload(), 59 'upload' => Configvalue::upload(),
58 'modulename' => $modulename, 60 'modulename' => $modulename,
59 'controllername' => $controllername, 61 'controllername' => $controllername,
@@ -63,7 +65,7 @@ class Frontend extends Controller @@ -63,7 +65,7 @@ class Frontend extends Controller
63 'language' => $lang 65 'language' => $lang
64 ]; 66 ];
65 $this->loadlang($controllername); 67 $this->loadlang($controllername);
66 - $this->assign('site', Config::get("site")); 68 + $this->assign('site', $site);
67 $this->assign('config', $config); 69 $this->assign('config', $config);
68 } 70 }
69 71
@@ -6530,15 +6530,10 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f @@ -6530,15 +6530,10 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f
6530 }); 6530 });
6531 }, 6531 },
6532 open: function (url, title, options) { 6532 open: function (url, title, options) {
6533 - title = title == undefined ? "" : title; 6533 + title = title ? title : "";
6534 url = Backend.api.fixurl(url); 6534 url = Backend.api.fixurl(url);
6535 url = url + (url.indexOf("?") > -1 ? "&" : "?") + "dialog=1"; 6535 url = url + (url.indexOf("?") > -1 ? "&" : "?") + "dialog=1";
6536 - var area;  
6537 - if ($(window).width() < 800) {  
6538 - area = ["95%", "95%"];  
6539 - } else {  
6540 - area = ['800px', '600px'];  
6541 - } 6536 + var area = [$(window).width() > 800 ? '800px' : '95%', $(window).height() > 600 ? '600px' : '95%'];
6542 Backend.api.layer.open($.extend({ 6537 Backend.api.layer.open($.extend({
6543 type: 2, 6538 type: 2,
6544 title: title, 6539 title: title,
@@ -6599,7 +6594,7 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f @@ -6599,7 +6594,7 @@ define('backend',['jquery', 'bootstrap', 'toastr', 'layer', 'lang', 'moment'], f
6599 var btnHeight = layero.find('.layui-layer-btn').outerHeight() || 0; 6594 var btnHeight = layero.find('.layui-layer-btn').outerHeight() || 0;
6600 6595
6601 var oldheg = heg + titHeight + btnHeight; 6596 var oldheg = heg + titHeight + btnHeight;
6602 - var maxheg = 600; 6597 + var maxheg = $(window).height() < 600 ? $(window).height() : 600;
6603 if (frame.outerWidth() < 768 || that.area[0].indexOf("%") > -1) { 6598 if (frame.outerWidth() < 768 || that.area[0].indexOf("%") > -1) {
6604 maxheg = $(window).height(); 6599 maxheg = $(window).height();
6605 } 6600 }
@@ -7313,14 +7308,23 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length) @@ -7313,14 +7308,23 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
7313 htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, sprintf('<option value="">%s</option>', that.options.formatCommonChoose()))); 7308 htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, sprintf('<option value="">%s</option>', that.options.formatCommonChoose())));
7314 (function (vObjCol, that) { 7309 (function (vObjCol, that) {
7315 $.when(vObjCol.searchList).done(function (ret) { 7310 $.when(vObjCol.searchList).done(function (ret) {
  7311 +
  7312 + var isArray = false;
7316 if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) { 7313 if (ret.data && ret.data.searchlist && $.isArray(ret.data.searchlist)) {
7317 - var optionList = []; 7314 + var resultlist = {};
7318 $.each(ret.data.searchlist, function (key, value) { 7315 $.each(ret.data.searchlist, function (key, value) {
7319 - var isSelect = value.id === vObjCol.defaultValue ? 'selected' : '';  
7320 - optionList.push(sprintf("<option value='" + value.id + "' %s>" + value.name + "</option>", isSelect)); 7316 + resultlist[value.id] = value.name;
7321 }); 7317 });
7322 - $("form.form-commonsearch select[name='" + vObjCol.field + "']", that.$container).append(optionList.join('')); 7318 + } else if (ret.constructor === Array || ret.constructor === Object) {
  7319 + var resultlist = ret;
  7320 + isArray = ret.constructor === Array ? true : isArray;
7323 } 7321 }
  7322 + var optionList = [];
  7323 + $.each(resultlist, function (key, value) {
  7324 + var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
  7325 + optionList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
  7326 + });
  7327 + $("form.form-commonsearch select[name='" + vObjCol.field + "']", that.$container).append(optionList.join(''));
7324 }); 7328 });
7325 })(vObjCol, that); 7329 })(vObjCol, that);
7326 } else if (typeof vObjCol.searchList == 'function') { 7330 } else if (typeof vObjCol.searchList == 'function') {
@@ -7330,7 +7334,7 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length) @@ -7330,7 +7334,7 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
7330 var searchList = []; 7334 var searchList = [];
7331 searchList.push(sprintf('<option value="">%s</option>', that.options.formatCommonChoose())); 7335 searchList.push(sprintf('<option value="">%s</option>', that.options.formatCommonChoose()));
7332 $.each(vObjCol.searchList, function (key, value) { 7336 $.each(vObjCol.searchList, function (key, value) {
7333 - var isSelect = (isArray ? value : key) === vObjCol.defaultValue ? 'selected' : ''; 7337 + var isSelect = (isArray ? value : key) == vObjCol.defaultValue ? 'selected' : '';
7334 searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect)); 7338 searchList.push(sprintf("<option value='" + (isArray ? value : key) + "' %s>" + value + "</option>", isSelect));
7335 }); 7339 });
7336 htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, searchList.join(''))); 7340 htmlForm.push(sprintf('<select class="form-control" name="%s" %s>%s</select>', vObjCol.field, style, searchList.join('')));
@@ -7600,13 +7604,26 @@ define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) { @@ -7600,13 +7604,26 @@ define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) {
7600 7604
7601 /*!art-template - Template Engine | http://aui.github.com/artTemplate/*/ 7605 /*!art-template - Template Engine | http://aui.github.com/artTemplate/*/
7602 !function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","&":"&#38;"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}(); 7606 !function(){function a(a){return a.replace(t,"").replace(u,",").replace(v,"").replace(w,"").replace(x,"").split(y)}function b(a){return"'"+a.replace(/('|\\)/g,"\\$1").replace(/\r/g,"\\r").replace(/\n/g,"\\n")+"'"}function c(c,d){function e(a){return m+=a.split(/\n/).length-1,k&&(a=a.replace(/\s+/g," ").replace(/<!--[\w\W]*?-->/g,"")),a&&(a=s[1]+b(a)+s[2]+"\n"),a}function f(b){var c=m;if(j?b=j(b,d):g&&(b=b.replace(/\n/g,function(){return m++,"$line="+m+";"})),0===b.indexOf("=")){var e=l&&!/^=[=#]/.test(b);if(b=b.replace(/^=[=#]?|[\s;]*$/g,""),e){var f=b.replace(/\s*\([^\)]+\)/,"");n[f]||/^(include|print)$/.test(f)||(b="$escape("+b+")")}else b="$string("+b+")";b=s[1]+b+s[2]}return g&&(b="$line="+c+";"+b),r(a(b),function(a){if(a&&!p[a]){var b;b="print"===a?u:"include"===a?v:n[a]?"$utils."+a:o[a]?"$helpers."+a:"$data."+a,w+=a+"="+b+",",p[a]=!0}}),b+"\n"}var g=d.debug,h=d.openTag,i=d.closeTag,j=d.parser,k=d.compress,l=d.escape,m=1,p={$data:1,$filename:1,$utils:1,$helpers:1,$out:1,$line:1},q="".trim,s=q?["$out='';","$out+=",";","$out"]:["$out=[];","$out.push(",");","$out.join('')"],t=q?"$out+=text;return $out;":"$out.push(text);",u="function(){var text=''.concat.apply('',arguments);"+t+"}",v="function(filename,data){data=data||$data;var text=$utils.$include(filename,data,$filename);"+t+"}",w="'use strict';var $utils=this,$helpers=$utils.$helpers,"+(g?"$line=0,":""),x=s[0],y="return new String("+s[3]+");";r(c.split(h),function(a){a=a.split(i);var b=a[0],c=a[1];1===a.length?x+=e(b):(x+=f(b),c&&(x+=e(c)))});var z=w+x+y;g&&(z="try{"+z+"}catch(e){throw {filename:$filename,name:'Render Error',message:e.message,line:$line,source:"+b(c)+".split(/\\n/)[$line-1].replace(/^\\s+/,'')};}");try{var A=new Function("$data","$filename",z);return A.prototype=n,A}catch(a){throw a.temp="function anonymous($data,$filename) {"+z+"}",a}}var d=function(a,b){return"string"==typeof b?q(b,{filename:a}):g(a,b)};d.version="3.0.0",d.config=function(a,b){e[a]=b};var e=d.defaults={openTag:"<%",closeTag:"%>",escape:!0,cache:!0,compress:!1,parser:null},f=d.cache={};d.render=function(a,b){return q(a)(b)};var g=d.renderFile=function(a,b){var c=d.get(a)||p({filename:a,name:"Render Error",message:"Template not found"});return b?c(b):c};d.get=function(a){var b;if(f[a])b=f[a];else if("object"==typeof document){var c=document.getElementById(a);if(c){var d=(c.value||c.innerHTML).replace(/^\s*|\s*$/g,"");b=q(d,{filename:a})}}return b};var h=function(a,b){return"string"!=typeof a&&(b=typeof a,"number"===b?a+="":a="function"===b?h(a.call(a)):""),a},i={"<":"&#60;",">":"&#62;",'"':"&#34;","'":"&#39;","&":"&#38;"},j=function(a){return i[a]},k=function(a){return h(a).replace(/&(?![\w#]+;)|[<>"']/g,j)},l=Array.isArray||function(a){return"[object Array]"==={}.toString.call(a)},m=function(a,b){var c,d;if(l(a))for(c=0,d=a.length;c<d;c++)b.call(a,a[c],c,a);else for(c in a)b.call(a,a[c],c)},n=d.utils={$helpers:{},$include:g,$string:h,$escape:k,$each:m};d.helper=function(a,b){o[a]=b};var o=d.helpers=n.$helpers;d.onerror=function(a){var b="Template Error\n\n";for(var c in a)b+="<"+c+">\n"+a[c]+"\n\n";"object"==typeof console&&console.error(b)};var p=function(a){return d.onerror(a),function(){return"{Template Error}"}},q=d.compile=function(a,b){function d(c){try{return new i(c,h)+""}catch(d){return b.debug?p(d)():(b.debug=!0,q(a,b)(c))}}b=b||{};for(var g in e)void 0===b[g]&&(b[g]=e[g]);var h=b.filename;try{var i=c(a,b)}catch(a){return a.filename=h||"anonymous",a.name="Syntax Error",p(a)}return d.prototype=i.prototype,d.toString=function(){return i.toString()},h&&b.cache&&(f[h]=d),d},r=n.$each,s="break,case,catch,continue,debugger,default,delete,do,else,false,finally,for,function,if,in,instanceof,new,null,return,switch,this,throw,true,try,typeof,var,void,while,with,abstract,boolean,byte,char,class,const,double,enum,export,extends,final,float,goto,implements,import,int,interface,long,native,package,private,protected,public,short,static,super,synchronized,throws,transient,volatile,arguments,let,yield,undefined",t=/\/\*[\w\W]*?\*\/|\/\/[^\n]*\n|\/\/[^\n]*$|"(?:[^"\\]|\\[\w\W])*"|'(?:[^'\\]|\\[\w\W])*'|\s*\.\s*[$\w\.]+/g,u=/[^\w$]+/g,v=new RegExp(["\\b"+s.replace(/,/g,"\\b|\\b")+"\\b"].join("|"),"g"),w=/^\d[^,]*|,\d[^,]*/g,x=/^,+|,+$/g,y=/^$|,+/;"object"==typeof exports&&"undefined"!=typeof module?module.exports=d:"function"==typeof define?define('template',[],function(){return d}):this.template=d}();
  7607 +/**
  7608 + * 将BootstrapTable的行使用自定义的模板来渲染
  7609 + *
  7610 + * @author: karson
  7611 + * @version: v0.0.1
  7612 + *
  7613 + * @update 2017-06-24 <http://github.com/karsonzhang/fastadmin>
  7614 + */
  7615 +
7603 !function ($) { 7616 !function ($) {
7604 'use strict'; 7617 'use strict';
7605 7618
7606 $.extend($.fn.bootstrapTable.defaults, { 7619 $.extend($.fn.bootstrapTable.defaults, {
  7620 + //是否启用模板渲染
7607 templateView: false, 7621 templateView: false,
  7622 + //数据格式化的模板ID或格式函数
7608 templateFormatter: "itemtpl", 7623 templateFormatter: "itemtpl",
  7624 + //添加的父类的class
7609 templateParentClass: "row row-flex", 7625 templateParentClass: "row row-flex",
  7626 + //向table添加的class
7610 templateTableClass: "table-template", 7627 templateTableClass: "table-template",
7611 7628
7612 }); 7629 });
@@ -7632,14 +7649,14 @@ define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) { @@ -7632,14 +7649,14 @@ define("bootstrap-table-commonsearch", ["bootstrap-table"], (function (global) {
7632 showFooter: !that.options.templateView ? $.fn.bootstrapTable.defaults.showFooter : false, 7649 showFooter: !that.options.templateView ? $.fn.bootstrapTable.defaults.showFooter : false,
7633 }); 7650 });
7634 $(that.$el).toggleClass(that.options.templateTableClass, that.options.templateView); 7651 $(that.$el).toggleClass(that.options.templateTableClass, that.options.templateView);
7635 - 7652 +
7636 _initBody.apply(this, Array.prototype.slice.apply(arguments)); 7653 _initBody.apply(this, Array.prototype.slice.apply(arguments));
7637 7654
7638 if (!that.options.templateView) { 7655 if (!that.options.templateView) {
7639 return; 7656 return;
7640 } else { 7657 } else {
7641 //由于Bootstrap是基于Table的,添加一个父类容器 7658 //由于Bootstrap是基于Table的,添加一个父类容器
7642 - $("> *", that.$body).wrapAll($("<div />").addClass(that.options.templateParentClass)); 7659 + $("> *:not(.no-records-found)", that.$body).wrapAll($("<div />").addClass(that.options.templateParentClass));
7643 } 7660 }
7644 }; 7661 };
7645 7662
@@ -7889,6 +7906,10 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap @@ -7889,6 +7906,10 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
7889 $(table).on("click", "input[data-id][name='checkbox']", function (e) { 7906 $(table).on("click", "input[data-id][name='checkbox']", function (e) {
7890 table.trigger('fa.event.check'); 7907 table.trigger('fa.event.check');
7891 }); 7908 });
  7909 + $(table).on("click", "[data-id].btn-change", function (e) {
  7910 + e.preventDefault();
  7911 + Table.api.multi($(this).data("action") ? $(this).data("action") : '', [$(this).data("id")], table, this);
  7912 + });
7892 $(table).on("click", "[data-id].btn-edit", function (e) { 7913 $(table).on("click", "[data-id].btn-edit", function (e) {
7893 e.preventDefault(); 7914 e.preventDefault();
7894 Backend.api.open(options.extend.edit_url + "/ids/" + $(this).data("id"), __('Edit')); 7915 Backend.api.open(options.extend.edit_url + "/ids/" + $(this).data("id"), __('Edit'));
@@ -7915,9 +7936,11 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap @@ -7915,9 +7936,11 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
7915 // 批量操作请求 7936 // 批量操作请求
7916 multi: function (action, ids, table, element) { 7937 multi: function (action, ids, table, element) {
7917 var options = table.bootstrapTable('getOptions'); 7938 var options = table.bootstrapTable('getOptions');
7918 - var url = action == "del" ? options.extend.del_url : options.extend.multi_url; 7939 + var data = element ? $(element).data() : {};
  7940 + var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url);
7919 url = url + "/ids/" + ($.isArray(ids) ? ids.join(",") : ids); 7941 url = url + "/ids/" + ($.isArray(ids) ? ids.join(",") : ids);
7920 - var options = {url: url, data: {action: action, ids: ids, params: element ? $(element).data("params") : ''}}; 7942 + var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : '';
  7943 + var options = {url: url, data: {action: action, ids: ids, params: params}};
7921 Backend.api.ajax(options, function (data) { 7944 Backend.api.ajax(options, function (data) {
7922 Toastr.success(__('Operation completed')); 7945 Toastr.success(__('Operation completed'));
7923 table.bootstrapTable('refresh'); 7946 table.bootstrapTable('refresh');
@@ -7927,10 +7950,12 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap @@ -7927,10 +7950,12 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
7927 events: { 7950 events: {
7928 operate: { 7951 operate: {
7929 'click .btn-editone': function (e, value, row, index) { 7952 'click .btn-editone': function (e, value, row, index) {
  7953 + e.stopPropagation();
7930 var options = $(this).closest('table').bootstrapTable('getOptions'); 7954 var options = $(this).closest('table').bootstrapTable('getOptions');
7931 Backend.api.open(options.extend.edit_url + "/ids/" + row[options.pk], __('Edit')); 7955 Backend.api.open(options.extend.edit_url + "/ids/" + row[options.pk], __('Edit'));
7932 }, 7956 },
7933 'click .btn-delone': function (e, value, row, index) { 7957 'click .btn-delone': function (e, value, row, index) {
  7958 + e.stopPropagation();
7934 var that = this; 7959 var that = this;
7935 var top = $(that).offset().top - $(window).scrollTop(); 7960 var top = $(that).offset().top - $(window).scrollTop();
7936 var left = $(that).offset().left - $(window).scrollLeft() - 260; 7961 var left = $(that).offset().left - $(window).scrollLeft() - 260;
@@ -7950,7 +7975,6 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap @@ -7950,7 +7975,6 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
7950 Backend.api.layer.close(index); 7975 Backend.api.layer.close(index);
7951 } 7976 }
7952 ); 7977 );
7953 -  
7954 } 7978 }
7955 } 7979 }
7956 }, 7980 },
@@ -8018,6 +8042,18 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap @@ -8018,6 +8042,18 @@ define('table',['jquery', 'bootstrap', 'backend', 'toastr', 'moment', 'bootstrap
8018 }); 8042 });
8019 return html.join(' '); 8043 return html.join(' ');
8020 }, 8044 },
  8045 + label: function (value, row, index, custom) {
  8046 + var colorArr = ['success', 'warning', 'danger', 'info'];
  8047 + //渲染Flag
  8048 + var html = [];
  8049 + var arr = value.split(',');
  8050 + $.each(arr, function (i, value) {
  8051 + value = value.toString();
  8052 + var color = colorArr[i % colorArr.length];
  8053 + html.push('<span class="label label-' + color + '">' + __(value) + '</span>');
  8054 + });
  8055 + return html.join(' ');
  8056 + },
8021 datetime: function (value, row, index) { 8057 datetime: function (value, row, index) {
8022 return value ? Moment(parseInt(value) * 1000).format("YYYY-MM-DD HH:mm:ss") : __('None'); 8058 return value ? Moment(parseInt(value) * 1000).format("YYYY-MM-DD HH:mm:ss") : __('None');
8023 }, 8059 },
@@ -11050,8 +11086,6 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator' @@ -11050,8 +11086,6 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator'
11050 return false; 11086 return false;
11051 }, 11087 },
11052 bindevent: function (form, onBeforeSubmit, onAfterSubmit) { 11088 bindevent: function (form, onBeforeSubmit, onAfterSubmit) {
11053 - //移除提交按钮的disabled类  
11054 - $(".layer-footer .btn.disabled", form).removeClass("disabled");  
11055 //绑定表单事件 11089 //绑定表单事件
11056 form.validator($.extend({ 11090 form.validator($.extend({
11057 validClass: 'has-success', 11091 validClass: 'has-success',
@@ -11088,6 +11122,9 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator' @@ -11088,6 +11122,9 @@ define('form',['jquery', 'bootstrap', 'backend', 'toastr', 'upload', 'validator'
11088 return false; 11122 return false;
11089 } 11123 }
11090 }, form.data("validator-options") || {})); 11124 }, form.data("validator-options") || {}));
  11125 +
  11126 + //移除提交按钮的disabled类
  11127 + $(".layer-footer .btn.disabled", form).removeClass("disabled");
11091 11128
11092 //绑定select元素事件 11129 //绑定select元素事件
11093 if ($(".selectpicker", form).size() > 0) { 11130 if ($(".selectpicker", form).size() > 0) {