UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 5.24 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _ctor=_interopRequireDefault(require("xe-utils/ctor")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e}var Rule=function(){function t(e){_classCallCheck(this,t),Object.assign(this,{$options:e,required:e.required,min:e.min,max:e.max,type:e.type,pattern:e.pattern,validator:e.validator,trigger:e.trigger,maxWidth:e.maxWidth})}return _createClass(t,[{key:"message",get:function(){return _tools.UtilTools.getFuncText(this.$options.message)}}]),t}(),_default={methods:{_fullValidate:function(e,t){var r=this.afterFullData;return _ctor.default.isFunction(e)?this.beginValidate(r,t,!0):this.beginValidate(e||r,t,!0)},_validate:function(e,t){return this.beginValidate(e,t)},handleValidError:function(e){var t=this;!1===this.validOpts.autoPos?this.emitEvent("valid-error",e):this.handleActived(e,{type:"valid-error",trigger:"call"}).then(function(){return setTimeout(function(){return t.showValidTooltip(e)},10)})},beginValidate:function(e,s,l){var t,u=this,c={},a=this.editRules,d=this.afterFullData,f=this.treeConfig,r=this.treeOpts;!0===e?t=d:e&&(_ctor.default.isFunction(e)?s=e:t=_ctor.default.isArray(e)?e:[e]),t||(t=this.getInsertRecords().concat(this.getUpdateRecords()));var n=[];if(this.lastCallTime=Date.now(),this.validRuleErr=!1,this.clearValidate(),a){var o=this.getColumns(),i=function(i){if(l||!u.validRuleErr){var e=[];o.forEach(function(r){!l&&u.validRuleErr||!_ctor.default.has(a,r.property)||e.push(u.validCellRules("all",i,r).catch(function(e){var t={rule:e.rule,rules:e.rules,rowIndex:u.getRowIndex(i),row:i,columnIndex:u.getColumnIndex(r),column:r,$table:u};if(c[r.property]||(c[r.property]=[]),c[r.property].push(t),!l)return u.validRuleErr=!0,Promise.reject(t)}))}),n.push(Promise.all(e))}};return f?_ctor.default.eachTree(t,i,r):t.forEach(i),Promise.all(n).then(function(){var e=Object.keys(c);if(e.length)return Promise.reject(c[e[0]][0]);s&&s()}).catch(function(o){return new Promise(function(e,t){var r=function(){s?(s(c),e()):t(c)},i=function(){o.cell=u.getCell(o.row,o.column),_tools.DomTools.toView(o.cell),u.handleValidError(o),r()},l=o.row,a=d.indexOf(l),n=0<a?d[a-1]:l;!1===u.validOpts.autoPos?r():f?u.scrollToTreeRow(n).then(i):u.scrollToRow(n).then(i)})})}return s&&s(),Promise.resolve()},hasCellRules:function(t,e,r){var i=this.editRules,l=r.property;if(l&&i){var a=_ctor.default.get(i,l);return a&&_ctor.default.find(a,function(e){return"all"===t||!e.trigger||t===e.trigger})}return!1},validCellRules:function(l,a,n,e){var o=this,t=this.editRules,r=n.property,s=[],u=[];if(r&&t){var c=_ctor.default.get(t,r);if(c){var d=_ctor.default.isUndefined(e)?_ctor.default.get(a,r):e;c.forEach(function(t){if("all"===l||!t.trigger||l===t.trigger)if(_ctor.default.isFunction(t.validator)){var e=t.validator({cellValue:d,rule:t,rules:c,row:a,rowIndex:o.getRowIndex(a),column:n,columnIndex:o.getColumnIndex(n),$table:o});e&&(_ctor.default.isError(e)?(o.validRuleErr=!0,s.push(new Rule({type:"custom",trigger:t.trigger,message:e.message,rule:new Rule(t)}))):e.catch&&u.push(e.catch(function(e){o.validRuleErr=!0,s.push(new Rule({type:"custom",trigger:t.trigger,message:e?e.message:t.message,rule:new Rule(t)}))})))}else{var r="number"===t.type,i=r?_ctor.default.toNumber(d):_ctor.default.getSize(d);!t.required||null!=d&&""!==d?(r&&isNaN(d)||!isNaN(t.min)&&i<parseFloat(t.min)||!isNaN(t.max)&&i>parseFloat(t.max)||t.pattern&&!(t.pattern.test?t.pattern:new RegExp(t.pattern)).test(d))&&(o.validRuleErr=!0,s.push(new Rule(t))):(o.validRuleErr=!0,s.push(new Rule(t)))}})}}return Promise.all(u).then(function(){if(s.length){var e={rules:s,rule:s[0]};return Promise.reject(e)}})},_clearValidate:function(){var e=this.$refs.validTip;return Object.assign(this.validStore,{visible:!1,row:null,column:null,content:"",rule:null}),e&&e.visible&&e.close(),this.$nextTick()},triggerValidate:function(i){var l=this,e=this.editConfig,t=this.editStore,r=this.editRules,a=this.validStore,n=t.actived;if(n.row&&r){var o=n.args,s=o.row,u=o.column,c=o.cell;if(this.hasCellRules(i,s,u))return this.validCellRules(i,s,u).then(function(){"row"===e.mode&&a.visible&&a.row===s&&a.column===u&&l.clearValidate()}).catch(function(e){var t=e.rule;if(t.trigger&&i!==t.trigger)return Promise.resolve();var r={rule:t,row:s,column:u,cell:c};return l.showValidTooltip(r),Promise.reject(r)})}return Promise.resolve()},showValidTooltip:function(e){var t=this,r=this.$refs,i=this.height,l=this.tableData,a=this.validOpts,n=e.rule,o=e.row,s=e.column,u=e.cell,c=r.validTip,d=n.message;this.$nextTick(function(){Object.assign(t.validStore,{row:o,column:s,rule:n,content:d,visible:!0}),c&&("tooltip"===a.message||"default"===a.message&&!i&&l.length<2)&&c.open(u,d),t.emitEvent("valid-error",e)})}}};exports.default=_default;