vxe-table 3.12.4 → 3.12.6

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.
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");let version=exports.version="3.12.4",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{maxFixedSize:4},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,iconLayout:"vertical"},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{gt:60},scrollY:{gt:100}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showResponseMsg:!0,showActiveMsg:!0,props:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,r){return _core.VxeUI.modal.alert(e,o,r)},confirm(e,o,r){return _core.VxeUI.modal.confirm(e,o,r)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,r){return _core.VxeUI.modal.notification(e,o,r)}});var _default=exports.default=_core.VxeUI;
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.VXETable=void 0,Object.defineProperty(exports,"VxeUI",{enumerable:!0,get:function(){return _core.VxeUI}}),exports.version=exports.validators=exports.use=exports.t=exports.setup=exports.setTheme=exports.setLanguage=exports.setIcon=exports.setI18n=exports.setConfig=exports.saveFile=exports.renderer=exports.readFile=exports.print=exports.modal=exports.menus=exports.log=exports.interceptor=exports.globalResize=exports.globalEvents=exports.getTheme=exports.getIcon=exports.getI18n=exports.getConfig=exports.formats=exports.default=exports.config=exports.commands=exports.clipboard=exports._t=void 0;var _core=require("@vxe-ui/core"),_utils=require("./src/utils");let version=exports.version="3.12.6",iconPrefix=(_core.VxeUI.version=version,_core.VxeUI.tableVersion=version,_core.VxeUI.setConfig({emptyCell:" ",table:{fit:!0,showHeader:!0,animat:!0,delayHover:250,autoResize:!0,padding:!0,minHeight:144,resizeConfig:{},resizableConfig:{dragMode:"auto",showDragTip:!0},radioConfig:{strict:!0},rowDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},columnDragConfig:{showIcon:!0,animation:!0,showGuidesStatus:!0},checkboxConfig:{strict:!0},tooltipConfig:{enterable:!0},validConfig:{showMessage:!0,autoClear:!0,autoPos:!0,message:"inline",msgMode:"single",theme:"beautify"},columnConfig:{maxFixedSize:4},customConfig:{allowVisible:!0,allowResizable:!0,allowFixed:!0,allowSort:!0,showFooter:!0,placement:"top-right",modalOptions:{showMaximize:!0,mask:!0,lockView:!0,resize:!0,escClosable:!0},drawerOptions:{mask:!0,lockView:!0,escClosable:!0,resize:!0}},sortConfig:{showIcon:!0,iconLayout:"vertical"},filterConfig:{showIcon:!0},treeConfig:{rowField:"id",parentField:"parentId",childrenField:"children",hasChildField:"hasChild",mapChildrenField:"_X_ROW_CHILD",indent:20,showIcon:!0},expandConfig:{showIcon:!0},editConfig:{showIcon:!0,showAsterisk:!0,autoFocus:!0},importConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},exportConfig:{_typeMaps:{csv:1,html:1,xml:1,txt:1}},printConfig:{},mouseConfig:{extension:!0},keyboardConfig:{isEsc:!0},areaConfig:{autoClear:!0,selectCellByHeader:!0,selectCellByBody:!0},clipConfig:{isCopy:!0,isCut:!0,isPaste:!0},fnrConfig:{isFind:!0,isReplace:!0},scrollX:{gt:60},scrollY:{gt:100}},grid:{formConfig:{enabled:!0},pagerConfig:{enabled:!0},toolbarConfig:{enabled:!0},proxyConfig:{enabled:!0,autoLoad:!0,showResponseMsg:!0,showActiveMsg:!0,props:{list:null,result:"result",total:"page.total",message:"message"}}},toolbar:{}}),"vxe-table-icon-"),setTheme=(_core.VxeUI.setIcon({TABLE_SORT_ASC:iconPrefix+"caret-up",TABLE_SORT_DESC:iconPrefix+"caret-down",TABLE_FILTER_NONE:iconPrefix+"funnel",TABLE_FILTER_MATCH:iconPrefix+"funnel",TABLE_EDIT:iconPrefix+"edit",TABLE_TITLE_PREFIX:iconPrefix+"question-circle-fill",TABLE_TITLE_SUFFIX:iconPrefix+"question-circle-fill",TABLE_TREE_LOADED:iconPrefix+"spinner roll",TABLE_TREE_OPEN:iconPrefix+"caret-right rotate90",TABLE_TREE_CLOSE:iconPrefix+"caret-right",TABLE_EXPAND_LOADED:iconPrefix+"spinner roll",TABLE_EXPAND_OPEN:iconPrefix+"arrow-right rotate90",TABLE_EXPAND_CLOSE:iconPrefix+"arrow-right",TABLE_CHECKBOX_CHECKED:iconPrefix+"checkbox-checked-fill",TABLE_CHECKBOX_UNCHECKED:iconPrefix+"checkbox-unchecked",TABLE_CHECKBOX_INDETERMINATE:iconPrefix+"checkbox-indeterminate-fill",TABLE_RADIO_CHECKED:iconPrefix+"radio-checked-fill",TABLE_RADIO_UNCHECKED:iconPrefix+"radio-unchecked",TABLE_CUSTOM_SORT:iconPrefix+"drag-handle",TABLE_MENU_OPTIONS:iconPrefix+"arrow-right",TABLE_DRAG_ROW:iconPrefix+"drag-handle",TABLE_DRAG_COLUMN:iconPrefix+"drag-handle",TABLE_DRAG_STATUS_ROW:iconPrefix+"sort",TABLE_DRAG_STATUS_SUB_ROW:iconPrefix+"add-sub",TABLE_DRAG_STATUS_COLUMN:iconPrefix+"swap",TABLE_DRAG_DISABLED:iconPrefix+"no-drop",TOOLBAR_TOOLS_REFRESH:iconPrefix+"repeat",TOOLBAR_TOOLS_REFRESH_LOADING:iconPrefix+"repeat roll",TOOLBAR_TOOLS_IMPORT:iconPrefix+"upload",TOOLBAR_TOOLS_EXPORT:iconPrefix+"download",TOOLBAR_TOOLS_PRINT:iconPrefix+"print",TOOLBAR_TOOLS_FULLSCREEN:iconPrefix+"fullscreen",TOOLBAR_TOOLS_MINIMIZE:iconPrefix+"minimize",TOOLBAR_TOOLS_CUSTOM:iconPrefix+"custom-column",TOOLBAR_TOOLS_FIXED_LEFT:iconPrefix+"fixed-left",TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE:iconPrefix+"fixed-left-fill",TOOLBAR_TOOLS_FIXED_RIGHT:iconPrefix+"fixed-right",TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE:iconPrefix+"fixed-right-fill"}),exports.setTheme=_core.VxeUI.setTheme),getTheme=exports.getTheme=_core.VxeUI.getTheme,setConfig=exports.setConfig=_core.VxeUI.setConfig,getConfig=exports.getConfig=_core.VxeUI.getConfig,setIcon=exports.setIcon=_core.VxeUI.setIcon,getIcon=exports.getIcon=_core.VxeUI.getIcon,setLanguage=exports.setLanguage=_core.VxeUI.setLanguage,setI18n=exports.setI18n=_core.VxeUI.setI18n,getI18n=exports.getI18n=_core.VxeUI.getI18n,globalEvents=exports.globalEvents=_core.VxeUI.globalEvents,globalResize=exports.globalResize=_core.VxeUI.globalResize,renderer=exports.renderer=_core.VxeUI.renderer,validators=exports.validators=_core.VxeUI.validators,menus=exports.menus=_core.VxeUI.menus,formats=exports.formats=_core.VxeUI.formats,commands=exports.commands=_core.VxeUI.commands,interceptor=exports.interceptor=_core.VxeUI.interceptor,clipboard=exports.clipboard=_core.VxeUI.clipboard,log=exports.log=_core.VxeUI.log,use=exports.use=_core.VxeUI.use,setup=e=>_core.VxeUI.setConfig(e),config=(exports.setup=setup,_core.VxeUI.setup=setup,e=>_core.VxeUI.setConfig(e)),t=(exports.config=config,_core.VxeUI.config=config,(e,o)=>_core.VxeUI.getI18n(e,o)),_t=(exports.t=t,_core.VxeUI.t=t,(e,o)=>(0,_utils.getFuncText)(e,o)),VXETable=(exports._t=_t,_core.VxeUI._t=_t,exports.VXETable=_core.VxeUI),saveFile=e=>_core.VxeUI.saveFile(e),readFile=(exports.saveFile=saveFile,e=>_core.VxeUI.readFile(e)),print=(exports.readFile=readFile,e=>_core.VxeUI.print(e)),modal=(exports.print=print,exports.modal={get(e){return _core.VxeUI.modal.get(e)},close(e){return _core.VxeUI.modal.close(e)},open(e){return _core.VxeUI.modal.open(e)},alert(e,o,r){return _core.VxeUI.modal.alert(e,o,r)},confirm(e,o,r){return _core.VxeUI.modal.confirm(e,o,r)},message(e,o){return _core.VxeUI.modal.message(e,o)},notification(e,o,r){return _core.VxeUI.modal.notification(e,o,r)}});var _default=exports.default=_core.VxeUI;
package/lib/ui/src/log.js CHANGED
@@ -8,6 +8,6 @@ var _core = require("@vxe-ui/core");
8
8
  const {
9
9
  log
10
10
  } = _core.VxeUI;
