From 5c3154277d1f6d94d511cb7fd70e7b88ab318a99 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 07 一月 2026 17:00:39 +0800
Subject: [PATCH] 新增开票接口

---
 ui/admin-ui3/src/components/DetailModal/index.vue |  126 +++++++++++++++++++++++-------------------
 1 files changed, 69 insertions(+), 57 deletions(-)

diff --git a/ui/admin-ui3/src/components/DetailModal/index.vue b/ui/admin-ui3/src/components/DetailModal/index.vue
index 3d34566..9ac912f 100644
--- a/ui/admin-ui3/src/components/DetailModal/index.vue
+++ b/ui/admin-ui3/src/components/DetailModal/index.vue
@@ -1,70 +1,79 @@
 <template>
-  <el-dialog v-model="visible" title="璐圭敤璇︽儏" width="1000px" destroy-on-close @closed="handleClosed">
+  <el-dialog v-model="visible" :title="type === 'receivable' ? '搴旀敹璐圭敤璇︽儏' : '搴斾粯璐圭敤璇︽儏'" width="1000px" destroy-on-close
+    @closed="handleClosed">
     <div class="modal-content">
       <section class="detail-section">
-        <h3 class="section-title">搴旀敹璐圭敤鏄庣粏</h3>
+        <h3 class="section-title">{{ type === 'receivable' ? '搴旀敹璐圭敤鏄庣粏' : '搴斾粯璐圭敤鏄庣粏' }}</h3>
+
         <el-descriptions :column="3" border class="margin-top">
           <el-descriptions-item label="绯荤粺缂栧彿">{{ detailData.systemNo }}</el-descriptions-item>
           <el-descriptions-item label="鍏宠仈璐﹀崟缂栧彿">{{ detailData.relatedBillNo }}</el-descriptions-item>
-          <el-descriptions-item label="鏉ユ簮绯荤粺">{{ dictFormat(sys_system, detailData.sourceSystem) }}</el-descriptions-item>
+          <el-descriptions-item label="鏉ユ簮绯荤粺">{{ dictFormat(sys_system, detailData.sourceSystem)
+            }}</el-descriptions-item>
 
-          <el-descriptions-item label="涓氬姟鏉垮潡">{{ dictFormat(sys_business, detailData.businessSector) }}</el-descriptions-item>
-          <el-descriptions-item label="鍗曟嵁绫诲瀷">{{ dictFormat(sys_receipts, detailData.documentType) }}</el-descriptions-item>
+          <el-descriptions-item label="涓氬姟鏉垮潡">{{ dictFormat(sys_business, detailData.businessSector)
+            }}</el-descriptions-item>
+          <el-descriptions-item label="鍗曟嵁绫诲瀷">{{ dictFormat(sys_receipts, detailData.documentType)
+            }}</el-descriptions-item>
           <el-descriptions-item label="鍗曟嵁缂栧彿">{{ detailData.documentNo }}</el-descriptions-item>
 
-          <el-descriptions-item label="瀹㈡埛鍚嶇О">{{ detailData.customerName }}</el-descriptions-item>
+          <el-descriptions-item :label="type === 'receivable' ? '瀹㈡埛鍚嶇О' : '渚涘簲鍟嗗悕绉�'">
+            {{ type === 'receivable' ? detailData.customerName : detailData.supplierName }}
+          </el-descriptions-item>
+
           <el-descriptions-item label="椤圭洰鍚嶇О">{{ detailData.projectName }}</el-descriptions-item>
           <el-descriptions-item label="涓氬姟鍙戠敓鏃堕棿">{{ detailData.businessTime }}</el-descriptions-item>
 
-          <el-descriptions-item label="搴旀敹纭鏃堕棿">{{ detailData.receivableConfirmTime }}</el-descriptions-item>
-          <el-descriptions-item label="搴旀敹閲戦" :span="2">
-            <span class="amount-text">{{ detailData.receivableAmount }}</span>
+          <el-descriptions-item :label="type === 'receivable' ? '搴旀敹纭鏃堕棿' : '搴斾粯纭鏃堕棿'">
+            {{ type === 'receivable' ? detailData.receivableConfirmTime : detailData.payableConfirmTime }}
+          </el-descriptions-item>
+
+          <!-- <el-descriptions-item :label="type === 'receivable' ? '搴旀敹閲戦' : '搴斾粯閲戦'" :span="2">
+            <span class="amount-text">{{ detailData.receivableAmount || detailData.payableAmount }}</span>
+          </el-descriptions-item> -->
+
+          <el-descriptions-item :label="type === 'receivable' ? '搴旀敹閲戦' : '搴斾粯閲戦'" :span="2">
+            <span>{{  type === 'receivable' ? detailData.receivableAmountStr : detailData.payableAmountStr}}</span>
           </el-descriptions-item>
         </el-descriptions>
       </section>
 
       <section class="table-section">
         <h3 class="section-title" style="margin-top: 20px;">璐圭敤鏄庣粏</h3>
-        <el-table 
-          :data="detailData.feeList || []" 
-          border 
-          stripe 
-          style="width: 100%"
-          :header-cell-style="{ backgroundColor: '#f5f7fa', color: '#606266' }"
-        >
-          <el-table-column label="璐圭敤绫诲瀷" align="center" prop="feeType"/>
-            <!-- <template #default="scope">
+        <el-table :data="detailData.feeList || []" border stripe style="width: 100%"
+          :header-cell-style="{ backgroundColor: '#f5f7fa', color: '#606266' }">
+          <el-table-column label="璐圭敤绫诲瀷" align="center">
+            <template #default="scope">
               {{ dictFormat(fee_type, scope.row.feeType) }}
             </template>
