From a97e6a39327a857ff2a5f48856941e651cbdd050 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 01 六月 2026 15:00:24 +0800
Subject: [PATCH] 采购审批增加仓库

---
 src/views/officeProcessAutomation/ApproveManage/approve-list/useApproveList.js       |    7 ++++---
 src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue               |   37 ++++++++++++++++++++++++++++++++++++-
 src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js |    6 ++++--
 3 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js b/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
index e2f1e45..677e0bc 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/approveListConstants.js
@@ -460,6 +460,7 @@
     purchaseContractNumber: row.purchaseContractNumber || "",
     quotationNo: row.quotationNo || "",
     shippingNo: row.shippingNo || "",
+    warehouse: row.warehouse || "",
   };
 }
 
@@ -473,12 +474,13 @@
 }
 
 /** 缁勮瀹℃壒鎻愪氦 DTO */
-export function buildApproveInstanceDto(row, uiResult, comment) {
+export function buildApproveInstanceDto(row, uiResult, comment, warehouse) {
   const opinion = (comment || "").trim();
   return {
     id: row?.id,
     approveAction: mapApproveActionToApi(uiResult),
     approveComment: opinion || (uiResult === "approved" ? "鍚屾剰" : ""),
+    warehouse: warehouse || row?.warehouse || "",
   };
 }
 
@@ -609,4 +611,4 @@
 export function initTemplateAttachmentsFromSnapshot(templateSnapshot) {
   const list = templateSnapshot?.storageBlobDTOs;
   return list?.length ? JSON.parse(JSON.stringify(list)) : [];
-}
+}
\ No newline at end of file
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue b/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue
index 92b0372..282bdc5 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/index.vue
@@ -298,6 +298,20 @@
         <InstanceFlowDisplay :tasks="approveDialog.row?.tasks" :nodes="approveDialog.row?.flowNodes" />
       </div>
       <el-form label-width="100px" class="mt16">
+        <el-form-item label="浠撳簱" v-if="isPurchaseApproval">
+          <el-select
+            v-model="approveDialog.warehouse"
+            placeholder="璇烽�夋嫨浠撳簱"
+            clearable
+          >
+            <el-option
+              v-for="item in warehouseOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
         <el-form-item label="瀹℃壒鎰忚" required>
           <el-input
             v-model="approveOpinion"
@@ -335,7 +349,8 @@
 <script setup>
 import { Plus, RefreshRight } from "@element-plus/icons-vue";
 import { ElMessage } from "element-plus";
-import { computed, onMounted, ref } from "vue";
+import { computed, onMounted, ref, reactive } from "vue";
+import { getDicts } from "@/api/system/dict/data";
 import { APPROVAL_MODULE_KEYS } from "../approve-shared/approvalModuleRegistry.js";
 import FinReimburseApprovePanel from "../../ReimburseManage/shared/components/FinReimburseApprovePanel.vue";
 import ApprovalTemplateFormSection from "../approve-shared/components/ApprovalTemplateFormSection.vue";
@@ -400,6 +415,25 @@
   openDetail,
   openApprove,
 } = al;
+
+// 浠撳簱閫夐」
+const warehouseOptions = ref([]);
+
+// 鑾峰彇浠撳簱瀛楀吀鏁版嵁
+const loadWarehouseOptions = async () => {
+  const res = await getDicts("warehouse");
+  if (res.code === 200) {
+    warehouseOptions.value = res.data.map((item) => ({
+      label: item.dictLabel,
+      value: item.dictValue,
+    }));
+  }
+};
+
+// 鏄惁涓洪噰璐鎵�
+const isPurchaseApproval = computed(() => {
+  return Number(approveDialog.row?.businessType) === 5;
+});
 
 const { flowUserOptions, loadFlowUsers } = useFlowUserOptions();
 
@@ -473,6 +507,7 @@
 onMounted(() => {
   loadFlowUsers();
   loadSearchBusinessTypeOptions();
+  loadWarehouseOptions();
   handleQuery();
 });
 </script>
diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/useApproveList.js b/src/views/officeProcessAutomation/ApproveManage/approve-list/useApproveList.js
index f61e038..2dd2474 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/useApproveList.js
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/useApproveList.js
@@ -82,7 +82,7 @@
   const detailRow = ref({});
   const detailData = ref({});
 
-  const approveDialog = reactive({ visible: false, row: null });
+  const approveDialog = reactive({ visible: false, row: null, warehouse: ''});
   const approveOpinion = ref("");
   const approveSubmitting = ref(false);
 
@@ -366,6 +366,7 @@
     }
     approveDialog.row = { ...row };
     approveOpinion.value = "";
+    approveDialog.warehouse = row?.warehouse || '';
     const bizType = Number(row.businessType);
     // 鎶ヤ环瀹℃壒锛氱敤瀹℃壒浜嬬敱瀛楁鎵胯浇鐨�"鎶ヤ环鍗曞彿"鍘绘煡鎶ヤ环鍒楄〃
     if (bizType === 6) {
@@ -642,7 +643,7 @@
     approveSubmitting.value = true;
     try {
       await approveApprovalInstance(
-        buildApproveInstanceDto(row, result, approveOpinion.value)
+        buildApproveInstanceDto(row, result, approveOpinion.value, approveDialog.warehouse)
       );
       reimburseDialog.visible = false;
       await fetchApprovalList();
@@ -665,7 +666,7 @@
     approveSubmitting.value = true;
     try {
       await approveApprovalInstance(
-        buildApproveInstanceDto(row, result, approveOpinion.value)
+        buildApproveInstanceDto(row, result, approveOpinion.value, approveDialog.warehouse)
       );
       approveDialog.visible = false;
       await fetchApprovalList();

--
Gitblit v1.9.3