From f670b79094c95d791fc43c8fc8b5858ebf8426dc Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 17 九月 2026 13:50:29 +0800
Subject: [PATCH] 一些向web对齐

---
 src/pages/oa/ApproveManage/approve-list/apply.vue |   83 +++++++++++++++++++++++++++++------------
 1 files changed, 59 insertions(+), 24 deletions(-)

diff --git a/src/pages/oa/ApproveManage/approve-list/apply.vue b/src/pages/oa/ApproveManage/approve-list/apply.vue
index b529db3..00226a3 100644
--- a/src/pages/oa/ApproveManage/approve-list/apply.vue
+++ b/src/pages/oa/ApproveManage/approve-list/apply.vue
@@ -6,7 +6,6 @@
   <view class="approve-apply-page">
     <PageHeader :title="pageTitle"
                 @back="goBack" />
-
     <scroll-view class="form-scroll"
                  scroll-y
                  :show-scrollbar="false">
@@ -42,7 +41,6 @@
             </up-form-item>
           </u-cell-group>
         </up-form>
-
         <view class="section-card">
           <view class="section-head">
             <text class="section-title">濉姤鍐呭</text>
@@ -121,7 +119,6 @@
           </up-form>
           <view v-else
                 class="empty-hint">璇ユā鏉挎殏鏃犲~鎶ラ」</view>
-
           <!-- 璇峰亣锛氬亣鏈熶綑棰� + 鏃堕暱鑷姩璁$畻 -->
           <view v-if="isLeaveModule"
                 class="module-extra-block">
@@ -148,7 +145,6 @@
               </up-form-item>
             </up-form>
           </view>
-
           <!-- 鍔犵彮锛氭椂闀胯嚜鍔ㄨ绠� -->
           <view v-if="isOvertimeModule"
                 class="module-extra-block">
@@ -166,7 +162,6 @@
               </up-form-item>
             </up-form>
           </view>
-
           <!-- 璋冨矖锛氬師宀椾綅鑷姩甯﹀嚭 -->
           <view v-if="isTransferModule"
                 class="module-extra-block">
@@ -182,7 +177,6 @@
             </up-form>
           </view>
         </view>
-
         <view class="section-card">
           <view class="section-head">
             <text class="section-title">瀹℃壒娴佺▼</text>
@@ -234,14 +228,12 @@
                   text="鏈幏鍙栧埌妯℃澘璇︽儏" />
       </view>
     </scroll-view>
-
     <FooterButtons v-if="!loading && detail"
                    cancel-text="鍙栨秷"
                    :confirm-text="confirmText"
                    :loading="submitting"
                    @cancel="goBack"
                    @confirm="handleSubmit" />
-
     <up-popup :show="showDatePicker"
               mode="bottom"
               @close="showDatePicker = false">
@@ -251,7 +243,6 @@
                           @confirm="onDateConfirm"
                           @cancel="onDatePickerCancel" />
     </up-popup>
-
     <up-action-sheet :show="showSelectSheet"
                      :title="selectSheetTitle"
                      :actions="selectSheetActions"
@@ -312,9 +303,24 @@
     parseFieldDateToTs,
   } from "../../_utils/approvalFormField.js";
 
-  import { EDIT_STORAGE_KEY } from "../../_utils/approveListUtils.js";
+  import {
+    EDIT_STORAGE_KEY,
+    mapFlowNodesToTasks,
+  } from "../../_utils/approveListUtils.js";
 
-  const LEVEL_TEXT = ["", "涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�", "涓�", "鍏�", "涔�", "鍗�"];
+  const LEVEL_TEXT = [
+    "",
+    "涓�",
+    "浜�",
+    "涓�",
+    "鍥�",
+    "浜�",
+    "鍏�",
+    "涓�",
+    "鍏�",
+    "涔�",
+    "鍗�",
+  ];
 
   const userStore = useUserStore();
   const moduleKey = ref("");
@@ -363,7 +369,9 @@
   const isEditMode = computed(() => !!instanceId.value);
 
   const pageTitle = computed(() => (isEditMode.value ? "淇敼瀹℃壒" : "鍙戣捣瀹℃壒"));
