cloud-web-corejs 1.0.54-dev.785 → 1.0.54-dev.786
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/package.json
CHANGED
|
@@ -52,19 +52,19 @@ import formulaDialog from "@base/components/xform/form-designer/form-widget/dial
|
|
|
52
52
|
import baseFormulaDialog from "@base/components/xform/form-designer/form-widget/dialog/baseFormulaDialog.vue";
|
|
53
53
|
import QRCode from "qrcode";
|
|
54
54
|
import { openLuckysheetDialog } from "@base/components/luckysheet";
|
|
55
|
-
import {
|
|
56
|
-
openComponentDialog as mountComponentDialog,
|
|
57
|
-
} from "@base/utils/componentDialog";
|
|
58
|
-
import {
|
|
59
|
-
buildTreeSubmitData,
|
|
60
|
-
copyTreeData,
|
|
61
|
-
getTreeLoadState,
|
|
62
|
-
isTemporaryTreeKey,
|
|
63
|
-
resolveTreeCopyConfig,
|
|
64
|
-
resolveTreeFields,
|
|
65
|
-
resolveTreeIdentityConfig,
|
|
66
|
-
resolveTreeSubmitConfig,
|
|
67
|
-
} from "../utils/treeTableUtil";
|
|
55
|
+
import {
|
|
56
|
+
openComponentDialog as mountComponentDialog,
|
|
57
|
+
} from "@base/utils/componentDialog";
|
|
58
|
+
import {
|
|
59
|
+
buildTreeSubmitData,
|
|
60
|
+
copyTreeData,
|
|
61
|
+
getTreeLoadState,
|
|
62
|
+
isTemporaryTreeKey,
|
|
63
|
+
resolveTreeCopyConfig,
|
|
64
|
+
resolveTreeFields,
|
|
65
|
+
resolveTreeIdentityConfig,
|
|
66
|
+
resolveTreeSubmitConfig,
|
|
67
|
+
} from "../utils/treeTableUtil";
|
|
68
68
|
|
|
69
69
|
let modules = {};
|
|
70
70
|
const baseRefUtil = {
|
|
@@ -1293,12 +1293,12 @@ modules = {
|
|
|
1293
1293
|
|
|
1294
1294
|
return hasModifyItem;
|
|
1295
1295
|
},
|
|
1296
|
-
loadFormData(options = {}) {
|
|
1297
|
-
let config = options.config || {};
|
|
1296
|
+
loadFormData(options = {}) {
|
|
1297
|
+
let config = options.config || {};
|
|
1298
1298
|
let that = this;
|
|
1299
1299
|
let formConfig = this.formConfig;
|
|
1300
1300
|
let entity = formConfig.entity;
|
|
1301
|
-
let dataId = options.dataId ?? this.dataId;
|
|
1301
|
+
let dataId = options.dataId ?? this.dataId;
|
|
1302
1302
|
let reportTemplate = this.reportTemplate;
|
|
1303
1303
|
let scriptCode = formConfig.formScriptCode || "getOne";
|
|
1304
1304
|
|
|
@@ -1327,13 +1327,13 @@ modules = {
|
|
|
1327
1327
|
...formScriptParam,
|
|
1328
1328
|
},
|
|
1329
1329
|
},
|
|
1330
|
-
...defaultOption,
|
|
1331
|
-
success: (res) => {
|
|
1332
|
-
formData = res.objx || {};
|
|
1333
|
-
this.setFormData(formData, {
|
|
1334
|
-
replace: options.replace === true,
|
|
1335
|
-
});
|
|
1336
|
-
options.callback && options.callback(formData);
|
|
1330
|
+
...defaultOption,
|
|
1331
|
+
success: (res) => {
|
|
1332
|
+
formData = res.objx || {};
|
|
1333
|
+
this.setFormData(formData, {
|
|
1334
|
+
replace: options.replace === true,
|
|
1335
|
+
});
|
|
1336
|
+
options.callback && options.callback(formData);
|
|
1337
1337
|
},
|
|
1338
1338
|
...config,
|
|
1339
1339
|
});
|
|
@@ -1434,6 +1434,9 @@ modules = {
|
|
|
1434
1434
|
config: {
|
|
1435
1435
|
successMsg: false,
|
|
1436
1436
|
isConfirm: false,
|
|
1437
|
+
// 这次保存是「启动流程」的一环,保存完就要接着提交,不能让宿主重挂载
|
|
1438
|
+
// 把当前表单销毁;刷新交给 onWfStartSuccess / onWfStartAbort。
|
|
1439
|
+
skipHostReloadAfterSave: true,
|
|
1437
1440
|
success: (res) => {
|
|
1438
1441
|
done();
|
|
1439
1442
|
},
|
|
@@ -1462,6 +1465,8 @@ modules = {
|
|
|
1462
1465
|
config: {
|
|
1463
1466
|
successMsg: false,
|
|
1464
1467
|
isConfirm: false,
|
|
1468
|
+
// 同上:流程通过前的自动保存,后续由流程侧刷新,此处不重挂载。
|
|
1469
|
+
skipHostReloadAfterSave: true,
|
|
1465
1470
|
success: (res) => {
|
|
1466
1471
|
done();
|
|
1467
1472
|
},
|
|
@@ -2001,22 +2006,22 @@ modules = {
|
|
|
2001
2006
|
n
|
|
2002
2007
|
);
|
|
2003
2008
|
},
|
|
2004
|
-
setFormData: function (e, options = {}) {
|
|
2005
|
-
let t = this;
|
|
2009
|
+
setFormData: function (e, options = {}) {
|
|
2010
|
+
let t = this;
|
|
2006
2011
|
/*Object.keys(this.formDataModel).forEach(function (i) {
|
|
2007
2012
|
e && e.hasOwnProperty(i) && (t.formDataModel[i] = baseRefUtil.deepClone(e[i]));
|
|
2008
2013
|
});*/
|
|
2009
|
-
let nextFormData = baseRefUtil.deepClone(e || {});
|
|
2010
|
-
if (options.replace === true) {
|
|
2011
|
-
Object.keys(t.formDataModel).forEach((key) => {
|
|
2012
|
-
t.$delete(t.formDataModel, key);
|
|
2013
|
-
});
|
|
2014
|
-
Object.keys(nextFormData).forEach((key) => {
|
|
2015
|
-
t.$set(t.formDataModel, key, nextFormData[key]);
|
|
2016
|
-
});
|
|
2017
|
-
} else {
|
|
2018
|
-
Object.assign(t.formDataModel, nextFormData);
|
|
2019
|
-
}
|
|
2014
|
+
let nextFormData = baseRefUtil.deepClone(e || {});
|
|
2015
|
+
if (options.replace === true) {
|
|
2016
|
+
Object.keys(t.formDataModel).forEach((key) => {
|
|
2017
|
+
t.$delete(t.formDataModel, key);
|
|
2018
|
+
});
|
|
2019
|
+
Object.keys(nextFormData).forEach((key) => {
|
|
2020
|
+
t.$set(t.formDataModel, key, nextFormData[key]);
|
|
2021
|
+
});
|
|
2022
|
+
} else {
|
|
2023
|
+
Object.assign(t.formDataModel, nextFormData);
|
|
2024
|
+
}
|
|
2020
2025
|
this.currentFormData = e || {};
|
|
2021
2026
|
this.broadcast("ContainerItem", "setFormData", this.formDataModel),
|
|
2022
2027
|
this.broadcast("FieldWidget", "setFormData", this.formDataModel);
|
|
@@ -3993,206 +3998,206 @@ modules = {
|
|
|
3993
3998
|
reject(msg);
|
|
3994
3999
|
});
|
|
3995
4000
|
});
|
|
3996
|
-
},
|
|
3997
|
-
getTreeTableUtilContext(tableTarget, $grid, source) {
|
|
3998
|
-
let treeConfig = $grid?.treeConfig || {};
|
|
3999
|
-
let originOption
|
|
4000
|
-
= $grid?.params?.originOption || $grid?.originOption || {};
|
|
4001
|
-
let fields = resolveTreeFields(treeConfig, {
|
|
4002
|
-
strict: true,
|
|
4003
|
-
});
|
|
4004
|
-
let identityConfig = resolveTreeIdentityConfig(
|
|
4005
|
-
treeConfig,
|
|
4006
|
-
originOption.treeIdentityConfig || {}
|
|
4007
|
-
);
|
|
4008
|
-
let copyConfig = resolveTreeCopyConfig(
|
|
4009
|
-
fields,
|
|
4010
|
-
identityConfig,
|
|
4011
|
-
originOption.treeCopyConfig || {}
|
|
4012
|
-
);
|
|
4013
|
-
let submitConfig = resolveTreeSubmitConfig(
|
|
4014
|
-
originOption.treeSubmitConfig || {}
|
|
4015
|
-
);
|
|
4016
|
-
let temporaryKeyRegistry
|
|
4017
|
-
= tableTarget?.treeTemporaryKeyRegistry || new Set();
|
|
4018
|
-
let knownFormalKeyRegistry
|
|
4019
|
-
= tableTarget?.treeKnownFormalKeyRegistry || new Set();
|
|
4020
|
-
|
|
4021
|
-
this.collectTreeRuntimeRows(source || [], treeConfig).forEach((row) => {
|
|
4022
|
-
let rowValue = row[fields.rowField];
|
|
4023
|
-
let marker = row._X_TREE_TEMP_KEY;
|
|
4024
|
-
if (marker !== undefined && marker !== null) {
|
|
4025
|
-
temporaryKeyRegistry.add(marker);
|
|
4026
|
-
}
|
|
4027
|
-
if (
|
|
4028
|
-
rowValue !== undefined
|
|
4029
|
-
&& rowValue !== null
|
|
4030
|
-
&& rowValue !== ""
|
|
4031
|
-
&& !isTemporaryTreeKey(row, fields.rowField, identityConfig)
|
|
4032
|
-
) {
|
|
4033
|
-
knownFormalKeyRegistry.add(rowValue);
|
|
4034
|
-
}
|
|
4035
|
-
});
|
|
4036
|
-
|
|
4037
|
-
return {
|
|
4038
|
-
fields,
|
|
4039
|
-
identityConfig,
|
|
4040
|
-
copyConfig,
|
|
4041
|
-
submitConfig,
|
|
4042
|
-
temporaryKeyRegistry,
|
|
4043
|
-
knownFormalKeyRegistry,
|
|
4044
|
-
};
|
|
4045
|
-
},
|
|
4046
|
-
collectTreeRuntimeRows(rows, treeConfig) {
|
|
4047
|
-
let result = [];
|
|
4048
|
-
let visited = new WeakSet();
|
|
4049
|
-
let childrenFields = [
|
|
4050
|
-
treeConfig?.children,
|
|
4051
|
-
treeConfig?.mapChildren || "_X_ROW_CHILD",
|
|
4052
|
-
].filter(Boolean);
|
|
4053
|
-
let visit = (items) => {
|
|
4054
|
-
if (!Array.isArray(items)) return;
|
|
4055
|
-
items.forEach((item) => {
|
|
4056
|
-
if (!item || typeof item !== "object" || visited.has(item)) return;
|
|
4057
|
-
visited.add(item);
|
|
4058
|
-
result.push(item);
|
|
4059
|
-
childrenFields.forEach((field) => {
|
|
4060
|
-
visit(item[field]);
|
|
4061
|
-
});
|
|
4062
|
-
});
|
|
4063
|
-
};
|
|
4064
|
-
visit(rows);
|
|
4065
|
-
return result;
|
|
4066
|
-
},
|
|
4067
|
-
getTreeRuntimeSource($grid, source) {
|
|
4068
|
-
let result = Array.isArray(source) ? source.slice() : [];
|
|
4069
|
-
let runtimeSources = [
|
|
4070
|
-
$grid?.getTableData?.()?.fullData,
|
|
4071
|
-
$grid?.$refs?.xTable?.tableFullTreeData,
|
|
4072
|
-
];
|
|
4073
|
-
runtimeSources.forEach((rows) => {
|
|
4074
|
-
if (!Array.isArray(rows)) return;
|
|
4075
|
-
rows.forEach((row) => {
|
|
4076
|
-
if (!result.includes(row)) result.push(row);
|
|
4077
|
-
});
|
|
4078
|
-
});
|
|
4079
|
-
return result;
|
|
4080
|
-
},
|
|
4081
|
-
getTreeUnloadedRows($grid, treeConfig) {
|
|
4082
|
-
let xTable = $grid?.$refs?.xTable;
|
|
4083
|
-
let fullData = this.getTreeRuntimeSource($grid, []);
|
|
4084
|
-
return this.collectTreeRuntimeRows(fullData, treeConfig).filter(
|
|
4085
|
-
(row) =>
|
|
4086
|
-
getTreeLoadState(row, {
|
|
4087
|
-
fields: resolveTreeFields(treeConfig),
|
|
4088
|
-
isTreeNodeLoaded:
|
|
4089
|
-
typeof xTable?.isTreeExpandLoaded === "function"
|
|
4090
|
-
? (targetRow) => xTable.isTreeExpandLoaded(targetRow)
|
|
4091
|
-
: null,
|
|
4092
|
-
}).requiresLoad
|
|
4093
|
-
);
|
|
4094
|
-
},
|
|
4095
|
-
async ensureTreeTableLoadState(formTemplateTableDTO, operation) {
|
|
4096
|
-
let tableTarget = this.getWidgetRef(formTemplateTableDTO.uniqueName);
|
|
4097
|
-
let $grid = tableTarget?.getGridTable?.();
|
|
4098
|
-
let treeConfig = $grid?.treeConfig;
|
|
4099
|
-
if (!$grid || !treeConfig?.lazy) return;
|
|
4100
|
-
|
|
4101
|
-
let treeContext = this.getTreeTableUtilContext(
|
|
4102
|
-
tableTarget,
|
|
4103
|
-
$grid,
|
|
4104
|
-
this.formDataModel[formTemplateTableDTO.name] || []
|
|
4105
|
-
);
|
|
4106
|
-
let strategy = operation === "copy"
|
|
4107
|
-
? treeContext.copyConfig.lazyStrategy
|
|
4108
|
-
: treeContext.submitConfig.unloadedChildrenStrategy;
|
|
4109
|
-
if (operation === "submit" && strategy === "omit") return;
|
|
4110
|
-
|
|
4111
|
-
let xTable = $grid.$refs?.xTable;
|
|
4112
|
-
if (
|
|
4113
|
-
!xTable
|
|
4114
|
-
|| typeof xTable.isTreeExpandLoaded !== "function"
|
|
4115
|
-
|| typeof $grid.setTreeExpand !== "function"
|
|
4116
|
-
) {
|
|
4117
|
-
throw new Error(
|
|
4118
|
-
`[${formTemplateTableDTO.tableAlias}]无法读取树节点加载状态`
|
|
4119
|
-
);
|
|
4120
|
-
}
|
|
4121
|
-
|
|
4122
|
-
let unloadedRows = this.getTreeUnloadedRows($grid, treeConfig);
|
|
4123
|
-
if (!unloadedRows.length) return;
|
|
4124
|
-
if (strategy !== "loadAll") {
|
|
4125
|
-
let action = operation === "copy" ? "复制" : "保存";
|
|
4126
|
-
throw new Error(
|
|
4127
|
-
`[${formTemplateTableDTO.tableAlias}]存在尚未加载的树节点,请先展开后再${action}`
|
|
4128
|
-
);
|
|
4129
|
-
}
|
|
4130
|
-
|
|
4131
|
-
let loopCount = 0;
|
|
4132
|
-
while (unloadedRows.length) {
|
|
4133
|
-
if (loopCount++ > 100) {
|
|
4134
|
-
throw new Error(
|
|
4135
|
-
`[${formTemplateTableDTO.tableAlias}]树节点层级过深,无法完成加载`
|
|
4136
|
-
);
|
|
4137
|
-
}
|
|
4138
|
-
let currentRows = unloadedRows;
|
|
4139
|
-
await Promise.all(
|
|
4140
|
-
currentRows.map((row) => $grid.setTreeExpand(row, true))
|
|
4141
|
-
);
|
|
4142
|
-
unloadedRows = this.getTreeUnloadedRows($grid, treeConfig);
|
|
4143
|
-
if (
|
|
4144
|
-
unloadedRows.length === currentRows.length
|
|
4145
|
-
&& unloadedRows.every((row) => currentRows.includes(row))
|
|
4146
|
-
) {
|
|
4147
|
-
throw new Error(
|
|
4148
|
-
`[${formTemplateTableDTO.tableAlias}]树节点加载未完成,已停止保存`
|
|
4149
|
-
);
|
|
4150
|
-
}
|
|
4151
|
-
}
|
|
4152
|
-
},
|
|
4153
|
-
async ensureTreeTableReadyForSubmit(formTemplateTableDTO) {
|
|
4154
|
-
return this.ensureTreeTableLoadState(
|
|
4155
|
-
formTemplateTableDTO,
|
|
4156
|
-
"submit"
|
|
4157
|
-
);
|
|
4158
|
-
},
|
|
4159
|
-
async prepareTreeTablesForCopy() {
|
|
4160
|
-
let treeTables = this.getFormTemplateTableDTOs().filter(
|
|
4161
|
-
(item) => item.isTreeTable
|
|
4162
|
-
);
|
|
4163
|
-
for (let index = 0; index < treeTables.length; index++) {
|
|
4164
|
-
await this.ensureTreeTableLoadState(treeTables[index], "copy");
|
|
4165
|
-
}
|
|
4166
|
-
},
|
|
4167
|
-
async buildSubmitPayload(option) {
|
|
4168
|
-
let treeTables = this.getFormTemplateTableDTOs().filter(
|
|
4169
|
-
(item) => item.isTreeTable
|
|
4170
|
-
);
|
|
4171
|
-
for (let index = 0; index < treeTables.length; index++) {
|
|
4172
|
-
await this.ensureTreeTableReadyForSubmit(treeTables[index]);
|
|
4173
|
-
}
|
|
4174
|
-
let formDataSnapshot = this.$baseLodash.cloneDeep(this.formDataModel);
|
|
4175
|
-
let subData = this.getSubData2(false, {
|
|
4176
|
-
mode: "submit",
|
|
4177
|
-
formDataModel: formDataSnapshot,
|
|
4178
|
-
});
|
|
4179
|
-
if (option) {
|
|
4180
|
-
let realFormData = {};
|
|
4181
|
-
Object.keys(option).forEach((key) => {
|
|
4182
|
-
realFormData[option[key]] = subData[key];
|
|
4183
|
-
});
|
|
4184
|
-
return realFormData;
|
|
4185
|
-
}
|
|
4186
|
-
return subData;
|
|
4187
|
-
},
|
|
4188
|
-
getSubData2(flag, context = {}) {
|
|
4001
|
+
},
|
|
4002
|
+
getTreeTableUtilContext(tableTarget, $grid, source) {
|
|
4003
|
+
let treeConfig = $grid?.treeConfig || {};
|
|
4004
|
+
let originOption
|
|
4005
|
+
= $grid?.params?.originOption || $grid?.originOption || {};
|
|
4006
|
+
let fields = resolveTreeFields(treeConfig, {
|
|
4007
|
+
strict: true,
|
|
4008
|
+
});
|
|
4009
|
+
let identityConfig = resolveTreeIdentityConfig(
|
|
4010
|
+
treeConfig,
|
|
4011
|
+
originOption.treeIdentityConfig || {}
|
|
4012
|
+
);
|
|
4013
|
+
let copyConfig = resolveTreeCopyConfig(
|
|
4014
|
+
fields,
|
|
4015
|
+
identityConfig,
|
|
4016
|
+
originOption.treeCopyConfig || {}
|
|
4017
|
+
);
|
|
4018
|
+
let submitConfig = resolveTreeSubmitConfig(
|
|
4019
|
+
originOption.treeSubmitConfig || {}
|
|
4020
|
+
);
|
|
4021
|
+
let temporaryKeyRegistry
|
|
4022
|
+
= tableTarget?.treeTemporaryKeyRegistry || new Set();
|
|
4023
|
+
let knownFormalKeyRegistry
|
|
4024
|
+
= tableTarget?.treeKnownFormalKeyRegistry || new Set();
|
|
4025
|
+
|
|
4026
|
+
this.collectTreeRuntimeRows(source || [], treeConfig).forEach((row) => {
|
|
4027
|
+
let rowValue = row[fields.rowField];
|
|
4028
|
+
let marker = row._X_TREE_TEMP_KEY;
|
|
4029
|
+
if (marker !== undefined && marker !== null) {
|
|
4030
|
+
temporaryKeyRegistry.add(marker);
|
|
4031
|
+
}
|
|
4032
|
+
if (
|
|
4033
|
+
rowValue !== undefined
|
|
4034
|
+
&& rowValue !== null
|
|
4035
|
+
&& rowValue !== ""
|
|
4036
|
+
&& !isTemporaryTreeKey(row, fields.rowField, identityConfig)
|
|
4037
|
+
) {
|
|
4038
|
+
knownFormalKeyRegistry.add(rowValue);
|
|
4039
|
+
}
|
|
4040
|
+
});
|
|
4041
|
+
|
|
4042
|
+
return {
|
|
4043
|
+
fields,
|
|
4044
|
+
identityConfig,
|
|
4045
|
+
copyConfig,
|
|
4046
|
+
submitConfig,
|
|
4047
|
+
temporaryKeyRegistry,
|
|
4048
|
+
knownFormalKeyRegistry,
|
|
4049
|
+
};
|
|
4050
|
+
},
|
|
4051
|
+
collectTreeRuntimeRows(rows, treeConfig) {
|
|
4052
|
+
let result = [];
|
|
4053
|
+
let visited = new WeakSet();
|
|
4054
|
+
let childrenFields = [
|
|
4055
|
+
treeConfig?.children,
|
|
4056
|
+
treeConfig?.mapChildren || "_X_ROW_CHILD",
|
|
4057
|
+
].filter(Boolean);
|
|
4058
|
+
let visit = (items) => {
|
|
4059
|
+
if (!Array.isArray(items)) return;
|
|
4060
|
+
items.forEach((item) => {
|
|
4061
|
+
if (!item || typeof item !== "object" || visited.has(item)) return;
|
|
4062
|
+
visited.add(item);
|
|
4063
|
+
result.push(item);
|
|
4064
|
+
childrenFields.forEach((field) => {
|
|
4065
|
+
visit(item[field]);
|
|
4066
|
+
});
|
|
4067
|
+
});
|
|
4068
|
+
};
|
|
4069
|
+
visit(rows);
|
|
4070
|
+
return result;
|
|
4071
|
+
},
|
|
4072
|
+
getTreeRuntimeSource($grid, source) {
|
|
4073
|
+
let result = Array.isArray(source) ? source.slice() : [];
|
|
4074
|
+
let runtimeSources = [
|
|
4075
|
+
$grid?.getTableData?.()?.fullData,
|
|
4076
|
+
$grid?.$refs?.xTable?.tableFullTreeData,
|
|
4077
|
+
];
|
|
4078
|
+
runtimeSources.forEach((rows) => {
|
|
4079
|
+
if (!Array.isArray(rows)) return;
|
|
4080
|
+
rows.forEach((row) => {
|
|
4081
|
+
if (!result.includes(row)) result.push(row);
|
|
4082
|
+
});
|
|
4083
|
+
});
|
|
4084
|
+
return result;
|
|
4085
|
+
},
|
|
4086
|
+
getTreeUnloadedRows($grid, treeConfig) {
|
|
4087
|
+
let xTable = $grid?.$refs?.xTable;
|
|
4088
|
+
let fullData = this.getTreeRuntimeSource($grid, []);
|
|
4089
|
+
return this.collectTreeRuntimeRows(fullData, treeConfig).filter(
|
|
4090
|
+
(row) =>
|
|
4091
|
+
getTreeLoadState(row, {
|
|
4092
|
+
fields: resolveTreeFields(treeConfig),
|
|
4093
|
+
isTreeNodeLoaded:
|
|
4094
|
+
typeof xTable?.isTreeExpandLoaded === "function"
|
|
4095
|
+
? (targetRow) => xTable.isTreeExpandLoaded(targetRow)
|
|
4096
|
+
: null,
|
|
4097
|
+
}).requiresLoad
|
|
4098
|
+
);
|
|
4099
|
+
},
|
|
4100
|
+
async ensureTreeTableLoadState(formTemplateTableDTO, operation) {
|
|
4101
|
+
let tableTarget = this.getWidgetRef(formTemplateTableDTO.uniqueName);
|
|
4102
|
+
let $grid = tableTarget?.getGridTable?.();
|
|
4103
|
+
let treeConfig = $grid?.treeConfig;
|
|
4104
|
+
if (!$grid || !treeConfig?.lazy) return;
|
|
4105
|
+
|
|
4106
|
+
let treeContext = this.getTreeTableUtilContext(
|
|
4107
|
+
tableTarget,
|
|
4108
|
+
$grid,
|
|
4109
|
+
this.formDataModel[formTemplateTableDTO.name] || []
|
|
4110
|
+
);
|
|
4111
|
+
let strategy = operation === "copy"
|
|
4112
|
+
? treeContext.copyConfig.lazyStrategy
|
|
4113
|
+
: treeContext.submitConfig.unloadedChildrenStrategy;
|
|
4114
|
+
if (operation === "submit" && strategy === "omit") return;
|
|
4115
|
+
|
|
4116
|
+
let xTable = $grid.$refs?.xTable;
|
|
4117
|
+
if (
|
|
4118
|
+
!xTable
|
|
4119
|
+
|| typeof xTable.isTreeExpandLoaded !== "function"
|
|
4120
|
+
|| typeof $grid.setTreeExpand !== "function"
|
|
4121
|
+
) {
|
|
4122
|
+
throw new Error(
|
|
4123
|
+
`[${formTemplateTableDTO.tableAlias}]无法读取树节点加载状态`
|
|
4124
|
+
);
|
|
4125
|
+
}
|
|
4126
|
+
|
|
4127
|
+
let unloadedRows = this.getTreeUnloadedRows($grid, treeConfig);
|
|
4128
|
+
if (!unloadedRows.length) return;
|
|
4129
|
+
if (strategy !== "loadAll") {
|
|
4130
|
+
let action = operation === "copy" ? "复制" : "保存";
|
|
4131
|
+
throw new Error(
|
|
4132
|
+
`[${formTemplateTableDTO.tableAlias}]存在尚未加载的树节点,请先展开后再${action}`
|
|
4133
|
+
);
|
|
4134
|
+
}
|
|
4135
|
+
|
|
4136
|
+
let loopCount = 0;
|
|
4137
|
+
while (unloadedRows.length) {
|
|
4138
|
+
if (loopCount++ > 100) {
|
|
4139
|
+
throw new Error(
|
|
4140
|
+
`[${formTemplateTableDTO.tableAlias}]树节点层级过深,无法完成加载`
|
|
4141
|
+
);
|
|
4142
|
+
}
|
|
4143
|
+
let currentRows = unloadedRows;
|
|
4144
|
+
await Promise.all(
|
|
4145
|
+
currentRows.map((row) => $grid.setTreeExpand(row, true))
|
|
4146
|
+
);
|
|
4147
|
+
unloadedRows = this.getTreeUnloadedRows($grid, treeConfig);
|
|
4148
|
+
if (
|
|
4149
|
+
unloadedRows.length === currentRows.length
|
|
4150
|
+
&& unloadedRows.every((row) => currentRows.includes(row))
|
|
4151
|
+
) {
|
|
4152
|
+
throw new Error(
|
|
4153
|
+
`[${formTemplateTableDTO.tableAlias}]树节点加载未完成,已停止保存`
|
|
4154
|
+
);
|
|
4155
|
+
}
|
|
4156
|
+
}
|
|
4157
|
+
},
|
|
4158
|
+
async ensureTreeTableReadyForSubmit(formTemplateTableDTO) {
|
|
4159
|
+
return this.ensureTreeTableLoadState(
|
|
4160
|
+
formTemplateTableDTO,
|
|
4161
|
+
"submit"
|
|
4162
|
+
);
|
|
4163
|
+
},
|
|
4164
|
+
async prepareTreeTablesForCopy() {
|
|
4165
|
+
let treeTables = this.getFormTemplateTableDTOs().filter(
|
|
4166
|
+
(item) => item.isTreeTable
|
|
4167
|
+
);
|
|
4168
|
+
for (let index = 0; index < treeTables.length; index++) {
|
|
4169
|
+
await this.ensureTreeTableLoadState(treeTables[index], "copy");
|
|
4170
|
+
}
|
|
4171
|
+
},
|
|
4172
|
+
async buildSubmitPayload(option) {
|
|
4173
|
+
let treeTables = this.getFormTemplateTableDTOs().filter(
|
|
4174
|
+
(item) => item.isTreeTable
|
|
4175
|
+
);
|
|
4176
|
+
for (let index = 0; index < treeTables.length; index++) {
|
|
4177
|
+
await this.ensureTreeTableReadyForSubmit(treeTables[index]);
|
|
4178
|
+
}
|
|
4179
|
+
let formDataSnapshot = this.$baseLodash.cloneDeep(this.formDataModel);
|
|
4180
|
+
let subData = this.getSubData2(false, {
|
|
4181
|
+
mode: "submit",
|
|
4182
|
+
formDataModel: formDataSnapshot,
|
|
4183
|
+
});
|
|
4184
|
+
if (option) {
|
|
4185
|
+
let realFormData = {};
|
|
4186
|
+
Object.keys(option).forEach((key) => {
|
|
4187
|
+
realFormData[option[key]] = subData[key];
|
|
4188
|
+
});
|
|
4189
|
+
return realFormData;
|
|
4190
|
+
}
|
|
4191
|
+
return subData;
|
|
4192
|
+
},
|
|
4193
|
+
getSubData2(flag, context = {}) {
|
|
4189
4194
|
let that = this;
|
|
4190
4195
|
let formCode = this.reportTemplate.formCode;
|
|
4191
4196
|
let tableFiledMap = this.getTableFiledMap();
|
|
4192
4197
|
let formTemplateTableDTOs = this.getFormTemplateTableDTOs();
|
|
4193
|
-
let formDataModel
|
|
4194
|
-
= context.formDataModel
|
|
4195
|
-
|| this.$baseLodash.cloneDeep(this.formDataModel);
|
|
4198
|
+
let formDataModel
|
|
4199
|
+
= context.formDataModel
|
|
4200
|
+
|| this.$baseLodash.cloneDeep(this.formDataModel);
|
|
4196
4201
|
let formConfig = this.formConfig;
|
|
4197
4202
|
|
|
4198
4203
|
let res = {};
|
|
@@ -4227,32 +4232,32 @@ modules = {
|
|
|
4227
4232
|
newFormData[tableAlias] = item ?? null;
|
|
4228
4233
|
} else {
|
|
4229
4234
|
if (formTemplateTableDTO.isTreeTable) {
|
|
4230
|
-
let tableTarget = this.getWidgetRef(
|
|
4231
|
-
formTemplateTableDTO.uniqueName
|
|
4232
|
-
);
|
|
4233
|
-
let $grid = tableTarget.getGridTable();
|
|
4234
|
-
let treeTaBm = newFormData.treeTaBm || [];
|
|
4235
|
-
treeTaBm.push(formTemplateTableDTO.tableAlias);
|
|
4236
|
-
newFormData.treeTaBm = treeTaBm;
|
|
4237
|
-
let modelRows = formDataModel[formTemplateTableDTO.name];
|
|
4238
|
-
let sourceRows = Array.isArray(modelRows) ? modelRows : [];
|
|
4239
|
-
let treeContext = this.getTreeTableUtilContext(
|
|
4240
|
-
tableTarget,
|
|
4241
|
-
$grid,
|
|
4242
|
-
sourceRows
|
|
4243
|
-
);
|
|
4244
|
-
newFormData[tableAlias] = buildTreeSubmitData(sourceRows, {
|
|
4245
|
-
...treeContext,
|
|
4246
|
-
submitConfig:
|
|
4247
|
-
context.mode === "submit"
|
|
4248
|
-
? treeContext.submitConfig
|
|
4249
|
-
: {
|
|
4250
|
-
...treeContext.submitConfig,
|
|
4251
|
-
orphanParentStrategy: "preserve",
|
|
4252
|
-
},
|
|
4253
|
-
strict: context.mode === "submit",
|
|
4254
|
-
});
|
|
4255
|
-
} else {
|
|
4235
|
+
let tableTarget = this.getWidgetRef(
|
|
4236
|
+
formTemplateTableDTO.uniqueName
|
|
4237
|
+
);
|
|
4238
|
+
let $grid = tableTarget.getGridTable();
|
|
4239
|
+
let treeTaBm = newFormData.treeTaBm || [];
|
|
4240
|
+
treeTaBm.push(formTemplateTableDTO.tableAlias);
|
|
4241
|
+
newFormData.treeTaBm = treeTaBm;
|
|
4242
|
+
let modelRows = formDataModel[formTemplateTableDTO.name];
|
|
4243
|
+
let sourceRows = Array.isArray(modelRows) ? modelRows : [];
|
|
4244
|
+
let treeContext = this.getTreeTableUtilContext(
|
|
4245
|
+
tableTarget,
|
|
4246
|
+
$grid,
|
|
4247
|
+
sourceRows
|
|
4248
|
+
);
|
|
4249
|
+
newFormData[tableAlias] = buildTreeSubmitData(sourceRows, {
|
|
4250
|
+
...treeContext,
|
|
4251
|
+
submitConfig:
|
|
4252
|
+
context.mode === "submit"
|
|
4253
|
+
? treeContext.submitConfig
|
|
4254
|
+
: {
|
|
4255
|
+
...treeContext.submitConfig,
|
|
4256
|
+
orphanParentStrategy: "preserve",
|
|
4257
|
+
},
|
|
4258
|
+
strict: context.mode === "submit",
|
|
4259
|
+
});
|
|
4260
|
+
} else {
|
|
4256
4261
|
newFormData[tableAlias] =
|
|
4257
4262
|
formDataModel[formTemplateTableDTO.name] ?? null;
|
|
4258
4263
|
}
|
|
@@ -4449,10 +4454,10 @@ modules = {
|
|
|
4449
4454
|
this.$baseReload();
|
|
4450
4455
|
}
|
|
4451
4456
|
},
|
|
4452
|
-
reloadForm(option) {
|
|
4453
|
-
let target1 = this.$attrs["parent-target"];
|
|
4454
|
-
let target2 = target1?.$attrs["parent-target"];
|
|
4455
|
-
let target = !target2 ? this : target1;
|
|
4457
|
+
reloadForm(option) {
|
|
4458
|
+
let target1 = this.$attrs["parent-target"];
|
|
4459
|
+
let target2 = target1?.$attrs["parent-target"];
|
|
4460
|
+
let target = !target2 ? this : target1;
|
|
4456
4461
|
/* if (this.$attrs['reloadDialog'] !== true) {
|
|
4457
4462
|
target = this.$attrs['parent-target'];
|
|
4458
4463
|
}else{
|
|
@@ -4462,44 +4467,44 @@ modules = {
|
|
|
4462
4467
|
for (let key in updateParam) {
|
|
4463
4468
|
target.$emit("update:" + key, updateParam[key]);
|
|
4464
4469
|
}*/
|
|
4465
|
-
try {
|
|
4466
|
-
let reloadListener = target?.$listeners?.reload;
|
|
4467
|
-
if (Array.isArray(reloadListener)) {
|
|
4468
|
-
return Promise.all(
|
|
4469
|
-
reloadListener.map((listener) => listener(target, option))
|
|
4470
|
-
);
|
|
4471
|
-
}
|
|
4472
|
-
if (typeof reloadListener === "function") {
|
|
4473
|
-
return Promise.resolve(reloadListener(target, option));
|
|
4474
|
-
}
|
|
4475
|
-
return Promise.resolve(target.$baseReload(option));
|
|
4476
|
-
} catch (error) {
|
|
4477
|
-
return Promise.reject(error);
|
|
4478
|
-
}
|
|
4479
|
-
},
|
|
4480
|
-
async reloadSavedFormData(option = {}) {
|
|
4481
|
-
let updateParam = option.updateParam || {};
|
|
4482
|
-
let nextDataId = updateParam.dataId ?? this.dataId;
|
|
4483
|
-
let nextFormCode = updateParam.formCode;
|
|
4484
|
-
if (nextDataId === undefined || nextDataId === null || nextDataId === "") {
|
|
4485
|
-
throw new Error("缺少保存后的数据 ID,无法重新加载表单。");
|
|
4486
|
-
}
|
|
4487
|
-
let response = await this.loadFormData({
|
|
4488
|
-
dataId: nextDataId,
|
|
4489
|
-
replace: true,
|
|
4490
|
-
});
|
|
4491
|
-
if (!response || response.type !== "success") {
|
|
4492
|
-
throw new Error(response?.content || "保存后的表单数据重新加载失败。");
|
|
4493
|
-
}
|
|
4494
|
-
if (nextDataId !== undefined && nextDataId !== null) {
|
|
4495
|
-
this.$emit("update:dataId", nextDataId);
|
|
4496
|
-
}
|
|
4497
|
-
if (nextFormCode) {
|
|
4498
|
-
this.$emit("update:formCode", nextFormCode);
|
|
4499
|
-
}
|
|
4500
|
-
await new Promise((resolve) => this.$nextTick(resolve));
|
|
4501
|
-
return response;
|
|
4502
|
-
},
|
|
4470
|
+
try {
|
|
4471
|
+
let reloadListener = target?.$listeners?.reload;
|
|
4472
|
+
if (Array.isArray(reloadListener)) {
|
|
4473
|
+
return Promise.all(
|
|
4474
|
+
reloadListener.map((listener) => listener(target, option))
|
|
4475
|
+
);
|
|
4476
|
+
}
|
|
4477
|
+
if (typeof reloadListener === "function") {
|
|
4478
|
+
return Promise.resolve(reloadListener(target, option));
|
|
4479
|
+
}
|
|
4480
|
+
return Promise.resolve(target.$baseReload(option));
|
|
4481
|
+
} catch (error) {
|
|
4482
|
+
return Promise.reject(error);
|
|
4483
|
+
}
|
|
4484
|
+
},
|
|
4485
|
+
async reloadSavedFormData(option = {}) {
|
|
4486
|
+
let updateParam = option.updateParam || {};
|
|
4487
|
+
let nextDataId = updateParam.dataId ?? this.dataId;
|
|
4488
|
+
let nextFormCode = updateParam.formCode;
|
|
4489
|
+
if (nextDataId === undefined || nextDataId === null || nextDataId === "") {
|
|
4490
|
+
throw new Error("缺少保存后的数据 ID,无法重新加载表单。");
|
|
4491
|
+
}
|
|
4492
|
+
let response = await this.loadFormData({
|
|
4493
|
+
dataId: nextDataId,
|
|
4494
|
+
replace: true,
|
|
4495
|
+
});
|
|
4496
|
+
if (!response || response.type !== "success") {
|
|
4497
|
+
throw new Error(response?.content || "保存后的表单数据重新加载失败。");
|
|
4498
|
+
}
|
|
4499
|
+
if (nextDataId !== undefined && nextDataId !== null) {
|
|
4500
|
+
this.$emit("update:dataId", nextDataId);
|
|
4501
|
+
}
|
|
4502
|
+
if (nextFormCode) {
|
|
4503
|
+
this.$emit("update:formCode", nextFormCode);
|
|
4504
|
+
}
|
|
4505
|
+
await new Promise((resolve) => this.$nextTick(resolve));
|
|
4506
|
+
return response;
|
|
4507
|
+
},
|
|
4503
4508
|
saveForm(callback) {
|
|
4504
4509
|
this.validateForm((valid) => {
|
|
4505
4510
|
if (!valid) return;
|
|
@@ -4894,69 +4899,69 @@ modules = {
|
|
|
4894
4899
|
getFormRef() {
|
|
4895
4900
|
return this;
|
|
4896
4901
|
},
|
|
4897
|
-
isObject(value) {
|
|
4898
|
-
return Object.prototype.toString.call(value) === "[object Object]";
|
|
4899
|
-
},
|
|
4900
|
-
handleCopyTreeData(value, widget) {
|
|
4901
|
-
if (!Array.isArray(value) || !widget) return;
|
|
4902
|
-
|
|
4903
|
-
let widgetName = widget.options.name;
|
|
4904
|
-
let gridRef = this.getWidgetRef(widgetName);
|
|
4905
|
-
let $grid = gridRef?.getGridTable?.();
|
|
4906
|
-
if (!$grid) {
|
|
4907
|
-
throw new Error(`[${widgetName}]树表尚未初始化`);
|
|
4908
|
-
}
|
|
4909
|
-
if (
|
|
4910
|
-
$grid.treeConfig?.lazy
|
|
4911
|
-
&& this.getTreeUnloadedRows($grid, $grid.treeConfig).length
|
|
4912
|
-
) {
|
|
4913
|
-
throw new Error(
|
|
4914
|
-
`[${widgetName}]存在尚未加载的树节点,无法复制不完整子树`
|
|
4915
|
-
);
|
|
4916
|
-
}
|
|
4917
|
-
|
|
4918
|
-
// prepareTreeTablesForCopy 会在深拷贝及 copyDataHandle 之前完成 loadAll,
|
|
4919
|
-
// 此处只消费准备好的副本;不能再混入 VXE 活对象,否则会覆盖脚本修改并产生同键冲突。
|
|
4920
|
-
let sourceRows = value;
|
|
4921
|
-
if (!sourceRows.length) return;
|
|
4922
|
-
|
|
4923
|
-
let treeContext = this.getTreeTableUtilContext(
|
|
4924
|
-
gridRef,
|
|
4925
|
-
$grid,
|
|
4926
|
-
sourceRows
|
|
4927
|
-
);
|
|
4928
|
-
let copiedRows = copyTreeData(sourceRows, {
|
|
4929
|
-
...treeContext,
|
|
4930
|
-
temporaryKeyRegistry: new Set(
|
|
4931
|
-
treeContext.temporaryKeyRegistry
|
|
4932
|
-
),
|
|
4933
|
-
targetRows: [],
|
|
4934
|
-
});
|
|
4935
|
-
let fields = treeContext.fields;
|
|
4936
|
-
let ignoredFields = new Set([
|
|
4937
|
-
fields.rowField,
|
|
4938
|
-
fields.parentField,
|
|
4939
|
-
fields.childrenField,
|
|
4940
|
-
fields.mapChildrenField,
|
|
4941
|
-
fields.hasChildField,
|
|
4942
|
-
treeContext.identityConfig.physicalIdField,
|
|
4943
|
-
"_X_ROW_KEY",
|
|
4944
|
-
"_X_ROW_CHILD",
|
|
4945
|
-
"_X_TREE_TEMP_KEY",
|
|
4946
|
-
"f_wbs",
|
|
4947
|
-
]);
|
|
4948
|
-
|
|
4949
|
-
copiedRows.forEach((row) => {
|
|
4950
|
-
this.handleCopyDefaultData(row);
|
|
4951
|
-
Object.keys(row).forEach((key) => {
|
|
4952
|
-
if (ignoredFields.has(key) || !Array.isArray(row[key])) return;
|
|
4953
|
-
this.handleCopyData(row[key], key);
|
|
4954
|
-
});
|
|
4955
|
-
});
|
|
4956
|
-
|
|
4957
|
-
value.splice(0, value.length, ...copiedRows);
|
|
4958
|
-
},
|
|
4959
|
-
handleCopyDefaultData(data) {
|
|
4902
|
+
isObject(value) {
|
|
4903
|
+
return Object.prototype.toString.call(value) === "[object Object]";
|
|
4904
|
+
},
|
|
4905
|
+
handleCopyTreeData(value, widget) {
|
|
4906
|
+
if (!Array.isArray(value) || !widget) return;
|
|
4907
|
+
|
|
4908
|
+
let widgetName = widget.options.name;
|
|
4909
|
+
let gridRef = this.getWidgetRef(widgetName);
|
|
4910
|
+
let $grid = gridRef?.getGridTable?.();
|
|
4911
|
+
if (!$grid) {
|
|
4912
|
+
throw new Error(`[${widgetName}]树表尚未初始化`);
|
|
4913
|
+
}
|
|
4914
|
+
if (
|
|
4915
|
+
$grid.treeConfig?.lazy
|
|
4916
|
+
&& this.getTreeUnloadedRows($grid, $grid.treeConfig).length
|
|
4917
|
+
) {
|
|
4918
|
+
throw new Error(
|
|
4919
|
+
`[${widgetName}]存在尚未加载的树节点,无法复制不完整子树`
|
|
4920
|
+
);
|
|
4921
|
+
}
|
|
4922
|
+
|
|
4923
|
+
// prepareTreeTablesForCopy 会在深拷贝及 copyDataHandle 之前完成 loadAll,
|
|
4924
|
+
// 此处只消费准备好的副本;不能再混入 VXE 活对象,否则会覆盖脚本修改并产生同键冲突。
|
|
4925
|
+
let sourceRows = value;
|
|
4926
|
+
if (!sourceRows.length) return;
|
|
4927
|
+
|
|
4928
|
+
let treeContext = this.getTreeTableUtilContext(
|
|
4929
|
+
gridRef,
|
|
4930
|
+
$grid,
|
|
4931
|
+
sourceRows
|
|
4932
|
+
);
|
|
4933
|
+
let copiedRows = copyTreeData(sourceRows, {
|
|
4934
|
+
...treeContext,
|
|
4935
|
+
temporaryKeyRegistry: new Set(
|
|
4936
|
+
treeContext.temporaryKeyRegistry
|
|
4937
|
+
),
|
|
4938
|
+
targetRows: [],
|
|
4939
|
+
});
|
|
4940
|
+
let fields = treeContext.fields;
|
|
4941
|
+
let ignoredFields = new Set([
|
|
4942
|
+
fields.rowField,
|
|
4943
|
+
fields.parentField,
|
|
4944
|
+
fields.childrenField,
|
|
4945
|
+
fields.mapChildrenField,
|
|
4946
|
+
fields.hasChildField,
|
|
4947
|
+
treeContext.identityConfig.physicalIdField,
|
|
4948
|
+
"_X_ROW_KEY",
|
|
4949
|
+
"_X_ROW_CHILD",
|
|
4950
|
+
"_X_TREE_TEMP_KEY",
|
|
4951
|
+
"f_wbs",
|
|
4952
|
+
]);
|
|
4953
|
+
|
|
4954
|
+
copiedRows.forEach((row) => {
|
|
4955
|
+
this.handleCopyDefaultData(row);
|
|
4956
|
+
Object.keys(row).forEach((key) => {
|
|
4957
|
+
if (ignoredFields.has(key) || !Array.isArray(row[key])) return;
|
|
4958
|
+
this.handleCopyData(row[key], key);
|
|
4959
|
+
});
|
|
4960
|
+
});
|
|
4961
|
+
|
|
4962
|
+
value.splice(0, value.length, ...copiedRows);
|
|
4963
|
+
},
|
|
4964
|
+
handleCopyDefaultData(data) {
|
|
4960
4965
|
data.create_by = null;
|
|
4961
4966
|
data._create_by = null;
|
|
4962
4967
|
data.create_date = null;
|
|
@@ -5011,22 +5016,22 @@ modules = {
|
|
|
5011
5016
|
});
|
|
5012
5017
|
}
|
|
5013
5018
|
},
|
|
5014
|
-
async openCopyEditTab(copyData) {
|
|
5015
|
-
try {
|
|
5016
|
-
await this.prepareTreeTablesForCopy();
|
|
5017
|
-
let formData = this.$baseLodash.cloneDeep(
|
|
5018
|
-
copyData || this.formDataModel
|
|
5019
|
-
);
|
|
5020
|
-
if (formData) {
|
|
5021
|
-
this.handleCopyData(formData);
|
|
5022
|
-
}
|
|
5023
|
-
this.$emit("openCopyEditTab", formData);
|
|
5024
|
-
return true;
|
|
5025
|
-
} catch (error) {
|
|
5026
|
-
this.$message.error(error?.message || "树表数据尚未准备完成");
|
|
5027
|
-
return false;
|
|
5028
|
-
}
|
|
5029
|
-
},
|
|
5019
|
+
async openCopyEditTab(copyData) {
|
|
5020
|
+
try {
|
|
5021
|
+
await this.prepareTreeTablesForCopy();
|
|
5022
|
+
let formData = this.$baseLodash.cloneDeep(
|
|
5023
|
+
copyData || this.formDataModel
|
|
5024
|
+
);
|
|
5025
|
+
if (formData) {
|
|
5026
|
+
this.handleCopyData(formData);
|
|
5027
|
+
}
|
|
5028
|
+
this.$emit("openCopyEditTab", formData);
|
|
5029
|
+
return true;
|
|
5030
|
+
} catch (error) {
|
|
5031
|
+
this.$message.error(error?.message || "树表数据尚未准备完成");
|
|
5032
|
+
return false;
|
|
5033
|
+
}
|
|
5034
|
+
},
|
|
5030
5035
|
|
|
5031
5036
|
async exportPdf() {
|
|
5032
5037
|
// statusEl.style.display = 'block';
|
|
@@ -274,15 +274,12 @@ modules = {
|
|
|
274
274
|
= typeof formRef.reloadSavedFormData === "function"
|
|
275
275
|
? formRef.reloadSavedFormData
|
|
276
276
|
: formRef.reloadForm;
|
|
277
|
+
// 保存成功后一律让宿主整页重挂载(toggle v-if):新增/编辑都需要出流程信息、
|
|
278
|
+
// 切编辑模板、按新状态重算显隐与只读——这些就地取数(reloadSavedFormData)做不到。
|
|
279
|
+
// 唯一例外是「保存并提交」路径(skipHostReloadAfterSave=true),
|
|
280
|
+
// 它的刷新交给流程结束后的 onWfStartSuccess / onWfStartAbort,避免刷两次。
|
|
277
281
|
let runHostReload = async () => {
|
|
278
|
-
|
|
279
|
-
if (
|
|
280
|
-
skipHostReloadAfterSave
|
|
281
|
-
|| !editFormCode
|
|
282
|
-
|| editFormCode === currentFormCode
|
|
283
|
-
) {
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
282
|
+
if (skipHostReloadAfterSave) return;
|
|
286
283
|
await formRef.reloadForm({ updateParam });
|
|
287
284
|
};
|
|
288
285
|
let callbacksStarted = false;
|