From 4471ef257abf88eda6e84623fef5f3aa2b77be38 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 09 七月 2025 17:47:37 +0800
Subject: [PATCH] 协同审批页面联调

---
 src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue |  172 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 87 insertions(+), 85 deletions(-)

diff --git a/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue b/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
index 94155b6..585bc43 100644
--- a/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
+++ b/src/views/collaborativeApproval/approvalProcess/components/infoFormDia.vue
@@ -9,31 +9,32 @@
       <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
         <el-row>
           <el-col :span="24">
-            <el-form-item label="娴佺▼缂栧彿锛�" prop="supplier">
-              <el-input v-model="form.model" placeholder="鑷姩缂栧彿" clearable disabled/>
+            <el-form-item label="娴佺▼缂栧彿锛�" prop="approveId">
+              <el-input v-model="form.approveId" placeholder="鑷姩缂栧彿" clearable disabled/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="鐢宠閮ㄩ棬锛�" prop="productId">
-              <el-tree-select
-                  v-model="form.productId"
-                  placeholder="璇烽�夋嫨"
-                  clearable
-                  check-strictly
-                  @change="getModels"
-                  :data="productOptions"
-                  :render-after-expand="false"
-                  style="width: 100%"
-              />
+            <el-form-item label="鐢宠閮ㄩ棬锛�" prop="approveDeptId">
+							<el-select
+								v-model="form.approveDeptId"
+								placeholder="閫夋嫨閮ㄩ棬"
+							>
+								<el-option
+									v-for="user in productOptions"
+									:key="user.deptId"
+									:label="user.deptName"
+									:value="user.deptId"
+								/>
+							</el-select>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="24">
-            <el-form-item label="瀹℃壒浜嬬敱锛�" prop="model">
-              <el-input v-model="form.model" placeholder="璇疯緭鍏�" clearable type="textarea" />
+            <el-form-item label="瀹℃壒浜嬬敱锛�" prop="approveReason">
+              <el-input v-model="form.approveReason" placeholder="璇疯緭鍏�" clearable type="textarea" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -59,9 +60,9 @@
                   >
                     <el-option
                       v-for="user in userList"
-                      :key="user.id"
-                      :label="user.name"
-                      :value="user.id"
+                      :key="user.userId"
+                      :label="user.nickName"
+                      :value="user.userId"
                     />
                   </el-select>
                   <div>
@@ -79,14 +80,14 @@
         </el-row>
         <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="鐢宠浜猴細" prop="checkName">
-              <el-input v-model="form.checkName" placeholder="璇疯緭鍏�" clearable/>
+            <el-form-item label="鐢宠浜猴細" prop="approveUser">
+              <el-input v-model="form.approveUser" placeholder="璇疯緭鍏�" clearable/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鐢宠鏃ユ湡锛�" prop="checkTime">
+            <el-form-item label="鐢宠鏃ユ湡锛�" prop="approveTime">
               <el-date-picker
-                  v-model="form.checkTime"
+                  v-model="form.approveTime"
                   type="date"
                   placeholder="璇烽�夋嫨鏃ユ湡"
                   value-format="YYYY-MM-DD"
@@ -110,42 +111,39 @@
 
 <script setup>
 import {ref, reactive, toRefs, getCurrentInstance} from "vue";
-import {getOptions} from "@/api/procurementManagement/procurementLedger.js";
-import {productTreeList} from "@/api/basicData/product.js";
-import {qualityInspectAdd, qualityInspectUpdate} from "@/api/qualityManagement/rawMaterialInspection.js";
+import {
+  approveProcessAdd, approveProcessGetInfo,
+  approveProcessUpdate,
+  getDept
+} from "../../../../api/collaborativeApproval/approvalProcess.js";
+import {userListNoPage} from "../../../../api/system/user.js";
 const { proxy } = getCurrentInstance()
 const emit = defineEmits(['close'])
+import useUserStore from "@/store/modules/user";
+const userStore = useUserStore();
 
 const dialogFormVisible = ref(false);
 const operationType = ref('')
 const data = reactive({
   form: {
-    checkTime: "",
-    supplier: "",
-    checkName: "",
-    productName: "",
-    productId: "",
-    model: "",
-    unit: "",
-    quantity: "",
-    checkCompany: "",
+    approveTime: "",
+    approveId: "",
+    approveUser: "",
+		approveDeptId: "",
+    approveReason: "",
     checkResult: "",
     approverList: [] // 鏂板瀛楁锛屽瓨鍌ㄦ墍鏈夎妭鐐圭殑瀹℃壒浜篿d
   },
   rules: {
-    checkTime: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" },],
-    supplier: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    model: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    unit: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    approveTime: [{ required: false, message: "璇疯緭鍏�", trigger: "change" },],
+    approveId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+    approveUser: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+		approveDeptId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+    approveReason: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
   },
 });
 const { form, rules } = toRefs(data);
-const supplierList = ref([]);
 const productOptions = ref([]);
 
 // 瀹℃壒浜鸿妭鐐圭浉鍏�
@@ -153,11 +151,7 @@
   { id: 1, userId: null }
 ])
 let nextApproverId = 2
