wujianwei
2026-02-02 48032a9bf0b5e560fd438ae7ba12ad6f4c8183ed
ui/admin-ui3/src/views/cwgl/voucherSubjectFee/index.vue
@@ -25,6 +25,8 @@
</template>
<script setup name="voucherSubjectFee" lang="ts">
import { listVoucherSubjectSetting } from "@/api/cwgl/voucherSubjectSetting";
import { VoucherSubjectFeeI, addVoucherSubjectFee, delVoucherSubjectFee, exportVoucherSubjectFee, getVoucherSubjectFee, listVoucherSubjectFee, updateVoucherSubjectFee } from "@/api/cwgl/voucherSubjectFee";
import useCurrentInstance from "@/utils/useCurrentInstance";
import { computed, reactive, ref, toRefs } from "vue";
@@ -58,14 +60,13 @@
const option = ref({
  pageKey: 'VoucherSubjectFee',
  rowKey: 'id',
    viewBtn: false,
  column: {
    // id: {
    //   label: 'ID',
    // },
    accountSet: {
      label: '账套',
      search: true,
      minWidth: 120,
      addDisabled: true,
      editDisabled: true,
@@ -77,29 +78,39 @@
        }
      ],
    },
     subjectName: {
    subjectName: {
      label: '科目名称',
      type: 'select', // 如果需要树形可以改为 'tree'
      search: true,
      props: {
        label: 'subjectName',
        value: 'subjectName' // 建议绑定 ID 作为 value
      },
      // 关键:监听选中值的变化
      change: ({ value, column, item }) => {
        // item 是当前选中的整行数据对象
        if (item) {
          form.value.subjectCode = item.subjectCode; // 赋值科目代码
          form.value.subjectType = item.subjectType; // 赋值科目类别
      rules: [
        {
          required: true,
          message: "科目名称不能为空", trigger: "blur"
          // 注意:请确认 listVoucherSubjectSetting 接口返回的对象中有 expenseName 字段
          // 如果接口字段叫 feeName,则改为 item.feeName
          form.value.feeName = item.expenseName;
        } else {
          // 如果清空了选择,则重置相关字段
          form.value.subjectCode = '';
          form.value.subjectType = '';
          form.value.feeName = '';
        }
      ],
      },
      rules: [{ required: true, message: "科目名称不能为空", trigger: "change" }],
    },
    subjectCode: {
      label: '科目代码',
      search: true,
      minWidth: 120,
      rules: [
        {
          required: true,
          message: "科目代码不能为空", trigger: "blur"
        }
      ],
      disabled: true, // 自动带出,设为只读
    },
     subjectType: {
    subjectType: {
      label: '科目类别',
      minWidth: 150,
      minWidth: 120,
@@ -135,7 +146,7 @@
    //     }
    //   ],
    // },
       feeName: {
    feeName: {
      search: true,
      label: '费用名称',
      minWidth: 150,
@@ -161,7 +172,7 @@
        }
      ],
    },
    // status: {
    //   label: '状态',
    // },
@@ -203,9 +214,40 @@
    handleUpdateFunc: () => {
      crudRef.value.rowEdit(selectionList.value[0]);
    },
    getBeginListFunc: (params = {}) => {
      // 这里的 params 是 searchChange 等触发时传递的原始参数
      const nextParams = {
        ...params,
        type: activeAccountSet.value // 将当前选中的 Tab 值注入 type 字段
      };
      // 同步更新 queryParams,确保搜索栏状态一致
      queryParams.value = nextParams;
      return nextParams;
    },
    handleSelectionChangeFunc: (selection: any) => {
      selectionList.value = selection;
    }
    },
    // --- 关键修改:处理弹窗打开前的逻辑 ---
    handleBeforeOpenFunc: (type: string) => {
      if (type === 'add') {
        form.value.accountSet = activeAccountSet.value;
        form.value.type = activeAccountSet.value;
      }
      listVoucherSubjectSetting({ type: activeAccountSet.value }).then(res => {
        const subjectNameCol = option.value.column.subjectName;
        if (subjectNameCol) {
          // 假设接口返回的数据在 res.data 或 res.rows 中
          const listData = res.rows  || [];
          // 如果你需要树形展示,可以使用 handleTree 转换
          subjectNameCol.type = 'tree';
          subjectNameCol.dicData = proxy.handleTree(listData, "id");
        }
      });
    },
  })
const activeAccountSet = ref('0');