15 小时以前 b5b12cb8d780bff964b0c7f34e2ccbe5b768bde0
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;