vxe-gantt 3.0.24 → 3.0.26

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.
@@ -10,7 +10,7 @@ import GanttViewComponent from './gantt-view'
10
10
  import { VxeTable as VxeTableComponent } from 'vxe-table'
11
11
 
12
12
  import type { ValueOf, VxeFormInstance, VxeFormItemProps, VxePagerInstance, VxePagerDefines, VxeComponentStyleType, VxeComponentSizeType, VxeFormDefines, VxeFormItemPropTypes } from 'vxe-pc-ui'
13
- import type { VxeTableMethods, VxeToolbarPropTypes, VxeTableProps, VxeTableConstructor, VxeTablePrivateMethods, VxeTableDefines, TableReactData, VxeToolbarInstance, TableInternalData, VxeTablePropTypes, VxeGridPropTypes } from 'vxe-table'
13
+ import type { VxeTableMethods, VxeToolbarPropTypes, VxeTableProps, VxeTableConstructor, VxeTablePrivateMethods, VxeTableDefines, TableReactData, VxeToolbarInstance, TableInternalData, VxeTablePropTypes, VxeGridPropTypes, VxeGridDefines } from 'vxe-table'
14
14
  import type { VxeGanttEmits, GanttReactData, GanttInternalData, VxeGanttPropTypes, VxeGanttViewInstance, VxeGanttDefines, VxeGanttConstructor } from '../../../types'
15
15
 
16
16
  const { getConfig, getIcon, getI18n, commands, globalMixins, createEvent, globalEvents, GLOBAL_EVENT_KEYS, renderEmptyElement } = VxeUI
@@ -76,6 +76,7 @@ XEUtils.each((VxeTableComponent as any).methods, (fn, name) => {
76
76
 
77
77
  function createInternalData (): GanttInternalData {
78
78
  return {
79
+ uFoot: false,
79
80
  resizeTableWidth: 0
80
81
  }
81
82
  }
@@ -103,6 +104,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
103
104
  editRules: PropType<VxeTablePropTypes.EditRules>
104
105
  animat: PropType<VxeTablePropTypes.Animat>
105
106
  scrollbarConfig: PropType<VxeTablePropTypes.ScrollbarConfig>
107
+ showFooter: PropType<VxeTablePropTypes.ShowFooter>
106
108
  params: PropType<VxeTablePropTypes.Params>
107
109
  }),
108
110
 
@@ -119,8 +121,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
119
121
  taskViewConfig: Object as PropType<VxeGanttPropTypes.TaskViewConfig>,
120
122
  taskBarConfig: Object as PropType<VxeGanttPropTypes.TaskBarConfig>,
121
123
  taskSplitConfig: Object as PropType<VxeGanttPropTypes.TaskSplitConfig>,
