From 7ea4c47deb352bc1fcc84c842616a7ef4217fcea Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期二, 29 九月 2026 17:45:06 +0800
Subject: [PATCH] 新疆-融邦 销售台账、采购台账新增付款类别字段(授信账期/先款后货):列表、新增/编辑/详情弹框、审批详情展示

---
 src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue |  100 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 89 insertions(+), 11 deletions(-)

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue b/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
index b9eb42f..4ea07bd 100644
--- a/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
@@ -19,9 +19,9 @@
             {{ approvalTypeLabel(row.approvalType) }}
           </span>
         </el-descriptions-item>
-        <el-descriptions-item label="鐢宠浜虹紪鍙�">{{ row.applicantNo || "鈥�" }}</el-descriptions-item>
-        <el-descriptions-item label="鐢宠浜哄悕绉�">{{ row.applicantName || "鈥�" }}</el-descriptions-item>
-        <el-descriptions-item label="鐢宠鎽樿">{{ row.summary || "鈥�" }}</el-descriptions-item>
+        <el-descriptions-item label="鍙戣捣浜虹紪鍙�">{{ row.applicantNo || "鈥�" }}</el-descriptions-item>
+        <el-descriptions-item label="鍙戣捣浜哄悕绉�">{{ row.applicantName || "鈥�" }}</el-descriptions-item>
+        <el-descriptions-item label="鎽樿">{{ row.summary || "鈥�" }}</el-descriptions-item>
         <el-descriptions-item v-if="row.rejectReason"
                               label="椹冲洖鍘熷洜"
                               :span="2">
@@ -50,7 +50,7 @@
             <el-descriptions-item label="鍙戣揣璁㈠崟鍙�">{{ detailData.shippingInfo.shippingNo || "--" }}</el-descriptions-item>
             <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ detailData.shippingInfo.customerName || "--" }}</el-descriptions-item>
             <el-descriptions-item label="鍙戣揣绫诲瀷">{{ detailData.shippingInfo.type || "--" }}</el-descriptions-item>
