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