vxe-table 3.19.39 → 3.20.0-beta.1

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.
Files changed (109) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.esm.js +2 -1
  3. package/es/index.min.css +1 -1
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/module/custom/mixin.js +6 -4
  7. package/es/table/module/custom/panel.js +806 -799
  8. package/es/table/module/edit/mixin.js +43 -31
  9. package/es/table/module/export/export-panel.js +511 -458
  10. package/es/table/module/export/import-panel.js +224 -192
  11. package/es/table/module/keyboard/mixin.js +2 -2
  12. package/es/table/module/menu/panel.js +165 -161
  13. package/es/table/module/validator/mixin.js +255 -236
  14. package/es/table/src/body.js +2 -1
  15. package/es/table/src/cell.js +2 -2
  16. package/es/table/src/methods.js +33 -43
  17. package/es/table/src/table.js +13 -249
  18. package/es/table/src/util.js +242 -0
  19. package/es/table/style.css +23 -50
  20. package/es/table/style.min.css +1 -1
  21. package/es/ui/index.js +2 -2
  22. package/es/ui/src/dom.js +22 -0
  23. package/es/ui/src/log.js +1 -1
  24. package/es/vxe-table/style.css +23 -50
  25. package/es/vxe-table/style.min.css +1 -1
  26. package/lib/index.common.js +2 -1
  27. package/lib/index.css +1 -1
  28. package/lib/index.min.css +1 -1
  29. package/lib/index.umd.js +3640 -4790
  30. package/lib/index.umd.min.js +1 -1
  31. package/lib/style.css +1 -1
  32. package/lib/style.min.css +1 -1
  33. package/lib/table/module/custom/mixin.js +6 -4
  34. package/lib/table/module/custom/mixin.min.js +1 -1
  35. package/lib/table/module/custom/panel.js +693 -685
  36. package/lib/table/module/custom/panel.min.js +1 -1
  37. package/lib/table/module/edit/mixin.js +47 -31
  38. package/lib/table/module/edit/mixin.min.js +1 -1
  39. package/lib/table/module/export/export-panel.js +450 -384
  40. package/lib/table/module/export/export-panel.min.js +1 -1
  41. package/lib/table/module/export/import-panel.js +200 -159
  42. package/lib/table/module/export/import-panel.min.js +1 -1
  43. package/lib/table/module/keyboard/mixin.js +2 -2
  44. package/lib/table/module/keyboard/mixin.min.js +1 -1
  45. package/lib/table/module/menu/panel.js +119 -114
  46. package/lib/table/module/menu/panel.min.js +1 -1
  47. package/lib/table/module/validator/mixin.js +271 -259
  48. package/lib/table/module/validator/mixin.min.js +1 -1
  49. package/lib/table/src/body.js +2 -1
  50. package/lib/table/src/body.min.js +1 -1
  51. package/lib/table/src/cell.js +2 -2
  52. package/lib/table/src/cell.min.js +1 -1
  53. package/lib/table/src/methods.js +33 -45
  54. package/lib/table/src/methods.min.js +1 -1
  55. package/lib/table/src/table.js +12 -248
  56. package/lib/table/src/table.min.js +1 -1
  57. package/lib/table/src/util.js +243 -0
  58. package/lib/table/src/util.min.js +1 -1
  59. package/lib/table/style/style.css +23 -50
  60. package/lib/table/style/style.min.css +1 -1
  61. package/lib/ui/index.js +2 -2
  62. package/lib/ui/index.min.js +1 -1
  63. package/lib/ui/src/dom.js +22 -0
  64. package/lib/ui/src/dom.min.js +1 -1
  65. package/lib/ui/src/log.js +1 -1
  66. package/lib/ui/src/log.min.js +1 -1
  67. package/lib/v-x-e-table/index.js +2 -1
  68. package/lib/v-x-e-table/index.min.js +1 -1
  69. package/lib/vxe-colgroup/index.js +2 -1
  70. package/lib/vxe-colgroup/index.min.js +1 -1
  71. package/lib/vxe-column/index.js +2 -1
  72. package/lib/vxe-column/index.min.js +1 -1
  73. package/lib/vxe-grid/index.js +2 -1
  74. package/lib/vxe-grid/index.min.js +1 -1
  75. package/lib/vxe-table/index.js +2 -1
  76. package/lib/vxe-table/index.min.js +1 -1
  77. package/lib/vxe-table/style/style.css +23 -50
  78. package/lib/vxe-table/style/style.min.css +1 -1
  79. package/lib/vxe-toolbar/index.js +2 -1
  80. package/lib/vxe-toolbar/index.min.js +1 -1
  81. package/lib/vxe-ui/index.js +2 -1
  82. package/lib/vxe-ui/index.min.js +1 -1
  83. package/lib/vxe-v-x-e-table/index.js +2 -1
  84. package/lib/vxe-v-x-e-table/index.min.js +1 -1
  85. package/package.json +1 -1
  86. package/packages/table/module/custom/mixin.ts +7 -4
  87. package/packages/table/module/custom/panel.ts +846 -839
  88. package/packages/table/module/edit/mixin.ts +55 -35
  89. package/packages/table/module/export/export-panel.ts +545 -469
  90. package/packages/table/module/export/import-panel.ts +245 -202
  91. package/packages/table/module/filter/panel.ts +4 -18
  92. package/packages/table/module/keyboard/mixin.ts +2 -2
  93. package/packages/table/module/menu/panel.ts +171 -163
  94. package/packages/table/module/validator/mixin.ts +279 -240
  95. package/packages/table/src/body.ts +2 -1
  96. package/packages/table/src/cell.ts +2 -2
  97. package/packages/table/src/methods.ts +43 -45
  98. package/packages/table/src/table.ts +14 -260
  99. package/packages/table/src/util.ts +254 -0
  100. package/packages/ui/index.ts +1 -1
  101. package/packages/ui/src/dom.ts +22 -0
  102. package/styles/components/table.scss +5 -2
  103. package/styles/theme/base.scss +2 -1
  104. /package/es/{iconfont.1767145426781.ttf → iconfont.1767492234857.ttf} +0 -0
  105. /package/es/{iconfont.1767145426781.woff → iconfont.1767492234857.woff} +0 -0
  106. /package/es/{iconfont.1767145426781.woff2 → iconfont.1767492234857.woff2} +0 -0
  107. /package/lib/{iconfont.1767145426781.ttf → iconfont.1767492234857.ttf} +0 -0
  108. /package/lib/{iconfont.1767145426781.woff → iconfont.1767492234857.woff} +0 -0
  109. /package/lib/{iconfont.1767145426781.woff2 → iconfont.1767492234857.woff2} +0 -0
