From 14363b1ae7cb0d730158ec8dfbee55a85b2fc09f Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 12 五月 2026 15:23:17 +0800
Subject: [PATCH] feat(financial): 实现财务模块数据接口联调

---
 src/views/financialManagement/voucher/detailLedger.vue |  103 ++++++++++++++++++++++++---------------------------
 1 files changed, 49 insertions(+), 54 deletions(-)

diff --git a/src/views/financialManagement/voucher/detailLedger.vue b/src/views/financialManagement/voucher/detailLedger.vue
index 7f85790..202ece1 100644
--- a/src/views/financialManagement/voucher/detailLedger.vue
+++ b/src/views/financialManagement/voucher/detailLedger.vue
@@ -43,13 +43,13 @@
         <el-table-column prop="date" label="鏃ユ湡" width="120" />
         <el-table-column prop="voucherNo" label="鍑瘉瀛楀彿" width="120" />
         <el-table-column prop="summary" label="鎽樿" min-width="200" show-overflow-tooltip />
-        <el-table-column label="鍊熸柟" width="150">
+        <el-table-column prop="debit" label="鍊熸柟" width="150">
           <template #default="{ row }">
             <span v-if="row.debit > 0" class="text-danger">楼{{ formatMoney(row.debit) }}</span>
             <span v-else>-</span>
           </template>
         </el-table-column>
-        <el-table-column label="璐锋柟" width="150">
+        <el-table-column prop="credit" label="璐锋柟" width="150">
           <template #default="{ row }">
             <span v-if="row.credit > 0" class="text-success">楼{{ formatMoney(row.credit) }}</span>
             <span v-else>-</span>
@@ -75,6 +75,8 @@
 <script setup>
 import { ref, reactive, onMounted, computed, watch } from "vue";
 import { ElMessage } from "element-plus";
+import { listAccountSubject } from "@/api/financialManagement/accountSubject";
+import { getDetailLedger } from "@/api/financialManagement/ledger";
 
 defineOptions({
   name: "绉戠洰鏄庣粏璐�",
@@ -89,36 +91,36 @@
 });
 
 const dataList = ref([]);
+const subjectOptions = ref([]);
 
