| | |
| | | </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"; |
| | |
| | | const option = ref({ |
| | | pageKey: 'VoucherSubjectFee', |
| | | rowKey: 'id', |
| | | viewBtn: false, |
| | | column: { |
| | | // id: { |
| | | // label: 'ID', |
| | | // }, |
| | | |
| | | accountSet: { |
| | | label: '账套', |
| | | search: true, |
| | | minWidth: 120, |
| | | addDisabled: true, |
| | | editDisabled: true, |
| | |
| | | } |
| | | ], |
| | | }, |
| | | 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, |
| | |
| | | // } |
| | | // ], |
| | | // }, |
| | | feeName: { |
| | | feeName: { |
| | | search: true, |
| | | label: '费用名称', |
| | | minWidth: 150, |
| | |
| | | } |
| | | ], |
| | | }, |
| | | |
| | | |
| | | // status: { |
| | | // label: '状态', |
| | | // }, |
| | |
| | | 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'); |
| | | |