-          </el-table-column> -->
-          
+          </el-table-column>
+
           <el-table-column label="璐圭敤鍚嶇О" prop="feeName" align="center" />
-          
-          <el-table-column label="璁¤垂鍗曚綅" align="center" prop="billingUnit"/>
-            <!-- <template #default="scope">
+
+          <el-table-column label="璁¤垂鍗曚綅" align="center">
+            <template #default="scope">
               {{ dictFormat(sys_unit, scope.row.billingUnit) }}
             </template>
-          </el-table-column> -->
-          
+          </el-table-column>
+
           <el-table-column label="璁¤垂鍗曚环" prop="unitPrice" align="center" />
           <el-table-column label="璁¤垂閲戦" prop="billingAmount" align="center" />
-          <el-table-column label="瀹炴敹閲戦" prop="actualAmount" align="center" />
-          
-          <el-table-column label="甯佸埗" align="center"  prop="currency" >
+
+          <el-table-column :label="type === 'receivable' ? '瀹炴敹閲戦' : '瀹炰粯閲戦'" prop="actualAmount" align="center" />
+
+          <el-table-column label="甯佸埗" align="center" prop="currency">
             <template #default="scope">
               {{ dictFormat(sys_currency, scope.row.currency) }}
             </template>
           </el-table-column>
-          
+
           <el-table-column label="璐圭敤鐧昏鏃堕棿" prop="createTime" width="160" align="center" />
         </el-table>
       </section>
     </div>
 
     <template #footer>
-      <span class="dialog-footer">
-        <el-button @click="visible = false">鍏� 闂�</el-button>
-      </span>
+      <el-button @click="visible = false">鍏� 闂�</el-button>
     </template>
   </el-dialog>
 </template>
@@ -75,22 +84,14 @@
 
 const { proxy } = useCurrentInstance();
 
-// 鍔犺浇鎵�闇�鐨勫瓧鍏�
-const { 
-  sys_system, 
-  sys_business, 
-  sys_receipts, 
-  sys_currency, 
-  fee_type, // 瀵瑰簲涔嬪墠鐨� dicUrl fee_type
-  sys_unit   // 瀵瑰簲涔嬪墠鐨� dicUrl sys_unit
-} = proxy.useDict(
-  'sys_system',
-  'sys_business',
-  'sys_receipts',
-  'sys_currency',
-  'fee_type',
-  'sys_unit'
-);
+const {
+  sys_system,
+  sys_business,
+  sys_receipts,
+  sys_currency,
+  fee_type,
+  sys_unit
+} = proxy.useDict('sys_system', 'sys_business', 'sys_receipts', 'sys_currency', 'fee_type', 'sys_unit');
 
 const dictFormat = (dict: any, value: any) => {
   return proxy.selectDictLabel(dict, value);
@@ -98,16 +99,22 @@
 
 const visible = ref(false);
 const detailData = ref<any>({});
+const type = ref<'receivable' | 'payable'>('receivable'); // 鏍囪鏄簲鏀惰繕鏄簲浠�
 
-// 鏆撮湶缁欑埗缁勪欢鐨勬柟娉�
-const open = (data: any) => {
+/**
+ * 鏆撮湶缁欑埗缁勪欢鐨勬柟娉�
+ * @param data 鏁版嵁瀵硅薄
+ * @param mode 妯″紡锛�'receivable' (搴旀敹) 鎴� 'payable' (搴斾粯)
+ */
+const open = (data: any, mode: 'receivable' | 'payable' = 'receivable') => {
+  type.value = mode;
   detailData.value = data || {};
-  // 缁熶竴鏁版嵁鏉ユ簮瀛楁
-  if (data && data.receivableFeeDetailList) {
-    detailData.value.feeList = data.receivableFeeDetailList;
-  } else {
-    detailData.value.feeList = [];
+
+  // 缁熶竴鏄庣粏鍒楄〃鐨勫彇鍊奸�昏緫锛堟牴鎹悗绔瓧娈靛悕璋冩暣锛�
+  if (data) {
+    detailData.value.feeList = data.receivableFeeDetailList || data.payableFeeDetailList || [];
   }
+
   visible.value = true;
 };
 
@@ -129,7 +136,7 @@
   margin: 10px 0;
   color: #333;
   padding-left: 10px;
-  border-left: 4px solid #409eff; /* 娣诲姞浜嗚摑鑹蹭晶杈癸紝涓庝富娴佽储鍔$郴缁熼鏍肩粺涓� */
+  border-left: 4px solid #409eff;
 }
 
 .amount-text {
@@ -142,9 +149,14 @@
   background-color: #f5f7fa;
 }
 
-/* 缁熶竴鎻忚堪鍒楄〃鍗曞厓鏍兼牱寮� */
 ::v-deep .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell {
   border: var(--el-descriptions-table-border);
   padding: 8px 11px;
 }
+
+::v-deep .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell {
+  border: var(--el-descriptions-table-border);
+  padding: 8px 11px;
+  width: 200px;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.8.0