From 41d4bedd762c6f8a8358baf33a065b052baab9cc Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 13 五月 2026 09:54:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_NEW_pro' into dev_NEW_pro
---
src/views/financialManagement/voucher/detailLedger.vue | 123 +++++++++++++++++++++-------------------
1 files changed, 64 insertions(+), 59 deletions(-)
diff --git a/src/views/financialManagement/voucher/detailLedger.vue b/src/views/financialManagement/voucher/detailLedger.vue
index 7f85790..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;">
@@ -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: "绉戠洰鏄庣粏璐�",
@@ -84,41 +86,44 @@
subject: [],
auxiliary: "",
auxiliaryItem: "",
- startMonth: "2024-01",
- endMonth: "2024-03",
+ startMonth: "",
+ endMonth: "",
});
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 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 options = toCascaderTree(data?.records || []);
+ if (options.length > 0) {
+ subjectOptions.value = options;
+ return;
+ }
+ } catch (error) {
+ // 鍏ㄥ眬鎷︽埅鍣ㄥ凡鎻愮ず锛屼笅闈㈣蛋鍏滃簳绉戠洰
+ }
+ subjectOptions.value = fallbackSubjects.map(item => ({ ...item, children: [] }));
+};
const auxiliaryItems = computed(() => {
const map = {
@@ -156,10 +161,17 @@
});
const currentSubject = computed(() => {
- if (!filters.subject || filters.subject.length === 0) return null;
- const code = filters.subject[filters.subject.length - 1];
- return findSubject(subjectOptions, code);
+ 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) {
@@ -182,31 +194,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 +254,8 @@
ElMessage.success("瀵煎嚭鎴愬姛");
};
-onMounted(() => {
- // 榛樿涓嶅姞杞芥暟鎹紝闇�瑕侀�夋嫨绉戠洰
+onMounted(async () => {
+ await loadSubjectOptions();
});
</script>
--
Gitblit v1.9.3