-const subjectOptions = [
-  {
-    code: "1122",
-    name: "搴旀敹璐︽",
-    children: [
-      { code: "112201", name: "鍖椾含绉戞妧鏈夐檺鍏徃" },
-      { code: "112202", name: "涓婃捣璐告槗鍏徃" },
-      { code: "112203", name: "骞垮窞瀹炰笟鏈夐檺鍏徃" },
-    ],
-  },
-  {
-    code: "2202",
-    name: "搴斾粯璐︽",
-    children: [
-      { code: "220201", name: "鍖椾含鍘熸潗鏂欎緵搴斿晢" },
-      { code: "220202", name: "涓婃捣鐢靛瓙鍏冨櫒浠跺叕鍙�" },
-      { code: "220203", name: "骞垮窞鍖呰鏉愭枡鍘�" },
-    ],
-  },
-  {
-    code: "6602",
-    name: "绠$悊璐圭敤",
-    children: [
-      { code: "660201", name: "鍔炲叕璐�" },
-      { code: "660202", name: "宸梾璐�" },
-      { code: "660203", name: "涓氬姟鎷涘緟璐�" },
-    ],
-  },
+const fallbackSubjects = [
+  { code: "1122", name: "搴旀敹璐︽" },
+  { code: "2202", name: "搴斾粯璐︽" },
+  { code: "6602", name: "绠$悊璐圭敤" },
 ];
+
+const loadSubjectOptions = async () => {
+  try {
+    const { data } = await listAccountSubject({
+      current: 1,
+      size: 1000,
+    });
+    const records = data?.records || [];
+    if (records.length > 0) {
+      subjectOptions.value = records
+        .filter(item => item.subjectCode && item.subjectName)
+        .map(item => ({
+          code: item.subjectCode,
+          name: item.subjectName,
+          children: [],
+        }));
+      return;
+    }
+  } catch (error) {
+    // 鍏ㄥ眬鎷︽埅鍣ㄥ凡鎻愮ず锛屼笅闈㈣蛋鍏滃簳绉戠洰
+  }
+  subjectOptions.value = fallbackSubjects.map(item => ({ ...item, children: [] }));
+};
 
 const auxiliaryItems = computed(() => {
   const map = {
@@ -158,7 +160,7 @@
 const currentSubject = computed(() => {
   if (!filters.subject || filters.subject.length === 0) return null;
   const code = filters.subject[filters.subject.length - 1];
-  return findSubject(subjectOptions, code);
+  return findSubject(subjectOptions.value, code);
 });
 
 const findSubject = (options, code) => {
@@ -182,31 +184,24 @@
   return Number(value).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
 };
 
-const mockData = [
-  { date: "2024-01-01", voucherNo: "-", summary: "鏈熷垵浣欓", debit: 0, credit: 0, direction: "鍊�", balance: 10000 },
-  { date: "2024-01-05", voucherNo: "璁�-0001", summary: "閿�鍞嚭搴�", debit: 5000, credit: 0, direction: "鍊�", balance: 15000 },
-  { date: "2024-01-10", voucherNo: "璁�-0002", summary: "鏀跺埌璐ф", debit: 0, credit: 3000, direction: "鍊�", balance: 12000 },
-  { date: "2024-01-15", voucherNo: "璁�-0003", summary: "閿�鍞嚭搴�", debit: 8000, credit: 0, direction: "鍊�", balance: 20000 },
-  { date: "2024-01-20", voucherNo: "璁�-0004", summary: "閿�鍞��璐�", debit: 0, credit: 2000, direction: "鍊�", balance: 18000 },
-  { date: "2024-01-25", voucherNo: "璁�-0005", summary: "鏀跺埌璐ф", debit: 0, credit: 5000, direction: "鍊�", balance: 13000 },
-  { date: "2024-01-31", voucherNo: "-", summary: "鏈湀鍚堣", debit: 13000, credit: 10000, direction: "鍊�", balance: 13000 },
-  { date: "2024-02-01", voucherNo: "-", summary: "鏈熷垵浣欓", debit: 0, credit: 0, direction: "鍊�", balance: 13000 },
-  { date: "2024-02-10", voucherNo: "璁�-0006", summary: "閿�鍞嚭搴�", debit: 6000, credit: 0, direction: "鍊�", balance: 19000 },
-  { date: "2024-02-15", voucherNo: "璁�-0007", summary: "鏀跺埌璐ф", debit: 0, credit: 4000, direction: "鍊�", balance: 15000 },
-  { date: "2024-02-28", voucherNo: "-", summary: "鏈湀鍚堣", debit: 6000, credit: 4000, direction: "鍊�", balance: 15000 },
-  { date: "2024-03-01", voucherNo: "-", summary: "鏈熷垵浣欓", debit: 0, credit: 0, direction: "鍊�", balance: 15000 },
-  { date: "2024-03-05", voucherNo: "璁�-0008", summary: "閿�鍞嚭搴�", debit: 7000, credit: 0, direction: "鍊�", balance: 22000 },
-  { date: "2024-03-10", voucherNo: "璁�-0009", summary: "鏀跺埌璐ф", debit: 0, credit: 6000, direction: "鍊�", balance: 16000 },
-  { date: "2024-03-31", voucherNo: "-", summary: "鏈湀鍚堣", debit: 7000, credit: 6000, direction: "鍊�", balance: 16000 },
-  { date: "2024-03-31", voucherNo: "-", summary: "鏈勾绱", debit: 26000, credit: 20000, direction: "鍊�", balance: 16000 },
-];
-
-const getTableData = () => {
+// 鑱旇皟绾﹀畾锛氭槑缁嗚处鎺ュ彛鍙寜杈呭姪鏍哥畻杩囨护锛坅uxiliaryType/auxiliaryId锛�
+const getTableData = async () => {
   if (!currentSubject.value) {
     dataList.value = [];
     return;
   }
-  dataList.value = [...mockData];
+  try {
+    const { data } = await getDetailLedger({
+      subjectCode: currentSubject.value.code,
+      auxiliaryType: filters.auxiliary,
+      auxiliaryId: filters.auxiliaryItem,
+      startMonth: filters.startMonth,
+      endMonth: filters.endMonth,
+    });
+    dataList.value = Array.isArray(data) ? data : data?.records || [];
+  } catch (error) {
+    // 鎻愮ず鐢卞叏灞�璇锋眰鎷︽埅鍣ㄥ鐞嗭紝杩欓噷浠呴槻姝㈡湭鎹曡幏寮傚父
+  }
 };
 
 const resetFilters = () => {
@@ -249,8 +244,8 @@
   ElMessage.success("瀵煎嚭鎴愬姛");
 };
 
-onMounted(() => {
-  // 榛樿涓嶅姞杞芥暟鎹紝闇�瑕侀�夋嫨绉戠洰
+onMounted(async () => {
+  await loadSubjectOptions();
 });
 </script>
 

--
Gitblit v1.9.3