From 7e30426a06052407167731ed6ce27664299eb4f1 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期三, 22 四月 2026 13:29:06 +0800
Subject: [PATCH] 新增入库详情展示功能

---
 src/pages/cooperativeOffice/collaborativeApproval/approve.vue |  133 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 1 deletions(-)

diff --git a/src/pages/cooperativeOffice/collaborativeApproval/approve.vue b/src/pages/cooperativeOffice/collaborativeApproval/approve.vue
index aaad83e..969e9e1 100644
--- a/src/pages/cooperativeOffice/collaborativeApproval/approve.vue
+++ b/src/pages/cooperativeOffice/collaborativeApproval/approve.vue
@@ -52,6 +52,54 @@
       </view>
     </view>
 
+    <!-- 鍏ュ簱璇︽儏 -->
+    <view v-if="approvalData.approveType === 9" class="stockin-info">
+      <view class="info-header stockin-header" @click="toggleStockInCollapse">
+        <text class="info-title">鍏ュ簱璇︽儏</text>
+        <text class="collapse-text">{{ stockInCollapsed ? '灞曞紑' : '鏀惰捣' }}</text>
+      </view>
+      <view v-show="!stockInCollapsed" class="stockin-table">
+        <view class="stockin-row">
+          <text class="stockin-label">閿�鍞悎鍚屽彿</text>
+          <text class="stockin-value">{{ stockInOrderInfoData.salesContractNo || '-' }}</text>
+          <text class="stockin-label">瀹㈡埛鍚嶇О</text>
+          <text class="stockin-value">{{ stockInOrderInfoData.customerName || stockInOrderInfoData.supplierName || '-' }}</text>
+        </view>
+        <view class="stockin-row">
+          <text class="stockin-label">椤圭洰鍚嶇О</text>
+          <text class="stockin-value">{{ stockInOrderInfoData.projectName || '-' }}</text>
+          <text class="stockin-label">涓氬姟鍛�</text>
+          <text class="stockin-value">{{ stockInOrderInfoData.businessUserName || stockInOrderInfoData.recorderName || '-' }}</text>
+        </view>
+        <view v-for="(product, index) in stockInProducts" :key="product.id || index">
+          <view class="stockin-row">
+            <text class="stockin-label">浜у搧鍚嶇О</text>
+            <text class="stockin-value">{{ product.speculativeTradingName || product.productCategory || '-' }}</text>
+            <text class="stockin-label">瑙勬牸鍨嬪彿</text>
+            <text class="stockin-value">{{ product.specificationModel || '-' }}</text>
+          </view>
+          <view class="stockin-row">
+            <text class="stockin-label">鍗曚綅</text>
+            <text class="stockin-value">{{ product.unit || '-' }}</text>
+            <text class="stockin-label">鏁伴噺</text>
+            <text class="stockin-value">{{ product.quantity ?? '-' }}</text>
+          </view>
+        </view>
+        <view v-if="!stockInProducts.length" class="stockin-row">
+          <text class="stockin-label">浜у搧鍚嶇О</text>
+          <text class="stockin-value">-</text>
+          <text class="stockin-label">瑙勬牸鍨嬪彿</text>
+          <text class="stockin-value">-</text>
+        </view>
+        <view v-if="!stockInProducts.length" class="stockin-row">
+          <text class="stockin-label">鍗曚綅</text>
+          <text class="stockin-value">-</text>
+          <text class="stockin-label">鏁伴噺</text>
+          <text class="stockin-value">-</text>
+        </view>
+      </view>
+    </view>
+
     <!-- 瀹℃壒娴佺▼ -->
     <view class="approval-process">
       <view class="process-header">
@@ -127,7 +175,13 @@
 
 <script setup>
 import { ref, onMounted, computed } from 'vue'
-import { approveProcessGetInfo, approveProcessDetails, updateApproveNode } from '@/api/collaborativeApproval/approvalProcess'
+import {
+  approveProcessGetInfo,
+  approveProcessDetails,
+  updateApproveNode,
+  stockInOrderInfo,
+  stockInProductList
+} from '@/api/collaborativeApproval/approvalProcess'
 import useUserStore from '@/store/modules/user'
 const showToast = (message) => {
 	uni.showToast({
@@ -142,6 +196,9 @@
 const approvalSteps = ref([])
 const approvalOpinion = ref('')
 const approveId = ref('')
+const stockInOrderInfoData = ref({})
+const stockInProducts = ref([])
+const stockInCollapsed = ref(false)
 
 // 浠庤鎯呮帴鍙e瓧娈靛榻� canApprove锛氫粎褰撴湁 isShen 鐨勮妭鐐规椂鍙鎵�
 const canApprove = computed(() => {
@@ -159,6 +216,12 @@
   // 鍩烘湰鐢宠淇℃伅
   approveProcessGetInfo({ id: approveId.value }).then(res => {
     approvalData.value = res.data || {}
+    if (approvalData.value.approveType === 9) {
+      loadStockInInfo()
+    } else {
+      stockInOrderInfoData.value = {}
+      stockInProducts.value = []
+    }
   })
   // 瀹℃壒鑺傜偣璇︽儏
   approveProcessDetails(approveId.value).then(res => {
@@ -183,6 +246,24 @@
       }
     })
   })
+}
+
+const loadStockInInfo = () => {
+  const query = { approveId: approveId.value, id: approveId.value }
+  Promise.all([stockInOrderInfo(query), stockInProductList(query)])
+    .then(([orderRes, productRes]) => {
+      const orderInfo = orderRes?.data?.orderInfo || {}
+      stockInOrderInfoData.value = orderInfo
+      stockInProducts.value = Array.isArray(productRes?.data) ? productRes.data : []
+    })
+    .catch(() => {
+      stockInOrderInfoData.value = {}
+      stockInProducts.value = []
+    })
+}
+
+const toggleStockInCollapse = () => {
+  stockInCollapsed.value = !stockInCollapsed.value
 }
 
 const goBack = () => {
@@ -320,6 +401,56 @@
   overflow: hidden;
 }
 
+.stockin-info {
+  background: #fff;
+  margin: 16px;
+  border-radius: 12px;
+  overflow: hidden;
+}
+
+.stockin-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.collapse-text {
+  font-size: 10px;
+  color: #666;
+}
+
+.stockin-table {
+  border-top: 1px solid #f0f0f0;
+}
+
+.stockin-row {
+  display: grid;
+  grid-template-columns: 22% 28% 22% 28%;
+}
+
+.stockin-label {
+  font-size: 11px;
+  color: #666;
+  padding: 12px 10px;
+  background: #f7f8fa;
+  border-right: 1px solid #f0f0f0;
+  border-bottom: 1px solid #f0f0f0;
+}
+
+.stockin-value {
+  font-size: 11px;
+  color: #333;
+  padding: 12px 10px;
+  border-right: 1px solid #f0f0f0;
+  border-bottom: 1px solid #f0f0f0;
+  word-break: break-all;
+}
+
+.stockin-row .stockin-value:last-child,
+.stockin-row .stockin-label:last-child {
+  border-right: none;
+}
+
 .process-header {
   padding: 16px;
   border-bottom: 1px solid #f0f0f0;

--
Gitblit v1.9.3