| | |
| | | export function useCostReimburse() { |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | const allRows = ref([ |
| | | { |
| | | id: "1", |
| | | reimburseNo: "CR202605100001", |
| | | applicantId: "mock_1", |
| | | employeeNo: "zhangsan", |
| | | employeeName: "张三", |
| | | applicantNo: "zhangsan", |
| | | applicantName: "张三", |
| | | expenseCategory: "office_procurement", |
| | | reimburseReason: "采购打印机硒鼓、A4纸等办公耗材。", |
| | | applyAmount: 680, |
| | | payee: "张三", |
| | | payeeAccount: "6222 **** **** 1234", |
| | | bankBranch: "中国工商银行杭州西湖支行", |
| | | expenseDetails: [ |
| | | { id: "d1", invoiceDate: "2026-05-08", expenseSubject: "office_supply", amount: 380, description: "A4复印纸" }, |
| | | { id: "d2", invoiceDate: "2026-05-08", expenseSubject: "office_supply", amount: 300, description: "硒鼓" }, |
| | | ], |
| | | attachmentList: [{ name: "采购发票.pdf", url: "/mock/invoice1.pdf" }], |
| | | approvalFlowNodes: demoFlowNodes(680, "office_procurement"), |
| | | currentNodeIndex: 0, |
| | | approvalResult: "pending", |
| | | rejectReason: "", |
| | | approvalRecords: [], |
| | | applyTime: "2026-05-10 09:15:00", |
| | | createTime: "2026-05-10 09:15:00", |
| | | deptId: "101", |
| | | deptName: "行政部", |
| | | }, |
| | | { |
| | | id: "2", |
| | | reimburseNo: "CR202605080002", |
| | | applicantId: "mock_2", |
| | | employeeNo: "lisi", |
| | | employeeName: "李四", |
| | | applicantNo: "lisi", |
| | | applicantName: "李四", |
| | | expenseCategory: "business_entertainment", |
| | | reimburseReason: "接待重点客户商务宴请。", |
| | | applyAmount: 3200, |
| | | payee: "李四", |
| | | payeeAccount: "6217 **** **** 5678", |
| | | bankBranch: "招商银行武汉光谷支行", |
| | | expenseDetails: [ |
| | | { id: "d3", invoiceDate: "2026-05-06", expenseSubject: "entertainment", amount: 3200, description: "客户宴请" }, |
| | | ], |
| | | attachmentList: [], |
| | | approvalFlowNodes: demoFlowNodes(3200, "business_entertainment").map((n, i) => ({ |
| | | ...n, |
| | | nodeStatus: i === 0 ? "error" : "wait", |
| | | approveOpinion: i === 0 ? "发票模糊需重传" : "", |
| | | approveTime: i === 0 ? "2026-05-09 14:20:00" : "", |
| | | })), |
| | | currentNodeIndex: 0, |
| | | approvalResult: "rejected", |
| | | rejectReason: "发票模糊需重传", |
| | | approvalRecords: [ |
| | | { operatorName: "直属上级", result: "rejected", opinion: "发票模糊需重传", time: "2026-05-09 14:20:00" }, |
| | | ], |
| | | applyTime: "2026-05-07 16:30:00", |
| | | createTime: "2026-05-07 16:30:00", |
| | | deptId: "102", |
| | | deptName: "销售部", |
| | | }, |
| | | { |
| | | id: "3", |
| | | reimburseNo: "CR202605050003", |
| | | applicantId: "mock_3", |
| | | employeeNo: "wangwu", |
| | | employeeName: "王五", |
| | | applicantNo: "wangwu", |
| | | applicantName: "王五", |
| | | expenseCategory: "communication", |
| | | reimburseReason: "5月因公话费报销。", |
| | | applyAmount: 198, |
| | | payee: "王五", |
| | | payeeAccount: "6228 **** **** 9012", |
| | | bankBranch: "中国建设银行成都高新支行", |
| | | expenseDetails: [ |
| | | { id: "d4", invoiceDate: "2026-05-05", expenseSubject: "phone", amount: 198, description: "话费账单" }, |
| | | ], |
| | | attachmentList: [{ name: "话费账单.jpg", url: "/mock/phone.jpg" }], |
| | | approvalFlowNodes: demoFlowNodes(198, "communication").map((n) => ({ |
| | | ...n, |
| | | nodeStatus: "finish", |
| | | approveOpinion: "同意", |
| | | approveTime: "2026-05-06 10:00:00", |
| | | })), |
| | | currentNodeIndex: 0, |
| | | approvalResult: "approved", |
| | | rejectReason: "", |
| | | approvalRecords: [{ operatorName: "直属上级", result: "approved", opinion: "同意", time: "2026-05-06 10:00:00" }], |
| | | applyTime: "2026-05-05 11:00:00", |
| | | createTime: "2026-05-05 11:00:00", |
| | | deptId: "103", |
| | | deptName: "技术部", |
| | | }, |
| | | ]); |
| | | const allRows = ref([]); |
| | | |
| | | const searchForm = reactive({ |
| | | applicantKeyword: "", |
| | |
| | | applyTime: now, |
| | | createTime: now, |
| | | }); |
| | | proxy?.$modal?.msgSuccess?.("提交成功,已进入审批(本地模拟)"); |
| | | proxy?.$modal?.msgSuccess?.("提交成功"); |
| | | } else { |
| | | const idx = allRows.value.findIndex((r) => r.id === form.id); |
| | | if (idx !== -1) { |
| | |
| | | createTime: prev.createTime, |
| | | }; |
| | | } |
| | | proxy?.$modal?.msgSuccess?.("保存成功(本地模拟)"); |
| | | proxy?.$modal?.msgSuccess?.("保存成功"); |
| | | } |
| | | formDialog.visible = false; |
| | | handleQuery(); |