From 207c564c2b8d46fd86160c4f6583c2fc9d4a4e5c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 21 四月 2026 10:44:45 +0800
Subject: [PATCH] 湟水峡app 1.协同审批功能删减

---
 src/pages/cooperativeOffice/collaborativeApproval/detail.vue |  214 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 171 insertions(+), 43 deletions(-)

diff --git a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
index 04a4c18..c4cce2c 100644
--- a/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
+++ b/src/pages/cooperativeOffice/collaborativeApproval/detail.vue
@@ -14,22 +14,29 @@
                  disabled
                  placeholder="鑷姩缂栧彿" />
       </u-form-item>
+      <!-- 瀹℃壒鏍囬锛堜粎褰� approveType 涓� 9 鎴� 10 鏃舵樉绀猴級 -->
+      <u-form-item v-if="approveType === 9 || approveType === 10"
+                   prop="approveTitle"
+                   label="瀹℃壒鏍囬"
+                   required>
+        <u-input v-model="form.approveTitle"
+                 placeholder="璇疯緭鍏ュ鎵规爣棰�"
+                 clearable />
+      </u-form-item>
       <u-form-item prop="approveReason"
-                   :label="approveType === 5 ? '閲囪喘浜嬬敱' : '鐢宠浜嬬敱'"
+                   :label="getApproveReasonLabel()"
                    required>
         <u-input v-model="form.approveReason"
                  type="textarea"
                  rows="2"
                  auto-height
                  maxlength="200"
-                 :placeholder="approveType === 5 ? '璇疯緭鍏ラ噰璐簨鐢�' : '璇疯緭鍏ョ敵璇蜂簨鐢�'"
+                 :placeholder="getApproveReasonPlaceholder()"
                  show-word-limit />
       </u-form-item>
       <u-form-item prop="approveDeptName"
                    label="鐢宠閮ㄩ棬"
                    required>
-        <!-- <u-input v-model="form.approveDeptName"
-                 placeholder="璇烽�夋嫨鐢宠閮ㄩ棬" /> -->
         <u-input v-model="form.approveDeptName"
                  readonly
                  placeholder="璇烽�夋嫨鐢宠閮ㄩ棬"
@@ -103,6 +110,19 @@
                  type="number"
                  placeholder="璇疯緭鍏ユ姤閿�閲戦"
                  clearable />
+      </u-form-item>
+      <!-- 闄勪欢涓婁紶 -->
+      <u-form-item label="闄勪欢鏉愭枡">
+        <view class="file-upload-area">
+          <view v-for="(file, index) in fileList" :key="file.id || index" class="file-item">
+            <text class="file-name">{{ file.name || file.fileName }}</text>
+            <text class="file-delete" @click="removeFile(index)">脳</text>
+          </view>
+          <view class="upload-btn" @click="chooseFile" v-if="operationType !== 'view'">
+            <up-icon name="plus" size="20" color="#006cfb"></up-icon>
+            <text class="upload-text">涓婁紶闄勪欢</text>
+          </view>
+        </view>
       </u-form-item>
     </u-form>
     <!-- 閫夋嫨鍣ㄥ脊绐� -->
@@ -227,6 +247,7 @@
       approveUserName: "",
       approveDeptName: "",
       approveDeptId: "",
+      approveTitle: "", // 瀹℃壒鏍囬锛堣嚜鐢卞崗鍚屽鎵逛娇鐢級
       approveReason: "",
       checkResult: "",
       tempFileIds: [],
