vxe-gantt 4.6.5 → 4.6.7

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.
package/dist/all.esm.js CHANGED
@@ -6,7 +6,7 @@ import DomZIndex from 'dom-zindex';
6
6
  import { VxeTable } from 'vxe-table';
7
7
 
8
8
  const { setConfig: setConfig$1, setIcon } = VxeUI;
9
- VxeUI.ganttVersion = "4.6.5";
9
+ VxeUI.ganttVersion = "4.6.7";
10
10
  const ymdFormat = 'yyyy-MM-dd';
11
11
  const ymdhmsFormat = 'yyyy-MM-dd HH:mm:ss';
12
12
  setConfig$1({
@@ -115,7 +115,7 @@ setIcon({
115
115
  });
116
116
 
117
117
  const { log } = VxeUI;
118
- const ganttVersion = `gantt v${"4.6.5"}`;
118
+ const ganttVersion = `gantt v${"4.6.7"}`;
119
119
  function createComponentLog(name) {
120
120
  const uiVersion = VxeUI.uiVersion ? `ui v${VxeUI.uiVersion}` : '';
121
121
  const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
@@ -451,7 +451,7 @@ var GanttViewHeaderComponent = defineVxeComponent({
451
451
  setup() {
452
452
  const $xeGantt = inject('$xeGantt', {});
453
453
  const $xeGanttView = inject('$xeGanttView', {});
454
- const { computeTaskViewOpts } = $xeGantt.getComputeMaps();
454
+ const { computeTaskViewOpts, computeScaleStep, computeMinScale } = $xeGantt.getComputeMaps();
455
455
  const { reactData, internalData } = $xeGanttView;
456
456
  const refElem = ref();
457
457
  const refHeaderScroll = ref();
@@ -461,6 +461,8 @@ var GanttViewHeaderComponent = defineVxeComponent({
461
461
  const { headerGroups, viewCellWidth } = reactData;
462
462
  const { todayDateMaps, visibleColumn } = internalData;
463
463
  const taskViewOpts = computeTaskViewOpts.value;
464
+ const minScale = computeMinScale.value;
465
+ const scaleStep = computeScaleStep.value;
464
466
  const { showNowLine } = taskViewOpts;
465
467
  return h('div', {
466
468
  ref: refElem,
@@ -495,17 +497,31 @@ var GanttViewHeaderComponent = defineVxeComponent({
495
497
  return h('tr', {
496
498
  key: $rowIndex
497
499
  }, columns.map((column, cIndex) => {
498
- const { field, childCount, dateObj } = column;
500
+ const { field, childCount, dateObj, startDateObj, endDateObj } = column;
499
501
  let label = `${column.title}`;
500
- if (scaleItem.type === 'day') {
501
- label = getI18n$1(`vxe.gantt.dayss.w${dateObj.e}`);
502
+ if ((isLast || (minScale && (minScale.type === 'date' || minScale.type === 'day') && (type === 'date' || type === 'day'))) && scaleStep > 1) {
503
+ label = getI18n$1(`vxe.gantt.stepFormat.${type}`, {
504
+ start: startDateObj,
505
+ end: endDateObj,
506
+ eStartLabel: getI18n$1(`vxe.gantt.dayss.w${startDateObj.e}`),
507
+ eEndLabel: getI18n$1(`vxe.gantt.dayss.w${endDateObj.e}`)
508
+ });
502
509
  }
503
510
  else {
504
- if ($rowIndex) {
505
- label = getI18n$1(`vxe.gantt.tSimpleFormat.${type}`, dateObj);
511
+ if (type === 'day') {
512
+ if ($rowIndex) {
513
+ label = getI18n$1(`vxe.gantt.tSimpleFormat.${type}`, {
514
+ eLabel: getI18n$1(`vxe.gantt.dayss.w${dateObj.e}`)
515
+ });
516
+ }
517
+ else {
518
+ label = getI18n$1(`vxe.gantt.tFullFormat.${type}`, {
519
+ eLabel: getI18n$1(`vxe.gantt.dayss.w${dateObj.e}`)
520
+ });
521
+ }
506
522
  }
507
523
  else {
508
- if (isLast && scaleItem.type === 'week') {
524
+ if ($rowIndex) {
509
525
  label = getI18n$1(`vxe.gantt.tSimpleFormat.${type}`, dateObj);
510
526
  }
511
527
  else {
@@ -514,7 +530,17 @@ var GanttViewHeaderComponent = defineVxeComponent({
514
530
  }
515
531
  }
516
532
  let cellVNs = label;
517
- const ctParams = { source: sourceType$4, type: viewType$3, column, scaleObj: scaleItem, title: label, dateObj: dateObj, $rowIndex };
533
+ const ctParams = {
534
+ source: sourceType$4,
535
+ type: viewType$3,
536
+ column,
537
+ scaleObj: scaleItem,
538
+ title: label,
539
+ dateObj,
540
+ startDateObj,
541
+ endDateObj,
542
+ $rowIndex
543
+ };
518
544
  if (titleSlot) {
519
545
  cellVNs = $xeGantt.callSlot(titleSlot, ctParams);
520
546
  }
@@ -1022,7 +1048,7 @@ var GanttViewBodyComponent = defineVxeComponent({
1022
1048
  const { showNowLine, viewStyle } = taskViewOpts;
1023
1049
  const scaleUnit = computeScaleUnit.value;
1024
1050
  const { scaleItem } = headerGroups[headerGroups.length - 1] || {};
1025
- const { field, dateObj } = column;
1051
+ const { field, dateObj, startDateObj, endDateObj } = column;
1026
1052
  const { cellClassName, cellStyle } = viewStyle || {};
1027
1053
  const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
1028
1054
  const rowRest = fullAllDataRowIdData[rowid] || {};
@@ -1066,6 +1092,8 @@ var GanttViewBodyComponent = defineVxeComponent({
1066
1092
  type: viewType$1,
1067
1093
  scaleType: scaleUnit,
1068
1094
  dateObj,
1095
+ startDateObj,
1096
+ endDateObj,
1069
1097
  row,
1070
1098
  column,
1071
1099
  $rowIndex,
@@ -1393,7 +1421,7 @@ var GanttViewComponent = defineVxeComponent({
1393
1421
  let rightSize = ganttReactData.currRightSpacing + XEUtils.toNumber(gridding ? gridding.rightSpacing || 0 : 0);
1394
1422
  if (scaleStep > 0) {
1395
1423
  leftSize *= scaleStep;
1396
- rightSize *= rightSize;
1424
+ rightSize *= scaleStep;
1397
1425
  }
1398
1426
  switch (type) {
1399
1427
  case 'year': {
@@ -1561,6 +1589,8 @@ var GanttViewComponent = defineVxeComponent({
1561
1589
  const minScale = computeMinScale.value;
1562
1590
  const weekScale = computeWeekScale.value;
1563
1591
  const scaleDateList = computeScaleDateList.value;
1592
+ const scaleStep = computeScaleStep.value;
1593
+ const weekStartDay = weekScale ? weekScale.startDay : undefined;
1564
1594
  const fullCols = [];
1565
1595
  const groupCols = [];
1566
1596
  if (minScale && scaleUnit && scaleDateList.length) {
@@ -1606,65 +1636,88 @@ var GanttViewComponent = defineVxeComponent({
1606
1636
  currGpCol.children.push(minCol);
1607
1637
  }
1608
1638
  };
1609
- for (let i = 0; i < scaleDateList.length; i++) {
1610
- const itemDate = scaleDateList[i];
1611
- let [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = XEUtils.toDateString(itemDate, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
1612
- const e = itemDate.getDay();
1639
+ const createDateObj = (date) => {
1640
+ let [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = XEUtils.toDateString(date, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
1641
+ const e = date.getDay();
1613
1642
  const E = e + 1;
1614
- const q = Math.ceil((itemDate.getMonth() + 1) / 3);
1615
- const W = `${XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
1643
+ const q = Math.ceil((date.getMonth() + 1) / 3);
1644
+ const W = `${XEUtils.getYearWeek(date, weekScale ? weekScale.startDay : undefined)}`;
1616
1645
  const WW = XEUtils.padStart(W, 2, '0');
1617
1646
  if (isMinWeek && checkWeekOfsetYear(W, M)) {
1618
1647
  yyyy = `${Number(yyyy) + 1}`;
1619
1648
  M = '1';
1620
1649
  MM = '0' + M;
1621
1650
  }
1622
- const dateObj = { date: itemDate, yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss, q, W, WW, E, e };
1651
+ return { date, yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss, q, W, WW, E, e };
1652
+ };
1653
+ for (let i = 0; i < scaleDateList.length; i++) {
1654
+ const itemDate = scaleDateList[i];
1655
+ const dateObj = createDateObj(itemDate);
1656
+ const { yyyy, MM, dd, HH, mm, ss, q, W, E } = dateObj;
1657
+ const startDateObj = dateObj;
1623
1658
  const colMaps = {
1624
1659
  year: {
1625
1660
  field: yyyy,
1626
1661
  title: yyyy,
1627
- dateObj
1662
+ dateObj,
1663
+ startDateObj,
1664
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatYear(itemDate, scaleStep - 1)) : startDateObj
1628
1665
  },
1629
1666
  quarter: {
1630
1667
  field: `${yyyy}_q${q}`,
1631
1668
  title: `${q}`,
1632
- dateObj
1669
+ dateObj,
1670
+ startDateObj,
1671
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatQuarter(itemDate, scaleStep - 1)) : startDateObj
1633
1672
  },
1634
1673
  month: {
1635
1674
  field: `${yyyy}_${MM}`,
1636
1675
  title: MM,
1637
- dateObj
1676
+ dateObj,
1677
+ startDateObj,
1678
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatMonth(itemDate, scaleStep - 1)) : startDateObj
1638
1679
  },
1639
1680
  week: {
1640
1681
  field: `${yyyy}_W${W}`,
1641
1682
  title: `${W}`,
1642
- dateObj
1683
+ dateObj,
1684
+ startDateObj,
1685
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatWeek(itemDate, scaleStep - 1, weekStartDay, weekStartDay)) : startDateObj
1643
1686
  },
1644
1687
  day: {
1645
1688
  field: `${yyyy}_${MM}_${dd}_E${E}`,
1646
1689
  title: `${E}`,
1647
- dateObj
1690
+ dateObj,
1691
+ startDateObj,
1692
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatDay(itemDate, scaleStep - 1)) : startDateObj
1648
1693
  },
1649
1694
  date: {
1650
1695
  field: `${yyyy}_${MM}_${dd}`,
1651
1696
  title: dd,
1652
- dateObj
1697
+ dateObj,
1698
+ startDateObj,
1699
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatDay(itemDate, scaleStep - 1)) : startDateObj
1653
1700
  },
1654
1701
  hour: {
1655
1702
  field: `${yyyy}_${MM}_${dd}_${HH}`,
1656
1703
  title: HH,
1657
- dateObj
1704
+ dateObj,
1705
+ startDateObj,
1706
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatHours(itemDate, scaleStep - 1)) : startDateObj
1658
1707
  },
1659
1708
  minute: {
1660
1709
  field: `${yyyy}_${MM}_${dd}_${HH}_${mm}`,
1661
1710
  title: mm,
1662
- dateObj
1711
+ dateObj,
1712
+ startDateObj,
1713
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatMinutes(itemDate, scaleStep - 1)) : startDateObj
1663
1714
  },
1664
1715
  second: {
1665
1716
  field: `${yyyy}_${MM}_${dd}_${HH}_${mm}_${ss}`,
1666
1717
  title: ss,
1667
- dateObj
1718
+ dateObj,
1719
+ startDateObj,
1720
+ endDateObj: scaleStep > 1 ? createDateObj(XEUtils.getWhatSeconds(itemDate, scaleStep - 1)) : startDateObj
1668
1721
  }
1669
1722
  };
1670
1723
  const minCol = colMaps[minScale.type];
@@ -4221,7 +4274,7 @@ var VxeGanttComponent = defineVxeComponent({
4221
4274
  const proxyOpts = computeProxyOpts.value;
4222
4275
  const pagerOpts = computePagerOpts.value;
4223
4276
  const toolbarOpts = computeToolbarOpts.value;
4224
- const { beforeQuery, afterQuery, beforeQueryFooter, afterQueryFooter, beforeDelete, afterDelete, beforeSave, afterSave, ajax = {} } = proxyOpts;
4277
+ const { beforeQuery: oldBeforeQuery, afterQuery: oldAfterQuery, beforeQueryFooter: oldBeforeQueryFooter, afterQueryFooter: oldAfterQueryFooter, beforeDelete: oldBeforeDelete, afterDelete: oldAfterDelete, beforeSave: oldBeforeSave, afterSave: oldAfterSave, ajax = {} } = proxyOpts;
4225
4278
  const resConfigs = (proxyOpts.response || proxyOpts.props || {});
4226
4279
  const $xeTable = refTable.value;
4227
4280
  if (!$xeTable) {
@@ -4272,10 +4325,12 @@ var VxeGanttComponent = defineVxeComponent({
4272
4325
  case 'initial':
4273
4326
  case 'reload':
4274
4327
  case 'query': {
4275
- const qMethods = ajax.query;
4276
- const qsMethods = ajax.querySuccess;
4277
- const qeMethods = ajax.queryError;
4278
- if (qMethods) {
4328
+ const bqMethod = ajax.beforeQuery;
4329
+ const qMethod = ajax.query;
4330
+ const aqMethod = ajax.afterQuery;
4331
+ const qsMethod = ajax.querySuccess;
4332
+ const qeMethod = ajax.queryError;
4333
+ if (qMethod) {
4279
4334
  const isInited = code === 'initial';
4280
4335
  const isReload = code === 'reload';
4281
4336
  if (!isInited && reactData.tableLoading) {
@@ -4357,73 +4412,91 @@ var VxeGanttComponent = defineVxeComponent({
4357
4412
  sorts: sortList,
4358
4413
  filters: filterList,
4359
4414
  form: formData,
4360
- options: qMethods
4415
+ options: qMethod
4361
4416
  };
4362
- reactData.sortData = sortList;
4363
- reactData.filterData = filterList;
4364
- reactData.tableLoading = true;
4365
- return Promise.all([
4366
- Promise.resolve((beforeQuery || qMethods)(commitParams, ...args)),
4367
- operPromise
4368
- ]).then(([rest]) => {
4369
- let tableData = [];
4370
- reactData.tableLoading = false;
4371
- if (rest) {
4372
- const reParams = { data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt };
4373
- if (pagerConfig && isEnableConf(pagerOpts)) {
4374
- const totalProp = resConfigs.total;
4375
- const total = (XEUtils.isFunction(totalProp) ? totalProp(reParams) : XEUtils.get(rest, totalProp || 'page.total')) || 0;
4376
- tablePage.total = XEUtils.toNumber(total);
4377
- const resultProp = resConfigs.result;
4378
- tableData = (XEUtils.isFunction(resultProp) ? resultProp(reParams) : XEUtils.get(rest, resultProp || 'result')) || [];
4379
- // 检验当前页码,不能超出当前最大页数
4380
- const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1);
4381
- if (tablePage.currentPage > pageCount) {
4382
- tablePage.currentPage = pageCount;
4383
- }
4417
+ const handleQuery = () => {
4418
+ reactData.sortData = sortList;
4419
+ reactData.filterData = filterList;
4420
+ reactData.tableLoading = true;
4421
+ return Promise.all([
4422
+ Promise.resolve((oldBeforeQuery || qMethod)(commitParams, ...args)),
4423
+ operPromise
4424
+ ]).then(([rest]) => {
4425
+ reactData.tableLoading = false;
4426
+ if (aqMethod) {
4427
+ aqMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'success' }), ...args);
4384
4428
  }
4385
4429
  else {
4386
- const listProp = resConfigs.list;
4387
- if (XEUtils.isArray(rest)) {
4388
- tableData = rest;
4389
- }
4390
- else if (listProp) {
4391
- tableData = (XEUtils.isFunction(listProp) ? listProp(reParams) : XEUtils.get(rest, listProp)) || [];
4392
- }
4393
- }
4394
- if (showFooter) {
4395
- const fdProp = resConfigs.footerData;
4396
- const footerList = fdProp ? (XEUtils.isFunction(fdProp) ? fdProp(reParams) : XEUtils.get(rest, fdProp)) : [];
4397
- if (XEUtils.isArray(footerList)) {
4398
- reactData.footerData = footerList;
4430
+ let tableData = [];
4431
+ if (rest) {
4432
+ const reParams = { data: rest, $table: $xeTable, $grid: null, $gantt: $xeGantt };
4433
+ if (pagerConfig && isEnableConf(pagerOpts)) {
4434
+ const totalProp = resConfigs.total;
4435
+ const total = (XEUtils.isFunction(totalProp) ? totalProp(reParams) : XEUtils.get(rest, totalProp || 'page.total')) || 0;
4436
+ tablePage.total = XEUtils.toNumber(total);
4437
+ const resultProp = resConfigs.result;
4438
+ tableData = (XEUtils.isFunction(resultProp) ? resultProp(reParams) : XEUtils.get(rest, resultProp || 'result')) || [];
4439
+ // 检验当前页码,不能超出当前最大页数
4440
+ const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1);
4441
+ if (tablePage.currentPage > pageCount) {
4442
+ tablePage.currentPage = pageCount;
4443
+ }
4444
+ }
4445
+ else {
4446
+ const listProp = resConfigs.list;
4447
+ if (XEUtils.isArray(rest)) {
4448
+ tableData = rest;
4449
+ }
4450
+ else if (listProp) {
4451
+ tableData = (XEUtils.isFunction(listProp) ? listProp(reParams) : XEUtils.get(rest, listProp)) || [];
4452
+ }
4453
+ }
4454
+ if (showFooter) {
4455
+ const fdProp = resConfigs.footerData;
4456
+ const footerList = fdProp ? (XEUtils.isFunction(fdProp) ? fdProp(reParams) : XEUtils.get(rest, fdProp)) : [];
4457
+ if (XEUtils.isArray(footerList)) {
4458
+ reactData.footerData = footerList;
4459
+ }
4460
+ }
4399
4461
  }
4400
- }
4401
- }
4402
- if ($xeTable) {
4403
- $xeTable.loadData(tableData);
4404
- }
4405
- else {
4406
- nextTick(() => {
4407
- const $xeTable = refTable.value;
4408
4462
  if ($xeTable) {
4409
4463
  $xeTable.loadData(tableData);
4410
4464
  }
4411
- });
4412
- }
4413
- if (afterQuery) {
4414
- afterQuery(commitParams, ...args);
4415
- }
4416
- if (qsMethods) {
4417
- qsMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4418
- }
4419
- return { status: true };
4420
- }).catch((rest) => {
4421
- reactData.tableLoading = false;
4422
- if (qeMethods) {
4423
- qeMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4424
- }
4425
- return { status: false };
4426
- });
4465
+ else {
4466
+ nextTick(() => {
4467
+ const $xeTable = refTable.value;
4468
+ if ($xeTable) {
4469
+ $xeTable.loadData(tableData);
4470
+ }
4471
+ });
4472
+ }
4473
+ if (oldAfterQuery) {
4474
+ oldAfterQuery(Object.assign(Object.assign({}, commitParams), { response: rest }), ...args);
4475
+ }
4476
+ }
4477
+ if (qsMethod) {
4478
+ qsMethod(Object.assign(Object.assign({}, commitParams), { response: rest }));
4479
+ }
4480
+ return { status: true };
4481
+ }).catch((rest) => {
4482
+ reactData.tableLoading = false;
4483
+ if (aqMethod) {
4484
+ aqMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'error' }), ...args);
4485
+ }
4486
+ if (qeMethod) {
4487
+ qeMethod(Object.assign(Object.assign({}, commitParams), { response: rest }));
4488
+ }
4489
+ return { status: false };
4490
+ });
4491
+ };
4492
+ if (bqMethod) {
4493
+ return Promise.resolve(bqMethod(commitParams, ...args)).then(status => {
4494
+ if (status !== false) {
4495
+ return handleQuery();
4496
+ }
4497
+ });
4498
+ }
4499
+ return handleQuery();
4427
4500
  }
4428
4501
  else {
4429
4502
  errLog('vxe.error.notFunc', ['proxy-config.ajax.query']);
@@ -4431,39 +4504,66 @@ var VxeGanttComponent = defineVxeComponent({
4431
4504
  break;
4432
4505
  }
4433
4506
  case 'queryFooter': {
4434
- const qfMethods = ajax.queryFooter;
4435
- const qfSuccessMethods = ajax.queryFooterSuccess;
4436
- const qfErrorMethods = ajax.queryFooterError;
4437
- if (qfMethods) {
4507
+ const bqfMethod = ajax.beforeQueryFooter;
4508
+ const qfMethod = ajax.queryFooter;
4509
+ const aqfMethod = ajax.afterQueryFooter;
4510
+ const qfSuccessMethod = ajax.queryFooterSuccess;
4511
+ const qfErrorMethod = ajax.queryFooterError;
4512
+ if (qfMethod) {
4438
4513
  let filterList = [];
4439
4514
  if ($xeTable) {
4440
4515
  filterList = $xeTable.getCheckedFilters();
4441
4516
  }
4517
+ let pageParams = {};
4518
+ if (pagerConfig) {
4519
+ if (isEnableConf(pagerOpts)) {
4520
+ pageParams = Object.assign({}, tablePage);
4521
+ }
4522
+ }
4442
4523
  const commitParams = {
4443
4524
  $table: $xeTable,
4444
4525
  $grid: null,
4445
4526
  $gantt: $xeGantt,
4446
4527
  code,
4447
4528
  button,
4529
+ page: pageParams,
4448
4530
  filters: filterList,
4449
4531
  form: formData,
4450
- options: qfMethods
4532
+ options: qfMethod
4451
4533
  };
4452
- return Promise.resolve((beforeQueryFooter || qfMethods)(commitParams, ...args)).then(rest => {
4453
- reactData.footerData = XEUtils.isArray(rest) ? rest : [];
4454
- if (afterQueryFooter) {
4455
- afterQueryFooter(commitParams, ...args);
4456
- }
4457
- if (qfSuccessMethods) {
4458
- qfSuccessMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4459
- }
4460
- return { status: true };
4461
- }).catch((rest) => {
4462
- if (qfErrorMethods) {
4463
- qfErrorMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4464
- }
4465
- return { status: false };
4466
- });
4534
+ const handleQueryFooter = () => {
4535
+ return Promise.resolve((oldBeforeQueryFooter || qfMethod)(commitParams, ...args)).then(rest => {
4536
+ if (aqfMethod) {
4537
+ aqfMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'success' }), ...args);
4538
+ }
4539
+ else {
4540
+ reactData.footerData = XEUtils.isArray(rest) ? rest : [];
4541
+ if (oldAfterQueryFooter) {
4542
+ oldAfterQueryFooter(Object.assign(Object.assign({}, commitParams), { response: rest }), ...args);
4543
+ }
4544
+ }
4545
+ if (qfSuccessMethod) {
4546
+ qfSuccessMethod(Object.assign(Object.assign({}, commitParams), { response: rest }));
4547
+ }
4548
+ return { status: true };
4549
+ }).catch((rest) => {
4550
+ if (aqfMethod) {
4551
+ aqfMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'error' }), ...args);
4552
+ }
4553
+ if (qfErrorMethod) {
4554
+ qfErrorMethod(Object.assign(Object.assign({}, commitParams), { response: rest }));
4555
+ }
4556
+ return { status: false };
4557
+ });
4558
+ };
4559
+ if (bqfMethod) {
4560
+ return Promise.resolve(bqfMethod(commitParams, ...args)).then(status => {
4561
+ if (status !== false) {
4562
+ return handleQueryFooter();
4563
+ }
4564
+ });
4565
+ }
4566
+ return handleQueryFooter();
4467
4567
  }
4468
4568
  else {
4469
4569
  errLog('vxe.error.notFunc', ['proxy-config.ajax.queryFooter']);
@@ -4471,10 +4571,12 @@ var VxeGanttComponent = defineVxeComponent({
4471
4571
  break;
4472
4572
  }
4473
4573
  case 'delete': {
4474
- const dMethods = ajax.delete;
4574
+ const bdMethod = ajax.beforeDelete;
4575
+ const dMethod = ajax.delete;
4576
+ const adMethod = ajax.afterDelete;
4475
4577
  const deleteSuccessMethods = ajax.deleteSuccess;
4476
4578
  const deleteErrorMethods = ajax.deleteError;
4477
- if (dMethods) {
4579
+ if (dMethod) {
4478
4580
  const selectRecords = $xeGantt.getCheckboxRecords();
4479
4581
  const removeRecords = selectRecords.filter(row => !$xeTable.isInsertByRow(row));
4480
4582
  const body = { removeRecords };
@@ -4486,49 +4588,69 @@ var VxeGanttComponent = defineVxeComponent({
4486
4588
  button,
4487
4589
  body,
4488
4590
  form: formData,
4489
- options: dMethods
4591
+ options: dMethod
4490
4592
  };
4491
4593
  if (selectRecords.length) {
4492
4594
  return handleDeleteRow(code, 'vxe.grid.deleteSelectRecord', () => {
4493
4595
  if (!removeRecords.length) {
4494
4596
  return $xeTable.remove(selectRecords);
4495
4597
  }
4496
- reactData.tableLoading = true;
4497
- return Promise.resolve((beforeDelete || dMethods)(commitParams, ...args))
4498
- .then(rest => {
4499
- reactData.tableLoading = false;
4500
- $xeTable.setPendingRow(removeRecords, false);
4501
- if (isRespMsg) {
4502
- if (VxeUI.modal) {
4503
- VxeUI.modal.message({ content: getRespMsg(rest, 'vxe.grid.delSuccess'), status: 'success' });
4598
+ const handleDelete = () => {
4599
+ reactData.tableLoading = true;
4600
+ return Promise.resolve((oldBeforeDelete || dMethod)(commitParams, ...args))
4601
+ .then(rest => {
4602
+ reactData.tableLoading = false;
4603
+ if (adMethod) {
4604
+ adMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'success' }), ...args);
4504
4605
  }
4505
- }
4506
- if (afterDelete) {
4507
- afterDelete(commitParams, ...args);
4508
- }
4509
- else {
4510
- internalData.uFoot = true;
4511
- $xeGantt.commitProxy('query');
4512
- internalData.uFoot = false;
4513
- updateQueryFooter();
4514
- }
4515
- if (deleteSuccessMethods) {
4516
- deleteSuccessMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4517
- }
4518
- return { status: true };
4519
- })
4520
- .catch(rest => {
4521
- reactData.tableLoading = false;
4522
- if (isRespMsg) {
4523
- if (VxeUI.modal) {
4524
- VxeUI.modal.message({ id: code, content: getRespMsg(rest, 'vxe.grid.operError'), status: 'error' });
4606
+ else {
4607
+ $xeTable.setPendingRow(removeRecords, false);
4608
+ if (isRespMsg) {
4609
+ if (VxeUI.modal) {
4610
+ VxeUI.modal.message({ content: getRespMsg(rest, 'vxe.grid.delSuccess'), status: 'success' });
4611
+ }
4612
+ }
4613
+ if (oldAfterDelete) {
4614
+ oldAfterDelete(Object.assign(Object.assign({}, commitParams), { response: rest }), ...args);
4615
+ }
4616
+ else {
4617
+ internalData.uFoot = true;
4618
+ $xeGantt.commitProxy('query');
4619
+ internalData.uFoot = false;
4620
+ updateQueryFooter();
4621
+ }
4525
4622
  }
4526
- }
4527
- if (deleteErrorMethods) {
4528
- deleteErrorMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4529
- }
4530
- return { status: false };
4531
- });
4623
+ if (deleteSuccessMethods) {
4624
+ deleteSuccessMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4625
+ }
4626
+ return { status: true };
4627
+ })
4628
+ .catch(rest => {
4629
+ reactData.tableLoading = false;
4630
+ if (adMethod) {
4631
+ adMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'error' }), ...args);
4632
+ }
4633
+ else {
4634
+ if (isRespMsg) {
4635
+ if (VxeUI.modal) {
4636
+ VxeUI.modal.message({ id: code, content: getRespMsg(rest, 'vxe.grid.operError'), status: 'error' });
4637
+ }
4638
+ }
4639
+ }
4640
+ if (deleteErrorMethods) {
4641
+ deleteErrorMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4642
+ }
4643
+ return { status: false };
4644
+ });
4645
+ };
4646
+ if (bdMethod) {
4647
+ return Promise.resolve(bdMethod(commitParams, ...args)).then(status => {
4648
+ if (status !== false) {
4649
+ return handleDelete();
4650
+ }
4651
+ });
4652
+ }
4653
+ return handleDelete();
4532
4654
  });
4533
4655
  }
4534
4656
  else {
@@ -4545,10 +4667,12 @@ var VxeGanttComponent = defineVxeComponent({
4545
4667
  break;
4546
4668
  }
4547
4669
  case 'save': {
4548
- const ajaxMethods = ajax.save;
4549
- const saveSuccessMethods = ajax.saveSuccess;
4550
- const saveErrorMethods = ajax.saveError;
4551
- if (ajaxMethods) {
4670
+ const bSaveMethod = ajax.beforeSave;
4671
+ const sMethod = ajax.save;
4672
+ const aSaveMethod = ajax.afterSave;
4673
+ const sSuccessMethod = ajax.saveSuccess;
4674
+ const sErrorMethod = ajax.saveError;
4675
+ if (sMethod) {
4552
4676
  const body = $xeTable.getRecordset();
4553
4677
  const { insertRecords, removeRecords, updateRecords, pendingRecords } = body;
4554
4678
  const commitParams = {
@@ -4559,7 +4683,7 @@ var VxeGanttComponent = defineVxeComponent({
4559
4683
  button,
4560
4684
  body,
4561
4685
  form: formData,
4562
- options: ajaxMethods
4686
+ options: sMethod
4563
4687
  };
4564
4688
  // 排除掉新增且标记为删除的数据
4565
4689
  if (insertRecords.length) {
@@ -4580,42 +4704,62 @@ var VxeGanttComponent = defineVxeComponent({
4580
4704
  return;
4581
4705
  }
4582
4706
  if (body.insertRecords.length || removeRecords.length || updateRecords.length || body.pendingRecords.length) {
4583
- reactData.tableLoading = true;
4584
- return Promise.resolve((beforeSave || ajaxMethods)(commitParams, ...args))
4585
- .then(rest => {
4586
- reactData.tableLoading = false;
4587
- $xeTable.clearPendingRow();
4588
- if (isRespMsg) {
4589
- if (VxeUI.modal) {
4590
- VxeUI.modal.message({ content: getRespMsg(rest, 'vxe.grid.saveSuccess'), status: 'success' });
4707
+ const handleSave = () => {
4708
+ reactData.tableLoading = true;
4709
+ return Promise.resolve((oldBeforeSave || sMethod)(commitParams, ...args))
4710
+ .then(rest => {
4711
+ reactData.tableLoading = false;
4712
+ if (aSaveMethod) {
4713
+ aSaveMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'success' }), ...args);
4591
4714
  }
4592
- }
4593
- if (afterSave) {
4594
- afterSave(commitParams, ...args);
4595
- }
4596
- else {
4597
- internalData.uFoot = true;
4598
- $xeGantt.commitProxy('query');
4599
- internalData.uFoot = false;
4600
- updateQueryFooter();
4601
- }
4602
- if (saveSuccessMethods) {
4603
- saveSuccessMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4604
- }
4605
- return { status: true };
4606
- })
4607
- .catch(rest => {
4608
- reactData.tableLoading = false;
4609
- if (isRespMsg) {
4610
- if (VxeUI.modal) {
4611
- VxeUI.modal.message({ id: code, content: getRespMsg(rest, 'vxe.grid.operError'), status: 'error' });
4715
+ else {
4716
+ $xeTable.clearPendingRow();
4717
+ if (isRespMsg) {
4718
+ if (VxeUI.modal) {
4719
+ VxeUI.modal.message({ content: getRespMsg(rest, 'vxe.grid.saveSuccess'), status: 'success' });
4720
+ }
4721
+ }
4722
+ if (oldAfterSave) {
4723
+ oldAfterSave(Object.assign(Object.assign({}, commitParams), { response: rest }), ...args);
4724
+ }
4725
+ else {
4726
+ internalData.uFoot = true;
4727
+ $xeGantt.commitProxy('query');
4728
+ internalData.uFoot = false;
4729
+ updateQueryFooter();
4730
+ }
4612
4731
  }
4613
- }
4614
- if (saveErrorMethods) {
4615
- saveErrorMethods(Object.assign(Object.assign({}, commitParams), { response: rest }));
4616
- }
4617
- return { status: false };
4618
- });
4732
+ if (sSuccessMethod) {
4733
+ sSuccessMethod(Object.assign(Object.assign({}, commitParams), { response: rest }));
4734
+ }
4735
+ return { status: true };
4736
+ })
4737
+ .catch(rest => {
4738
+ reactData.tableLoading = false;
4739
+ if (aSaveMethod) {
4740
+ aSaveMethod(Object.assign(Object.assign({}, commitParams), { response: rest, status: 'error' }), ...args);
4741
+ }
4742
+ else {
4743
+ if (isRespMsg) {
4744
+ if (VxeUI.modal) {
4745
+ VxeUI.modal.message({ id: code, content: getRespMsg(rest, 'vxe.grid.operError'), status: 'error' });
4746
+ }
4747
+ }
4748
+ }
4749
+ if (sErrorMethod) {
4750
+ sErrorMethod(Object.assign(Object.assign({}, commitParams), { response: rest }));
4751
+ }
4752
+ return { status: false };
4753
+ });
4754
+ };
4755
+ if (bSaveMethod) {
4756
+ return Promise.resolve(bSaveMethod(commitParams, ...args)).then(status => {
4757
+ if (status !== false) {
4758
+ return handleSave();
4759
+ }
4760
+ });
4761
+ }
4762
+ return handleSave();
4619
4763
  }
4620
4764
  else {
4621
4765
  if (isActiveMsg) {