vxe-table 4.1.10 → 4.1.13

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.
@@ -294,7 +294,7 @@ export default defineComponent({
294
294
  const renderRows = (fixedType: any, tableData: any, tableColumn: any) => {
295
295
  const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, showOverflow: allColumnOverflow, editConfig, treeConfig } = tableProps
296
296
  const { hasFixedColumn, treeExpandeds, scrollYLoad, editStore, rowExpandeds, expandColumn, selectRow } = tableReactData
297
- const { fullDataRowIdData } = tableInternalData
297
+ const { fullAllDataRowIdData } = tableInternalData
298
298
  const checkboxOpts = computeCheckboxOpts.value
299
299
  const radioOpts = computeRadioOpts.value
300
300
  const treeOpts = computeTreeOpts.value
@@ -324,7 +324,7 @@ export default defineComponent({
324
324
  }
325
325
  }
326
326
  const rowid = getRowid($xetable, row)
327
- const rest = fullDataRowIdData[rowid]
327
+ const rest = fullAllDataRowIdData[rowid]
328
328
  let rowLevel = 0
329
329
  let seq: string | number = -1
330
330
  if (rest) {
@@ -1146,41 +1146,57 @@ export default defineComponent({
1146
1146
  XEUtils.eachTree(afterTreeFullData, (row, index, items, path) => {
1147
1147
  const rowid = getRowid($xetable, row)
1148
1148
  const allrest = fullAllDataRowIdData[rowid]
1149
- const fullrest = fullDataRowIdData[rowid]
1150
1149
  const seq = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
1151
1150
  if (allrest) {
1152
1151
  allrest.seq = seq
1153
1152
  allrest._index = index
1154
- }
1155
- if (fullrest) {
1156
- fullrest.seq = seq
1157
- fullrest._index = index
1158
1153
  } else {
1159
- fullAllDataRowIdData[rowid] = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1160
- fullDataRowIdData[rowid] = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1154
+ const rest = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1155
+ fullAllDataRowIdData[rowid] = rest
1156
+ fullDataRowIdData[rowid] = rest
1161
1157
  }
1162
- }, treeOpts)
1158
+ }, { children: treeOpts.mapChildren })
1163
1159
  } else {
1164
1160
  afterFullData.forEach((row, index) => {
1165
1161
  const rowid = getRowid($xetable, row)
1166
1162
  const allrest = fullAllDataRowIdData[rowid]
1167
- const fullrest = fullDataRowIdData[rowid]
1168
1163
  const seq = index + 1
1169
1164
  if (allrest) {
1170
1165
  allrest.seq = seq
1171
1166
  allrest._index = index
1172
- }
1173
- if (fullrest) {
1174
- fullrest.seq = seq
1175
- fullrest._index = index
1176
1167
  } else {
1177
- fullAllDataRowIdData[rowid] = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1178
- fullDataRowIdData[rowid] = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1168
+ const rest = { row, rowid, seq, index: -1, $index: -1, _index: index, items: [], parent: null, level: 0 }
1169
+ fullAllDataRowIdData[rowid] = rest
1170
+ fullDataRowIdData[rowid] = rest
1179
1171
  }
1180
1172
  })
1181
1173
  }
1182
1174
  }
1183
1175
 
1176
+ /**
1177
+ * 如果为虚拟树,将树结构拍平
1178
+ * @returns
1179
+ */
1180
+ const handleVirtualTreeToList = () => {
1181
+ const { treeConfig } = props
1182
+ const { treeExpandeds } = reactData
1183
+ const treeOpts = computeTreeOpts.value
1184
+ if (treeConfig && treeOpts.transform) {
1185
+ const fullData: any = []
1186
+ const expandMaps: Map<any, number> = new Map()
1187
+ XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parent) => {
1188
+ if (!parent || (expandMaps.has(parent) && $xetable.findRowIndexOf(treeExpandeds, parent) > -1)) {
1189
+ expandMaps.set(row, 1)
1190
+ fullData.push(row)
1191
+ }
1192
+ }, { children: treeOpts.mapChildren })
1193
+ internalData.afterFullData = fullData
1194
+ updateScrollYStatus(fullData)
1195
+ return fullData
1196
+ }
1197
+ return internalData.afterFullData
1198
+ }
1199
+
1184
1200
  /**
1185
1201
  * 获取处理后全量的表格数据
1186
1202
  * 如果存在筛选条件,继续处理
@@ -1252,6 +1268,7 @@ export default defineComponent({
1252
1268
  })
1253
1269
  }
1254
1270
  if (treeConfig && transform) {
1271
+ // 筛选虚拟树
1255
1272
  tableTree = XEUtils.searchTree(tableFullTreeData, handleFilter, { ...treeOpts, original: true })
1256
1273
  tableData = tableTree
1257
1274
  } else {
@@ -1259,8 +1276,14 @@ export default defineComponent({
1259
1276
  tableTree = tableData
1260
1277
  }
1261
1278
  } else {
1262
- tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
1263
- tableTree = tableData
1279
+ if (treeConfig && transform) {
1280
+ // 还原虚拟树
1281
+ tableTree = XEUtils.searchTree(tableFullTreeData, () => true, { ...treeOpts, original: true })
1282
+ tableData = tableTree
1283
+ } else {
1284
+ tableData = treeConfig ? tableFullTreeData.slice(0) : tableFullData.slice(0)
1285
+ tableTree = tableData
1286
+ }
1264
1287
  }
1265
1288
 
1266
1289
  // 处理排序(不能用于树形结构)
@@ -2266,6 +2289,7 @@ export default defineComponent({
2266
2289
  */