-            <el-descriptions-item label="鍙戣揣鏃ユ湡">{{ detailData.shippingInfo.shippingDateDate || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="鍙戣揣鏃ユ湡">{{ detailData.shippingInfo.shippingDate || "--" }}</el-descriptions-item>
             <el-descriptions-item label="瀹℃牳鐘舵��">{{ detailData.shippingInfo.status || "--" }}</el-descriptions-item>
             <el-descriptions-item label="鍙戣揣杞︾墝鍙�">{{ detailData.shippingInfo.shippingCarNumber || "--" }}</el-descriptions-item>
             <el-descriptions-item label="蹇�掑叕鍙�">{{ detailData.shippingInfo.expressCompany || "--" }}</el-descriptions-item>
@@ -83,6 +83,7 @@
             <el-descriptions-item label="绛捐鏃ユ湡">{{ detailData.executionDate || "--" }}</el-descriptions-item>
             <el-descriptions-item label="褰曞叆鏃ユ湡">{{ detailData.entryDate || "--" }}</el-descriptions-item>
             <el-descriptions-item label="浠樻鏂瑰紡">{{ detailData.paymentMethod || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="浠樻绫诲埆">{{ detailData.paymentCategory || "--" }}</el-descriptions-item>
             <el-descriptions-item label="鍚堝悓閲戦" :span="2">
               <span style="font-size: 18px; color: #e6a23c; font-weight: bold;">
                 楼{{ Number(detailData.contractAmount ?? 0).toFixed(2) }}
@@ -145,12 +146,61 @@
           </div>
         </div>
       </template>
+
+      <!-- 閿�鍞彴璐﹀鎵硅鎯咃紙鍗栨补 / 浠e偍锛� -->
+      <template v-else-if="row.businessType === 19">
+        <div v-if="detailData && Object.keys(detailData).length" class="sales-ledger-detail">
+          <el-divider content-position="left">閿�鍞彴璐﹁鎯�</el-divider>
+          <el-descriptions :column="2" border>
+            <el-descriptions-item label="閿�鍞悎鍚屽彿">{{ detailData.salesContractNo || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="閿�鍞被鍨�">{{ detailData.ledgerType || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ detailData.customerName || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="涓氬姟鍛�">{{ detailData.salesman || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="椤圭洰鍚嶇О">{{ detailData.projectName || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="浠樻鏂瑰紡">{{ detailData.paymentMethod || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="浠樻绫诲埆">{{ detailData.paymentCategory || "--" }}</el-descriptions-item>
+            <el-descriptions-item v-if="detailData.ledgerType === '浠e偍'"
+                                  label="娌瑰簱">{{ detailData.oilDepotName || "--" }}</el-descriptions-item>
+            <el-descriptions-item v-if="detailData.ledgerType === '浠e偍'"
+                                  label="鍌ㄧ綈鍙�">{{ detailData.tankNo || "--" }}</el-descriptions-item>
+            <el-descriptions-item label="鍚堝悓閲戦" :span="2">
+              <span style="font-size: 18px; color: #e6a23c; font-weight: bold;">
+                楼{{ Number(detailData.contractAmount ?? 0).toFixed(2) }}
+              </span>
+              <span v-if="detailData.exceedsTrustFund"
+                    class="reject-text"
+                    style="margin-left: 12px;">
+                宸茶秴鍑鸿瀹㈡埛淇℃墭鍩洪噾{{ detailData.trustFund != null ? `锛堜俊鎵樺熀閲戯細${detailData.trustFund}锛塦 : "" }}
+              </span>
+            </el-descriptions-item>
+          </el-descriptions>
+          <div v-if="detailData.productData && detailData.productData.length"
+               style="margin-top: 20px;">
+            <h4>浜у搧鏄庣粏</h4>
+            <el-table :data="detailData.productData"
+                      border
+                      style="width: 100%">
+              <el-table-column prop="productCategory" label="浜у搧澶х被" />
+              <el-table-column prop="specificationModel" label="瑙勬牸鍨嬪彿" />
+              <el-table-column prop="unit" label="鍗曚綅" />
+              <el-table-column prop="quantity" label="鏁伴噺" />
+              <el-table-column prop="taxInclusiveUnitPrice" label="鍚◣鍗曚环">
+                <template #default="scope">楼{{ Number(scope.row.taxInclusiveUnitPrice ?? 0).toFixed(2) }}</template>
+              </el-table-column>
+              <el-table-column prop="taxInclusiveTotalPrice" label="鍚◣鎬讳环">
+                <template #default="scope">楼{{ Number(scope.row.taxInclusiveTotalPrice ?? 0).toFixed(2) }}</template>
+              </el-table-column>
+            </el-table>
+          </div>
+        </div>
+      </template>
     </div>
-    <div v-if="attachmentList.length"
+    <div v-for="group in attachmentGroups"
+         :key="group.title"
          class="detail-block">
-      <div class="detail-block-title">闄勪欢鍒楄〃</div>
+      <div class="detail-block-title">{{ group.title }}</div>
       <div class="attachment-list">
-        <div v-for="file in attachmentList"
+        <div v-for="file in group.files"
              :key="file.id"
              class="attachment-item">
           <el-icon class="file-icon">
@@ -164,7 +214,7 @@
             <el-link v-if="file.previewURL || file.url"
                      type="primary"
                      :underline="false"
-                     @click="openFile(file.previewURL || file.url)">棰勮</el-link>
+                     @click="previewFile(file.previewURL || file.url)">棰勮</el-link>
             <el-divider v-if="(file.previewURL || file.url) && file.downloadURL"
                         direction="vertical" />
             <el-link v-if="file.downloadURL"
@@ -175,12 +225,14 @@
         </div>
       </div>
     </div>
+    <filePreview ref="filePreviewRef" />
   </div>
 </template>
 
 <script setup>
-  import { computed } from "vue";
+  import { computed, ref } from "vue";
   import { Paperclip } from "@element-plus/icons-vue";
+  import filePreview from "@/components/filePreview/index.vue";
   import { formatDisplayTime } from "../../approve-template/approveTemplateConstants.js";
   import {
     approvalTypeLabel,
@@ -198,10 +250,12 @@
 
   const formResolved = computed(() => resolveInstanceFormFields(props.row));
 
+  const filePreviewRef = ref();
 
-  // 鏄惁涓虹壒娈婂鎵圭被鍨嬶紙閲囪喘銆佸彂璐с�佹姤浠凤級
+
+  // 鏄惁涓虹壒娈婂鎵圭被鍨嬶紙閲囪喘銆佸彂璐с�佹姤浠枫�侀攢鍞彴璐︼級
   const isSpecialApprovalType = computed(() => {
-    return [5, 7, 6].includes(props.row.businessType);
+    return [5, 7, 6, 19].includes(props.row.businessType);
   });
 
   // 璇︽儏鏁版嵁锛堢洿鎺ヤ娇鐢ㄤ紶鍏ョ殑 detail-data 鍙傛暟锛�
@@ -214,6 +268,30 @@
     return Array.isArray(list) ? list : [];
   });
 
+  // 鍙拌处鑷韩闄勪欢锛氶攢鍞彴璐� listPage 杩斿洖 storageBlobVOs锛岄噰璐彴璐� getPurchaseByCode 杩斿洖 storageBlobVOS
+  const businessAttachments = computed(() => {
+    if (![5, 19].includes(props.row.businessType)) return [];
+    const detail = props.detailData || {};
+    const candidates = [detail.storageBlobVOs, detail.storageBlobVOS, detail.storageBlobVOList];
+    return candidates.find(list => Array.isArray(list) && list.length) || [];
+  });
+
+  const attachmentGroups = computed(() => {
+    const groups = [];
+    if (businessAttachments.value.length) {
+      groups.push({ title: "鍙拌处闄勪欢", files: businessAttachments.value });
+    }
+    if (attachmentList.value.length) {
+      groups.push({ title: "瀹℃壒闄勪欢", files: attachmentList.value });
+    }
+    return groups;
+  });
+
+  function previewFile(url) {
+    if (!url) return;
+    filePreviewRef.value?.open(url);
+  }
+
   function openFile(url) {
     if (!url) return;
     window.open(url, "_blank");

--
Gitblit v1.9.3