From f3cfb481498d67e99166478c5675cc9cee7dd9a1 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 29 四月 2026 13:10:42 +0800
Subject: [PATCH] fix: 付款方式更改为查询字典

---
 src/views/financialManagement/revenueManagement/index.vue |   53 ++++++++++++++++++++------
 src/views/procurementManagement/paymentEntry/index.vue    |   27 +++++++++++--
 2 files changed, 62 insertions(+), 18 deletions(-)

diff --git a/src/views/financialManagement/revenueManagement/index.vue b/src/views/financialManagement/revenueManagement/index.vue
index 12abfe3..70b58df 100644
--- a/src/views/financialManagement/revenueManagement/index.vue
+++ b/src/views/financialManagement/revenueManagement/index.vue
@@ -7,13 +7,13 @@
       </el-form-item>
       <el-form-item label="鏀舵鏂瑰紡:">
         <el-select
-                v-model="filters.incomeMethod"
+                v-model="filters.incomeMethodLabel"
                 placeholder="璇烽�夋嫨"
                 clearable
                 style="width: 200px;"
               >
                 <el-option
-                  v-for="item in payment_methods"
+                  v-for="item in incomeMethodOptions"
                   :key="item.value"
                   :label="item.label"
                   :value="item.value"
@@ -56,6 +56,11 @@
         @selection-change="handleSelectionChange"
         @pagination="changePage"
       >
+        <template #incomeMethodSlot="{ row }">
+          <el-tag>
+            {{ getIncomeMethodLabel(row) }}
+          </el-tag>
+        </template>
         <template #operation="{ row }">
           <el-button 
             type="primary" 
@@ -107,11 +112,25 @@
 const { proxy } = getCurrentInstance();
 const modalRef = ref();
 const { payment_methods } = proxy.useDict("payment_methods");
+const { receipt_payment_type } = proxy.useDict("receipt_payment_type");
 const { income_types } = proxy.useDict("income_types");
 const fileListRef = ref(null);
 const fileListDialogVisible = ref(false);
 const currentFileRow = ref(null);
 const accountType = ref('鏀跺叆');
+
+const incomeMethodOptions = computed(() => {
+  const merged = [...(payment_methods.value || []), ...(receipt_payment_type.value || [])];
+  const uniqueMap = new Map();
+  merged.forEach((item) => {
+    const label = item?.label;
+    if (!label) return;
+    if (!uniqueMap.has(label)) {
+      uniqueMap.set(label, { label, value: label });
+    }
+  });
+  return Array.from(uniqueMap.values());
+});
 
 const {
   filters,
@@ -124,7 +143,7 @@
 } = usePaginationApi(
   listPage,
   {
-    incomeMethod: undefined,
+    incomeMethodLabel: undefined,
     entryDate: undefined,
   },
   [
@@ -162,17 +181,11 @@
     },
     {
       label: "鏀舵鏂瑰紡",
-      prop: "incomeMethod",
+      prop: "incomeMethodLabel",
 			align: 'center',
 			width: '100',
-      dataType: "tag",
-      formatData: (params) => {
-        if (payment_methods.value.find((m) => m.value == params)) {
-          return payment_methods.value.find((m) => m.value == params).label;
-        } else {
-          return null
-        }
-      },
+      dataType: "slot",
+      slot: "incomeMethodSlot",
     },
     {
       label: "鍙戠エ鍙风爜",
@@ -201,7 +214,13 @@
       align: "center",
       width: "160px",
     },
-  ]
+  ],
+  undefined,
+  {
+    incomeMethodLabel: (value) => ({
+      incomeMethodLabel: value || undefined,
+    }),
+  }
 );
 
 // 琛ㄦ牸鍚堣锛氭敹鍏ラ噾棰�
@@ -209,6 +228,14 @@
   return proxy.summarizeTable(param, ["incomeMoney"]);
 };
 
+const getIncomeMethodLabel = (row) => {
+  const methodValue = row?.incomeMethod;
+  const dictList = String(row?.businessType) === "1"
+    ? receipt_payment_type.value
+    : payment_methods.value;
+  return dictList.find((item) => item.value == methodValue)?.label || "--";
+};
+
 // 澶氶�夊悗鍋氫粈涔�
 const handleSelectionChange = (selectionList) => {
   multipleList.value = selectionList;
diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue
index cb93562..8d781e5 100644
--- a/src/views/procurementManagement/paymentEntry/index.vue
+++ b/src/views/procurementManagement/paymentEntry/index.vue
@@ -89,8 +89,12 @@
 									placeholder="璇烽�夋嫨"
 									clearable
 								>
-									<el-option label="鐢垫眹" value="鐢垫眹" />
-									<el-option label="鎵垮厬" value="鎵垮厬" />
+									<el-option
+										v-for="item in checkout_payment"
+										:key="item.value"
+										:label="item.label"
+										:value="item.value"
+									/>
 								</el-select>
 							</template>
 						</el-table-column>
@@ -183,8 +187,12 @@
         <el-table-column label="浠樻鏂瑰紡" width="160">
           <template #default="{ row }">
             <el-select v-model="row.paymentMethod" placeholder="璇烽�夋嫨" clearable>
-              <el-option label="鐢垫眹" value="鐢垫眹" />
-              <el-option label="鎵垮厬" value="鎵垮厬" />
+              <el-option
+                v-for="item in checkout_payment"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
             </el-select>
           </template>
         </el-table-column>
@@ -239,6 +247,7 @@
 import { getCurrentDate } from "@/utils/index.js";
 
 const { proxy } = getCurrentInstance();
+const { checkout_payment } = proxy.useDict("checkout_payment");
 const tableColumn = ref([
 	{
 		type: "expand",
@@ -512,7 +521,15 @@
       return;
     }
   }
-  paymentRegistrationAdd(forms.value).then(() => {
+  const normalizePaymentMethodValue = (method) => {
+    const hit = checkout_payment.value.find((item) => item.value == method || item.label == method);
+    return hit ? hit.value : method;
+  };
+  const submitRows = forms.value.map((item) => ({
+    ...item,
+    paymentMethod: normalizePaymentMethodValue(item.paymentMethod),
+  }));
+  paymentRegistrationAdd(submitRows).then(() => {
     proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
     closeDia();
     getList();

--
Gitblit v1.9.3