vxe-gantt 4.0.23 → 4.0.25

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.
@@ -13,7 +13,7 @@ import { VxeTable as VxeTableComponent } from 'vxe-table'
13
13
 
14
14
  import type { VxeGanttConstructor, VxeGanttEmits, GanttReactData, GanttInternalData, VxeGanttPropTypes, GanttMethods, GanttPrivateMethods, VxeGanttPrivateMethods, GanttPrivateRef, VxeGanttProps, VxeGanttPrivateComputed, VxeGanttViewInstance, VxeGanttDefines } from '../../../types'
15
15
  import type { ValueOf, VxeFormEvents, VxeFormInstance, VxePagerEvents, VxeFormItemProps, VxePagerInstance, VxeComponentStyleType } from 'vxe-pc-ui'
16
- import type { VxeTableMethods, VxeToolbarPropTypes, VxeTableProps, VxeTablePropTypes, VxeTableConstructor, VxeTablePrivateMethods, VxeTableEvents, VxeTableDefines, VxeTableEventProps, VxeToolbarInstance, VxeGridPropTypes } from 'vxe-table'
16
+ import type { VxeTableMethods, VxeToolbarPropTypes, VxeTableProps, VxeTablePropTypes, VxeTableConstructor, VxeTablePrivateMethods, VxeTableEvents, VxeTableDefines, VxeTableEventProps, VxeToolbarInstance, VxeGridPropTypes, VxeGridDefines } from 'vxe-table'
17
17
 
18
18
  const { getConfig, getIcon, getI18n, commands, hooks, useFns, createEvent, globalEvents, GLOBAL_EVENT_KEYS, renderEmptyElement } = VxeUI
19
19
 
