/** * 付款申请列表(avue-crud)配置 * ------------------------------------------------------------------ * 列表页与其它模块统一使用 avue-crud,头部 4 个按钮(刷新 / 列显隐 / 搜索显隐 / * 表格卡片切换)由 avue-crud 自带,不做二次封装。 * * 搜索项与表格列 label 不一致的(如表格列「收款方」/ 搜索项「客户名称」), * 单独定义一个 hide 的搜索列,并用 searchProp 映射到后端字段。 * * ⚠️ avue 的 searchOrder 为降序排序,值越大越靠前(见 header-search2.js: * `list.sort((a, b) => (b.searchOrder || 0) - (a.searchOrder || 0))`)。 */ const textFormatter = (row, value) => value === null || value === undefined || value === '' ? '-' : value; const moneyFormatter = (row, value) => Number(value || 0).toFixed(2); // 仅用于搜索、不在表格中出现的列 const searchOnlyColumn = ({ label, prop, searchOrder, searchProp, dicData }) => { const column = { label, prop, search: true, searchOrder, searchPlaceholder: '请输入', hide: true, showColumn: false, addDisplay: false, editDisplay: false, viewDisplay: false, }; if (searchProp) column.searchProp = searchProp; if (dicData) { column.type = 'select'; column.searchPlaceholder = '请选择'; column.dicData = dicData; } return column; }; export const paymentApplicationOption = ({ paymentTypeOptions = [], approvalStatusOptions = [], kingdeeStatusOptions = [], } = {}) => ({ height: 'auto', calcHeight: 32, tip: false, searchBtnText: '查询', emptyBtnText: '重置', searchShow: true, searchIcon: true, searchLabelWidth: 88, // 查询/重置紧跟首行 4 个条件(4×5 + 菜单 4 = 24),不再独占下一整行 searchMenuSpan: 4, searchIndex: 4, searchMenuPosition: 'right', border: true, index: true, indexLabel: '序号', indexWidth: 70, indexFixed: 'left', selection: true, selectionWidth: 52, selectionFixed: 'left', addBtn: false, viewBtn: false, delBtn: false, editBtn: false, copyBtn: false, menuWidth: 320, menuFixed: 'right', dialogClickModal: false, column: [ // ---------- 搜索项(前 4 项默认展示,其余折叠;searchOrder 越大越靠前) ---------- { label: '单据号', prop: 'paymentNo', slot: true, search: true, searchSpan: 5, searchOrder: 9, searchPlaceholder: '请输入', minWidth: 150, }, { label: '日期', prop: 'applyDateRange', type: 'daterange', searchType: 'daterange', search: true, searchSpan: 5, searchOrder: 8, hide: true, showColumn: false, addDisplay: false, editDisplay: false, viewDisplay: false, }, { ...searchOnlyColumn({ label: '客户名称', prop: 'payeeNameSearch', searchOrder: 7, searchProp: 'payeeName', }), searchSpan: 5, }, { ...searchOnlyColumn({ label: '项目名称', prop: 'projectNameSearch', searchOrder: 6, searchProp: 'projectName', }), searchSpan: 5, }, searchOnlyColumn({ label: '关联结算单', prop: 'settlementNo', searchOrder: 4, }), searchOnlyColumn({ label: '付款类型', prop: 'paymentType', searchOrder: 3, dicData: paymentTypeOptions, }), searchOnlyColumn({ label: '审核状态', prop: 'approvalStatus', searchOrder: 2, dicData: approvalStatusOptions, }), searchOnlyColumn({ label: '金蝶单据状态', prop: 'kingdeeStatus', searchOrder: 1, dicData: kingdeeStatusOptions, }), // ---------- 表格列 ---------- { label: '付款类型', prop: 'paymentTypeName', minWidth: 110, formatter: textFormatter }, { label: '所属项目', prop: 'projectName', minWidth: 140, formatter: textFormatter }, { label: '所属组织', prop: 'deptName', search: true, searchOrder: 5, searchslot: true, minWidth: 120, formatter: textFormatter, }, { label: '合同编号', prop: 'contractNo', minWidth: 130, formatter: textFormatter }, { label: '合同名称', prop: 'contractName', minWidth: 140, formatter: textFormatter }, { label: '付款方', prop: 'payerName', minWidth: 130, formatter: textFormatter }, { label: '收款方', prop: 'payeeName', minWidth: 130, formatter: textFormatter }, { label: '申请付款金额', prop: 'appliedAmount', minWidth: 140, formatter: moneyFormatter }, { label: '已付款金额', prop: 'paidAmount', minWidth: 130, formatter: moneyFormatter }, { label: '匹配发票金额', prop: 'matchedInvoiceAmount', minWidth: 130, formatter: moneyFormatter, }, { label: '申请人', prop: 'applicantName', minWidth: 100, formatter: textFormatter }, { label: '申请日期', prop: 'applyDate', minWidth: 120, formatter: textFormatter }, { label: '审核状态', prop: 'approvalStatusName', slot: true, minWidth: 110 }, { label: '当前节点', prop: 'currentNode', minWidth: 120, formatter: textFormatter }, { label: '当前处理人', prop: 'currentProcessor', minWidth: 120, formatter: textFormatter }, { label: '金蝶单据号', prop: 'kingdeeBillNo', minWidth: 130, formatter: textFormatter }, { label: '金蝶单据状态', prop: 'kingdeeStatusName', minWidth: 130, formatter: textFormatter }, { label: '金蝶锁状态', prop: 'kingdeeLockStatus', slot: true, minWidth: 150 }, { label: '附件同步', prop: 'attachmentSyncStatusName', minWidth: 100, formatter: textFormatter }, ], });