UNPKG

vxe-table

Version:

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

1 lines 5.29 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_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){return this.beginValidate(e,t,!0)},_validate:function(e,t){return this.beginValidate(e,t)},handleValidError:function(t){var r=this;return new Promise(function(e){!1===r.validOpts.autoPos?(r.emitEvent("valid-error",t),e()):r.handleActived(t,{type:"valid-error",trigger:"call"}).then(function(){setTimeout(function(){e(r.showValidTooltip(t))},10)})})},beginValidate:function(e,o,i){var s=this,u={},l=this.editRules,c=this.afterFullData,d=this.treeConfig,t=this.treeOpts;!0===e?r=c:e&&(_xeUtils.default.isFunction(e)?o=e:r=_xeUtils.default.isArray(e)?e:[e]);var r=r||this.getInsertRecords().concat(this.getUpdateRecords()),n=[];if(this.lastCallTime=Date.now(),this.validRuleErr=!1,this.clearValidate(),l){var a=this.getColumns(),e=function(r){var e;!i&&s.validRuleErr||(e=[],a.forEach(function(t){!i&&s.validRuleErr||!_xeUtils.default.has(l,t.property)||e.push(s.validCellRules("all",r,t).catch(function(e){e={rule:e.rule,rules:e.rules,rowIndex:s.getRowIndex(r),row:r,columnIndex:s.getColumnIndex(t),column:t,$table:s};if(u[t.property]||(u[t.property]=[]),u[t.property].push(e),!i)return s.validRuleErr=!0,Promise.reject(e)}))}),n.push(Promise.all(e)))};return d?_xeUtils.default.eachTree(r,e,t):r.forEach(e),Promise.all(n).then(function(){var e=Object.keys(u);return s.$nextTick().then(function(){return e.length?Promise.reject(u[e[0]][0]):void(o&&o())})}).catch(function(a){return new Promise(function(e,t){function r(){s.$nextTick(function(){o?(o(u),e()):t(u)})}function i(){a.cell=s.getCell(a.row,a.column),_tools.DomTools.scrollToView(a.cell),s.handleValidError(a).then(r)}var l=a.row,n=c.indexOf(l),l=0<n?c[n-1]:l;!1===s.validOpts.autoPos?r():(d?s.scrollToTreeRow(l):s.scrollToRow(l)).then(i)})})}return this.$nextTick().then(function(){o&&o()})},hasCellRules:function(t,e,r){var i=this.editRules,r=r.property;if(r&&i){r=_xeUtils.default.get(i,r);return r&&_xeUtils.default.find(r,function(e){return"all"===t||!e.trigger||t===e.trigger})}return!1},validCellRules:function(l,n,a,e){var o,s,u=this,t=this.editRules,r=a.property,c=[],d=[];return r&&t&&((o=_xeUtils.default.get(t,r))&&(s=_xeUtils.default.isUndefined(e)?_xeUtils.default.get(n,r):e,o.forEach(function(t){var e,r,i;"all"!==l&&t.trigger&&l!==t.trigger||(_xeUtils.default.isFunction(t.validator)?(i=t.validator({cellValue:s,rule:t,rules:o,row:n,rowIndex:u.getRowIndex(n),column:a,columnIndex:u.getColumnIndex(a),$table:u}))&&(_xeUtils.default.isError(i)?(u.validRuleErr=!0,c.push(new Rule({type:"custom",trigger:t.trigger,message:i.message,rule:new Rule(t)}))):i.catch&&d.push(i.catch(function(e){u.validRuleErr=!0,c.push(new Rule({type:"custom",trigger:t.trigger,message:(e||t).message,rule:new Rule(t)}))}))):(e="number"===t.type,r="array"===t.type,i=e?_xeUtils.default.toNumber(s):_xeUtils.default.getSize(s),(t.required&&(r?!_xeUtils.default.isArray(s)||!s.length:null==s||""===s)||e&&isNaN(s)||!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(s))&&(u.validRuleErr=!0,c.push(new Rule(t)))))}))),Promise.all(d).then(function(){if(c.length){var e={rules:c,rule:c[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(t){var r=this,e=this.editConfig,i=this.editStore,l=this.editRules,n=this.validStore,i=i.actived;if(i.row&&l){var i=i.args,a=i.row,o=i.column,s=i.cell;if(this.hasCellRules(t,a,o))return this.validCellRules(t,a,o).then(function(){"row"===e.mode&&n.visible&&n.row===a&&n.column===o&&r.clearValidate()}).catch(function(e){e=e.rule;if(e.trigger&&t!==e.trigger)return Promise.resolve();e={rule:e,row:a,column:o,cell:s};return r.showValidTooltip(e),Promise.reject(e)})}return Promise.resolve()},showValidTooltip:function(e){var t=this,r=this.$refs,i=this.height,l=this.tableData,n=this.validOpts,a=e.rule,o=e.row,s=e.column,u=e.cell,c=r.validTip,d=a.message;return this.$nextTick(function(){if(Object.assign(t.validStore,{row:o,column:s,rule:a,content:d,visible:!0}),t.emitEvent("valid-error",e),c&&("tooltip"===n.message||"default"===n.message&&!i&&l.length<2))return c.open(u,d)})}}};exports.default=_default;