From 8756cf38a19edddae123e83d8ee82af57bec5e4a Mon Sep 17 00:00:00 2001 From: Karson Date: Wed, 20 Dec 2017 20:39:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=A2=9E/=E5=88=A0/=E6=94=B9?= =?UTF-8?q?=E9=93=BE=E6=8E=A5{ids}=E6=9B=BF=E6=8D=A2=E5=8A=9F=E8=83=BD=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96replaceurl=E7=A7=BB=E9=99=A4value=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/js/backend/addon.js | 2 +- public/assets/js/require-backend.min.js | 60 +++++++++++++++---------- public/assets/js/require-table.js | 60 +++++++++++++++---------- 3 files changed, 75 insertions(+), 47 deletions(-) diff --git a/public/assets/js/backend/addon.js b/public/assets/js/backend/addon.js index 947be77c..d6e01e2c 100644 --- a/public/assets/js/backend/addon.js +++ b/public/assets/js/backend/addon.js @@ -35,7 +35,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function showExport: false, commonSearch: true, searchFormVisible: false, - pageSize: 10 + pageSize: 12 }); // 为表格绑定事件 diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js index c855d813..00e46a17 100644 --- a/public/assets/js/require-backend.min.js +++ b/public/assets/js/require-backend.min.js @@ -9729,7 +9729,9 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr // 添加按钮事件 $(toolbar).on('click', Table.config.addbtn, function () { var ids = Table.api.selectedids(table); - Fast.api.open(options.extend.add_url + (ids.length > 0 ? (options.extend.add_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + ids.join(",") : ''), __('Add'), $(this).data() || {}); + var url = options.extend.add_url; + url = Table.api.replaceurl(url, {ids: ids.length > 0 ? ids.join(",") : 0}, table); + Fast.api.open(url, __('Add'), $(this).data() || {}); }); // 导入按钮事件 if ($(Table.config.importbtn, toolbar).size() > 0) { @@ -9746,11 +9748,13 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr } // 批量编辑按钮事件 $(toolbar).on('click', Table.config.editbtn, function () { - var ids = Table.api.selectedids(table); var that = this; //循环弹出多个编辑框 - $.each(ids, function (i, j) { - Fast.api.open(options.extend.edit_url + (options.extend.edit_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + j, __('Edit'), $(that).data() || {}); + $.each(table.bootstrapTable('getSelections'), function (index, row) { + var url = options.extend.edit_url; + row = $.extend({}, row ? row : {}, {ids: row[options.pk]}); + var url = Table.api.replaceurl(url, row, table); + Fast.api.open(url, __('Edit'), $(that).data() || {}); }); }); // 批量操作按钮事件 @@ -9814,7 +9818,18 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr }); $(table).on("click", "[data-id].btn-edit", function (e) { e.preventDefault(); - Fast.api.open(options.extend.edit_url + (options.extend.edit_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + $(this).data("id"), __('Edit'), $(this).data() || {}); + var ids = $(this).data("id"); + var row = {}; + var options = table.bootstrapTable("getOptions"); + $.each(table.bootstrapTable('getData'), function (i, j) { + if (j[options.pk] == ids) { + row = j; + return false; + } + }); + row.ids = ids; + var url = Table.api.replaceurl(options.extend.edit_url, row, table); + Fast.api.open(url, __('Edit'), $(this).data() || {}); }); $(table).on("click", "[data-id].btn-del", function (e) { e.preventDefault(); @@ -9837,8 +9852,9 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr multi: function (action, ids, table, element) { var options = table.bootstrapTable('getOptions'); var data = element ? $(element).data() : {}; + var ids = ($.isArray(ids) ? ids.join(",") : ids); var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url); - url = url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + ($.isArray(ids) ? ids.join(",") : ids); + url = this.replaceurl(url, {ids: ids}, table); var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : ''; var options = {url: url, data: {action: action, ids: ids, params: params}}; Fast.api.ajax(options, function (data) { @@ -9851,8 +9867,12 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr 'click .btn-editone': function (e, value, row, index) { e.stopPropagation(); e.preventDefault(); - var options = $(this).closest('table').bootstrapTable('getOptions'); - Fast.api.open(options.extend.edit_url + (options.extend.edit_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + row[options.pk], __('Edit'), $(this).data() || {}); + var table = $(this).closest('table'); + var options = table.bootstrapTable('getOptions'); + var ids = row[options.pk]; + row = $.extend({}, row ? row : {}, {ids: ids}); + var url = options.extend.edit_url; + Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {}); }, 'click .btn-delone': function (e, value, row, index) { e.stopPropagation(); @@ -9925,12 +9945,12 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr return '' + value + ''; }, addtabs: function (value, row, index) { - var url = Table.api.replaceurl(this.url, value, row, this.table); + var url = Table.api.replaceurl(this.url, row, this.table); var title = this.atitle ? this.atitle : __("Search %s", value); return '' + value + ''; }, dialog: function (value, row, index) { - var url = Table.api.replaceurl(this.url, value, row, this.table); + var url = Table.api.replaceurl(this.url, row, this.table); var title = this.atitle ? this.atitle : __("View %s", value); return '' + value + ''; }, @@ -10000,11 +10020,7 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr var attr = table.data(type + "-" + j.name); if (typeof attr === 'undefined' || attr) { url = j.url ? j.url : ''; - if (!url.match(/\{(.*?)\}/i)) { - url = url ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + row[options.pk] : ''; - } - url = Table.api.replaceurl(url, value, row, table); - url = url ? Fast.api.fixurl(url) : 'javascript:;'; + url = url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;'; classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one'; icon = j.icon ? j.icon : ''; text = j.text ? j.text : ''; @@ -10018,8 +10034,12 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr return html.join(' '); }, //替换URL中的数据 - replaceurl: function (url, value, row, table) { - url = url.replace(/\{value\}/ig, value); + replaceurl: function (url, row, table) { + var options = table ? table.bootstrapTable('getOptions') : null; + var ids = options ? row[options.pk] : 0; + row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0); + //自动添加ids参数 + url = !url.match(/\{ids\}/i) ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url; url = url.replace(/\{(.*?)\}/gi, function (matched) { matched = matched.substring(1, matched.length - 1); if (matched.indexOf(".") !== -1) { @@ -10034,12 +10054,6 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr } return row[matched]; }); - if (table) { - var options = table.bootstrapTable('getOptions'); - url = url.replace(/\{ids\}/ig, row[options.pk]); - } else { - url = url.replace(/\{ids\}/ig, 0); - } return url; }, // 获取选中的条目ID集合 diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js index c93d0e8a..eebbf0c4 100644 --- a/public/assets/js/require-table.js +++ b/public/assets/js/require-table.js @@ -156,7 +156,9 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table // 添加按钮事件 $(toolbar).on('click', Table.config.addbtn, function () { var ids = Table.api.selectedids(table); - Fast.api.open(options.extend.add_url + (ids.length > 0 ? (options.extend.add_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + ids.join(",") : ''), __('Add'), $(this).data() || {}); + var url = options.extend.add_url; + url = Table.api.replaceurl(url, {ids: ids.length > 0 ? ids.join(",") : 0}, table); + Fast.api.open(url, __('Add'), $(this).data() || {}); }); // 导入按钮事件 if ($(Table.config.importbtn, toolbar).size() > 0) { @@ -173,11 +175,13 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table } // 批量编辑按钮事件 $(toolbar).on('click', Table.config.editbtn, function () { - var ids = Table.api.selectedids(table); var that = this; //循环弹出多个编辑框 - $.each(ids, function (i, j) { - Fast.api.open(options.extend.edit_url + (options.extend.edit_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + j, __('Edit'), $(that).data() || {}); + $.each(table.bootstrapTable('getSelections'), function (index, row) { + var url = options.extend.edit_url; + row = $.extend({}, row ? row : {}, {ids: row[options.pk]}); + var url = Table.api.replaceurl(url, row, table); + Fast.api.open(url, __('Edit'), $(that).data() || {}); }); }); // 批量操作按钮事件 @@ -241,7 +245,18 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table }); $(table).on("click", "[data-id].btn-edit", function (e) { e.preventDefault(); - Fast.api.open(options.extend.edit_url + (options.extend.edit_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + $(this).data("id"), __('Edit'), $(this).data() || {}); + var ids = $(this).data("id"); + var row = {}; + var options = table.bootstrapTable("getOptions"); + $.each(table.bootstrapTable('getData'), function (i, j) { + if (j[options.pk] == ids) { + row = j; + return false; + } + }); + row.ids = ids; + var url = Table.api.replaceurl(options.extend.edit_url, row, table); + Fast.api.open(url, __('Edit'), $(this).data() || {}); }); $(table).on("click", "[data-id].btn-del", function (e) { e.preventDefault(); @@ -264,8 +279,9 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table multi: function (action, ids, table, element) { var options = table.bootstrapTable('getOptions'); var data = element ? $(element).data() : {}; + var ids = ($.isArray(ids) ? ids.join(",") : ids); var url = typeof data.url !== "undefined" ? data.url : (action == "del" ? options.extend.del_url : options.extend.multi_url); - url = url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + ($.isArray(ids) ? ids.join(",") : ids); + url = this.replaceurl(url, {ids: ids}, table); var params = typeof data.params !== "undefined" ? (typeof data.params == 'object' ? $.param(data.params) : data.params) : ''; var options = {url: url, data: {action: action, ids: ids, params: params}}; Fast.api.ajax(options, function (data) { @@ -278,8 +294,12 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table 'click .btn-editone': function (e, value, row, index) { e.stopPropagation(); e.preventDefault(); - var options = $(this).closest('table').bootstrapTable('getOptions'); - Fast.api.open(options.extend.edit_url + (options.extend.edit_url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + row[options.pk], __('Edit'), $(this).data() || {}); + var table = $(this).closest('table'); + var options = table.bootstrapTable('getOptions'); + var ids = row[options.pk]; + row = $.extend({}, row ? row : {}, {ids: ids}); + var url = options.extend.edit_url; + Fast.api.open(Table.api.replaceurl(url, row, table), __('Edit'), $(this).data() || {}); }, 'click .btn-delone': function (e, value, row, index) { e.stopPropagation(); @@ -352,12 +372,12 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table return '' + value + ''; }, addtabs: function (value, row, index) { - var url = Table.api.replaceurl(this.url, value, row, this.table); + var url = Table.api.replaceurl(this.url, row, this.table); var title = this.atitle ? this.atitle : __("Search %s", value); return '' + value + ''; }, dialog: function (value, row, index) { - var url = Table.api.replaceurl(this.url, value, row, this.table); + var url = Table.api.replaceurl(this.url, row, this.table); var title = this.atitle ? this.atitle : __("View %s", value); return '' + value + ''; }, @@ -427,11 +447,7 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table var attr = table.data(type + "-" + j.name); if (typeof attr === 'undefined' || attr) { url = j.url ? j.url : ''; - if (!url.match(/\{(.*?)\}/i)) { - url = url ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + row[options.pk] : ''; - } - url = Table.api.replaceurl(url, value, row, table); - url = url ? Fast.api.fixurl(url) : 'javascript:;'; + url = url ? Fast.api.fixurl(Table.api.replaceurl(url, row, table)) : 'javascript:;'; classname = j.classname ? j.classname : 'btn-primary btn-' + name + 'one'; icon = j.icon ? j.icon : ''; text = j.text ? j.text : ''; @@ -445,8 +461,12 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table return html.join(' '); }, //替换URL中的数据 - replaceurl: function (url, value, row, table) { - url = url.replace(/\{value\}/ig, value); + replaceurl: function (url, row, table) { + var options = table ? table.bootstrapTable('getOptions') : null; + var ids = options ? row[options.pk] : 0; + row.ids = ids ? ids : (typeof row.ids !== 'undefined' ? row.ids : 0); + //自动添加ids参数 + url = !url.match(/\{ids\}/i) ? url + (url.match(/(\?|&)+/) ? "&ids=" : "/ids/") + '{ids}' : url; url = url.replace(/\{(.*?)\}/gi, function (matched) { matched = matched.substring(1, matched.length - 1); if (matched.indexOf(".") !== -1) { @@ -461,12 +481,6 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table } return row[matched]; }); - if (table) { - var options = table.bootstrapTable('getOptions'); - url = url.replace(/\{ids\}/ig, row[options.pk]); - } else { - url = url.replace(/\{ids\}/ig, 0); - } return url; }, // 获取选中的条目ID集合