| | |
| | | ); |
| | | } |
| | | |
| | | /** 本地模拟:根据用户生成稳定「假期余额」占位 */ |
| | | function mockLeaveBalance(u) { |
| | | if (!u) return undefined; |
| | | const idStr = String(u.userId ?? u.id ?? "0"); |
| | | let s = 0; |
| | | for (let i = 0; i < idStr.length; i++) s += idStr.charCodeAt(i); |
| | | return Math.round(((s % 130) / 10 + 5) * 100) / 100; |
| | | /** 假期余额(对接考勤 API 前不展示假数据) */ |
| | | function mockLeaveBalance() { |
| | | return undefined; |
| | | } |
| | | |
| | | function filterUsersByQuery(query) { |
| | |
| | | } |
| | | } |
| | | |
| | | /** 本地模拟列表数据 */ |
| | | const allRows = ref([ |
| | | { |
| | | id: "1", |
| | | applicantId: "mock_1", |
| | | applicantNo: "zhangsan", |
| | | applicantName: "张三", |
| | | leaveType: "annual", |
| | | leaveBalanceDays: 12, |
| | | leaveStartTime: "2026-05-10 09:00:00", |
| | | leaveEndTime: "2026-05-12 18:00:00", |
| | | leaveDurationDays: 2.38, |
| | | leaveReason: "年休假返乡探亲。", |
| | | approvalMode: "parallel", |
| | | approverIds: [], |
| | | approverNames: "", |
| | | approvalResult: "pending", |
| | | attachmentList: [{ name: "车票订单.pdf" }], |
| | | createTime: "2026-05-09 10:20:00", |
| | | }, |
| | | { |
| | | id: "2", |
| | | applicantId: "mock_2", |
| | | applicantNo: "lisi", |
| | | applicantName: "李四", |
| | | leaveType: "sick", |
| | | leaveBalanceDays: 0, |
| | | leaveStartTime: "2026-05-14 08:30:00", |
| | | leaveEndTime: "2026-05-14 12:00:00", |
| | | leaveDurationDays: 0.15, |
| | | leaveReason: "上午门诊复查。", |
| | | approvalMode: "or_sign", |
| | | approverIds: [], |
| | | approverNames: "", |
| | | approvalResult: "approved", |
| | | attachmentList: [], |
| | | createTime: "2026-05-13 16:00:00", |
| | | }, |
| | | ]); |
| | | const allRows = ref([]); |
| | | |
| | | const searchForm = reactive({ |
| | | applicantKeyword: "", |
| | |
| | | window.open(url, "_blank"); |
| | | return; |
| | | } |
| | | proxy?.$modal?.msgSuccess?.(`已模拟下载:${row.name}`); |
| | | proxy?.$modal?.msgWarning?.("暂无下载地址"); |
| | | } |
| | | |
| | | async function openFormDialog(mode, row) { |
| | |
| | | approvalResult: "pending", |
| | | createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), |
| | | }); |
| | | proxy?.$modal?.msgSuccess?.("新增成功(本地模拟)"); |
| | | proxy?.$modal?.msgSuccess?.("新增成功"); |
| | | } else { |
| | | const idx = allRows.value.findIndex((r) => r.id === form.id); |
| | | if (idx !== -1) { |
| | |
| | | createTime: prev.createTime ?? dayjs().format("YYYY-MM-DD HH:mm:ss"), |
| | | }; |
| | | } |
| | | proxy?.$modal?.msgSuccess?.("保存成功(本地模拟)"); |
| | | proxy?.$modal?.msgSuccess?.("保存成功"); |
| | | } |
| | | formDialog.visible = false; |
| | | handleQuery(); |