2267
2290
  const handleVirtualTreeExpand = (rows: any[], expanded: boolean) => {
2268
2291
  return handleBaseTreeExpand(rows, expanded).then(() => {
2292
+ handleVirtualTreeToList()
2269
2293
  return tablePrivateMethods.handleTableData()
2270
2294
  }).then(() => {
2271
2295
  return tableMethods.recalculate()
@@ -2299,10 +2323,10 @@ export default defineComponent({
2299
2323
 
2300
2324
  const createGetRowCacheProp = (prop: 'seq' | 'index' | '_index' | '$index') => {
2301
2325
  return function (row: any) {
2302
- const { fullDataRowIdData } = internalData
2326
+ const { fullAllDataRowIdData } = internalData
2303
2327
  if (row) {
2304
2328
  const rowid = getRowid($xetable, row)
2305
- const rest = fullDataRowIdData[rowid]
2329
+ const rest = fullAllDataRowIdData[rowid]
2306
2330
  if (rest) {
2307
2331
  return rest[prop]
2308
2332
  }
@@ -3573,12 +3597,16 @@ export default defineComponent({
3573
3597
  const { treeExpandeds } = reactData
3574
3598
  const { fullAllDataRowIdData } = internalData
3575
3599
  const treeOpts = computeTreeOpts.value
3576
- const { lazy } = treeOpts
3600
+ const { transform, lazy } = treeOpts
3577
3601
  const rest = fullAllDataRowIdData[getRowid($xetable, row)]
3578
3602
  if (lazy && rest) {
3579
3603
  rest.treeLoaded = false
3580
3604
  XEUtils.remove(treeExpandeds, item => $xetable.eqRow(item, row))
3581
3605
  }
3606
+ if (transform) {
3607
+ handleVirtualTreeToList()
3608
+ return tablePrivateMethods.handleTableData()
3609
+ }
3582
3610
  return nextTick()
3583
3611
  },
3584
3612
  /**
@@ -3622,7 +3650,7 @@ export default defineComponent({
3622
3650
  setAllTreeExpand (expanded: boolean) {
3623
3651
  const { tableFullData } = internalData
3624
3652
  const treeOpts = computeTreeOpts.value
3625
- const { lazy, children } = treeOpts
3653
+ const { transform, lazy, children } = treeOpts
3626
3654
  const expandeds: any[] = []
3627
3655
  XEUtils.eachTree(tableFullData, (row) => {
3628
3656
  const rowChildren = row[children]
@@ -3630,7 +3658,12 @@ export default defineComponent({
3630
3658
  expandeds.push(row)
3631
3659
  }
3632
3660
  }, treeOpts)
3633
- return tableMethods.setTreeExpand(expandeds, expanded)
3661
+ return tableMethods.setTreeExpand(expandeds, expanded).then(() => {
3662
+ if (transform) {
3663
+ handleVirtualTreeToList()
3664
+ return tableMethods.recalculate()
3665
+ }
3666
+ })
3634
3667
  },
3635
3668
  /**
3636
3669
  * 设置展开树形节点,二个参数设置这一行展开与否
@@ -3672,13 +3705,16 @@ export default defineComponent({
3672
3705
  const { treeExpandeds } = reactData
3673
3706
  const { tableFullTreeData } = internalData
3674
3707
  const treeOpts = computeTreeOpts.value
3675
- const { reserve } = treeOpts
3708
+ const { transform, reserve } = treeOpts
3676
3709
  const isExists = treeExpandeds.length
3677
3710
  reactData.treeExpandeds = []
3678
3711
  if (reserve) {
3679
3712
  XEUtils.eachTree(tableFullTreeData, row => handleTreeExpandReserve(row, false), treeOpts)
3680
3713
  }
3681
3714
  return tablePrivateMethods.handleTableData().then(() => {
3715
+ if (transform) {
3716
+ handleVirtualTreeToList()
3717
+ }
3682
3718
  if (isExists) {
3683
3719
  tableMethods.recalculate()
3684
3720
  }
@@ -4491,27 +4527,15 @@ export default defineComponent({
4491
4527
  return record
4492
4528
  },
4493
4529
  handleTableData (force?: boolean) {
4494
- const { treeConfig } = props
4495
4530
  const { scrollYLoad } = reactData
4496
4531
  const { scrollYStore, fullDataRowIdData } = internalData
4497
- const { treeExpandeds } = reactData
4498
- const treeOpts = computeTreeOpts.value
4499
- let fullList: any[] = []
4532
+ let fullList: any[] = internalData.afterFullData
4500
4533
  // 是否进行数据处理
4501
4534
  if (force) {
4535
+ // 更新数据,处理筛选和排序
4502
4536
  updateAfterFullData()
4503
- }
4504
- // 如果为虚拟树,将树结构拍平
4505
- if (treeConfig && treeOpts.transform) {
4506
- const expandMaps: Map<any, number> = new Map()
4507
- XEUtils.eachTree(internalData.afterTreeFullData, (row, index, items, path, parent) => {
4508
- if (!parent || (expandMaps.has(parent) && $xetable.findRowIndexOf(treeExpandeds, parent) > -1)) {
4509
- expandMaps.set(row, 1)
4510
- fullList.push(row)
4511
- }
4512
- }, { children: treeOpts.mapChildren })
4513
- } else {
4514
- fullList = internalData.afterFullData
4537
+ // 如果为虚拟树,将树结构拍平
4538
+ fullList = handleVirtualTreeToList()
4515
4539
  }
4516
4540
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0)
4517
4541
  tableData.forEach((row, $index) => {
@@ -149,7 +149,7 @@ const validatorHook: VxeGlobalHooksHandles.HookOptions = {
149
149
  const ruleProps = Object.keys(validRest)
150
150
  return nextTick().then(() => {
151
151
  if (ruleProps.length) {
152
- return validRest[ruleProps[0]][0]
152
+ return Promise.reject(validRest[ruleProps[0]][0])
153
153
  }
154
154
  if (cb) {
155
155
  cb()