| | |
| | | <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;"> |
| | |
| | | subject: [], |
| | | auxiliary: "", |
| | | auxiliaryItem: "", |
| | | startMonth: "2024-01", |
| | | endMonth: "2024-03", |
| | | startMonth: "", |
| | | endMonth: "", |
| | | }); |
| | | |
| | | const dataList = ref([]); |
| | |
| | | { 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) { |
| | |
| | | }); |
| | | |
| | | 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; |