From b6f230773786d662bc7c93afc6c855fc7183701e Mon Sep 17 00:00:00 2001 From: Karson <karsonzhang@163.com> Date: Sat, 12 Oct 2019 11:45:40 +0800 Subject: [PATCH] 新增自定义编辑删除按钮 --- public/assets/js/require-backend.min.js | 322 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------- public/assets/js/require-table.js | 55 +++++++++++++++++++++++++++++++++---------------------- 2 files changed, 200 insertions(+), 177 deletions(-) diff --git a/public/assets/js/require-backend.min.js b/public/assets/js/require-backend.min.js index b36301b..4c292c2 100644 --- a/public/assets/js/require-backend.min.js +++ b/public/assets/js/require-backend.min.js @@ -6638,8 +6638,8 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un */ ;(function(factory) { typeof module === 'object' && module.exports ? module.exports = factory( require( 'jquery' ) ) : - typeof define === 'function' && define.amd ? define('validator-core',['jquery'], factory) : - factory(jQuery); + typeof define === 'function' && define.amd ? define('validator-core',['jquery'], factory) : + factory(jQuery); }(function($, undefined) { 'use strict'; @@ -6746,56 +6746,56 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un /** jQuery Plugin * @param {Object} options - debug {Boolean} 0 Whether to enable debug mode - timely {Number} 1 Whether to enable timely validation - theme {String} 'default' Theme name - stopOnError {Boolean} false Whether to stop validate when found an error input - focusCleanup {Boolean} false Whether to clean up the field message when focus the field - focusInvalid {Boolean} true Whether to focus the field that is invalid - ignoreBlank {Boolean} false When the field has no value, whether to ignore validation - ignore {jqSelector} '' Ignored fields (Using jQuery selector) - - beforeSubmit {Function} Do something before submit form - dataFilter {Function} Convert ajax results - valid {Function} Triggered when the form is valid - invalid {Function} Triggered when the form is invalid - validClass {String} 'n-valid' Add this class name to a valid field - invalidClass {String} 'n-invalid' Add this class name to a invalid field - bindClassTo {jqSelector} ':verifiable' Which element should the className binding to - - display {Function} Callback function to get dynamic display - target {Function} Callback function to get dynamic target - msgShow {Function} Trigger this callback when show message - msgHide {Function} Trigger this callback when hide message - msgWrapper {String} 'span' Message wrapper tag name - msgMaker {Function} Callback function to make message HTML - msgArrow {String} Message arrow template - msgIcon {String} Message icon template - msgStyle {String} Custom message css style - msgClass {String} Additional added to the message class names - formClass {String} Additional added to the form class names - - messages {Object} Custom messages for the current instance - rules {Object} Custom rules for the current instance - fields {Object} Field validation configuration - {String} key name|#id - {String|Object} value Rule string or an object which can pass more arguments - - fields[key][rule] {String} Rule string - fields[key][display] {String|Function} - fields[key][tip] {String} Custom tip message - fields[key][ok] {String} Custom success message - fields[key][msg] {Object} Custom error message - fields[key][msgStyle] {String} Custom message style - fields[key][msgClass] {String} A className which added to message placeholder element - fields[key][msgWrapper] {String} Tag name of the message placeholder element - fields[key][msgMaker] {Function} A function to custom message HTML - fields[key][dataFilter] {Function} A function to convert ajax results - fields[key][valid] {Function} A function triggered when field is valid - fields[key][invalid] {Function} A function triggered when field is invalid - fields[key][must] {Boolean} If set true, we always check the field even has remote checking - fields[key][timely] {Boolean} Whether to enable timely validation - fields[key][target] {jqSelector} Define placement of a message + debug {Boolean} 0 Whether to enable debug mode + timely {Number} 1 Whether to enable timely validation + theme {String} 'default' Theme name + stopOnError {Boolean} false Whether to stop validate when found an error input + focusCleanup {Boolean} false Whether to clean up the field message when focus the field + focusInvalid {Boolean} true Whether to focus the field that is invalid + ignoreBlank {Boolean} false When the field has no value, whether to ignore validation + ignore {jqSelector} '' Ignored fields (Using jQuery selector) + + beforeSubmit {Function} Do something before submit form + dataFilter {Function} Convert ajax results + valid {Function} Triggered when the form is valid + invalid {Function} Triggered when the form is invalid + validClass {String} 'n-valid' Add this class name to a valid field + invalidClass {String} 'n-invalid' Add this class name to a invalid field + bindClassTo {jqSelector} ':verifiable' Which element should the className binding to + + display {Function} Callback function to get dynamic display + target {Function} Callback function to get dynamic target + msgShow {Function} Trigger this callback when show message + msgHide {Function} Trigger this callback when hide message + msgWrapper {String} 'span' Message wrapper tag name + msgMaker {Function} Callback function to make message HTML + msgArrow {String} Message arrow template + msgIcon {String} Message icon template + msgStyle {String} Custom message css style + msgClass {String} Additional added to the message class names + formClass {String} Additional added to the form class names + + messages {Object} Custom messages for the current instance + rules {Object} Custom rules for the current instance + fields {Object} Field validation configuration + {String} key name|#id + {String|Object} value Rule string or an object which can pass more arguments + + fields[key][rule] {String} Rule string + fields[key][display] {String|Function} + fields[key][tip] {String} Custom tip message + fields[key][ok] {String} Custom success message + fields[key][msg] {Object} Custom error message + fields[key][msgStyle] {String} Custom message style + fields[key][msgClass] {String} A className which added to message placeholder element + fields[key][msgWrapper] {String} Tag name of the message placeholder element + fields[key][msgMaker] {Function} A function to custom message HTML + fields[key][dataFilter] {Function} A function to convert ajax results + fields[key][valid] {Function} A function triggered when field is valid + fields[key][invalid] {Function} A function triggered when field is invalid + fields[key][must] {Boolean} If set true, we always check the field even has remote checking + fields[key][timely] {Boolean} Whether to enable timely validation + fields[key][target] {jqSelector} Define placement of a message */ $.fn.validator = function(options) { var that = this, @@ -6865,10 +6865,10 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un var name = elem.nodeName.toLowerCase(); return ( name === 'input' && !({submit: 1, button: 1, reset: 1, image: 1})[elem.type] || - name === 'select' || - name === 'textarea' || - elem.contentEditable === 'true' - ) && !elem.disabled; + name === 'select' || + name === 'textarea' || + elem.contentEditable === 'true' + ) && !elem.disabled; }, // any value, but not only whitespace filled: function(elem) { @@ -7038,7 +7038,7 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un !key || // If dataRule and element are diffrent from old's, we use ID mode. (dataRule !== null && (field = me.fields[key]) && dataRule !== field.rule && el.id !== field.key) - ) + ) ) { key = '#' + el.id; } @@ -7463,7 +7463,7 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un // trigger event $(el).attr( ARIA_INVALID, isValid ? null : true ) - .trigger( callback + CLS_NS_FIELD, [ret, me] ); + .trigger( callback + CLS_NS_FIELD, [ret, me] ); me.$el.triggerHandler('validation', [ret, me]); if (me.checkOnly) return; @@ -8285,34 +8285,34 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un }); $(document) - .on('click', ':submit', function(){ - var input = this, attrNode; - if (!input.form) return; - // Shim for "formnovalidate" - attrNode = input.getAttributeNode('formnovalidate'); - if (attrNode && attrNode.nodeValue !== null || attr(input, NOVALIDATE)!== null) { - novalidateonce = true; - } - }) - // Automatic initializing form validation - .on('focusin submit validate', 'form,.'+CLS_WRAPPER, function(e) { - if ( attr(this, NOVALIDATE) !== null ) return; - var $form = $(this), me; - - if ( !$form.data(NS) && (me = _getInstance(this)) ) { - if ( !$.isEmptyObject(me.fields) ) { - // Execute event handler - if (e.type === 'focusin') { - me._focusin(e); - } else { - me._submit(e); - } + .on('click', ':submit', function(){ + var input = this, attrNode; + if (!input.form) return; + // Shim for "formnovalidate" + attrNode = input.getAttributeNode('formnovalidate'); + if (attrNode && attrNode.nodeValue !== null || attr(input, NOVALIDATE)!== null) { + novalidateonce = true; + } + }) + // Automatic initializing form validation + .on('focusin submit validate', 'form,.'+CLS_WRAPPER, function(e) { + if ( attr(this, NOVALIDATE) !== null ) return; + var $form = $(this), me; + + if ( !$form.data(NS) && (me = _getInstance(this)) ) { + if ( !$.isEmptyObject(me.fields) ) { + // Execute event handler + if (e.type === 'focusin') { + me._focusin(e); } else { - attr(this, NOVALIDATE, NOVALIDATE); - $form.off(CLS_NS).removeData(NS); + me._submit(e); } + } else { + attr(this, NOVALIDATE, NOVALIDATE); + $form.off(CLS_NS).removeData(NS); } - }); + } + }); new Messages({ fallback: 'This field is not valid.', @@ -8327,11 +8327,11 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * required * * @example: - required - required(jqSelector) - required(anotherRule) - required(not, -1) - required(from, .contact) + required + required(jqSelector) + required(anotherRule) + required(not, -1) + required(from, .contact) */ required: function(element, params) { var me = this, @@ -8391,11 +8391,11 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * integer * * @example: - integer - integer[+] - integer[+0] - integer[-] - integer[-0] + integer + integer[+] + integer[+0] + integer[-] + integer[-0] */ integer: function(element, params) { var re, z = '0|', @@ -8427,15 +8427,15 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * match another field * * @example: - match[password] Match the password field (two values must be the same) - match[eq, password] Ditto - match[neq, count] The value must be not equal to the value of the count field - match[lt, count] The value must be less than the value of the count field - match[lte, count] The value must be less than or equal to the value of the count field - match[gt, count] The value must be greater than the value of the count field - match[gte, count] The value must be greater than or equal to the value of the count field - match[gte, startDate, date] - match[gte, startTime, time] + match[password] Match the password field (two values must be the same) + match[eq, password] Ditto + match[neq, count] The value must be not equal to the value of the count field + match[lt, count] The value must be less than the value of the count field + match[lte, count] The value must be less than or equal to the value of the count field + match[gt, count] The value must be greater than the value of the count field + match[gte, count] The value must be greater than or equal to the value of the count field + match[gte, startDate, date] + match[gte, startTime, time] **/ match: function(element, params) { if (!params) return; @@ -8514,9 +8514,9 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * range numbers * * @example: - range[0~99] Number 0-99 - range[0~] Number greater than or equal to 0 - range[~100] Number less than or equal to 100 + range[0~99] Number 0-99 + range[0~] Number greater than or equal to 0 + range[~100] Number less than or equal to 100 **/ range: function(element, params) { return this.getRangeMsg(this.value, params); @@ -8526,11 +8526,11 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * how many checkbox or radio inputs that checked * * @example: - checked; no empty, same to required - checked[1~3] 1-3 items - checked[1~] greater than 1 item - checked[~3] less than 3 items - checked[3] 3 items + checked; no empty, same to required + checked[1~3] 1-3 items + checked[1~] greater than 1 item + checked[~3] less than 3 items + checked[3] 3 items **/ checked: function(element, params) { if ( !_checkable(element) ) return; @@ -8560,10 +8560,10 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * length of a characters (You can pass the second parameter "true", will calculate the length in bytes) * * @example: - length[6~16] 6-16 characters - length[6~] Greater than 6 characters - length[~16] Less than 16 characters - length[~16, true] Less than 16 characters, non-ASCII characters calculating two-character + length[6~16] 6-16 characters + length[6~] Greater than 6 characters + length[~16] Less than 16 characters + length[~16, true] Less than 16 characters, non-ASCII characters calculating two-character **/ length: function(element, params) { var value = this.value, @@ -8578,20 +8578,20 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * @description * remote([get:]url [, name1, [name2 ...]]); * Adaptation three kinds of results (Front for the successful, followed by a failure): - 1. text: - '' 'Error Message' - 2. json: - {"ok": ""} {"error": "Error Message"} - 3. json wrapper: - {"status": 1, "data": {"ok": ""}} {"status": 1, "data": {"error": "Error Message"}} + 1. text: + '' 'Error Message' + 2. json: + {"ok": ""} {"error": "Error Message"} + 3. json wrapper: + {"status": 1, "data": {"ok": ""}} {"status": 1, "data": {"error": "Error Message"}} * @example - The simplest: remote(path/to/server); - With parameters: remote(path/to/server, name1, name2, ...); - By GET: remote(get:path/to/server, name1, name2, ...); - Name proxy: remote(path/to/server, name1, proxyname2:name2, proxyname3:#id3, ...) - Query String remote(path/to/server, foo=1&bar=2, name1, name2, ...) - CORS remote(cors:path/to/server) - JSONP remote(jsonp:path/to/server) + The simplest: remote(path/to/server); + With parameters: remote(path/to/server, name1, name2, ...); + By GET: remote(get:path/to/server, name1, name2, ...); + Name proxy: remote(path/to/server, name1, proxyname2:name2, proxyname3:#id3, ...) + Query String remote(path/to/server, foo=1&bar=2, name1, name2, ...) + CORS remote(cors:path/to/server) + JSONP remote(jsonp:path/to/server) */ remote: function(element, params) { if (!params) return; @@ -8695,8 +8695,8 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * @param {String|Object} name * @param {Object} obj * @example - .setTheme( themeName, themeOptions ) - .setTheme( multiThemes ) + .setTheme( themeName, themeOptions ) + .setTheme( multiThemes ) */ Validator.setTheme = function(name, obj) { if ( isObject(name) ) { @@ -8713,10 +8713,10 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un * @static load * @param {String} str * @example - .load('local=zh-CN') // load: local/zh-CN.js and jquery.validator.css - .load('local=zh-CN&css=') // load: local/zh-CN.js - .load('local&css') // load: local/en.js (set <html lang="en">) and jquery.validator.css - .load('local') // dito + .load('local=zh-CN') // load: local/zh-CN.js and jquery.validator.css + .load('local=zh-CN&css=') // load: local/zh-CN.js + .load('local&css') // load: local/en.js (set <html lang="en">) and jquery.validator.css + .load('local') // dito */ Validator.load = function(str) { if (!str) return; @@ -8772,6 +8772,7 @@ define('upload',['jquery', 'bootstrap', 'plupload', 'template'], function ($, un return $[NS] = Validator; })); + /********************************* * Themes, rules, and i18n support * Locale: Chinese; 中文 @@ -9980,6 +9981,29 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr destroyallbtn: '.btn-destroyall', dragsortfield: 'weigh', }, + button: { + edit: { + name: 'edit', + icon: 'fa fa-pencil', + title: __('Edit'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-success btn-editone' + }, + del: { + name: 'del', + icon: 'fa fa-trash', + title: __('Del'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-danger btn-delone' + }, + dragsort: { + name: 'dragsort', + icon: 'fa fa-arrows', + title: __('Drag to sort'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-primary btn-dragsort' + } + }, api: { init: function (defaults, columnDefaults, locales) { defaults = defaults ? defaults : {}; @@ -10030,6 +10054,12 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr } Toastr.error(__('Unknown data format')); }); + //当加载数据成功时 + table.on('load-success.bs.table', function (e, data) { + if (typeof data.rows === 'undefined' && typeof data.code != 'undefined') { + Toastr.error(data.msg); + } + }); //当刷新表格时 table.on('refresh.bs.table', function (e, settings, data) { $(Table.config.refreshbtn, toolbar).find(".fa").addClass("fa-spin"); @@ -10481,32 +10511,14 @@ define('table',['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstr names.push(item.name); }); if (options.extend.dragsort_url !== '' && names.indexOf('dragsort') === -1) { - buttons.push({ - name: 'dragsort', - icon: 'fa fa-arrows', - title: __('Drag to sort'), - extend: 'data-toggle="tooltip"', - classname: 'btn btn-xs btn-primary btn-dragsort' - }); + buttons.push(Table.button.dragsort); } if (options.extend.edit_url !== '' && names.indexOf('edit') === -1) { - buttons.push({ - name: 'edit', - icon: 'fa fa-pencil', - title: __('Edit'), - extend: 'data-toggle="tooltip"', - classname: 'btn btn-xs btn-success btn-editone', - url: options.extend.edit_url - }); + Table.button.edit.url = options.extend.edit_url; + buttons.push(Table.button.edit); } if (options.extend.del_url !== '' && names.indexOf('del') === -1) { - buttons.push({ - name: 'del', - icon: 'fa fa-trash', - title: __('Del'), - extend: 'data-toggle="tooltip"', - classname: 'btn btn-xs btn-danger btn-delone' - }); + buttons.push(Table.button.del); } return Table.api.buttonlink(this, buttons, value, row, index, 'operate'); } diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js index e74ad8d..37198f0 100644 --- a/public/assets/js/require-table.js +++ b/public/assets/js/require-table.js @@ -72,6 +72,29 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table destroyallbtn: '.btn-destroyall', dragsortfield: 'weigh', }, + button: { + edit: { + name: 'edit', + icon: 'fa fa-pencil', + title: __('Edit'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-success btn-editone' + }, + del: { + name: 'del', + icon: 'fa fa-trash', + title: __('Del'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-danger btn-delone' + }, + dragsort: { + name: 'dragsort', + icon: 'fa fa-arrows', + title: __('Drag to sort'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-primary btn-dragsort' + } + }, api: { init: function (defaults, columnDefaults, locales) { defaults = defaults ? defaults : {}; @@ -122,6 +145,12 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table } Toastr.error(__('Unknown data format')); }); + //当加载数据成功时 + table.on('load-success.bs.table', function (e, data) { + if (typeof data.rows === 'undefined' && typeof data.code != 'undefined') { + Toastr.error(data.msg); + } + }); //当刷新表格时 table.on('refresh.bs.table', function (e, settings, data) { $(Table.config.refreshbtn, toolbar).find(".fa").addClass("fa-spin"); @@ -573,32 +602,14 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table names.push(item.name); }); if (options.extend.dragsort_url !== '' && names.indexOf('dragsort') === -1) { - buttons.push({ - name: 'dragsort', - icon: 'fa fa-arrows', - title: __('Drag to sort'), - extend: 'data-toggle="tooltip"', - classname: 'btn btn-xs btn-primary btn-dragsort' - }); + buttons.push(Table.button.dragsort); } if (options.extend.edit_url !== '' && names.indexOf('edit') === -1) { - buttons.push({ - name: 'edit', - icon: 'fa fa-pencil', - title: __('Edit'), - extend: 'data-toggle="tooltip"', - classname: 'btn btn-xs btn-success btn-editone', - url: options.extend.edit_url - }); + Table.button.edit.url = options.extend.edit_url; + buttons.push(Table.button.edit); } if (options.extend.del_url !== '' && names.indexOf('del') === -1) { - buttons.push({ - name: 'del', - icon: 'fa fa-trash', - title: __('Del'), - extend: 'data-toggle="tooltip"', - classname: 'btn btn-xs btn-danger btn-delone' - }); + buttons.push(Table.button.del); } return Table.api.buttonlink(this, buttons, value, row, index, 'operate'); } -- libgit2 0.24.0