@@ -151,253 +151,252 @@ function checkRuleStatus(rule, val) {
151
151
  }
152
152
  return true;
153
153
  }
154
+ /**
155
+ * 聚焦到校验通过的单元格并弹出校验错误提示
156
+ */
157
+ function handleValidError($xeTable, params) {
158
+ return new Promise(resolve => {
159
+ const validOpts = $xeTable.computeValidOpts;
160
+ if (validOpts.autoPos === false) {
161
+ $xeTable.dispatchEvent('valid-error', params, null);
162
+ resolve();
163
+ } else {
164
+ $xeTable.handleEdit(params, {
165
+ type: 'valid-error',
166
+ trigger: 'call'
167
+ }).then(() => {
168
+ setTimeout(() => {
169
+ resolve($xeTable.showValidTooltip(params));
170
+ }, 10);
171
+ });
172
+ }
173
+ });
174
+ }
175
+ function handleErrMsgMode($xeTable, validErrMaps) {
176
+ const validOpts = $xeTable.computeValidOpts;
177
+ if (validOpts.msgMode === 'single') {
178
+ const keys = Object.keys(validErrMaps);
179
+ const resMaps = {};
180
+ if (keys.length) {
181
+ const firstKey = keys[0];
182
+ resMaps[firstKey] = validErrMaps[firstKey];
183
+ }
184
+ return resMaps;
185
+ }
186
+ return validErrMaps;
187
+ }
188
+ /**
189
+ * 对表格数据进行校验
190
+ * 如果不指定数据,则默认只校验临时变动的数据,例如新增或修改
191
+ * 如果传 true 则校验当前表格数据
192
+ * 如果传 row 指定行记录,则只验证传入的行
193
+ * 如果传 rows 为多行记录,则只验证传入的行
194
+ * 如果只传 callback 否则默认验证整个表格数据
195
+ * 返回 Promise 对象,或者使用回调方式
196
+ */
197
+ function beginValidate($xeTable, rows, cols, cb, isFull) {
198
+ const props = $xeTable;
199
+ const reactData = $xeTable;
200
+ const internalData = $xeTable;
201
+ const validRest = {};
202
+ const {
203
+ editRules,
204
+ treeConfig
205
+ } = props;
206
+ const {
207
+ isRowGroupStatus
208
+ } = reactData;
209
+ const {
210
+ afterFullData,
211
+ pendingRowMaps,
212
+ removeRowMaps
213
+ } = internalData;
214
+ const treeOpts = $xeTable.computeTreeOpts;
215
+ const aggregateOpts = $xeTable.computeAggregateOpts;
216
+ const validOpts = $xeTable.computeValidOpts;
217
+ let validList;
218
+ if (rows === true) {
219
+ validList = afterFullData;
220
+ } else if (rows) {
221
+ if (_xeUtils.default.isFunction(rows)) {
222
+ cb = rows;
223
+ } else {
224
+ validList = _xeUtils.default.isArray(rows) ? rows : [rows];
225
+ }
226
+ }
227
+ if (!validList) {
228
+ validList = $xeTable.getInsertRecords().concat($xeTable.getUpdateRecords());
229
+ }
230
+ const rowValidErrs = [];
231
+ internalData._lastCallTime = Date.now();
232
+ internalData.validRuleErr = false; // 如果为快速校验,当存在某列校验不通过时将终止执行
233
+ $xeTable.clearValidate();
234
+ const validErrMaps = {};
235
+ if (editRules) {
236
+ const columns = cols && cols.length ? cols : $xeTable.getColumns();
237
+ const handleVaild = row => {
238
+ const rowid = (0, _util.getRowid)($xeTable, row);
239
+ // 是否删除
240
+ if (removeRowMaps[rowid]) {
241
+ return;
242
+ }
243
+ // 是否标记删除
244
+ if (pendingRowMaps[rowid]) {
245
+ return;
246
+ }
247
+ if ($xeTable.isAggregateRecord(row)) {
248
+ return;
249
+ }
250
+ if (isFull || !internalData.validRuleErr) {
251
+ const colVailds = [];
252
+ columns.forEach(column => {
253
+ const field = _xeUtils.default.isString(column) ? column : column.field;
254
+ if ((isFull || !internalData.validRuleErr) && _xeUtils.default.has(editRules, field)) {
255
+ colVailds.push($xeTable.validCellRules('all', row, column).catch(({
256
+ rule,
257
+ rules
258
+ }) => {
259
+ const rest = {
260
+ rule,
261
+ rules,
262
+ rowIndex: $xeTable.getRowIndex(row),
263
+ row,
264
+ columnIndex: $xeTable.getColumnIndex(column),
265
+ column,
266
+ field,
267
+ $table: $xeTable
268
+ };
269
+ if (!validRest[field]) {
270
+ validRest[field] = [];
271
+ }
272
+ validErrMaps[`${(0, _util.getRowid)($xeTable, row)}:${column.id}`] = {
273
+ column,
274
+ row,
275
+ rule,
276
+ content: rule.content
277
+ };
278
+ validRest[field].push(rest);
279
+ if (!isFull) {
280
+ internalData.validRuleErr = true;
281
+ return Promise.reject(rest);
282
+ }
283
+ }));
284
+ }
285
+ });
286
+ rowValidErrs.push(Promise.all(colVailds));
287
+ }
288
+ };
289
+ if (isRowGroupStatus) {
290
+ _xeUtils.default.eachTree(validList, handleVaild, {
291
+ children: aggregateOpts.mapChildrenField
292
+ });
293
+ } else if (treeConfig) {
294
+ const childrenField = treeOpts.children || treeOpts.childrenField;
295
+ _xeUtils.default.eachTree(validList, handleVaild, {
296
+ children: childrenField
297
+ });
298
+ } else {
299
+ validList.forEach(handleVaild);
300
+ }
301
+ return Promise.all(rowValidErrs).then(() => {
302
+ const ruleProps = Object.keys(validRest);
303
+ reactData.validErrorMaps = handleErrMsgMode($xeTable, validErrMaps);
304
+ return $xeTable.$nextTick().then(() => {
305
+ if (ruleProps.length) {
306
+ return Promise.reject(validRest[ruleProps[0]][0]);
307
+ }
308
+ if (cb) {
309
+ cb();
310
+ }
311
+ });
312
+ }).catch(firstErrParams => {
313
+ return new Promise((resolve, reject) => {
314
+ const finish = () => {
315
+ $xeTable.$nextTick(() => {
316
+ if (cb) {
317
+ cb(validRest);
318
+ resolve();
319
+ } else {
320
+ if (getConfig().validToReject === 'obsolete') {
321
+ // 已废弃,校验失败将不会执行catch
322
+ reject(validRest);
323
+ } else {
324
+ resolve(validRest);
325
+ }
326
+ }
327
+ });
328
+ };
329
+ const posAndFinish = () => {
330
+ firstErrParams.cell = $xeTable.getCellElement(firstErrParams.row, firstErrParams.column);
331
+ (0, _dom.scrollToView)(firstErrParams.cell);
332
+ handleValidError($xeTable, firstErrParams).then(finish);
333
+ };
334
+ /**
335
+ * 当校验不通过时
336
+ * 将表格滚动到可视区
337
+ * 由于提示信息至少需要占一行,定位向上偏移一行
338
+ */
339
+ if (validOpts.autoPos === false) {
340
+ finish();
341
+ } else {
342
+ const row = firstErrParams.row;
343
+ const column = firstErrParams.column;
344
+ $xeTable.scrollToRow(row, column).then(posAndFinish);
345
+ }
346
+ });
347
+ });
348
+ } else {
349
+ reactData.validErrorMaps = {};
350
+ }
351
+ return $xeTable.$nextTick().then(() => {
352
+ if (cb) {
353
+ cb();
354
+ }
355
+ });
356
+ }
154
357
  var _default = exports.default = {
155
358
  methods: {
156
359
  /**
157
360
  * 完整校验,和 validate 的区别就是会给有效数据中的每一行进行校验
158
361
  */
159
362
  _fullValidate(rows, cb) {
363
+ const $xeTable = this;
160
364
  if (_xeUtils.default.isFunction(cb)) {
161
365
  (0, _log.warnLog)('vxe.error.notValidators', ['fullValidate(rows, callback)', 'fullValidate(rows)']);
162
366
  }
163
- return this.beginValidate(rows, null, cb, true);
367
+ return beginValidate($xeTable, rows, null, cb, true);
164
368
  },
165
369
  /**
166
370
  * 快速校验,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
167
371
  */
168
372
  _validate(rows, cb) {
373
+ const $xeTable = this;
169
374
  if (_xeUtils.default.isFunction(cb)) {
170
375
  (0, _log.warnLog)('vxe.error.notValidators', ['validate(rows, callback)', 'validate(rows)']);
171
376
  }
172
- return this.beginValidate(rows, null, cb);
377
+ return beginValidate($xeTable, rows, null, cb);
173
378
  },
174
379
  /**
175
380
  * 完整校验单元格,和 validateField 的区别就是会给有效数据中的每一行进行校验
176
381
  */
177
382
  _fullValidateField(rows, fieldOrColumn) {
383
+ const $xeTable = this;
178
384
  const colList = (_xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => (0, _util.handleFieldOrColumn)(this, column));
179
385
  if (colList.length) {
180
- return this.beginValidate(rows, colList, null, true);
386
+ return beginValidate($xeTable, rows, colList, null, true);
181
387
  }
182
- return this.$nextTick();
388
+ return $xeTable.$nextTick();
183
389
  },
184
390
  /**
185
391
  * 快速校验单元格,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
186
392
  */
187
393
  _validateField(rows, fieldOrColumn) {
394
+ const $xeTable = this;
188
395
  const colList = (_xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => (0, _util.handleFieldOrColumn)(this, column));
189
396
  if (colList.length) {
190
- return this.beginValidate(rows, colList, null);
397
+ return beginValidate($xeTable, rows, colList, null);
191
398
  }
192
- return this.$nextTick();
193
- },
194
- /**
195
- * 聚焦到校验通过的单元格并弹出校验错误提示
196
- */
197
- handleValidError(params) {
198
- const $xeTable = this;
199
- const {
200
- validOpts
201
- } = this;
202
- return new Promise(resolve => {
203
- if (validOpts.autoPos === false) {
204
- $xeTable.dispatchEvent('valid-error', params, null);
205
- resolve();
206
- } else {
207
- this.handleEdit(params, {
208
- type: 'valid-error',
209
- trigger: 'call'
210
- }).then(() => {
211
- setTimeout(() => {
212
- resolve(this.showValidTooltip(params));
213
- }, 10);
214
- });
215
- }
216
- });
217
- },
218
- handleErrMsgMode(validErrMaps) {
219
- const {
220
- validOpts
221
- } = this;
222
- if (validOpts.msgMode === 'single') {
223
- const keys = Object.keys(validErrMaps);
224
- const resMaps = {};
225
- if (keys.length) {
226
- const firstKey = keys[0];
227
- resMaps[firstKey] = validErrMaps[firstKey];
228
- }
229
- return resMaps;
230
- }
231
- return validErrMaps;
232
- },
233
- /**
234
- * 对表格数据进行校验
235
- * 如果不指定数据,则默认只校验临时变动的数据,例如新增或修改
236
- * 如果传 true 则校验当前表格数据
237
- * 如果传 row 指定行记录,则只验证传入的行
238
- * 如果传 rows 为多行记录,则只验证传入的行
239
- * 如果只传 callback 否则默认验证整个表格数据
240
- * 返回 Promise 对象,或者使用回调方式
241
- */
242
- beginValidate(rows, cols, cb, isFull) {
243
- const $xeTable = this;
244
- const props = $xeTable;
245
- const reactData = $xeTable;
246
- const internalData = $xeTable;
247
- const validRest = {};
248
- const {
249
- editRules,
250
- treeConfig
251
- } = props;
252
- const {
253
- isRowGroupStatus
254
- } = reactData;
255
- const {
256
- afterFullData,
257
- pendingRowMaps,
258
- removeRowMaps
259
- } = internalData;
260
- const treeOpts = $xeTable.computeTreeOpts;
261
- const aggregateOpts = $xeTable.computeAggregateOpts;
262
- let validList;
263
- if (rows === true) {
264
- validList = afterFullData;
265
- } else if (rows) {
266
- if (_xeUtils.default.isFunction(rows)) {
267
- cb = rows;
268
- } else {
269
- validList = _xeUtils.default.isArray(rows) ? rows : [rows];
270
- }
271
- }
272
- if (!validList) {
273
- validList = this.getInsertRecords().concat(this.getUpdateRecords());
274
- }
275
- const rowValidErrs = [];
276
- this.lastCallTime = Date.now();
277
- this.validRuleErr = false; // 如果为快速校验,当存在某列校验不通过时将终止执行
278
- this.clearValidate();
279
- const validErrMaps = {};
280
- if (editRules) {
281
- const columns = cols && cols.length ? cols : this.getColumns();
282
- const handleVaild = row => {
283
- const rowid = (0, _util.getRowid)($xeTable, row);
284
- // 是否删除
285
- if (removeRowMaps[rowid]) {
286
- return;
287
- }
288
- // 是否标记删除
289
- if (pendingRowMaps[rowid]) {
290
- return;
291
- }
292
- if ($xeTable.isAggregateRecord(row)) {
293
- return;
294
- }
295
- if (isFull || !this.validRuleErr) {
296
- const colVailds = [];
297
- columns.forEach(column => {
298
- const field = _xeUtils.default.isString(column) ? column : column.field;
299
- if ((isFull || !this.validRuleErr) && _xeUtils.default.has(editRules, field)) {
300
- colVailds.push(this.validCellRules('all', row, column).catch(({
301
- rule,
302
- rules
303
- }) => {
304
- const rest = {
305
- rule,
306
- rules,
307
- rowIndex: this.getRowIndex(row),
308
- row,
309
- columnIndex: this.getColumnIndex(column),
310
- column,
311
- field,
312
- $table: this
313
- };
314
- if (!validRest[field]) {
315
- validRest[field] = [];
316
- }
317
- validErrMaps[`${(0, _util.getRowid)(this, row)}:${column.id}`] = {
318
- column,
319
- row,
320
- rule,
321
- content: rule.content
322
- };
323
- validRest[field].push(rest);
324
- if (!isFull) {
325
- this.validRuleErr = true;
326
- return Promise.reject(rest);
327
- }
328
- }));
329
- }
330
- });
331
- rowValidErrs.push(Promise.all(colVailds));
332
- }
333
- };
334
- if (isRowGroupStatus) {
335
- _xeUtils.default.eachTree(validList, handleVaild, {
336
- children: aggregateOpts.mapChildrenField
337
- });
338
- } else if (treeConfig) {
339
- const childrenField = treeOpts.children || treeOpts.childrenField;
340
- _xeUtils.default.eachTree(validList, handleVaild, {
341
- children: childrenField
342
- });
343
- } else {
344
- validList.forEach(handleVaild);
345
- }
346
- return Promise.all(rowValidErrs).then(() => {
347
- const ruleProps = Object.keys(validRest);
348
- this.validErrorMaps = this.handleErrMsgMode(validErrMaps);
349
- return this.$nextTick().then(() => {
350
- if (ruleProps.length) {
351
- return Promise.reject(validRest[ruleProps[0]][0]);
352
- }
353
- if (cb) {
354
- cb();
355
- }
356
- });
357
- }).catch(firstErrParams => {
358
- return new Promise((resolve, reject) => {
359
- const finish = () => {
360
- this.$nextTick(() => {
361
- if (cb) {
362
- cb(validRest);
363
- resolve();
364
- } else {
365
- if (getConfig().validToReject === 'obsolete') {
366
- // 已废弃,校验失败将不会执行catch
367
- reject(validRest);
368
- } else {
369
- resolve(validRest);
370
- }
371
- }
372
- });
373
- };
374
- const posAndFinish = () => {
375
- firstErrParams.cell = this.getCellElement(firstErrParams.row, firstErrParams.column);
376
- (0, _dom.scrollToView)(firstErrParams.cell);
377
- this.handleValidError(firstErrParams).then(finish);
378
- };
379
- /**
380
- * 当校验不通过时
381
- * 将表格滚动到可视区
382
- * 由于提示信息至少需要占一行,定位向上偏移一行
383
- */
384
- if (this.validOpts.autoPos === false) {
385
- finish();
386
- } else {
387
- const row = firstErrParams.row;
388
- const column = firstErrParams.column;
389
- this.scrollToRow(row, column).then(posAndFinish);
390
- }
391
- });
392
- });
393
- } else {
394
- this.validErrorMaps = {};
395
- }
396
- return this.$nextTick().then(() => {
397
- if (cb) {
398
- cb();
399
- }
400
- });
399
+ return $xeTable.$nextTick();
401
400
  },
402
401
  hasCellRules(type, row, column) {
403
402
  const {
@@ -427,18 +426,21 @@ var _default = exports.default = {
427
426
  * trigger=blur|change 触发方式(除非特殊场景,否则默认为空就行)
428
427
  */
429
428
  validCellRules(validType, row, column, val) {
429
+ const $xeTable = this;
430
+ const props = $xeTable;
431
+ const internalData = $xeTable;
430
432
  const {
431
433
  editRules
432
- } = this;
434
+ } = props;
433
435
  const {
434
- property
436
+ field
435
437
  } = column;
436
438
  const errorRules = [];
437
439
  const syncValidList = [];
438
- if (property && editRules) {
439
- const rules = _xeUtils.default.get(editRules, property);
440
+ if (field && editRules) {
441
+ const rules = _xeUtils.default.get(editRules, field);
440
442
  if (rules) {
441
- const cellValue = _xeUtils.default.isUndefined(val) ? _xeUtils.default.get(row, property) : val;
443
+ const cellValue = _xeUtils.default.isUndefined(val) ? _xeUtils.default.get(row, field) : val;
442
444
  rules.forEach(rule => {
443
445
  const {
444
446
  trigger,
@@ -451,11 +453,11 @@ var _default = exports.default = {
451
453
  rule,
452
454
  rules,
453
455
  row,
454
- rowIndex: this.getRowIndex(row),
456
+ rowIndex: $xeTable.getRowIndex(row),
455
457
  column,
456
- columnIndex: this.getColumnIndex(column),
457
- field: column.property,
458
- $table: this
458
+ columnIndex: $xeTable.getColumnIndex(column),
459
+ field: column.field,
460
+ $table: $xeTable
459
461
  };
460
462
  let customValid;
461
463
  if (_xeUtils.default.isString(validator)) {
@@ -475,7 +477,7 @@ var _default = exports.default = {
475
477
  }
476
478
  if (customValid) {
477
479
  if (_xeUtils.default.isError(customValid)) {
478
- this.validRuleErr = true;
480
+ internalData.validRuleErr = true;
479
481
  errorRules.push(new Rule({
480
482
  type: 'custom',
481
483
  trigger,
@@ -485,7 +487,7 @@ var _default = exports.default = {
485
487
  } else if (customValid.catch) {
486
488
  // 如果为异步校验(注:异步校验是并发无序的)
487
489
  syncValidList.push(customValid.catch(e => {
488
- this.validRuleErr = true;
490
+ internalData.validRuleErr = true;
489
491
  errorRules.push(new Rule({
490
492
  type: 'custom',
491
493
  trigger,
@@ -497,7 +499,7 @@ var _default = exports.default = {
497
499
  }
498
500
  } else {
499
501
  if (!checkRuleStatus(rule, cellValue)) {
500
- this.validRuleErr = true;
502
+ internalData.validRuleErr = true;
501
503
  errorRules.push(new Rule(rule));
502
504
  }
503
505
  }
@@ -516,34 +518,36 @@ var _default = exports.default = {
516
518
  });
517
519
  },
518
520
  _clearValidate(rows, fieldOrColumn) {
521
+ const $xeTable = this;
522
+ const reactData = $xeTable;
519
523
  const {
520
- validOpts,
521
524
  validErrorMaps
522
- } = this;
523
- const validTip = this.$refs.refValidTooltip;
525
+ } = reactData;
526
+ const validTip = $xeTable.$refs.refValidTooltip;
527
+ const validOpts = $xeTable.computeValidOpts;
524
528
  const rowList = _xeUtils.default.isArray(rows) ? rows : rows ? [rows] : [];
525
- const colList = (_xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => (0, _util.handleFieldOrColumn)(this, column));
529
+ const colList = (_xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => (0, _util.handleFieldOrColumn)($xeTable, column));
526
530
  let validErrMaps = {};
527
- if (validTip && validTip.visible) {
531
+ if (validTip && validTip.reactData.visible) {
528
532
  validTip.close();
529
533
  }
530
534
  // 如果是单个提示模式
531
535
  if (validOpts.msgMode === 'single') {
532
- this.validErrorMaps = {};
533
- return this.$nextTick();
536
+ reactData.validErrorMaps = {};
537
+ return $xeTable.$nextTick();
534
538
  }
535
539
  if (rowList.length && colList.length) {
536
540
  validErrMaps = Object.assign({}, validErrorMaps);
537
541
  rowList.forEach(row => {
538
542
  colList.forEach(column => {
539
- const validKey = `${(0, _util.getRowid)(this, row)}:${column.id}`;
543
+ const validKey = `${(0, _util.getRowid)($xeTable, row)}:${column.id}`;
540
544
  if (validErrMaps[validKey]) {
541
545
  delete validErrMaps[validKey];
542
546
  }
543
547
  });
544
548
  });
545
549
  } else if (rowList.length) {
546
- const rowIdList = rowList.map(row => `${(0, _util.getRowid)(this, row)}`);
550
+ const rowIdList = rowList.map(row => `${(0, _util.getRowid)($xeTable, row)}`);
547
551
  _xeUtils.default.each(validErrorMaps, (item, key) => {
548
552
  if (rowIdList.indexOf(key.split(':')[0]) > -1) {
549
553
  validErrMaps[key] = item;
@@ -557,26 +561,31 @@ var _default = exports.default = {
557
561
  }
558
562
  });
559
563
  }
560
- this.validErrorMaps = validErrMaps;
561
- return this.$nextTick();
564
+ reactData.validErrorMaps = validErrMaps;
565
+ return $xeTable.$nextTick();
562
566
  },
563
567
  /**
564
568
  * 触发校验
565
569
  */
566
570
  triggerValidate(type) {
571
+ const $xeTable = this;
572
+ const props = $xeTable;
573
+ const reactData = $xeTable;
567
574
  const {
568
575
  editConfig,
569
- editStore,
570
- editRules,
571
- editOpts,
572
- validOpts
573
- } = this;
576
+ editRules
577
+ } = props;
578
+ const {
579
+ editStore
580
+ } = reactData;
574
581
  const {
575
582
  actived
576
583
  } = editStore;
584
+ const editOpts = $xeTable.computeEditOpts;
585
+ const validOpts = $xeTable.computeValidOpts;
577
586
  // 检查清除校验消息
578
587
  if (editRules && validOpts.msgMode === 'single') {
579
- this.validErrorMaps = {};
588
+ reactData.validErrorMaps = {};
580
589
  }
581
590
  // 校验单元格
582
591
  if (editConfig && editRules && actived.row) {
@@ -585,10 +594,10 @@ var _default = exports.default = {
585
594
  column,
586
595
  cell
587
596
  } = actived.args;
588
- if (this.hasCellRules(type, row, column)) {
589
- return this.validCellRules(type, row, column).then(() => {
597
+ if ($xeTable.hasCellRules(type, row, column)) {
598
+ return $xeTable.validCellRules(type, row, column).then(() => {
590
599
  if (editOpts.mode === 'row') {
591
- this.clearValidate(row, column);
600
+ $xeTable.clearValidate(row, column);
592
601
  }
593
602
  }).catch(({
594
603
  rule
@@ -601,7 +610,7 @@ var _default = exports.default = {
601
610
  column,
602
611
  cell
603
612
  };
604
- this.showValidTooltip(rest);
613
+ $xeTable.showValidTooltip(rest);
605
614
  return Promise.reject(rest);
606
615
  }
607
616
  return Promise.resolve();
@@ -615,26 +624,29 @@ var _default = exports.default = {
615
624
  */
616
625
  showValidTooltip(params) {
617
626
  const $xeTable = this;
627
+ const props = $xeTable;
628
+ const reactData = $xeTable;
629
+ const {
630
+ height
631
+ } = props;
618
632
  const {
619
- $refs,
620
- height,
621
- validStore,
622
- validErrorMaps,
623
633
  tableData,
624
- validOpts
625
- } = this;
634
+ validStore,
635
+ validErrorMaps
636
+ } = reactData;
626
637
  const {
627
638
  rule,
628
639
  row,
629
640
  column,
630
641
  cell
631
642
  } = params;
632
- const validTip = $refs.refValidTooltip;
643
+ const validOpts = $xeTable.computeValidOpts;
644
+ const validTip = $xeTable.$refs.refValidTooltip;
633
645
  const content = rule.content;
634
646
  validStore.visible = true;
635
647
  if (validOpts.msgMode === 'single') {
636
- this.validErrorMaps = {
637
- [`${(0, _util.getRowid)(this, row)}:${column.id}`]: {
648
+ reactData.validErrorMaps = {
649
+ [`${(0, _util.getRowid)($xeTable, row)}:${column.id}`]: {
638
650
  column,
639
651
  row,
640
652
  rule,
@@ -642,8 +654,8 @@ var _default = exports.default = {
642
654
  }
643
655
  };
644
656
  } else {
645
- this.validErrorMaps = Object.assign({}, validErrorMaps, {
646
- [`${(0, _util.getRowid)(this, row)}:${column.id}`]: {
657
+ reactData.validErrorMaps = Object.assign({}, validErrorMaps, {
658
+ [`${(0, _util.getRowid)($xeTable, row)}:${column.id}`]: {
647
659
  column,
648
660
  row,
649
661
  rule,
@@ -657,7 +669,7 @@ var _default = exports.default = {
657
669
  return validTip.open(cell, content);
658
670
  }
659
671
  }
660
- return this.$nextTick();
672
+ return $xeTable.$nextTick();
661
673
  }
662
674
  }
663
675
  };