-const userList = ref([
-  { id: 1, name: '寮犱笁' },
-  { id: 2, name: '鏉庡洓' },
-  { id: 3, name: '鐜嬩簲' }
-])
+const userList = ref([])
 function addApproverNode() {
   approverNodes.value.push({ id: nextApproverId++, userId: null })
 }
@@ -169,46 +163,41 @@
 const openDialog = (type, row) => {
   operationType.value = type;
   dialogFormVisible.value = true;
-  getOptions().then((res) => {
-    supplierList.value = res.data;
+  userListNoPage().then((res) => {
+    userList.value = res.data;
   });
   getProductOptions();
+	form.value = {}
+	approverNodes.value = [
+		{ id: 1, userId: null }
+	]
+  form.value.approveUser = userStore.nickName;
+  form.value.approveTime = getCurrentDate();
   if (operationType.value === 'edit') {
-    form.value = {...row}
-    // 鍥炴樉瀹℃壒浜鸿妭鐐�
-    if (row.approverList && Array.isArray(row.approverList) && row.approverList.length > 0) {
-      approverNodes.value = row.approverList.map((userId, idx) => ({ id: idx + 1, userId }))
-      nextApproverId = row.approverList.length + 1
-    } else {
-      approverNodes.value = [{ id: 1, userId: null }]
-      nextApproverId = 2
-    }
-  } else {
-    approverNodes.value = [{ id: 1, userId: null }]
-    nextApproverId = 2
+    approveProcessGetInfo({id: row.approveId,approveReason: '1'}).then(res => {
+			form.value = {...res.data}
+      // 鍙嶆樉瀹℃壒浜�
+      // if (res.data && res.data.approverIds) {
+      //   const nameArr = res.data.approverIds.split('锛�')
+      //   approverNodes.value = nameArr.map((name, idx) => {
+      //     const user = userList.value.find(u => u.name === name)
+      //     return { id: idx + 1, userId: user ? user.id : null }
+      //   })
+      //   nextApproverId = nameArr.length + 1
+      // } else if (row.approverList && Array.isArray(row.approverList) && row.approverList.length > 0) {
+      //   approverNodes.value = row.approverList.map((userId, idx) => ({ id: idx + 1, userId }))
+      //   nextApproverId = row.approverList.length + 1
+      // } else {
+      //   approverNodes.value = [{ id: 1, userId: null }]
+      //   nextApproverId = 2
+      // }
+    })
   }
 }
 const getProductOptions = () => {
-  productTreeList().then((res) => {
-    productOptions.value = convertIdToValue(res);
+  getDept().then((res) => {
+    productOptions.value = res.data;
   });
-};
-const getModels = (value) => {
-  form.value.productName = findNodeById(productOptions.value, value);
-};
-const findNodeById = (nodes, productId) => {
-  for (let i = 0; i < nodes.length; i++) {
-    if (nodes[i].value === productId) {
-      return nodes[i].label; // 鎵惧埌鑺傜偣锛岃繑鍥炶鑺傜偣
-    }
-    if (nodes[i].children && nodes[i].children.length > 0) {
-      const foundNode = findNodeById(nodes[i].children, productId);
-      if (foundNode) {
-        return foundNode; // 鍦ㄥ瓙鑺傜偣涓壘鍒帮紝杩斿洖璇ヨ妭鐐�
-      }
-    }
-  }
-  return null; // 娌℃湁鎵惧埌鑺傜偣锛岃繑鍥瀗ull
 };
 function convertIdToValue(data) {
   return data.map((item) => {
@@ -227,17 +216,22 @@
 // 鎻愪氦浜у搧琛ㄥ崟
 const submitForm = () => {
   // 鏀堕泦鎵�鏈夎妭鐐圭殑瀹℃壒浜篿d
-  form.value.approverList = approverNodes.value.map(node => node.userId)
+  form.value.approverIds = approverNodes.value.map(node => node.userId).join(',')
+  // 瀹℃壒浜哄繀濉牎楠�
+  const hasEmptyApprover = approverNodes.value.some(node => !node.userId)
+  if (hasEmptyApprover) {
+    proxy.$modal.msgError("璇蜂负鎵�鏈夊鎵硅妭鐐归�夋嫨瀹℃壒浜猴紒")
+    return
+  }
   proxy.$refs.formRef.validate(valid => {
     if (valid) {
-      form.value.inspectType = 0
       if (operationType.value === "add") {
-        qualityInspectAdd(form.value).then(res => {
+        approveProcessAdd(form.value).then(res => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
         })
       } else {
-        qualityInspectUpdate(form.value).then(res => {
+        approveProcessUpdate(form.value).then(res => {
           proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
           closeDia();
         })
@@ -251,6 +245,14 @@
   dialogFormVisible.value = false;
   emit('close')
 };
+// 鑾峰彇褰撳墠鏃ユ湡骞舵牸寮忓寲涓� YYYY-MM-DD
+function getCurrentDate() {
+  const today = new Date();
+  const year = today.getFullYear();
+  const month = String(today.getMonth() + 1).padStart(2, "0"); // 鏈堜唤浠�0寮�濮�
+  const day = String(today.getDate()).padStart(2, "0");
+  return `${year}-${month}-${day}`;
+}
 defineExpose({
   openDialog,
 });

--
Gitblit v1.9.3