From b5b12cb8d780bff964b0c7f34e2ccbe5b768bde0 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 13 五月 2026 09:54:38 +0800
Subject: [PATCH] refactor(financial): 优化财务模块组件结构和交互逻辑

---
 src/views/financialManagement/voucher/detailLedger.vue |   38 ++++++++++++++++++++++++--------------
 1 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/views/financialManagement/voucher/detailLedger.vue b/src/views/financialManagement/voucher/detailLedger.vue
index 202ece1..8ed7dcb 100644
--- a/src/views/financialManagement/voucher/detailLedger.vue
+++ b/src/views/financialManagement/voucher/detailLedger.vue
@@ -2,7 +2,7 @@
   <div class="app-container">
     <el-form :model="filters" :inline="true">
       <el-form-item label="浼氳绉戠洰:">
-        <el-cascader v-model="filters.subject" :options="subjectOptions" :props="{ label: 'name', value: 'code' }" placeholder="璇烽�夋嫨浼氳绉戠洰" clearable style="width: 250px;" filterable />
+        <el-cascader v-model="filters.subject" :options="subjectOptions" :props="{ label: 'name', value: 'code', checkStrictly: true }" placeholder="璇烽�夋嫨浼氳绉戠洰" clearable style="width: 250px;" filterable />
       </el-form-item>
       <el-form-item label="杈呭姪鏍哥畻:">
         <el-select v-model="filters.auxiliary" placeholder="璇烽�夋嫨杈呭姪鏍哥畻" clearable style="width: 180px;">
@@ -86,8 +86,8 @@
   subject: [],
   auxiliary: "",
   auxiliaryItem: "",
-  startMonth: "2024-01",
-  endMonth: "2024-03",
+  startMonth: "",
+  endMonth: "",
 });
 
 const dataList = ref([]);
@@ -99,21 +99,24 @@
   { code: "6602", name: "绠$悊璐圭敤" },
 ];
 
+const toCascaderTree = (nodes = []) =>
+  nodes
+    .filter(item => item.subjectCode && item.subjectName)
+    .map(item => ({
+      code: item.subjectCode,
+      name: item.subjectName,
+      children: toCascaderTree(item.children || []),
+    }));
+
 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: [],
-        }));
+    const options = toCascaderTree(data?.records || []);
+    if (options.length > 0) {
+      subjectOptions.value = options;
       return;
     }
   } catch (error) {
@@ -158,11 +161,18 @@
 });
 
 const currentSubject = computed(() => {
-  if (!filters.subject || filters.subject.length === 0) return null;
-  const code = filters.subject[filters.subject.length - 1];
+  const code = getSelectedSubjectCode(filters.subject);
+  if (!code) return null;
   return findSubject(subjectOptions.value, code);
 });
 
+const getSelectedSubjectCode = (subjectValue) => {
+  if (Array.isArray(subjectValue)) {
+    return subjectValue.length ? subjectValue[subjectValue.length - 1] : "";
+  }
+  return subjectValue || "";
+};
+
 const findSubject = (options, code) => {
   for (const item of options) {
     if (item.code === code) return item;

--
Gitblit v1.9.3