@@ -239,8 +260,9 @@
     rules: {
       approveTime: [{ required: false, message: "璇疯緭鍏�", trigger: "change" }],
       approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-      approveDeptId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      approveDeptId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
       approveReason: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+      approveTitle: [{ required: true, message: "璇疯緭鍏ュ鎵规爣棰�", trigger: "blur" }],
       checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
       startDate: [
         { required: false, message: "璇烽�夋嫨寮�濮嬫椂闂�", trigger: "change" },
@@ -271,6 +293,32 @@
   const userStore = useUserStore();
   const approveType = ref(0);
 
+  // 鑾峰彇瀹℃壒浜嬬敱鏍囩
+  const getApproveReasonLabel = () => {
+    const type = Number(approveType.value);
+    if (type === 5) {
+      return '閲囪喘璁″垝璇存槑';
+    } else if (type === 9) {
+      return '閿�鍞悎鍚屽彿';
+    } else if (type === 10) {
+      return '瀹℃壒浜嬬敱';
+    }
+    return '瀹℃壒浜嬬敱';
+  };
+
+  // 鑾峰彇瀹℃壒浜嬬敱鍗犱綅绗�
+  const getApproveReasonPlaceholder = () => {
+    const type = Number(approveType.value);
+    if (type === 5) {
+      return '璇疯緭鍏ラ噰璐鍒掕鏄�';
+    } else if (type === 9) {
+      return '璇疯緭鍏ラ攢鍞悎鍚屽彿';
+    } else if (type === 10) {
+      return '璇疯緭鍏ュ鎵逛簨鐢�';
+    }
+    return '璇疯緭鍏ョ敵璇蜂簨鐢�';
+  };
+
   const getProductOptions = () => {
     getDept().then(res => {
       productOptions.value = res.data.map(item => ({
@@ -281,6 +329,76 @@
   };
   const fileList = ref([]);
   let nextApproverId = 2;
+
+  // 澶勭悊閮ㄩ棬閫夋嫨鍙樺寲
+  const handleDeptChange = (deptIds) => {
+    if (deptIds && deptIds.length > 0) {
+      const selectedNames = productOptions.value
+        .filter(dept => deptIds.includes(dept.value))
+        .map(dept => dept.name);
+      form.value.approveDeptName = selectedNames.join(',');
+    } else {
+      form.value.approveDeptName = '';
+    }
+  };
+
+  // 閫夋嫨瀹℃壒浜�
+  const addApprover = (stepIndex) => {
+    uni.setStorageSync("stepIndex", stepIndex);
+    uni.navigateTo({
+      url: "/pages/cooperativeOffice/collaborativeApproval/contactSelect",
+    });
+  };
+
+  // 娣诲姞瀹℃壒鑺傜偣
+  const addApprovalStep = () => {
+    approverNodes.value.push({ id: nextApproverId++, userId: null, nickName: null });
+  };
+
+  // 绉婚櫎瀹℃壒浜�
+  const removeApprover = (stepIndex) => {
+    approverNodes.value[stepIndex].userId = null;
+    approverNodes.value[stepIndex].nickName = null;
+  };
+
+  // 绉婚櫎瀹℃壒鑺傜偣
+  const removeApprovalStep = (stepIndex) => {
+    if (approverNodes.value.length > 1) {
+      approverNodes.value.splice(stepIndex, 1);
+    } else {
+      showToast("鑷冲皯闇�瑕佷竴涓鎵规楠�");
+    }
+  };
+
+  // 澶勭悊鑱旂郴浜洪�夋嫨缁撴灉
+  const handleSelectContact = (data) => {
+    const { stepIndex, contact } = data;
+    approverNodes.value[stepIndex].userId = contact.userId;
+    approverNodes.value[stepIndex].nickName = contact.nickName;
+  };
+
+  // 閫夋嫨鏂囦欢涓婁紶
+  const chooseFile = () => {
+    uni.chooseMessageFile({
+      count: 10,
+      success: (res) => {
+        const tempFilePaths = res.tempFiles;
+        // 杩欓噷鍙互娣诲姞涓婁紶閫昏緫
+        tempFilePaths.forEach(file => {
+          fileList.value.push({
+            name: file.name,
+            path: file.path,
+            size: file.size,
+          });
+        });
+      }
+    });
+  };
+
+  // 绉婚櫎鏂囦欢
+  const removeFile = (index) => {
+    fileList.value.splice(index, 1);
+  };
   const getCurrentinfo = () => {
     userStore.getInfo().then(res => {
       form.value.approveDeptId = res.user.tenantId;
@@ -461,44 +579,6 @@
       });
   };
 
-  // 澶勭悊鑱旂郴浜洪�夋嫨缁撴灉
-  const handleSelectContact = data => {
-    const { stepIndex, contact } = data;
-    // 灏嗛�変腑鐨勮仈绯讳汉璁剧疆涓哄搴斿鎵规楠ょ殑瀹℃壒浜�
-    approverNodes.value[stepIndex].userId = contact.userId;
-    approverNodes.value[stepIndex].nickName = contact.nickName;
-  };
-
-  const addApprover = stepIndex => {
-    // 璺宠浆鍒拌仈绯讳汉閫夋嫨椤甸潰
-    uni.setStorageSync("stepIndex", stepIndex);
-    uni.navigateTo({
-      url: "/pages/cooperativeOffice/collaborativeApproval/contactSelect",
-    });
-  };
-
-  const addApprovalStep = () => {
-    // 娣诲姞鏂扮殑瀹℃壒姝ラ
-    approverNodes.value.push({ userId: null, nickName: null });
-  };
-
-  const removeApprover = stepIndex => {
-    // 绉婚櫎瀹℃壒浜�
-    approverNodes.value[stepIndex].userId = null;
-    approverNodes.value[stepIndex].nickName = null;
-  };
-
-  const removeApprovalStep = stepIndex => {
-    // 纭繚鑷冲皯淇濈暀涓�涓鎵规楠�
-    if (approverNodes.value.length > 1) {
-      approverNodes.value.splice(stepIndex, 1);
-    } else {
-      uni.showToast({
-        title: "鑷冲皯闇�瑕佷竴涓鎵规楠�",
-        icon: "none",
-      });
-    }
-  };
   // 鏄剧ず鏃ユ湡閫夋嫨鍣�
   const showDatePicker = () => {
     showDate.value = true;
@@ -926,4 +1006,52 @@
     color: #3b82f6;
     font-size: 14px;
   }
+
+  // 鏂囦欢涓婁紶鍖哄煙鏍峰紡
+  .file-upload-area {
+    display: flex;
+    flex-direction: column;
+    gap: 8px;
+  }
+
+  .file-item {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    background: #f8f9fa;
+    padding: 10px 12px;
+    border-radius: 8px;
+  }
+
+  .file-name {
+    font-size: 14px;
+    color: #333;
+    flex: 1;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  .file-delete {
+    font-size: 18px;
+    color: #ff4d4f;
+    margin-left: 8px;
+    padding: 0 4px;
+  }
+
+  .upload-btn {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    gap: 8px;
+    border: 2px dashed #d9d9d9;
+    border-radius: 8px;
+    padding: 16px;
+    background: #fafafa;
+  }
+
+  .upload-text {
+    font-size: 14px;
+    color: #666;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3