UNPKG

vxe-table-ro-test

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、列拖拽,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...

1 lines 6.87 kB
"use strict";var _vue=require("vue"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../../ui"),_utils=require("../../../ui/src/utils"),_dom=require("../../../ui/src/dom"),_util=require("../../src/util"),_log=require("../../../ui/src/log");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const{getConfig,validators,hooks}=_ui.VxeUI;class Rule{constructor(e){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})}get content(){return(0,_utils.getFuncText)(this.$options.content||this.$options.message)}get message(){return this.content}}const tableValidatorMethodKeys=["fullValidate","validate","clearValidate"];hooks.add("tableValidatorModule",{setupTable(v){const{props:m,reactData:f,internalData:h}=v,g=v.getRefMaps()["refValidTooltip"],{computeValidOpts:_,computeTreeOpts:x,computeEditOpts:u}=v.getComputeMaps();let w={},E={},R;const l=(e,u,i)=>{const d={},{editRules:t,treeConfig:l}=m,{afterFullData:c,visibleColumn:g}=h;var r=x.value,r=r.children||r.childrenField;const p=_.value;let a;!0===e?a=c:e&&(_xeUtils.default.isFunction(e)?u=e:a=_xeUtils.default.isArray(e)?e:[e]),a=a||(v.getInsertRecords?v.getInsertRecords().concat(v.getUpdateRecords()):[]);const o=[],s=(h._lastCallTime=Date.now(),R=!1,w.clearValidate(),{});if(t){const n=v.getColumns();e=r=>{if(i||!R){const e=[];n.forEach(l=>{!i&&R||!_xeUtils.default.has(t,l.property)||e.push(E.validCellRules("all",r,l).catch(({rule:e,rules:t})=>{t={rule:e,rules:t,rowIndex:v.getRowIndex(r),row:r,columnIndex:v.getColumnIndex(l),column:l,field:l.property,$table:v};if(d[l.property]||(d[l.property]=[]),s[(0,_util.getRowid)(v,r)+":"+l.id]={column:l,row:r,rule:e,content:e.content},d[l.property].push(t),!i)return R=!0,Promise.reject(t)}))}),o.push(Promise.all(e))}};return l?_xeUtils.default.eachTree(a,e,{children:r}):a.forEach(e),Promise.all(o).then(()=>{const e=Object.keys(d);var t,l,r;return f.validErrorMaps=(t=s,"single"===_.value.msgMode?(l=t,(r=Object.keys(t)).length&&(l[r=r[0]]=t[r]),l):t),(0,_vue.nextTick)().then(()=>{if(e.length)return Promise.reject(d[e[0]][0]);u&&u()})}).catch(n=>new Promise((e,t)=>{const l=()=>{(0,_vue.nextTick)(()=>{u?(u(d),e()):("obsolete"===getConfig().validToReject?t:e)(d)})};var r,i,a,o,s=()=>{var t;n.cell=v.getCellElement(n.row,n.column),(0,_dom.scrollToView)(n.cell),t=n,new Promise(e=>{!1===_.value.autoPos?(v.dispatchEvent("valid-error",t,null),e()):v.handleEdit(t,{type:"valid-error",trigger:"call"}).then(()=>{e(E.showValidTooltip(t))})}).then(l)};!1===p.autoPos?l():(o=n.row,r=n.column,a=c.indexOf(o),i=g.indexOf(r),a=0<a?c[a-1]:o,o=0<i?g[i-1]:r,v.scrollToRow(a,o).then(s))}))}return f.validErrorMaps={},(0,_vue.nextTick)().then(()=>{u&&u()})},V=(w={fullValidate(e,t){return"development"===process.env.NODE_ENV&&_xeUtils.default.isFunction(t)&&(0,_log.warnLog)("vxe.error.notValidators",["fullValidate(rows, callback)","fullValidate(rows)"]),l(e,t,!0)},validate(e,t){return"development"===process.env.NODE_ENV&&_xeUtils.default.isFunction(t)&&(0,_log.warnLog)("vxe.error.notValidators",["validate(rows, callback)","validate(rows)"]),l(e,t)},clearValidate(e,t){var l=f["validErrorMaps"],r=g.value,i=_.value,e=_xeUtils.default.isArray(e)?e:e?[e]:[];const a=_xeUtils.default.isArray(t)?t:(t?[t]:[]).map(e=>(0,_util.handleFieldOrColumn)(v,e));let o={};if(r&&r.reactData.visible&&r.close(),"single"===i.msgMode)f.validErrorMaps={};else{if(e.length&&a.length)o=Object.assign({},l),e.forEach(t=>{a.forEach(e=>{e=(0,_util.getRowid)(v,t)+":"+e.id;o[e]&&delete o[e]})});else if(e.length){const s=e.map(e=>""+(0,_util.getRowid)(v,e));_xeUtils.default.each(l,(e,t)=>{-1<s.indexOf(t.split(":")[0])&&(o[t]=e)})}else if(a.length){const n=a.map(e=>""+e.id);_xeUtils.default.each(l,(e,t)=>{-1<n.indexOf(t.split(":")[1])&&(o[t]=e)})}f.validErrorMaps=o}return(0,_vue.nextTick)()}},(e,t)=>{var{type:e,min:l,max:r,pattern:i}=e,e="number"===e,a=e?_xeUtils.default.toNumber(t):_xeUtils.default.getSize(t);return!(!e||!isNaN(t))||!_xeUtils.default.eqNull(l)&&a<_xeUtils.default.toNumber(l)||!_xeUtils.default.eqNull(r)&&a>_xeUtils.default.toNumber(r)||!(!i||(_xeUtils.default.isRegExp(i)?i:new RegExp(i)).test(t))});return E={validCellRules(e,n,u,t){var l=m["editRules"],r=u["field"];const d=[],c=[];if(r&&l){const g=_xeUtils.default.get(l,r);if(g){const p=_xeUtils.default.isUndefined(t)?_xeUtils.default.get(n,r):t;g.forEach(t=>{const{type:l,trigger:r,required:i,validator:a}=t;if("all"===e||!r||e===r)if(a){var o={cellValue:p,rule:t,rules:g,row:n,rowIndex:v.getRowIndex(n),column:u,columnIndex:v.getColumnIndex(u),field:u.field,$table:v,$grid:v.xegrid};let e;_xeUtils.default.isString(a)?(s=validators.get(a))?(s=s.tableCellValidatorMethod||s.cellValidatorMethod)?e=s(o):"development"===process.env.NODE_ENV&&(0,_log.warnLog)("vxe.error.notValidators",[a]):"development"===process.env.NODE_ENV&&(0,_log.errLog)("vxe.error.notValidators",[a]):e=a(o),e&&(_xeUtils.default.isError(e)?(R=!0,d.push(new Rule({type:"custom",trigger:r,content:e.message,rule:new Rule(t)}))):e.catch&&c.push(e.catch(e=>{R=!0,d.push(new Rule({type:"custom",trigger:r,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))})))}else{var s="array"===l,o=_xeUtils.default.isArray(p);let e=!0;e=s||o?!o||!p.length:_xeUtils.default.isString(p)?(0,_utils.eqEmptyValue)(p.trim()):(0,_utils.eqEmptyValue)(p),(i?e||V(t,p):!e&&V(t,p))&&(R=!0,d.push(new Rule(t)))}})}}return Promise.all(c).then(()=>{var e;if(d.length)return e={rules:d,rule:d[0]},Promise.reject(e)})},hasCellRules(t,e,l){var r=m["editRules"],l=l["field"];return!(!l||!r)&&(r=_xeUtils.default.get(r,l))&&!!_xeUtils.default.find(r,e=>"all"===t||!e.trigger||t===e.trigger)},triggerValidate(t){var{editConfig:e,editRules:l}=m,r=f["editStore"],r=r["actived"];const i=u.value;var a=_.value;if(l&&"single"===a.msgMode&&(f.validErrorMaps={}),e&&l&&r.row){const{row:o,column:s,cell:n}=r.args;if(E.hasCellRules(t,o,s))return E.validCellRules(t,o,s).then(()=>{"row"===i.mode&&w.clearValidate(o,s)}).catch(({rule:e})=>{return e.trigger&&t!==e.trigger?Promise.resolve():(e={rule:e,row:o,column:s,cell:n},E.showValidTooltip(e),Promise.reject(e))})}return Promise.resolve()},showValidTooltip(e){var t=m["height"],{tableData:l,validStore:r,validErrorMaps:i}=f,{rule:a,row:o,column:s,cell:n}=e,u=_.value,d=g.value,c=a.content;return r.visible=!0,"single"===u.msgMode?f.validErrorMaps={[(0,_util.getRowid)(v,o)+":"+s.id]:{column:s,row:o,rule:a,content:c}}:f.validErrorMaps=Object.assign({},i,{[(0,_util.getRowid)(v,o)+":"+s.id]:{column:s,row:o,rule:a,content:c}}),v.dispatchEvent("valid-error",e,null),d&&("tooltip"===u.message||"default"===u.message&&!t&&l.length<2)?d.open(n,c):(0,_vue.nextTick)()}},Object.assign(Object.assign({},w),E)},setupGrid(e){return e.extendTableMethods(tableValidatorMethodKeys)}});