From 964cfa12263cf51b2a3d1ef281130d0e808e9078 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 31 十月 2026 19:04:39 +0800
Subject: [PATCH] feat: 完善业务导入及工艺流程界面

---
 src/views/mes/pro/feedback/modules/form.vue |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/views/mes/pro/feedback/modules/form.vue b/src/views/mes/pro/feedback/modules/form.vue
index d0e4edf..f7e2e8f 100644
--- a/src/views/mes/pro/feedback/modules/form.vue
+++ b/src/views/mes/pro/feedback/modules/form.vue
@@ -31,6 +31,7 @@
 import BatchInputDialog from './batch-input-dialog.vue';
 import ItemConsumeList from './item-consume-list.vue';
 import ProductProduceList from './product-produce-list.vue';
+import FeedbackParamFields from '../components/FeedbackParamFields.vue';
 
 const emit = defineEmits(['success']);
 const formType = ref<FormType>('create');
@@ -39,6 +40,10 @@
 const userStore = useUserStore();
 const subTabsName = ref('itemConsume');
 const originalSnapshot = ref(''); // 琛ㄥ崟鍘熷鏁版嵁蹇収锛岀敤浜� submit 鏃惰烦杩囨湭鍙樻洿鐨勪繚瀛樿姹�
+const paramTaskId = ref<number>();
+const paramSnapshot = ref<string>();
+const paramFields = ref<InstanceType<typeof FeedbackParamFields>>();
+function onParamTaskChange(taskId?: number) { paramTaskId.value = taskId; paramSnapshot.value = undefined; }
 
 const isEditable = computed(() =>
   ['create', 'submit', 'update'].includes(formType.value),
@@ -102,9 +107,10 @@
 }
 
 /** 璇诲彇骞舵寜鎻愪氦瑙勫垯瀵归綈鍚庣殑琛ㄥ崟鏁版嵁锛岀敤浜庡揩鐓у拰淇濆瓨 */
-async function getAlignedData(): Promise<MesProFeedbackApi.Feedback> {
+async function getAlignedData(includeParams = true): Promise<MesProFeedbackApi.Feedback> {
   const data = (await formApi.getValues()) as MesProFeedbackApi.Feedback;
   alignQuantity(data);
+  if (includeParams) data.paramValues = paramFields.value?.getValues();
   return data;
 }
 
@@ -125,7 +131,7 @@
         status: MesProFeedbackStatusEnum.PREPARE,
       };
       formType.value = 'update';
-      formApi.setState({ schema: useFormSchema(formType.value, formApi) });
+      formApi.setState({ schema: useFormSchema(formType.value, formApi, onParamTaskChange) });
       await formApi.setFieldValue('id', id);
       message.success($t('common.createSuccess'));
     } else {
@@ -253,6 +259,8 @@
   async onOpenChange(isOpen: boolean) {
     if (!isOpen) {
       formData.value = undefined;
+      paramTaskId.value = undefined;
+      paramSnapshot.value = undefined;
       subTabsName.value = 'itemConsume';
       originalSnapshot.value = '';
       return;
@@ -261,7 +269,7 @@
     const data = modalApi.getData<{ formType: FormType; id?: number; showSubmitButton?: boolean }>();
     formType.value = data.formType;
     showSubmitButton.value = data.showSubmitButton !== false;
-    formApi.setState({ schema: useFormSchema(formType.value, formApi) });
+    formApi.setState({ schema: useFormSchema(formType.value, formApi, onParamTaskChange) });
     // 瀹℃壒/璇︽儏鏁磋〃绂佺敤锛岄伩鍏嶅鏍镐汉璇敼鏈彁浜ょ殑瀛楁
     formApi.setDisabled(
       formType.value === 'approve' || formType.value === 'detail',
@@ -283,12 +291,14 @@
         feedbackUserId: userStore.userInfo?.id,
       });
       // 璁板綍鍒濆蹇収锛堝惈鏁伴噺瀵归綈缁撴灉锛夛紝submit 鏃剁敤浜庤烦杩囨棤鍙樻洿鐨勪繚瀛樿姹�
-      originalSnapshot.value = JSON.stringify(await getAlignedData());
+      originalSnapshot.value = JSON.stringify(await getAlignedData(false));
       return;
     }
     modalApi.lock();
     try {
       formData.value = await getFeedback(data.id);
+      paramTaskId.value = formData.value.taskId;
+      paramSnapshot.value = formData.value.paramSnapshot;
       const checkFlag = await resolveCheckFlag(
         formData.value.routeId,
         formData.value.processId,
@@ -296,7 +306,7 @@
       // 璁剧疆鍒� values
       await formApi.setValues({ ...formData.value, checkFlag });
       // 璁板綍鍒濆蹇収锛堝惈鏁伴噺瀵归綈缁撴灉锛夛紝submit 鏃剁敤浜庤烦杩囨棤鍙樻洿鐨勪繚瀛樿姹�
-      originalSnapshot.value = JSON.stringify(await getAlignedData());
+      originalSnapshot.value = JSON.stringify(await getAlignedData(false));
     } finally {
       modalApi.unlock();
     }
@@ -307,6 +317,7 @@
 <template>
   <Modal :title="getTitle" class="w-3/5">
     <Form class="mx-4" />
+    <FeedbackParamFields ref="paramFields" :task-id="paramTaskId" :snapshot="paramSnapshot" :readonly="!isEditable" />
     <Tabs
       v-if="showSubTabs"
       v-model:active-key="subTabsName"

--
Gitblit v1.9.3