11
- const version = `table v${"3.12.4"}`;
11
+ const version = `table v${"3.12.6"}`;
12
12
  const warnLog = exports.warnLog = log.create('warn', version);
13
13
  const errLog = exports.errLog = log.create('error', version);
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v3.12.4",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.warnLog=exports.errLog=void 0;var _core=require("@vxe-ui/core");let log=_core.VxeUI.log,version="table v3.12.6",warnLog=exports.warnLog=log.create("warn",version),errLog=exports.errLog=log.create("error",version);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.12.4",
3
+ "version": "3.12.6",
4
4
  "description": "一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟树、拖拽排序,懒加载、快捷菜单、数据校验、树形结构、打印、导入导出、自定义模板、渲染器、JSON 配置式...",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -28,7 +28,7 @@
28
28
  "style": "lib/style.css",
29
29
  "typings": "types/index.d.ts",
30
30
  "dependencies": {
31
- "vxe-pc-ui": "^3.3.70"
31
+ "vxe-pc-ui": "^3.3.71"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@babel/plugin-transform-modules-commonjs": "^7.25.7",
@@ -32,10 +32,10 @@ export default {
32
32
 
33
33
  const { customOpts, customColumnList } = this
34
34
  const { allowVisible, allowSort, allowFixed, allowResizable } = customOpts
35
- XEUtils.eachTree(customColumnList, (column, index, items, path, parent) => {
36
- if (parent) {
35
+ XEUtils.eachTree(customColumnList, (column, index, items, path, parentColumn) => {
36
+ if (parentColumn) {
37
37
  // 更新子列信息
38
- column.fixed = parent.fixed
38
+ column.fixed = parentColumn.fixed
39
39
  } else {
40
40
  if (allowSort) {
41
41
  const sortIndex = index + 1
@@ -461,7 +461,7 @@ export const Cell = {
461
461
  paddingLeft: `${level * indent}px`
462
462
  }
463
463
  }, [
464
- showIcon && (lazy ? (isLazyLoaded ? hasChild : hasLazyChilds) : hasChild)
464
+ showIcon && (lazy ? (isLazyLoaded ? hasChild : (hasChild || hasLazyChilds)) : hasChild)
465
465
  ? [
466
466
  h('div', {
467
467
  class: 'vxe-tree--btn-wrapper',
@@ -123,6 +123,8 @@ function cacheColumnMap ($xeTable: VxeTableConstructor) {
123
123
  const columnOpts = $xeTable.computeColumnOpts
124
124
  const columnDragOpts = $xeTable.computeColumnDragOpts
125
125
  const { isCrossDrag, isSelfToChildDrag } = columnDragOpts
126
+ const customOpts = $xeTable.computeCustomOpts
127
+ const { storage } = customOpts
126
128
  const rowOpts = $xeTable.computeRowOpts
127
129
  const isGroup = collectColumn.some(hasChildrenList)
128
130
  let isAllOverflow = !!props.showOverflow
@@ -141,8 +143,8 @@ function cacheColumnMap ($xeTable: VxeTableConstructor) {
141
143
  }
142
144
  fullColumnFieldData[field] = rest
143
145
  } else {
144
- if (isCrossDrag || isSelfToChildDrag) {
145
- errLog('vxe.error.emptyProp', ['column.field'])
146
+ if (storage || isCrossDrag || isSelfToChildDrag) {
147
+ errLog('vxe.error.reqProp', [`${column.getTitle() || type || ''} -> column.field`])
146
148
  }
147
149
  }
148
150
  if (!hasFixed && fixed) {
@@ -652,7 +654,7 @@ const calcCellHeight = ($xeTable: VxeTableConstructor) => {
652
654
  let paddingTop = 0
653
655
  let paddingBottom = 0
654
656
  let calcPadding = false
655
- tableData.forEach((row: any) => {
657
+ tableData.forEach(row => {
656
658
  const rowid = getRowid($xeTable, row)
657
659
  const rowRest = fullAllDataRowIdData[rowid]
658
660
  const cellList = el.querySelectorAll(`.vxe-body--row[rowid="${rowid}"]>.vxe-body--column>.vxe-cell`)
@@ -678,8 +680,9 @@ const calcCellHeight = ($xeTable: VxeTableConstructor) => {
678
680
  rowRest.height = scrollXLoad ? Math.max(rowRest.height, height) : height
679
681
  }
680
682
  })
683
+ reactData.isCalcCellHeight++
681
684
  }
682
- // updateCellOffset($xeTable)
685
+ // updateCellOffset()
683
686
  }
684
687
 
685
688
  function getOrderField (_vm: any, column: any) {
@@ -1009,11 +1012,11 @@ function loadScrollYData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods
1009
1012
  const { mergeList } = reactData
1010
1013
  const { tableHeight, scrollYStore } = internalData
1011
1014
  const { startIndex, endIndex, offsetSize } = scrollYStore
1012
- const offsetYSize = showOverflow ? offsetSize : offsetSize + Math.min(8, Math.ceil(tableHeight / 200))
1015
+ const autoOffsetYSize = showOverflow ? offsetSize : offsetSize + Math.min(8, Math.ceil(tableHeight / 200))
1013
1016
  const { toVisibleIndex, visibleSize } = handleVirtualYVisible($xeTable)
1014
1017
  const offsetItem = {
1015
- startIndex: Math.max(0, toVisibleIndex - 1 - offsetYSize),
1016
- endIndex: toVisibleIndex + visibleSize + offsetYSize
1018
+ startIndex: Math.max(0, toVisibleIndex - 1 - offsetSize),
1019
+ endIndex: toVisibleIndex + visibleSize + autoOffsetYSize
1017
1020
  }
1018
1021
  calculateMergerOffsetIndex(mergeList, offsetItem, 'row')
1019
1022
  const { startIndex: offsetStartIndex, endIndex: offsetEndIndex } = offsetItem
@@ -1036,11 +1039,12 @@ function checkLastSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMet
1036
1039
  clearTimeout(lcsTimeout)
1037
1040
  }
1038
1041
  internalData.lcsTimeout = setTimeout(() => {
1042
+ internalData.lcsRunTime = Date.now()
1039
1043
  internalData.lcsTimeout = undefined
1040
1044
  internalData.inVirtualScroll = false
1041
1045
  internalData.inBodyScroll = false
1042
- internalData.bodyScrollType = ''
1043
1046
  internalData.inFooterScroll = false
1047
+ internalData.bodyScrollType = ''
1044
1048
  if (isRollX && scrollXLoad) {
1045
1049
  $xeTable.updateScrollXData().then(() => {
1046
1050
  loadScrollXData($xeTable)
@@ -5458,27 +5462,26 @@ const Methods = {
5458
5462
  evnt.dataTransfer.setDragImage(getTpImg(), 0, 0)
5459
5463
  }
5460
5464
  },
5461
- handleRowDragDragendEvent (evnt: DragEvent) {
5462
- const $xeTable = this
5465
+ handleRowDragSwapEvent (evnt: DragEvent, isSyncRow: boolean | undefined, dragRow: any, prevDragRow: any, prevDragPos: '' | 'top' | 'bottom' | 'left' | 'right' | undefined, prevDragToChild: boolean | undefined) {
5466
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5463
5467
  const props = $xeTable
5464
- const reactData = $xeTable
5465
- const internalData = $xeTable
5468
+ const reactData = $xeTable as unknown as TableReactData
5469
+ const internalData = $xeTable as unknown as TableInternalData
5466
5470
 
5467
5471
  const { treeConfig, dragConfig } = props
5468
5472
  const rowDragOpts = $xeTable.computeRowDragOpts
5469
- const { fullAllDataRowIdData, prevDragToChild } = internalData
5473
+ const { fullAllDataRowIdData } = internalData
5470
5474
  const { isPeerDrag, isCrossDrag, isSelfToChildDrag, dragEndMethod } = rowDragOpts
5471
5475
  const treeOpts = $xeTable.computeTreeOpts
5472
5476
  const { transform, rowField, mapChildrenField, parentField } = treeOpts
5473
5477
  const childrenField = treeOpts.children || treeOpts.childrenField
5474
- const { dragRow } = reactData
5475
- const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData
5478
+ const { afterFullData, tableFullData } = internalData
5476
5479
  const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null)
5477
5480
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0
5478
5481
  if (prevDragRow && dragRow) {
5479
5482
  // 判断是否有拖动
5480
5483
  if (prevDragRow !== dragRow) {
5481
- Promise.resolve(
5484
+ return Promise.resolve(
5482
5485
  dEndMethod
5483
5486
  ? dEndMethod({
5484
5487
  oldRow: dragRow,
@@ -5503,6 +5506,7 @@ const Methods = {
5503
5506
  const oldRest = fullAllDataRowIdData[oldRowid]
5504
5507
  const newRowid = getRowid($xeTable, prevDragRow)
5505
5508
  const newRest = fullAllDataRowIdData[newRowid]
5509
+
5506
5510
  if (oldRest && newRest) {
5507
5511
  const { level: oldLevel } = oldRest
5508
5512
  const { level: newLevel } = newRest
@@ -5628,7 +5632,7 @@ const Methods = {
5628
5632
  $xeTable.dispatchEvent('row-dragend', {
5629
5633
  oldRow: dragRow,
5630
5634
  newRow: prevDragRow,
5631
- dragPos: prevDragPos,
5635
+ dragPos: prevDragPos as any,
5632
5636
  dragToChild: !!prevDragToChild,
5633
5637
  offsetIndex: dragOffsetIndex,
5634
5638
  _index: {
@@ -5640,6 +5644,38 @@ const Methods = {
5640
5644
  })
5641
5645
  }
5642
5646
  }
5647
+ return Promise.resolve()
5648
+ },
5649
+ handleRowDragDragendEvent (evnt: DragEvent) {
5650
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
5651
+ const props = $xeTable
5652
+ const reactData = $xeTable as unknown as TableReactData
5653
+ const internalData = $xeTable as unknown as TableInternalData
5654
+
5655
+ const { treeConfig } = props
5656
+ const { fullAllDataRowIdData, prevDragToChild } = internalData
5657
+ const { dragRow } = reactData
5658
+ const treeOpts = $xeTable.computeTreeOpts
5659
+ const { lazy } = treeOpts
5660
+ const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
5661
+ const { prevDragRow, prevDragPos } = internalData
5662
+
5663
+ if (treeConfig && prevDragToChild) {
5664
+ // 懒加载
5665
+ if (lazy) {
5666
+ const newRowid = getRowid($xeTable, prevDragRow)
5667
+ const rowRest = fullAllDataRowIdData[newRowid]
5668
+ if (prevDragRow[hasChildField]) {
5669
+ if (rowRest && rowRest.treeLoaded) {
5670
+ $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild)
5671
+ }
5672
+ } else {
5673
+ $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild)
5674
+ }
5675
+ }
5676
+ } else {
5677
+ $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild)
5678
+ }
5643
5679
  hideDropTip($xeTable)
5644
5680
  clearRowDropOrigin($xeTable)
5645
5681
  internalData.prevDragToChild = false
@@ -5659,7 +5695,8 @@ const Methods = {
5659
5695
  const { fullAllDataRowIdData } = internalData
5660
5696
  const { dragRow } = reactData
5661
5697
  const treeOpts = $xeTable.computeTreeOpts
5662
- const { transform, parentField } = treeOpts
5698
+ const { lazy, transform, parentField } = treeOpts
5699
+ const hasChildField = treeOpts.hasChild || treeOpts.hasChildField
5663
5700
  const rowDragOpts = $xeTable.computeRowDragOpts
5664
5701
  const { isPeerDrag, isCrossDrag, isToChildDrag } = rowDragOpts
5665
5702
  if (!dragRow) {
@@ -5672,19 +5709,22 @@ const Methods = {
5672
5709
  const rest = fullAllDataRowIdData[rowid]
5673
5710
  if (rest) {
5674
5711
  const row = rest.row
5712
+ const rowid = getRowid($xeTable, row)
5713
+ const rowRest = fullAllDataRowIdData[rowid]
5675
5714
  evnt.preventDefault()
5676
5715
  const { dragRow } = reactData
5677
5716
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y
5678
5717
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom'
5718
+ internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && hasCtrlKey)
5719
+ internalData.prevDragRow = row
5720
+ internalData.prevDragPos = dragPos
5679
5721
  if ($xeTable.eqRow(dragRow, row) ||
5722
+ (hasCtrlKey && treeConfig && lazy && row[hasChildField] && rowRest && !rowRest.treeLoaded) ||
5680
5723
  (!isCrossDrag && treeConfig && transform && (isPeerDrag ? dragRow[parentField] !== row[parentField] : rest.level))
5681
5724
  ) {
5682
5725
  showDropTip($xeTable, evnt, trEl, null, false, dragPos)
5683
5726
  return
5684
5727
  }
5685
- internalData.prevDragToChild = !!(treeConfig && transform && isToChildDrag && hasCtrlKey)
5686
- internalData.prevDragRow = row
5687
- internalData.prevDragPos = dragPos
5688
5728
  showDropTip($xeTable, evnt, trEl, null, true, dragPos)
5689
5729
  $xeTable.dispatchEvent('row-dragover', {
5690
5730
  oldRow: dragRow,
@@ -5959,6 +5999,9 @@ const Methods = {
5959
5999
  const { clientX } = evnt
5960
6000
  const offsetX = clientX - thEl.getBoundingClientRect().x
5961
6001
  const dragPos = offsetX < thEl.clientWidth / 2 ? 'left' : 'right'
6002
+ internalData.prevDragToChild = !!((isCrossDrag && isToChildDrag) && hasCtrlKey)
6003
+ internalData.prevDragCol = column
6004
+ internalData.prevDragPos = dragPos
5962
6005
  if (column.fixed ||
5963
6006
  (dragCol && dragCol.id === column.id) ||
5964
6007
  (!isCrossDrag && (isPeerDrag ? dragCol.parentId !== column.parentId : column.parentId))
@@ -5966,9 +6009,6 @@ const Methods = {
5966
6009
  showDropTip($xeTable, evnt, null, thEl, false, dragPos)
5967
6010
  return
5968
6011
  }
5969
- internalData.prevDragToChild = !!((isCrossDrag && isToChildDrag) && hasCtrlKey)
5970
- internalData.prevDragCol = column
5971
- internalData.prevDragPos = dragPos
5972
6012
  showDropTip($xeTable, evnt, null, thEl, true, dragPos)
5973
6013
  $xeTable.dispatchEvent('column-dragover', {
5974
6014
  oldColumn: dragCol,