-  const confirmText = computed(() => (isEditMode.value ? "淇濆瓨淇敼" : "鎻愪氦瀹℃壒"));
+  const confirmText = computed(() =>
+    isEditMode.value ? "淇濆瓨淇敼" : "鎻愪氦瀹℃壒"
+  );
 
   const applicantName = computed(
     () => userStore.nickName || userStore.name || "-"
@@ -414,8 +422,10 @@
 
   const levelLabel = n => LEVEL_TEXT[Number(n)] || String(n);
 
-  const selectSheetTitle = computed(
-    () => (activeSelectField.value?.label ? `閫夋嫨${activeSelectField.value.label}` : "璇烽�夋嫨")
+  const selectSheetTitle = computed(() =>
+    activeSelectField.value?.label
+      ? `閫夋嫨${activeSelectField.value.label}`
+      : "璇烽�夋嫨"
   );
 
   const selectSheetActions = computed(() => {
@@ -466,7 +476,8 @@
     });
     const matched = options.find(
       opt =>
-        String(opt.value) === String(stored) || String(opt.label) === String(stored)
+        String(opt.value) === String(stored) ||
+        String(opt.label) === String(stored)
     );
     return (
       matched?.label ||
@@ -547,7 +558,9 @@
       const val = formValues[field.key];
       if (val === undefined || val === null || String(val).trim() === "") {
         const action =
-          isSelectField(field) || isDateLikeField(field) || isDatetimerangeField(field)
+          isSelectField(field) ||
+          isDateLikeField(field) ||
+          isDatetimerangeField(field)
             ? "璇烽�夋嫨"
             : "璇峰~鍐�";
         uni.showToast({ title: `${action}${field.label}`, icon: "none" });
@@ -569,7 +582,8 @@
           options.length &&
           !options.some(
             opt =>
-              String(opt.value) === String(val) || String(opt.label) === String(val)
+              String(opt.value) === String(val) ||
+              String(opt.label) === String(val)
           )
         ) {
           uni.showToast({ title: `${field.label}閫夐」鏃犳晥`, icon: "none" });
@@ -602,14 +616,28 @@
       formConfigData.value.fields
     );
     const allFields = formConfigData.value.fields || [];
+    const formPayload = {};
+    allFields.forEach(field => {
+      if (!field?.key) return;
+      formPayload[field.key] = formValues[field.key] ?? "";
+    });
+    Object.entries(formValues).forEach(([key, val]) => {
+      if (key && formPayload[key] === undefined) formPayload[key] = val;
+    });
     return JSON.stringify({
-      prompt: formConfigData.value.prompt,
-      fields: allFields.map(field => ({
-        ...field,
-        value: formValues[field.key] ?? "",
-      })),
+      summaryPlaceholder: formConfigData.value.prompt || "",
+      approvalType: formConfigData.value.approvalType || "",
+      fields: allFields.map(({ value: _value, ...rest }) => rest),
+      formPayload,
     });
   };
+
+  /** 妯℃澘 nodes 鈫� 瀹℃壒浠诲姟锛堜笌 Web buildInstanceDto 涓�鑷达級 */
+  const buildInstanceTasks = instanceIdValue =>
+    mapFlowNodesToTasks(detail.value?.nodes, {
+      instanceId: instanceIdValue,
+      templateId: detail.value?.id,
+    });
 
   const buildSavePayload = () => ({
     templateId: detail.value.id,
@@ -623,6 +651,7 @@
     applyTime: parseTime(new Date()),
     deptId: userStore.currentDeptId || undefined,
     formConfig: buildFormConfigPayload(),
+    tasks: buildInstanceTasks(),
   });
 
   const buildUpdatePayload = () => {
@@ -648,6 +677,7 @@
       deptId: row.deptId,
       deleted: row.deleted,
       formConfig: buildFormConfigPayload(),
+      tasks: buildInstanceTasks(instanceId.value),
       approveAction: row.approveAction,
       approveComment: row.approveComment,
     };
@@ -780,7 +810,9 @@
       try {
         const res = await findPostOptions();
         const rows = res?.data ?? res?.rows ?? [];
-        postIdToName.value = buildPostIdToNameMap(Array.isArray(rows) ? rows : []);
+        postIdToName.value = buildPostIdToNameMap(
+          Array.isArray(rows) ? rows : []
+        );
       } catch {
         postIdToName.value = {};
       }
@@ -794,7 +826,10 @@
       return;
     }
     const user = userById(transferUserPool.value, uid);
-    extraForm.originalPostName = resolveOriginalPostName(user, postIdToName.value);
+    extraForm.originalPostName = resolveOriginalPostName(
+      user,
+      postIdToName.value
+    );
   }
 
   const goBack = () => {

--
Gitblit v1.9.3