1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
| import { OA_NAV } from "@/config/oaPaths.js";
|
| const STATUS_MAP = {
| pending: { text: "审核中", type: "warning" },
| approved: { text: "已通过", type: "success" },
| rejected: { text: "已驳回", type: "error" },
| draft: { text: "草稿", type: "info" },
| published: { text: "已发布", type: "success" },
| };
|
| function baseRow(extra = {}) {
| return {
| id: `${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
| applicantName: "张三",
| deptName: "研发部",
| status: "pending",
| createTime: "2026-05-18 09:00:00",
| summary: "示例数据,可对接后端接口",
| ...extra,
| };
| }
|
| /** 各子页面配置:title、storageKey、列表展示字段、初始 mock */
| export const OA_PAGE_REGISTRY = {
| "HrManage/staff-archive": {
| title: "员工档案",
| module: "人事管理",
| storageKey: "oa_hr_staff_archive_v1",
| path: OA_NAV.staffArchive,
| fields: [
| { label: "员工编号", prop: "staffNo" },
| { label: "岗位", prop: "postJob" },
| { label: "联系电话", prop: "phone" },
| ],
| mockRows: [
| baseRow({
| staffNo: "E2026001",
| postJob: "工程师",
| phone: "13800000001",
| summary: "李明 · 在职",
| }),
| ],
| },
| "HrManage/staff-contract": {
| title: "员工合同",
| module: "人事管理",
| storageKey: "oa_hr_staff_contract_v1",
| path: OA_NAV.staffContract,
| fields: [
| { label: "合同编号", prop: "contractNo" },
| { label: "合同类型", prop: "contractType" },
| { label: "到期日", prop: "endDate" },
| ],
| mockRows: [
| baseRow({
| contractNo: "HT-2026-001",
| contractType: "劳动合同",
| endDate: "2027-12-31",
| }),
| ],
| },
| "HrManage/regular-apply": {
| title: "转正申请",
| module: "人事管理",
| storageKey: "oa_hr_regular_apply_v1",
| path: OA_NAV.regularApply,
| fields: [
| { label: "入职日期", prop: "entryDate" },
| { label: "转正日期", prop: "regularDate" },
| ],
| mockRows: [baseRow({ entryDate: "2025-11-01", regularDate: "2026-05-20" })],
| },
| "HrManage/transfer-apply": {
| title: "调岗申请",
| module: "人事管理",
| storageKey: "oa_hr_transfer_apply_v1",
| path: OA_NAV.transferApply,
| fields: [
| { label: "原岗位", prop: "fromPost" },
| { label: "目标岗位", prop: "toPost" },
| ],
| mockRows: [
| baseRow({ fromPost: "开发工程师", toPost: "高级开发工程师" }),
| ],
| },
| "HrManage/resign-apply": {
| title: "离职申请",
| module: "人事管理",
| storageKey: "oa_hr_resign_apply_v1",
| path: OA_NAV.resignApply,
| fields: [
| { label: "预计离职日", prop: "leaveDate" },
| { label: "离职原因", prop: "reason" },
| ],
| mockRows: [baseRow({ leaveDate: "2026-06-30", reason: "个人发展" })],
| },
| "HrManage/work-handover": {
| title: "工作交接",
| module: "人事管理",
| storageKey: "oa_hr_work_handover_v1",
| path: OA_NAV.workHandover,
| fields: [
| { label: "交接人", prop: "handoverTo" },
| { label: "交接事项", prop: "handoverItems" },
| ],
| mockRows: [
| baseRow({ handoverTo: "王五", handoverItems: "项目文档、客户资料" }),
| ],
| },
| "HrManage/post-manage": {
| title: "岗位管理",
| module: "人事管理",
| storageKey: "oa_hr_post_manage_v1",
| path: OA_NAV.postManage,
| fields: [
| { label: "岗位编码", prop: "postCode" },
| { label: "所属部门", prop: "deptName" },
| ],
| mockRows: [baseRow({ postCode: "DEV-01", summary: "开发工程师" })],
| },
| "AttendManage/leave-apply": {
| title: "请假申请",
| module: "假勤管理",
| storageKey: "oa_attend_leave_apply_v1",
| path: OA_NAV.leaveApply,
| fields: [
| { label: "请假类型", prop: "leaveType" },
| { label: "开始时间", prop: "startTime" },
| { label: "结束时间", prop: "endTime" },
| ],
| mockRows: [
| baseRow({
| leaveType: "年假",
| startTime: "2026-05-20 09:00",
| endTime: "2026-05-21 18:00",
| }),
| ],
| },
| "AttendManage/overtime-apply": {
| title: "加班申请",
| module: "假勤管理",
| storageKey: "oa_attend_overtime_apply_v1",
| path: OA_NAV.overtimeApply,
| fields: [
| { label: "加班日期", prop: "overtimeDate" },
| { label: "时长(小时)", prop: "hours" },
| ],
| mockRows: [
| baseRow({ overtimeDate: "2026-05-18", hours: "3", summary: "版本上线" }),
| ],
| },
| "ReimburseManage/travel-reimburse": {
| title: "差旅报销",
| module: "报销管理",
| storageKey: "oa_reimburse_travel_v1",
| path: OA_NAV.travelReimburse,
| fields: [
| { label: "出差地点", prop: "destination" },
| { label: "金额(元)", prop: "amount" },
| ],
| mockRows: [
| baseRow({ destination: "上海", amount: "2680.50", summary: "客户拜访差旅" }),
| ],
| },
| "ReimburseManage/cost-reimburse": {
| title: "费用报销",
| module: "报销管理",
| storageKey: "oa_reimburse_cost_v1",
| path: OA_NAV.costReimburse,
| fields: [
| { label: "费用科目", prop: "category" },
| { label: "金额(元)", prop: "amount" },
| ],
| mockRows: [
| baseRow({ category: "办公用品", amount: "356.00", summary: "采购文具" }),
| ],
| },
| "ApproveManage/approve-list": {
| title: "审批列表",
| module: "审批管理",
| storageKey: "oa_unified_approve_list_v1",
| path: OA_NAV.approveList,
| fields: [
| { label: "审批类型", prop: "approvalTypeLabel" },
| { label: "当前节点", prop: "currentNode" },
| ],
| mockRows: [
| baseRow({
| approvalTypeLabel: "请假申请",
| currentNode: "部门负责人",
| }),
| ],
| },
| "ApproveManage/approve-template": {
| title: "审批模板",
| module: "审批管理",
| storageKey: "oa_approve_template_custom_v1",
| path: OA_NAV.approveTemplate,
| fields: [
| { label: "模板名称", prop: "templateName" },
| { label: "节点数", prop: "nodeCount" },
| ],
| mockRows: [
| baseRow({
| templateName: "通用审批流",
| nodeCount: "3",
| status: "approved",
| summary: "系统内置模板",
| }),
| ],
| },
| "EnterpriseNews/news-manage": {
| title: "企业新闻",
| module: "企业新闻",
| storageKey: "oa_enterprise_news_v1",
| path: OA_NAV.enterpriseNews,
| fields: [
| { label: "栏目", prop: "category" },
| { label: "阅读量", prop: "readCount" },
| ],
| mockRows: [
| baseRow({
| category: "公司动态",
| readCount: "128",
| status: "published",
| summary: "2026年第一季度经营通报",
| }),
| ],
| },
| "NoticeAnnouncement/notice-manage": {
| title: "公告通知",
| module: "公告通知",
| storageKey: "oa_notice_announcement_v1",
| path: OA_NAV.noticeAnnouncement,
| fields: [
| { label: "公告类型", prop: "noticeType" },
| { label: "优先级", prop: "priority" },
| ],
| mockRows: [
| baseRow({
| noticeType: "企业公告",
| priority: "普通",
| status: "published",
| summary: "五一劳动节放假安排",
| }),
| ],
| },
| };
|
| export function getOaPageConfig(pageKey) {
| return OA_PAGE_REGISTRY[pageKey] || null;
| }
|
| export function getStatusMeta(status) {
| return STATUS_MAP[status] || { text: status || "—", type: "info" };
| }
|
|