vxe-table 3.4.7-beta.2 → 3.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -216,7 +216,7 @@ var _default = {
216
216
  var ruleProps = Object.keys(validRest);
217
217
  return _this2.$nextTick().then(function () {
218
218
  if (ruleProps.length) {
219
- return validRest[ruleProps[0]][0];
219
+ return Promise.reject(validRest[ruleProps[0]][0]);
220
220
  }
221
221
 
222
222
  if (cb) {
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_tools=require("../../tools"),_utils=require("../../tools/src/utils");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 l=t[r];l.enumerable=l.enumerable||!1,l.configurable=!0,"value"in l&&(l.writable=!0),Object.defineProperty(e,l.key,l)}}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:"content",get:function(){return _tools.UtilTools.getFuncText(this.$options.content||this.$options.message)}},{key:"message",get:function(){return this.content}}]),t}();function validErrorRuleValue(e,t){var r=e.type,l=e.min,i=e.max,n=e.pattern,e="number"===r,r=e?_xeUtils.default.toNumber(t):_xeUtils.default.getSize(t);return!(!e||!isNaN(t))||(!_xeUtils.default.eqNull(l)&&r<_xeUtils.default.toNumber(l)||(!_xeUtils.default.eqNull(i)&&r>_xeUtils.default.toNumber(i)||!(!n||(_xeUtils.default.isRegExp(n)?n:new RegExp(n)).test(t))))}var _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,l){var u=this,a={},i=this.editRules,s=this.afterFullData,c=this.treeConfig,t=this.treeOpts;!0===e?r=s: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(),i){var d=this.getColumns(),e=function(r){var e;!l&&u.validRuleErr||(e=[],d.forEach(function(t){!l&&u.validRuleErr||!_xeUtils.default.has(i,t.property)||e.push(u.validCellRules("all",r,t).catch(function(e){e={rule:e.rule,rules:e.rules,rowIndex:u.getRowIndex(r),row:r,columnIndex:u.getColumnIndex(t),column:t,$table:u};if(a[t.property]||(a[t.property]=[]),a[t.property].push(e),!l)return u.validRuleErr=!0,Promise.reject(e)}))}),n.push(Promise.all(e)))};return c?_xeUtils.default.eachTree(r,e,t):r.forEach(e),Promise.all(n).then(function(){var e=Object.keys(a);return u.$nextTick().then(function(){return e.length?a[e[0]][0]:void(o&&o())})}).catch(function(n){return new Promise(function(e){function t(){u.$nextTick(function(){o?(o(a),e()):e(a)})}function r(){n.cell=u.getCell(n.row,n.column),_tools.DomTools.scrollToView(n.cell),u.handleValidError(n).then(t)}var l=n.row,i=s.indexOf(l),l=0<i?s[i-1]:l;!1===u.validOpts.autoPos?t():(c?u.scrollToTreeRow(l):u.scrollToRow(l)).then(r)})})}return this.$nextTick().then(function(){o&&o()})},hasCellRules:function(t,e,r){var l=this.editRules,r=r.property;if(r&&l){r=_xeUtils.default.get(l,r);return r&&_xeUtils.default.find(r,function(e){return"all"===t||!e.trigger||t===e.trigger})}return!1},validCellRules:function(n,o,u,e){var a,s,c=this,t=this.editRules,r=u.property,d=[],f=[];return r&&t&&((a=_xeUtils.default.get(t,r))&&(s=_xeUtils.default.isUndefined(e)?_xeUtils.default.get(o,r):e,a.forEach(function(t){var e,r=t.type,l=t.trigger,i=t.required;"all"!==n&&l&&n!==l||(_xeUtils.default.isFunction(t.validator)?(e=t.validator({cellValue:s,rule:t,rules:a,row:o,rowIndex:c.getRowIndex(o),column:u,columnIndex:c.getColumnIndex(u),$table:c}))&&(_xeUtils.default.isError(e)?(c.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:l,content:e.message,rule:new Rule(t)}))):e.catch&&f.push(e.catch(function(e){c.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:l,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))}))):(r="array"===r?!_xeUtils.default.isArray(s)||!s.length:(0,_utils.eqEmptyValue)(s),(i?r||validErrorRuleValue(t,s):!r&&validErrorRuleValue(t,s))&&(c.validRuleErr=!0,d.push(new Rule(t)))))}))),Promise.all(f).then(function(){if(d.length){var e={rules:d,rule:d[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,l=this.editStore,i=this.editRules,n=this.validStore,l=l.actived;if(l.row&&i){var l=l.args,o=l.row,u=l.column,a=l.cell;if(this.hasCellRules(t,o,u))return this.validCellRules(t,o,u).then(function(){"row"===e.mode&&n.visible&&n.row===o&&n.column===u&&r.clearValidate()}).catch(function(e){e=e.rule;if(e.trigger&&t!==e.trigger)return Promise.resolve();e={rule:e,row:o,column:u,cell:a};return r.showValidTooltip(e),Promise.reject(e)})}return Promise.resolve()},showValidTooltip:function(e){var t=this,r=this.$refs,l=this.height,i=this.tableData,n=this.validOpts,o=e.rule,u=e.row,a=e.column,s=e.cell,c=r.validTip,d=o.content;return this.$nextTick(function(){if(Object.assign(t.validStore,{row:u,column:a,rule:o,content:d,visible:!0}),t.emitEvent("valid-error",e),c&&("tooltip"===n.message||"default"===n.message&&!l&&i.length<2))return c.open(s,d)})}}};exports.default=_default;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_tools=require("../../tools"),_utils=require("../../tools/src/utils");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:"content",get:function(){return _tools.UtilTools.getFuncText(this.$options.content||this.$options.message)}},{key:"message",get:function(){return this.content}}]),t}();function validErrorRuleValue(e,t){var r=e.type,i=e.min,l=e.max,n=e.pattern,e="number"===r,r=e?_xeUtils.default.toNumber(t):_xeUtils.default.getSize(t);return!(!e||!isNaN(t))||(!_xeUtils.default.eqNull(i)&&r<_xeUtils.default.toNumber(i)||(!_xeUtils.default.eqNull(l)&&r>_xeUtils.default.toNumber(l)||!(!n||(_xeUtils.default.isRegExp(n)?n:new RegExp(n)).test(t))))}var _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 u=this,a={},l=this.editRules,s=this.afterFullData,c=this.treeConfig,t=this.treeOpts;!0===e?r=s: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 d=this.getColumns(),e=function(r){var e;!i&&u.validRuleErr||(e=[],d.forEach(function(t){!i&&u.validRuleErr||!_xeUtils.default.has(l,t.property)||e.push(u.validCellRules("all",r,t).catch(function(e){e={rule:e.rule,rules:e.rules,rowIndex:u.getRowIndex(r),row:r,columnIndex:u.getColumnIndex(t),column:t,$table:u};if(a[t.property]||(a[t.property]=[]),a[t.property].push(e),!i)return u.validRuleErr=!0,Promise.reject(e)}))}),n.push(Promise.all(e)))};return c?_xeUtils.default.eachTree(r,e,t):r.forEach(e),Promise.all(n).then(function(){var e=Object.keys(a);return u.$nextTick().then(function(){return e.length?Promise.reject(a[e[0]][0]):void(o&&o())})}).catch(function(n){return new Promise(function(e){function t(){u.$nextTick(function(){o?(o(a),e()):e(a)})}function r(){n.cell=u.getCell(n.row,n.column),_tools.DomTools.scrollToView(n.cell),u.handleValidError(n).then(t)}var i=n.row,l=s.indexOf(i),i=0<l?s[l-1]:i;!1===u.validOpts.autoPos?t():(c?u.scrollToTreeRow(i):u.scrollToRow(i)).then(r)})})}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(n,o,u,e){var a,s,c=this,t=this.editRules,r=u.property,d=[],f=[];return r&&t&&((a=_xeUtils.default.get(t,r))&&(s=_xeUtils.default.isUndefined(e)?_xeUtils.default.get(o,r):e,a.forEach(function(t){var e,r=t.type,i=t.trigger,l=t.required;"all"!==n&&i&&n!==i||(_xeUtils.default.isFunction(t.validator)?(e=t.validator({cellValue:s,rule:t,rules:a,row:o,rowIndex:c.getRowIndex(o),column:u,columnIndex:c.getColumnIndex(u),$table:c}))&&(_xeUtils.default.isError(e)?(c.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:i,content:e.message,rule:new Rule(t)}))):e.catch&&f.push(e.catch(function(e){c.validRuleErr=!0,d.push(new Rule({type:"custom",trigger:i,content:e&&e.message?e.message:t.content||t.message,rule:new Rule(t)}))}))):(r="array"===r?!_xeUtils.default.isArray(s)||!s.length:(0,_utils.eqEmptyValue)(s),(l?r||validErrorRuleValue(t,s):!r&&validErrorRuleValue(t,s))&&(c.validRuleErr=!0,d.push(new Rule(t)))))}))),Promise.all(f).then(function(){if(d.length){var e={rules:d,rule:d[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,o=i.row,u=i.column,a=i.cell;if(this.hasCellRules(t,o,u))return this.validCellRules(t,o,u).then(function(){"row"===e.mode&&n.visible&&n.row===o&&n.column===u&&r.clearValidate()}).catch(function(e){e=e.rule;if(e.trigger&&t!==e.trigger)return Promise.resolve();e={rule:e,row:o,column:u,cell:a};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,o=e.rule,u=e.row,a=e.column,s=e.cell,c=r.validTip,d=o.content;return this.$nextTick(function(){if(Object.assign(t.validStore,{row:u,column:a,rule:o,content:d,visible:!0}),t.emitEvent("valid-error",e),c&&("tooltip"===n.message||"default"===n.message&&!i&&l.length<2))return c.open(s,d)})}}};exports.default=_default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.4.7-beta.2",
3
+ "version": "3.4.7",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...",
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -66,8 +66,7 @@
66
66
  "vuex": "^3.4.0",
67
67
  "xe-ajax": "^4.0.5",
68
68
  "xe-clipboard": "^1.10.1",
69
- "xe-utils": "^3.4.2",
70
- "xlsx": "^0.17.0"
69
+ "xe-utils": "^3.4.3"
71
70
  },
72
71
  "peerDependencies": {
73
72
  "vue": "^2.6.0",
@@ -2,7 +2,7 @@ import XEUtils from 'xe-utils'
2
2
  import GlobalConfig from '../../v-x-e-table/src/conf'
3
3
  import VXETable from '../../v-x-e-table'
4
4
  import { UtilTools } from '../../tools'
5
- import { mergeBodyMethod, toTreePathSeq } from '../../table/src/util'
5
+ import { mergeBodyMethod } from '../../table/src/util'
6
6
  import { browse } from '../../tools/src/dom'
7
7
 
8
8
  const { formatText } = UtilTools
@@ -40,16 +40,13 @@ function hasTreeChildren ($xetable, row) {
40
40
  return row[treeOpts.children] && row[treeOpts.children].length > 0
41
41
  }
42
42
 
43
- function getSeq ($xetable, row, rowIndex, column, columnIndex, path) {
43
+ function getSeq ($xetable, row, rowIndex, column, columnIndex) {
44
44
  const seqOpts = $xetable.seqOpts
45
45
  const seqMethod = seqOpts.seqMethod || column.seqMethod
46
46
  if (seqMethod) {
47
47
  return seqMethod({ row, rowIndex, column, columnIndex })
48
48
  }
49
- if (path) {
50
- return toTreePathSeq(path)
51
- }
52
- return seqOpts.startIndex + rowIndex + 1
49
+ return $xetable.getRowSeq(row)
53
50
  }
54
51
 
55
52
  function defaultFilterExportColumn (column) {
@@ -106,7 +103,7 @@ function getLabelData ($xetable, opts, columns, datas) {
106
103
  } else {
107
104
  switch (column.type) {
108
105
  case 'seq':
109
- cellValue = getSeq($xetable, row, rowIndex, column, columnIndex, path)
106
+ cellValue = getSeq($xetable, row, rowIndex, column, columnIndex)
110
107
  break
111
108
  case 'checkbox':
112
109
  cellValue = toBooleanValue($xetable.isCheckedByCheckboxRow(row))
@@ -162,7 +159,7 @@ function getLabelData ($xetable, opts, columns, datas) {
162
159
  } else {
163
160
  switch (column.type) {
164
161
  case 'seq':
165
- cellValue = getSeq($xetable, row, rowIndex, column, columnIndex, null)
162
+ cellValue = getSeq($xetable, row, rowIndex, column, columnIndex)
166
163
  break
167
164
  case 'checkbox':
168
165
  cellValue = toBooleanValue($xetable.isCheckedByCheckboxRow(row))
@@ -283,7 +283,7 @@ const Methods = {
283
283
  return clearTableAllStatus(this)
284
284
  },
285
285
  /**
286
- * 同步 data 数据
286
+ * 同步 data 数据(即将废弃)
287
287
  * 如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
288
288
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
289
289
  */
@@ -1167,34 +1167,53 @@ const Methods = {
1167
1167
  })
1168
1168
  }
1169
1169
  if (treeConfig && transform) {
1170
+ // 筛选虚拟树
1170
1171
  tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, { ...treeOpts, original: true })
1172
+ tableData = tableTree
1171
1173
  } else {
1172
1174
  tableData = treeConfig ? tableFullTreeData.filter(handleFilter) : tableFullData.filter(handleFilter)
1173
1175
  tableTree = tableData
1174
1176
  }
1175
1177
  } else {
1176
- tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
1177
- tableTree = tableData
1178
+ if (treeConfig && transform) {
1179
+ // 还原虚拟树
1180
+ tableTree = XEUtils.searchTree(tableFullTreeData, () => true, { ...treeOpts, original: true })
1181
+ tableData = tableTree
1182
+ } else {
1183
+ tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
1184
+ tableTree = tableData
1185
+ }
1178
1186
  }
1179
1187
  const firstOrderColumn = orderColumns[0]
1180
1188
  if (!allRemoteSort && firstOrderColumn) {
1181
- if (allSortMethod) {
1182
- const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.property, order: firstOrderColumn.order, sortList: orderColumns, $table: this })
1183
- tableData = XEUtils.isArray(sortRests) ? sortRests : tableData
1189
+ if (treeConfig && transform) {
1190
+ // 虚拟树和列表一样,只能排序根级节点
1191
+ if (allSortMethod) {
1192
+ const sortRests = allSortMethod({ data: tableTree, sortList: orderColumns, $table: this })
1193
+ tableTree = XEUtils.isArray(sortRests) ? sortRests : tableTree
1194
+ } else {
1195
+ tableTree = XEUtils.orderBy(tableTree, orderColumns.map(({ column, order }) => [getOrderField(this, column), order]))
1196
+ }
1197
+ tableData = tableTree
1184
1198
  } else {
1185
- // 兼容 v4
1186
- if (sortMultiple) {
1187
- tableData = XEUtils.orderBy(tableData, orderColumns.map(({ column, order }) => [getOrderField(this, column), order]))
1199
+ if (allSortMethod) {
1200
+ const sortRests = allSortMethod({ data: tableData, column: firstOrderColumn.column, property: firstOrderColumn.property, order: firstOrderColumn.order, sortList: orderColumns, $table: this })
1201
+ tableData = XEUtils.isArray(sortRests) ? sortRests : tableData
1188
1202
  } else {
1189
- // 兼容 v2,在 v4 中废弃, sortBy 不能为数组
1190
- let sortByConfs
1191
- if (XEUtils.isArray(firstOrderColumn.sortBy)) {
1192
- sortByConfs = firstOrderColumn.sortBy.map(item => [item, firstOrderColumn.order])
1203
+ // 兼容 v4
1204
+ if (sortMultiple) {
1205
+ tableData = XEUtils.orderBy(tableData, orderColumns.map(({ column, order }) => [getOrderField(this, column), order]))
1206
+ } else {
1207
+ // 兼容 v2,在 v4 中废弃, sortBy 不能为数组
1208
+ let sortByConfs
1209
+ if (XEUtils.isArray(firstOrderColumn.sortBy)) {
1210
+ sortByConfs = firstOrderColumn.sortBy.map(item => [item, firstOrderColumn.order])
1211
+ }
1212
+ tableData = XEUtils.orderBy(tableData, sortByConfs || [firstOrderColumn].map(({ column, order }) => [getOrderField(this, column), order]))
1193
1213
  }
1194
- tableData = XEUtils.orderBy(tableData, sortByConfs || [firstOrderColumn].map(({ column, order }) => [getOrderField(this, column), order]))
1195
1214
  }
1215
+ tableTree = tableData
1196
1216
  }
1197
- tableTree = tableData
1198
1217
  }
1199
1218
  this.afterFullData = tableData
1200
1219
  this.afterTreeFullData = tableTree
@@ -1214,14 +1233,16 @@ const Methods = {
1214
1233
  const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
1215
1234
  if (allrest) {
1216
1235
  allrest.seq = seq
1236
+ allrest._index = index
1217
1237
  }
1218
1238
  if (fullrest) {
1219
1239
  fullrest.seq = seq
1240
+ fullrest._index = index
1220
1241
  } else {
1221
1242
  fullAllDataRowIdData[rowid] = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1222
1243
  fullDataRowIdData[rowid] = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1223
1244
  }
1224
- }, treeOpts)
1245
+ }, { children: treeOpts.mapChildren })
1225
1246
  } else {
1226
1247
  afterFullData.forEach((row, index) => {
1227
1248
  const rowid = getRowid(this, row)
@@ -1230,6 +1251,7 @@ const Methods = {
1230
1251
  const seq = index + 1
1231
1252
  if (allrest) {
1232
1253
  allrest.seq = seq
1254
+ allrest._index = index
1233
1255
  }
1234
1256
  if (fullrest) {
1235
1257
  fullrest.seq = seq
@@ -151,7 +151,7 @@ export default {
151
151
  const ruleProps = Object.keys(validRest)
152
152
  return this.$nextTick().then(() => {
153
153
  if (ruleProps.length) {
154
- return validRest[ruleProps[0]][0]
154
+ return Promise.reject(validRest[ruleProps[0]][0])
155
155
  }
156
156
  if (cb) {
157
157
  cb()
package/types/table.d.ts CHANGED
@@ -272,6 +272,7 @@ export declare class Table extends VXETableComponent {
272
272
  /**
273
273
  * 同步 data 数据;如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
274
274
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
275
+ * @deprecated
275
276
  */
276
277
  syncData(): Promise<any>;
277
278
  /**