|
|
|
|
@ -524,7 +524,15 @@ const submitCallback = async () => {
|
|
|
|
|
router.go(-1);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 加载锁,防止 onMounted 和 route watch 竞态导致数据被清空
|
|
|
|
|
const isDataLoading = ref(false);
|
|
|
|
|
|
|
|
|
|
const loadFormData = async () => {
|
|
|
|
|
// 防止并发加载:若上一次加载仍在进行中,直接跳过本次调用
|
|
|
|
|
if (isDataLoading.value) return;
|
|
|
|
|
isDataLoading.value = true;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
await resetFormState();
|
|
|
|
|
// 获取路由参数(与项目信息保持一致)
|
|
|
|
|
routeParams.value = route.query;
|
|
|
|
|
@ -542,8 +550,17 @@ const loadFormData = async () => {
|
|
|
|
|
Object.assign(form.value, res.data);
|
|
|
|
|
const dateOnly = toDateOnly(form.value.applyChangeDate);
|
|
|
|
|
form.value.applyChangeDate = dateOnly ?? formatToday();
|
|
|
|
|
form.value.budgetList = res.data.budgetList ?? [];
|
|
|
|
|
form.value.progressList = res.data.progressList ?? [];
|
|
|
|
|
// 与 handleProjectChange/loadProjectDataByProjectId 保持一致,将 BigDecimal 字符串转为 Number 以避免 el-input-number 渲染崩溃
|
|
|
|
|
form.value.budgetList = (res.data.budgetList ?? []).map((item: any) => ({
|
|
|
|
|
...item,
|
|
|
|
|
budgetBefore: Number(item.budgetBefore || 0),
|
|
|
|
|
budgetAfter: Number(item.budgetAfter || 0),
|
|
|
|
|
amountUsed: Number(item.amountUsed || 0)
|
|
|
|
|
}));
|
|
|
|
|
form.value.progressList = (res.data.progressList ?? []).map((item: any) => ({
|
|
|
|
|
...item,
|
|
|
|
|
completionDegree: Number(item.completionDegree || 0)
|
|
|
|
|
}));
|
|
|
|
|
isCodeGenerated.value = !!form.value.projectChangeCode;
|
|
|
|
|
if (res.data.changeType) {
|
|
|
|
|
changeTypeList.value = res.data.changeType.split(',');
|
|
|
|
|
@ -561,6 +578,9 @@ const loadFormData = async () => {
|
|
|
|
|
} else if (!showProjectSelect.value) {
|
|
|
|
|
proxy?.$modal.msgError('缺少必要的参数:项目ID或变更申请ID');
|
|
|
|
|
}
|
|
|
|
|
} finally {
|
|
|
|
|
isDataLoading.value = false;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
|
@ -575,7 +595,6 @@ watch(
|
|
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
await loadFormData();
|
|
|
|
|
// loadFormData内部已处理loading提示
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|