@@ -26,6 +26,7 @@ const defaultLayouts: VxeGanttPropTypes.Layouts = [['Form'], ['Toolbar', 'Top',
26
26
 
27
27
  function createInternalData (): GanttInternalData {
28
28
  return {
29
+ uFoot: false,
29
30
  resizeTableWidth: 0
30
31
  }
31
32
  }
@@ -67,6 +68,7 @@ export default defineVxeComponent({
67
68
  editRules: PropType<VxeTablePropTypes.EditRules>
68
69
  animat: PropType<VxeTablePropTypes.Animat>
69
70
  scrollbarConfig: PropType<VxeTablePropTypes.ScrollbarConfig>
71
+ showFooter: PropType<VxeTablePropTypes.ShowFooter>
70
72
  params: PropType<VxeTablePropTypes.Params>
71
73
  }),
72
74
 
@@ -112,6 +114,7 @@ export default defineVxeComponent({
112
114
  filterData: [],
113
115
  formData: {},
114
116
  sortData: [],
117
+ footerData: [],
115
118
  tZindex: 0,
116
119
  tablePage: {
117
120
  total: 0,
@@ -298,15 +301,18 @@ export default defineVxeComponent({
298
301
 
299
302
  const computeTableExtendProps = computed(() => {
300
303
  const rest: Record<string, any> = {}
304
+ const ganttProps: any = props
301
305
  tableComponentPropKeys.forEach((key) => {
302
- rest[key] = (props as any)[key]
306
+ if (ganttProps[key] !== undefined) {
307
+ rest[key] = ganttProps[key]
308
+ }
303
309
  })
304
310
  return rest
305
311
  })
306
312
 
307
313
  const computeTableProps = computed(() => {
308
- const { seqConfig, pagerConfig, editConfig, proxyConfig } = props
309
- const { isZMax, tablePage } = reactData
314
+ const { showFooter, seqConfig, pagerConfig, editConfig, proxyConfig } = props
315
+ const { isZMax, tablePage, footerData } = reactData
310
316
  const taskViewOpts = computeTaskViewOpts.value
311
317
  const { tableStyle } = taskViewOpts
312
318
  const tableExtendProps = computeTableExtendProps.value
@@ -325,8 +331,15 @@ export default defineVxeComponent({
325
331
  tProps.border = border
326
332
  }
327
333
  }
334
+ if (showFooter && !tProps.footerData) {
335
+ // 如果未设置自己的标位数据,则使用代理的
336
+ tProps.footerData = footerData
337
+ } else if (proxyOpts.footer && footerData.length) {
338
+ // 如果代理标为数据,且未请求到数据,则用自己的
339
+ tProps.footerData = footerData
340
+ }
328
341
  if (isZMax) {
329
- if (tableExtendProps.maxHeight) {
342
+ if (tProps.maxHeight) {
330
343
  tProps.maxHeight = '100%'
331
344
  } else {
332
345
  tProps.height = '100%'
@@ -659,9 +672,12 @@ export default defineVxeComponent({
659
672
  reactData.filterData = params.filterList
660
673
  if (proxyConfig && isEnableConf(proxyOpts)) {
661
674
  reactData.tablePage.currentPage = 1
675
+ internalData.uFoot = true
662
676
  $xeGantt.commitProxy('query').then((rest) => {
663
677
  $xeGantt.dispatchEvent('proxy-query', rest, params.$event)
664
678
  })
679
+ internalData.uFoot = false
680
+ updateQueryFooter()
665
681
  }
666
682
  }
667
683
  }
@@ -683,9 +699,12 @@ export default defineVxeComponent({
683
699
  return
684
700
  }
685
701
  if (proxyConfig && isEnableConf(proxyOpts)) {
702
+ internalData.uFoot = true
686
703
  $xeGantt.commitProxy('reload').then((rest) => {
687
704
  $xeGantt.dispatchEvent('proxy-query', { ...rest, isReload: true }, params.$event)
688
705
  })
706
+ internalData.uFoot = false
707
+ updateQueryFooter()
689
708
  }
690
709
  $xeGantt.dispatchEvent('form-submit', params, params.$event)
691
710
  }
@@ -699,9 +718,12 @@ export default defineVxeComponent({
699
718
  if ($xeTable) {
700
719
  $xeTable.clearScroll()
701
720
  }
721
+ internalData.uFoot = true
702
722
  $xeGantt.commitProxy('reload').then((rest) => {
703
723
  $xeGantt.dispatchEvent('proxy-query', { ...rest, isReload: true }, $event)
704
724
  })
725
+ internalData.uFoot = false
726
+ updateQueryFooter()
705
727
  }
706
728
  $xeGantt.dispatchEvent('form-reset', params, $event)
707
729
  }
@@ -865,12 +887,16 @@ export default defineVxeComponent({
865
887
  if (field) {
866
888
  let itemValue: any = null
867
889
  if (itemRender) {
868
- const { defaultValue } = itemRender
890
+ const { startField, endField, defaultValue } = itemRender
869
891
  if (XEUtils.isFunction(defaultValue)) {
870
892
  itemValue = defaultValue({ item })
871
893
  } else if (!XEUtils.isUndefined(defaultValue)) {
872
894
  itemValue = defaultValue
873
895
  }
896
+ if (startField && endField) {
897
+ XEUtils.set(fData, startField, null)
898
+ XEUtils.set(fData, endField, null)
899
+ }
874
900
  }
875
901
  fData[field] = itemValue
876
902
  }
@@ -892,7 +918,13 @@ export default defineVxeComponent({
892
918
  if (!proxyInited) {
893
919
  reactData.proxyInited = true
894
920
  if (proxyOpts.autoLoad !== false) {
895
- nextTick().then(() => $xeGantt.commitProxy('initial')).then((rest) => {
921
+ nextTick().then(() => {
922
+ internalData.uFoot = true
923
+ const rest = $xeGantt.commitProxy('initial')
924
+ internalData.uFoot = false
925
+ updateQueryFooter()
926
+ return rest
927
+ }).then((rest) => {
896
928
  dispatchEvent('proxy-query', { ...rest, isInited: true }, new Event('initial'))
897
929
  })
898
930
  }
@@ -900,6 +932,14 @@ export default defineVxeComponent({
900
932
  }
901
933
  }
902
934
 
935
+ const updateQueryFooter = () => {
936
+ const proxyOpts = computeProxyOpts.value
937
+ const { ajax } = proxyOpts
938
+ if (ajax && ajax.queryFooter) {
939
+ return $xeGantt.commitProxy('queryFooter')
940
+ }
941
+ }
942
+
903
943
  const handleGlobalKeydownEvent = (evnt: KeyboardEvent) => {
904
944
  const zoomOpts = computeZoomOpts.value
905
945
  const isEsc = globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE)
@@ -922,15 +962,15 @@ export default defineVxeComponent({
922
962
  * @param {String/Object} code 字符串或对象
923
963
  */
924
964
  commitProxy (proxyTarget: string | VxeToolbarPropTypes.ButtonConfig, ...args: any[]) {
925
- const { proxyConfig, toolbarConfig, pagerConfig, editRules, validConfig } = props
965
+ const { showFooter, proxyConfig, toolbarConfig, pagerConfig, editRules, validConfig } = props
926
966
  const { tablePage } = reactData
927
967
  const isActiveMsg = computeIsActiveMsg.value
928
968
  const isRespMsg = computeIsRespMsg.value
929
969
  const proxyOpts = computeProxyOpts.value
930
970
  const pagerOpts = computePagerOpts.value
931
971
  const toolbarOpts = computeToolbarOpts.value
932
- const { beforeQuery, afterQuery, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts
933
- const resConfigs = proxyOpts.response || proxyOpts.props || {}
972
+ const { beforeQuery, afterQuery, beforeQueryFooter, afterQueryFooter, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts
973
+ const resConfigs = (proxyOpts.response || proxyOpts.props || {}) as VxeGridDefines.ProxyConfigResponseConfig
934
974
  const $xeTable = refTable.value
935
975
  if (!$xeTable) {
936
976
  return nextTick()
@@ -981,15 +1021,16 @@ export default defineVxeComponent({
981
1021
  case 'initial':
982
1022
  case 'reload':
983
1023
  case 'query': {
984
- const ajaxMethods = ajax.query
985
- const querySuccessMethods = ajax.querySuccess
986
- const queryErrorMethods = ajax.queryError
987
- if (ajaxMethods) {
1024
+ const qMethods = ajax.query
1025
+ const qsMethods = ajax.querySuccess
1026
+ const qeMethods = ajax.queryError
1027
+ if (qMethods) {
988
1028
  const isInited = code === 'initial'
989
1029
  const isReload = code === 'reload'
990
1030
  if (!isInited && reactData.tableLoading) {
991
1031
  return nextTick()
992
1032
  }
1033
+ let operPromise = null
993
1034
  let sortList: any[] = []
994
1035
  let filterList: VxeTableDefines.FilterCheckedParams[] = []
995
1036
  let pageParams: any = {}
@@ -1043,7 +1084,7 @@ export default defineVxeComponent({
1043
1084
  } else {
1044
1085
  if ($xeTable) {
1045
1086
  if (isReload) {
1046
- $xeTable.clearAll()
1087
+ operPromise = $xeTable.clearAll()
1047
1088
  } else {
1048
1089
  sortList = $xeTable.getSortColumns()
1049
1090
  filterList = $xeTable.getCheckedFilters()
@@ -1063,65 +1104,119 @@ export default defineVxeComponent({
1063
1104
  sorts: sortList,
1064
1105
  filters: filterList,
1065
1106
  form: formData,
1066
- options: ajaxMethods
1107
+ options: qMethods
1067
1108
  }
1068
1109
  reactData.sortData = sortList
1069
1110
  reactData.filterData = filterList
1070
1111
  reactData.tableLoading = true
1071
- return Promise.resolve((beforeQuery || ajaxMethods)(commitParams, ...args))
1072
- .then(rest => {
1073
- let tableData: any[] = []
1074
- reactData.tableLoading = false
1075
- if (rest) {
1076
- if (pagerConfig && isEnableConf(pagerOpts)) {
1077
- const totalProp = resConfigs.total
1078
- const total = (XEUtils.isFunction(totalProp) ? totalProp({ data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }) : XEUtils.get(rest, totalProp || 'page.total')) || 0
1079
- tablePage.total = XEUtils.toNumber(total)
1080
- const resultProp = resConfigs.result
1081
- tableData = (XEUtils.isFunction(resultProp) ? resultProp({ data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }) : XEUtils.get(rest, resultProp || 'result')) || []
1082
- // 检验当前页码,不能超出当前最大页数
1083
- const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1)
1084
- if (tablePage.currentPage > pageCount) {
1085
- tablePage.currentPage = pageCount
1086
- }
1087
- } else {
1088
- const listProp = resConfigs.list
1089
- tableData = (listProp ? (XEUtils.isFunction(listProp) ? listProp({ data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }) : XEUtils.get(rest, listProp)) : rest) || []
1112
+ return Promise.all([
1113
+ Promise.resolve((beforeQuery || qMethods)(commitParams, ...args)),
1114
+ operPromise
1115
+ ]).then(([rest]) => {
1116
+ let tableData: any[] = []
1117
+ reactData.tableLoading = false
1118
+ if (rest) {
1119
+ const reParams = { data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt }
1120
+ if (pagerConfig && isEnableConf(pagerOpts)) {
1121
+ const totalProp = resConfigs.total
1122
+ const total = (XEUtils.isFunction(totalProp) ? totalProp(reParams) : XEUtils.get(rest, totalProp || 'page.total')) || 0
1123
+ tablePage.total = XEUtils.toNumber(total)
1124
+ const resultProp = resConfigs.result
1125
+ tableData = (XEUtils.isFunction(resultProp) ? resultProp(reParams) : XEUtils.get(rest, resultProp || 'result')) || []
1126
+ // 检验当前页码,不能超出当前最大页数
1127
+ const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1)
1128
+ if (tablePage.currentPage > pageCount) {
1129
+ tablePage.currentPage = pageCount
1090
1130
  }
1091
- }
1092
- if ($xeTable as any) {
1093
- $xeTable.loadData(tableData)
1094
1131
  } else {
1095
- nextTick(() => {
1096
- if ($xeTable) {
1097
- $xeTable.loadData(tableData)
1098
- }
1099
- })
1100
- }
1101
- if (afterQuery) {
1102
- afterQuery(commitParams, ...args)
1103
- }
1104
- if (querySuccessMethods) {
1105
- querySuccessMethods({ ...commitParams, response: rest })
1132
+ const listProp = resConfigs.list
1133
+ if (XEUtils.isArray(rest)) {
1134
+ tableData = rest
1135
+ } else if (listProp) {
1136
+ tableData = (XEUtils.isFunction(listProp) ? listProp(reParams) : XEUtils.get(rest, listProp)) || []
1137
+ }
1106
1138
  }
1107
- return { status: true }
1108
- }).catch((rest) => {
1109
- reactData.tableLoading = false
1110
- if (queryErrorMethods) {
1111
- queryErrorMethods({ ...commitParams, response: rest })
1139
+ if (showFooter) {
1140
+ const fdProp = resConfigs.footerData
1141
+ const footerList = fdProp ? (XEUtils.isFunction(fdProp) ? fdProp(reParams) : XEUtils.get(rest, fdProp)) : []
1142
+ if (XEUtils.isArray(footerList)) {
1143
+ reactData.footerData = footerList
1144
+ }
1112
1145
  }
1113
- return { status: false }
1114
- })
1146
+ }
1147
+ if ($xeTable) {
1148
+ $xeTable.loadData(tableData)
1149
+ } else {
1150
+ nextTick(() => {
1151
+ const $xeTable = refTable.value
1152
+ if ($xeTable) {
1153
+ $xeTable.loadData(tableData)
1154
+ }
1155
+ })
1156
+ }
1157
+ if (afterQuery) {
1158
+ afterQuery(commitParams, ...args)
1159
+ }
1160
+ if (qsMethods) {
1161
+ qsMethods({ ...commitParams, response: rest })
1162
+ }
1163
+ return { status: true }
1164
+ }).catch((rest) => {
1165
+ reactData.tableLoading = false
1166
+ if (qeMethods) {
1167
+ qeMethods({ ...commitParams, response: rest })
1168
+ }
1169
+ return { status: false }
1170
+ })
1115
1171
  } else {
1116
- errLog('vxe.error.notFunc', ['proxy-config.ajax.query'])
1172
+ errLog('vxe.error.notFunc', ['[gantt] proxy-config.ajax.query'])
1173
+ }
1174
+ break
1175
+ }
1176
+ case 'queryFooter': {
1177
+ const qfMethods = ajax.queryFooter
1178
+ const qfSuccessMethods = ajax.queryFooterSuccess
1179
+ const qfErrorMethods = ajax.queryFooterError
1180
+ if (qfMethods) {
1181
+ let filterList: VxeTableDefines.FilterCheckedParams[] = []
1182
+ if ($xeTable) {
1183
+ filterList = $xeTable.getCheckedFilters()
1184
+ }
1185
+ const commitParams = {
1186
+ $table: $xeTable,
1187
+ $grid: null,
1188
+ $gantt: $xeGantt,
1189
+ code,
1190
+ button,
1191
+ filters: filterList,
1192
+ form: formData,
1193
+ options: qfMethods
1194
+ }
1195
+ return Promise.resolve((beforeQueryFooter || qfMethods)(commitParams, ...args)).then(rest => {
1196
+ reactData.footerData = XEUtils.isArray(rest) ? rest : []
1197
+ if (afterQueryFooter) {
1198
+ afterQueryFooter(commitParams, ...args)
1199
+ }
1200
+ if (qfSuccessMethods) {
1201
+ qfSuccessMethods({ ...commitParams, response: rest })
1202
+ }
1203
+ return { status: true }
1204
+ }).catch((rest) => {
1205
+ if (qfErrorMethods) {
1206
+ qfErrorMethods({ ...commitParams, response: rest })
1207
+ }
1208
+ return { status: false }
1209
+ })
1210
+ } else {
1211
+ errLog('vxe.error.notFunc', ['[gantt] proxy-config.ajax.queryFooter'])
1117
1212
  }
1118
1213
  break
1119
1214
  }
1120
1215
  case 'delete': {
1121
- const ajaxMethods = ajax.delete
1216
+ const dMethods = ajax.delete
1122
1217
  const deleteSuccessMethods = ajax.deleteSuccess
1123
1218
  const deleteErrorMethods = ajax.deleteError
1124
- if (ajaxMethods) {
1219
+ if (dMethods) {
1125
1220
  const selectRecords = $xeGantt.getCheckboxRecords()
1126
1221
  const removeRecords = selectRecords.filter(row => !$xeTable.isInsertByRow(row))
1127
1222
  const body = { removeRecords }
@@ -1133,7 +1228,7 @@ export default defineVxeComponent({
1133
1228
  button,
1134
1229
  body,
1135
1230
  form: formData,
1136
- options: ajaxMethods
1231
+ options: dMethods
1137
1232
  }
1138
1233
  if (selectRecords.length) {
1139
1234
  return handleDeleteRow(code, 'vxe.grid.deleteSelectRecord', () => {
@@ -1141,7 +1236,7 @@ export default defineVxeComponent({
1141
1236
  return $xeTable.remove(selectRecords)
1142
1237
  }
1143
1238
  reactData.tableLoading = true
1144
- return Promise.resolve((beforeDelete || ajaxMethods)(commitParams, ...args))
1239
+ return Promise.resolve((beforeDelete || dMethods)(commitParams, ...args))
1145
1240
  .then(rest => {
1146
1241
  reactData.tableLoading = false
1147
1242
  $xeTable.setPendingRow(removeRecords, false)
@@ -1153,7 +1248,10 @@ export default defineVxeComponent({
1153
1248
  if (afterDelete) {
1154
1249
  afterDelete(commitParams, ...args)
1155
1250
  } else {
1251
+ internalData.uFoot = true
1156
1252
  $xeGantt.commitProxy('query')
1253
+ internalData.uFoot = false
1254
+ updateQueryFooter()
1157
1255
  }
1158
1256
  if (deleteSuccessMethods) {
1159
1257
  deleteSuccessMethods({ ...commitParams, response: rest })
@@ -1181,7 +1279,7 @@ export default defineVxeComponent({
1181
1279
  }
1182
1280
  }
1183
1281
  } else {
1184
- errLog('vxe.error.notFunc', ['proxy-config.ajax.delete'])
1282
+ errLog('vxe.error.notFunc', ['[gantt] proxy-config.ajax.delete'])
1185
1283
  }
1186
1284
  break
1187
1285
  }
@@ -1234,7 +1332,10 @@ export default defineVxeComponent({
1234
1332
  if (afterSave) {
1235
1333
  afterSave(commitParams, ...args)
1236
1334
  } else {
1335
+ internalData.uFoot = true
1237
1336
  $xeGantt.commitProxy('query')
1337
+ internalData.uFoot = false
1338
+ updateQueryFooter()
1238
1339
  }
1239
1340
  if (saveSuccessMethods) {
1240
1341
  saveSuccessMethods({ ...commitParams, response: rest })
@@ -1262,7 +1363,7 @@ export default defineVxeComponent({
1262
1363
  }
1263
1364
  })
1264
1365
  } else {
1265
- errLog('vxe.error.notFunc', ['proxy-config.ajax.save'])
1366
+ errLog('vxe.error.notFunc', ['[gantt] proxy-config.ajax.save'])
1266
1367
  }
1267
1368
  break
1268
1369
  }
@@ -1273,7 +1374,7 @@ export default defineVxeComponent({
1273
1374
  if (tCommandMethod) {
1274
1375
  tCommandMethod({ code, button, $table: $xeTable, $grid: null, $gantt: $xeGantt }, ...args)
1275
1376
  } else {
1276
- errLog('vxe.error.notCommands', [code])
1377
+ errLog('vxe.error.notCommands', [`[grid] ${code}`])
1277
1378
  }
1278
1379
  }
1279
1380
  }
@@ -1473,6 +1574,7 @@ export default defineVxeComponent({
1473
1574
  * 获取需要排除的高度
1474
1575
  */
1475
1576
  getExcludeHeight () {
1577
+ const { height } = props
1476
1578
  const { isZMax } = reactData
1477
1579
  const el = refElem.value
1478
1580
  if (el) {
@@ -1481,8 +1583,11 @@ export default defineVxeComponent({
1481
1583
  const topWrapper = refTopWrapper.value
1482
1584
  const bottomWrapper = refBottomWrapper.value
1483
1585
  const pagerWrapper = refPagerWrapper.value
1484
- const parentEl = el.parentElement as HTMLElement
1485
- const parentPaddingSize = isZMax ? 0 : (parentEl ? getPaddingTopBottomSize(parentEl) : 0)
1586
+ const parentEl = el.parentElement
1587
+ let parentPaddingSize = 0
1588
+ if (parentEl && (height === '100%' || height === 'auto')) {
1589
+ parentPaddingSize = isZMax ? 0 : getPaddingTopBottomSize(parentEl)
1590
+ }
1486
1591
  return parentPaddingSize + getPaddingTopBottomSize(el) + getOffsetHeight(formWrapper) + getOffsetHeight(toolbarWrapper) + getOffsetHeight(topWrapper) + getOffsetHeight(bottomWrapper) + getOffsetHeight(pagerWrapper)
1487
1592
  }
1488
1593
  return 0
@@ -1497,11 +1602,23 @@ export default defineVxeComponent({
1497
1602
  },
1498
1603
  triggerToolbarCommitEvent (params, evnt) {
1499
1604
  const { code } = params
1500
- return $xeGantt.commitProxy(params, evnt).then((rest) => {
1501
- if (code && rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
1502
- $xeGantt.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code as 'delete' | 'save'}` : 'proxy-query', { ...rest, isReload: code === 'reload' }, evnt)
1605
+ if (code) {
1606
+ const isUf = ['reload', 'delete', 'save'].includes(code)
1607
+ if (isUf) {
1608
+ internalData.uFoot = true
1503
1609
  }
1504
- })
1610
+ const rest = $xeGantt.commitProxy(params, evnt).then((rest) => {
1611
+ if (rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
1612
+ $xeGantt.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code as 'delete' | 'save'}` : 'proxy-query', { ...rest, isReload: code === 'reload' }, evnt)
1613
+ }
1614
+ })
1615
+ internalData.uFoot = false
1616
+ if (isUf) {
1617
+ updateQueryFooter()
1618
+ }
1619
+ return rest
1620
+ }
1621
+ return nextTick()
1505
1622
  },
1506
1623
  triggerToolbarBtnEvent (button, evnt) {
1507
1624
  $xeGantt.triggerToolbarCommitEvent(button, evnt)
@@ -52,3 +52,7 @@ export function eqEmptyValue (cellValue: any) {
52
52
  export function getStringValue (cellValue: any) {
53
53
  return eqEmptyValue(cellValue) ? '' : cellValue
54
54
  }
55
+
56
+ export function getClass (property: any, params: any) {
57
+ return property ? XEUtils.isFunction(property) ? property(params) : property : ''
58
+ }