122
- taskResizeConfig: Object as PropType<VxeGanttPropTypes.TaskResizeConfig>,
123
- taskDragConfig: Object as PropType<VxeGanttPropTypes.TaskDragConfig>,
124
+ taskBarResizeConfig: Object as PropType<VxeGanttPropTypes.TaskBarResizeConfig>,
125
+ taskBarDragConfig: Object as PropType<VxeGanttPropTypes.TaskBarDragConfig>,
124
126
  size: {
125
127
  type: String as PropType<VxeGridPropTypes.Size>,
126
128
  default: () => getConfig().gantt.size || getConfig().size
@@ -146,6 +148,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
146
148
  filterData: [],
147
149
  formData: {},
148
150
  sortData: [],
151
+ footerData: [],
149
152
  tZindex: 0,
150
153
  tablePage: {
151
154
  total: 0,
@@ -235,6 +238,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
235
238
 
236
239
  return Object.assign({}, getConfig().gantt.taskBarConfig, props.taskBarConfig)
237
240
  },
241
+ computeTaskBarDragOpts () {
242
+ const $xeGantt = this
243
+ const props = $xeGantt
244
+
245
+ return Object.assign({}, getConfig().gantt.taskBarDragConfig, props.taskBarDragConfig)
246
+ },
247
+ computeTaskBarResizeOpts () {
248
+ const $xeGantt = this
249
+ const props = $xeGantt
250
+
251
+ return Object.assign({}, getConfig().gantt.taskBarResizeConfig, props.taskBarResizeConfig)
252
+ },
238
253
  computeTaskSplitOpts () {
239
254
  const $xeGantt = this
240
255
  const props = $xeGantt
@@ -336,7 +351,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
336
351
  const rest: any = {}
337
352
  const gridProps: any = props
338
353
  propKeys.forEach(key => {
339
- rest[key] = gridProps[key]
354
+ if (gridProps[key] !== undefined) {
355
+ rest[key] = gridProps[key]
356
+ }
340
357
  })
341
358
  return rest
342
359
  },
@@ -345,8 +362,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
345
362
  const props = $xeGantt
346
363
  const reactData = $xeGantt.reactData
347
364
 
348
- const { seqConfig, pagerConfig, editConfig, proxyConfig } = props
349
- const { isZMax, tablePage } = reactData
365
+ const { showFooter, seqConfig, pagerConfig, editConfig, proxyConfig } = props
366
+ const { isZMax, tablePage, footerData } = reactData
350
367
  const taskViewOpts = $xeGantt.computeTaskViewOpts
351
368
  const { tableStyle } = taskViewOpts
352
369
  const tableExtendProps = $xeGantt.computeTableExtendProps as any
@@ -365,8 +382,15 @@ export default /* define-vxe-component start */ defineVxeComponent({
365
382
  tProps.border = border
366
383
  }
367
384
  }
385
+ if (showFooter && !tProps.footerData) {
386
+ // 如果未设置自己的标位数据,则使用代理的
387
+ tProps.footerData = footerData
388
+ } else if (proxyOpts.footer && footerData.length) {
389
+ // 如果代理标为数据,且未请求到数据,则用自己的
390
+ tProps.footerData = footerData
391
+ }
368
392
  if (isZMax) {
369
- if (tableExtendProps.maxHeight) {
393
+ if (tProps.maxHeight) {
370
394
  tProps.maxHeight = '100%'
371
395
  } else {
372
396
  tProps.height = '100%'
@@ -710,6 +734,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
710
734
  const $xeGantt = this
711
735
  const props = $xeGantt
712
736
  const reactData = $xeGantt.reactData
737
+ const internalData = $xeGantt.internalData
713
738
  const $xeTable = $xeGantt.$refs.refTable as VxeTableConstructor & VxeTablePrivateMethods
714
739
 
715
740
  const { proxyConfig } = props
@@ -720,9 +745,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
720
745
  reactData.filterData = params.filterList
721
746
  if (proxyConfig && isEnableConf(proxyOpts)) {
722
747
  reactData.tablePage.currentPage = 1
748
+ internalData.uFoot = true
723
749
  $xeGantt.commitProxy('query').then((rest) => {
724
750
  $xeGantt.dispatchEvent('proxy-query', rest, params.$event)
725
751
  })
752
+ internalData.uFoot = false
753
+ $xeGantt.updateQueryFooter()
726
754
  }
727
755
  }
728
756
  },
@@ -742,6 +770,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
742
770
  const $xeGantt = this
743
771
  const props = $xeGantt
744
772
  const reactData = $xeGantt.reactData
773
+ const internalData = $xeGantt.internalData
745
774
 
746
775
  const { proxyConfig } = props
747
776
  const proxyOpts = $xeGantt.computeProxyOpts
@@ -749,15 +778,19 @@ export default /* define-vxe-component start */ defineVxeComponent({
749
778
  return
750
779
  }
751
780
  if (proxyConfig && isEnableConf(proxyOpts)) {
781
+ internalData.uFoot = true
752
782
  $xeGantt.commitProxy('reload').then((rest) => {
753
783
  $xeGantt.dispatchEvent('proxy-query', { ...rest, isReload: true }, params.$event)
754
784
  })
785
+ internalData.uFoot = false
786
+ $xeGantt.updateQueryFooter()
755
787
  }
756
788
  $xeGantt.dispatchEvent('form-submit', params, params.$event)
757
789
  },
758
790
  resetFormEvent (params: VxeFormDefines.ResetEventParams) {
759
791
  const $xeGantt = this
760
792
  const props = $xeGantt
793
+ const internalData = $xeGantt.internalData
761
794
 
762
795
  const $xeTable = $xeGantt.$refs.refTable as VxeTableConstructor & VxeTablePrivateMethods
763
796
  const { proxyConfig } = props
@@ -765,9 +798,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
765
798
  const proxyOpts = $xeGantt.computeProxyOpts
766
799
  if (proxyConfig && isEnableConf(proxyOpts)) {
767
800
  $xeTable.clearScroll()
801
+ internalData.uFoot = true
768
802
  $xeGantt.commitProxy('reload').then((rest) => {
769
803
  $xeGantt.dispatchEvent('proxy-query', { ...rest, isReload: true }, $event)
770
804
  })
805
+ internalData.uFoot = false
806
+ $xeGantt.updateQueryFooter()
771
807
  }
772
808
  $xeGantt.dispatchEvent('form-reset', params, $event)
773
809
  },
@@ -919,6 +955,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
919
955
  const $xeGantt = this
920
956
  const props = $xeGantt
921
957
  const reactData = $xeGantt.reactData
958
+ const internalData = $xeGantt.internalData
922
959
 
923
960
  const { proxyConfig, formConfig } = props
924
961
  const { proxyInited } = reactData
@@ -928,14 +965,31 @@ export default /* define-vxe-component start */ defineVxeComponent({
928
965
  if (isEnableConf(formConfig) && proxyOpts.form && formOpts.items) {
929
966
  reactData.formData = $xeGantt.getDefaultFormData()
930
967
  }
931
- if (!proxyInited && proxyOpts.autoLoad !== false) {
968
+ if (!proxyInited) {
932
969
  reactData.proxyInited = true
933
- $xeGantt.$nextTick().then(() => $xeGantt.commitProxy('initial')).then((rest) => {
934
- $xeGantt.dispatchEvent('proxy-query', { ...rest, isInited: true }, new Event('initial'))
935
- })
970
+ if (proxyOpts.autoLoad !== false) {
971
+ $xeGantt.$nextTick().then(() => {
972
+ internalData.uFoot = true
973
+ const rest = $xeGantt.commitProxy('initial')
974
+ internalData.uFoot = false
975
+ $xeGantt.updateQueryFooter()
976
+ return rest
977
+ }).then((rest) => {
978
+ $xeGantt.dispatchEvent('proxy-query', { ...rest, isInited: true }, new Event('initial'))
979
+ })
980
+ }
936
981
  }
937
982
  }
938
983
  },
984
+ updateQueryFooter () {
985
+ const $xeGantt = this
986
+
987
+ const proxyOpts = $xeGantt.computeProxyOpts
988
+ const { ajax } = proxyOpts
989
+ if (ajax && ajax.queryFooter) {
990
+ return $xeGantt.commitProxy('queryFooter')
991
+ }
992
+ },
939
993
  handleGlobalKeydownEvent (evnt: KeyboardEvent) {
940
994
  const $xeGantt = this
941
995
  const reactData = $xeGantt.reactData
@@ -959,6 +1013,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
959
1013
  const $xeGantt = this
960
1014
  const props = $xeGantt
961
1015
  const reactData = $xeGantt.reactData
1016
+ const internalData = $xeGantt.internalData
962
1017
 
963
1018
  /**
964
1019
  * 已废弃
@@ -966,15 +1021,15 @@ export default /* define-vxe-component start */ defineVxeComponent({
966
1021
  */
967
1022
  const toolbar = (props as any).toolbar
968
1023
 
969
- const { proxyConfig, toolbarConfig, pagerConfig, editRules, validConfig } = props
1024
+ const { showFooter, proxyConfig, toolbarConfig, pagerConfig, editRules, validConfig } = props
970
1025
  const { tablePage } = reactData
971
1026
  const isActiveMsg = $xeGantt.computeIsActiveMsg
972
1027
  const isRespMsg = $xeGantt.computeIsRespMsg
973
1028
  const proxyOpts = $xeGantt.computeProxyOpts
974
1029
  const pagerOpts = $xeGantt.computePagerOpts
975
1030
  const toolbarOpts = $xeGantt.computeToolbarOpts
976
- const { beforeQuery, afterQuery, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts
977
- const resConfigs = proxyOpts.response || proxyOpts.props || {}
1031
+ const { beforeQuery, afterQuery, beforeQueryFooter, afterQueryFooter, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts
1032
+ const resConfigs = (proxyOpts.response || proxyOpts.props || {}) as VxeGridDefines.ProxyConfigResponseConfig
978
1033
  const $xeTable = $xeGantt.$refs.refTable as VxeTableConstructor & VxeTablePrivateMethods
979
1034
  let formData = $xeGantt.getFormData()
980
1035
  let button: VxeToolbarPropTypes.ButtonConfig | null = null
@@ -1023,23 +1078,25 @@ export default /* define-vxe-component start */ defineVxeComponent({
1023
1078
  case 'initial':
1024
1079
  case 'reload':
1025
1080
  case 'query': {
1026
- const ajaxMethods = ajax.query
1027
- const querySuccessMethods = ajax.querySuccess
1028
- const queryErrorMethods = ajax.queryError
1029
- if (ajaxMethods) {
1081
+ const qMethods = ajax.query
1082
+ const qsMethods = ajax.querySuccess
1083
+ const qeMethods = ajax.queryError
1084
+ if (qMethods) {
1030
1085
  const isInited = code === 'initial'
1031
1086
  const isReload = code === 'reload'
1032
1087
  if (!isInited && reactData.tableLoading) {
1033
1088
  return $xeGantt.$nextTick()
1034
1089
  }
1090
+ let operPromise = null
1035
1091
  let sortList: any[] = []
1036
1092
  let filterList: VxeTableDefines.FilterCheckedParams[] = []
1037
1093
  let pageParams: any = {}
1038
1094
  if (pagerConfig) {
1039
1095
  if (isInited || isReload) {
1096
+ // 重置分页
1040
1097
  tablePage.currentPage = 1
1041
1098
  }
1042
- if (isEnableConf(pagerConfig)) {
1099
+ if (isEnableConf(pagerOpts)) {
1043
1100
  pageParams = { ...tablePage }
1044
1101
  }
1045
1102
  }
@@ -1083,7 +1140,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1083
1140
  } else {
1084
1141
  if ($xeTable) {
1085
1142
  if (isReload) {
1086
- $xeTable.clearAll()
1143
+ operPromise = $xeTable.clearAll()
1087
1144
  } else {
1088
1145
  sortList = $xeTable.getSortColumns()
1089
1146
  filterList = $xeTable.getCheckedFilters()
@@ -1103,58 +1160,111 @@ export default /* define-vxe-component start */ defineVxeComponent({
1103
1160
  sorts: sortList,
1104
1161
  filters: filterList,
1105
1162
  form: formData,
1106
- options: ajaxMethods
1163
+ options: qMethods
1107
1164
  }
1108
1165
  reactData.sortData = sortList
1109
1166
  reactData.filterData = filterList
1110
1167
  reactData.tableLoading = true
1111
- const applyArgs = [commitParams].concat(args)
1112
- return Promise.resolve((beforeQuery || ajaxMethods)(...applyArgs))
1113
- .then(rest => {
1114
- let tableData: any[] = []
1115
- reactData.tableLoading = false
1116
- if (rest) {
1117
- if (pagerConfig && isEnableConf(pagerOpts)) {
1118
- const totalProp = resConfigs.total
1119
- const total = (XEUtils.isFunction(totalProp) ? totalProp({ data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }) : XEUtils.get(rest, totalProp || 'page.total')) || 0
1120
- tablePage.total = XEUtils.toNumber(total)
1121
- const resultProp = resConfigs.result
1122
- tableData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }) : XEUtils.get(rest, resultProp || 'result')) || []
1123
- // 检验当前页码,不能超出当前最大页数
1124
- const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1)
1125
- if (tablePage.currentPage > pageCount) {
1126
- tablePage.currentPage = pageCount
1127
- }
1128
- } else {
1129
- const listProp = resConfigs.list
1130
- tableData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }) : XEUtils.get(rest, listProp)) : rest) || []
1168
+ return Promise.all([
1169
+ Promise.resolve((beforeQuery || qMethods)(commitParams, ...args)),
1170
+ operPromise
1171
+ ]).then(([rest]) => {
1172
+ let tableData: any[] = []
1173
+ reactData.tableLoading = false
1174
+ if (rest) {
1175
+ const reParams = { data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }
1176
+ if (pagerConfig && isEnableConf(pagerOpts)) {
1177
+ const totalProp = resConfigs.total
1178
+ const total = (XEUtils.isFunction(totalProp) ? totalProp(reParams) : XEUtils.get(rest, totalProp || 'page.total')) || 0
1179
+ tablePage.total = XEUtils.toNumber(total)
1180
+ const resultProp = resConfigs.result
1181
+ tableData = (XEUtils.isFunction(resultProp) ? resultProp(reParams) : XEUtils.get(rest, resultProp || 'result')) || []
1182
+ // 检验当前页码,不能超出当前最大页数
1183
+ const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1)
1184
+ if (tablePage.currentPage > pageCount) {
1185
+ tablePage.currentPage = pageCount
1131
1186
  }
1132
- }
1133
- if ($xeTable as any) {
1134
- $xeTable.loadData(tableData)
1135
1187
  } else {
1136
- $xeTable.$nextTick(() => {
1137
- if ($xeTable) {
1138
- $xeTable.loadData(tableData)
1139
- }
1140
- })
1141
- }
1142
- if (afterQuery) {
1143
- afterQuery(...applyArgs)
1144
- }
1145
- if (querySuccessMethods) {
1146
- querySuccessMethods({ ...commitParams, response: rest })
1188
+ const listProp = resConfigs.list
1189
+ if (XEUtils.isArray(rest)) {
1190
+ tableData = rest
1191
+ } else if (listProp) {
1192
+ tableData = (XEUtils.isFunction(listProp) ? listProp(reParams) : XEUtils.get(rest, listProp)) || []
1193
+ }
1147
1194
  }
1148
- return { status: true }
1149
- }).catch((rest) => {
1150
- reactData.tableLoading = false
1151
- if (queryErrorMethods) {
1152
- queryErrorMethods({ ...commitParams, response: rest })
1195
+ if (showFooter) {
1196
+ const fdProp = resConfigs.footerData
1197
+ const footerList = fdProp ? (XEUtils.isFunction(fdProp) ? fdProp(reParams) : XEUtils.get(rest, fdProp)) : []
1198
+ if (XEUtils.isArray(footerList)) {
1199
+ reactData.footerData = footerList
1200
+ }
1153
1201
  }
1154
- return { status: false }
1155
- })
1202
+ }
1203
+ if ($xeTable) {
1204
+ $xeTable.loadData(tableData)
1205
+ } else {
1206
+ $xeGantt.$nextTick(() => {
1207
+ const $xeTable = $xeGantt.$refs.refTable as VxeTableConstructor & VxeTablePrivateMethods
1208
+ if ($xeTable) {
1209
+ $xeTable.loadData(tableData)
1210
+ }
1211
+ })
1212
+ }
1213
+ if (afterQuery) {
1214
+ afterQuery(commitParams, ...args)
1215
+ }
1216
+ if (qsMethods) {
1217
+ qsMethods({ ...commitParams, response: rest })
1218
+ }
1219
+ return { status: true }
1220
+ }).catch((rest) => {
1221
+ reactData.tableLoading = false
1222
+ if (qeMethods) {
1223
+ qeMethods({ ...commitParams, response: rest })
1224
+ }
1225
+ return { status: false }
1226
+ })
1227
+ } else {
1228
+ errLog('vxe.error.notFunc', ['[gantt] proxy-config.ajax.query'])
1229
+ }
1230
+ break
1231
+ }
1232
+ case 'queryFooter': {
1233
+ const qfMethods = ajax.queryFooter
1234
+ const qfSuccessMethods = ajax.queryFooterSuccess
1235
+ const qfErrorMethods = ajax.queryFooterError
1236
+ if (qfMethods) {
1237
+ let filterList: VxeTableDefines.FilterCheckedParams[] = []
1238
+ if ($xeTable) {
1239
+ filterList = $xeTable.getCheckedFilters()
1240
+ }
1241
+ const commitParams = {
1242
+ $table: $xeTable,
1243
+ $grid: null,
1244
+ $gantt: $xeGantt,
1245
+ code,
1246
+ button,
1247
+ filters: filterList,
1248
+ form: formData,
1249
+ options: qfMethods
1250
+ }
1251
+ return Promise.resolve((beforeQueryFooter || qfMethods)(commitParams, ...args)).then(rest => {
1252
+ reactData.footerData = XEUtils.isArray(rest) ? rest : []
1253
+ if (afterQueryFooter) {
1254
+ afterQueryFooter(commitParams, ...args)
1255
+ }
1256
+ if (qfSuccessMethods) {
1257
+ qfSuccessMethods({ ...commitParams, response: rest })
1258
+ }
1259
+ return { status: true }
1260
+ }).catch((rest) => {
1261
+ if (qfErrorMethods) {
1262
+ qfErrorMethods({ ...commitParams, response: rest })
1263
+ }
1264
+ return { status: false }
1265
+ })
1156
1266
  } else {
1157
- errLog('vxe.error.notFunc', ['proxy-config.ajax.query'])
1267
+ errLog('vxe.error.notFunc', ['[gantt] proxy-config.ajax.queryFooter'])
1158
1268
  }
1159
1269
  break
1160
1270
  }
@@ -1197,7 +1307,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
1197
1307
  if (afterDelete) {
1198
1308
  afterDelete(...applyArgs)
1199
1309
  } else {
1310
+ internalData.uFoot = true
1200
1311
  $xeGantt.commitProxy('query')
1312
+ internalData.uFoot = false
1313
+ $xeGantt.updateQueryFooter()
1201
1314
  }
1202
1315
  if (deleteSuccessMethods) {
1203
1316
  deleteSuccessMethods({ ...commitParams, response: rest })
@@ -1285,7 +1398,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
1285
1398
  if (afterSave) {
1286
1399
  afterSave(...applyArgs)
1287
1400
  } else {
1401
+ internalData.uFoot = true
1288
1402
  $xeGantt.commitProxy('query')
1403
+ internalData.uFoot = false
1404
+ $xeGantt.updateQueryFooter()
1289
1405
  }
1290
1406
  if (saveSuccessMethods) {
1291
1407
  saveSuccessMethods({ ...commitParams, response: rest })
@@ -1623,13 +1739,25 @@ export default /* define-vxe-component start */ defineVxeComponent({
1623
1739
  },
1624
1740
  triggerToolbarCommitEvent (params: any, evnt: any) {
1625
1741
  const $xeGantt = this
1742
+ const internalData = $xeGantt.internalData
1626
1743
 
1627
1744
  const { code } = params
1628
- return $xeGantt.commitProxy(params, evnt).then((rest) => {
1629
- if (code && rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
1630
- $xeGantt.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code as 'delete' | 'save'}` : 'proxy-query', { ...rest, isReload: code === 'reload' }, evnt)
1745
+ if (code) {
1746
+ const isUf = ['reload', 'delete', 'save'].includes(code)
1747
+ if (isUf) {
1748
+ internalData.uFoot = true
1631
1749
  }
1632
- })
1750
+ const rest = $xeGantt.commitProxy(params, evnt).then((rest) => {
1751
+ if (code && rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
1752
+ $xeGantt.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code as 'delete' | 'save'}` : 'proxy-query', { ...rest, isReload: code === 'reload' }, evnt)
1753
+ }
1754
+ })
1755
+ if (isUf) {
1756
+ $xeGantt.updateQueryFooter()
1757
+ }
1758
+ internalData.uFoot = false
1759
+ return rest
1760
+ }
1633
1761
  },
1634
1762
  triggerToolbarBtnEvent (button: any, evnt: any) {
1635
1763
  const $xeGantt = this
@@ -19,6 +19,12 @@
19
19
  }
20
20
  }
21
21
  }
22
+ &.is--drag {
23
+ & > .vxe-gantt-view--chart-bar,
24
+ & > .vxe-gantt-view--chart-custom-bar {
25
+ user-select: none;
26
+ }
27
+ }
22
28
  }
23
29
  .vxe-gantt-view--chart-bar,
24
30
  .vxe-gantt-view--chart-custom-bar {
@@ -542,6 +542,9 @@
542
542
  width: var(--vxe-ui-gantt-view-default-cell-width);
543
543
  }
544
544
  }
545
+ .vxe-gantt-view--body-table {
546
+ user-select: none;
547
+ }
545
548
  .vxe-gantt-view--header-wrapper {
546
549
  background-color: var(--vxe-ui-table-header-background-color);
547
550
  }