mock.js 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610
  1. export const currentUser = {
  2. id: 'ZY20230128', name: '陈晓雨', initials: '陈', department: '人力资源部', position: '人事专员',
  3. company: '中盈智能制造有限公司', phone: '138 **** 7621', entryDate: '2023-02-13', workAge: '3年5个月',
  4. maritalStatus: '已婚',
  5. bankCardList: [
  6. { id: 'icbc_8621', cardNumber: '6212 26 **** 8621', openingBank: '中国工商银行', branch: '北京海淀支行' },
  7. { id: 'ccb_4019', cardNumber: '6217 00 **** 4019', openingBank: '中国建设银行', branch: '北京中关村支行' },
  8. ],
  9. defaultBankCardId: 'icbc_8621',
  10. }
  11. export const quickActions = [
  12. { key: 'leave', label: '请假', icon: '假', color: '#5b8ff9' },
  13. { key: 'overtime', label: '加班', icon: '班', color: '#61cdbb' },
  14. { key: 'field', label: '外勤', icon: '外', color: '#65789b' },
  15. { key: 'trip', label: '出差', icon: '差', color: '#f6bd16' },
  16. { key: 'shift', label: '调班', icon: '调', color: '#7262fd' },
  17. { key: 'check', label: '补卡', icon: '卡', color: '#78d3f8' },
  18. { key: 'certificate', label: '证明', icon: '证', color: '#f6903d' },
  19. { key: 'resign', label: '离职', icon: '离', color: '#ee6666' },
  20. ]
  21. export const applicationTypes = {
  22. leave: { title: '请假申请', subtitle: '请选择假期类型与请假时间', icon: '假', color: '#5b8ff9' },
  23. overtime: { title: '加班申请', subtitle: '记录加班时间与工作内容', icon: '班', color: '#61cdbb' },
  24. field: { title: '外勤申请', subtitle: '填写外勤地点与工作事项', icon: '外', color: '#65789b' },
  25. trip: { title: '出差申请', subtitle: '填写出差行程与事由', icon: '差', color: '#f6bd16' },
  26. shift: { title: '调班申请', subtitle: '选择原班次与目标班次', icon: '调', color: '#7262fd' },
  27. check: { title: '补卡申请', subtitle: '选择异常日期并说明原因', icon: '卡', color: '#78d3f8' },
  28. resign: { title: '离职申请', subtitle: '填写预计离职日期与原因', icon: '离', color: '#ee6666' },
  29. transfer: { title: '调岗申请', subtitle: '填写目标岗位与申请理由', icon: '岗', color: '#9270ca' },
  30. regular: { title: '转正申请', subtitle: '提交试用期工作总结', icon: '正', color: '#269a99' },
  31. certificate: { title: '证明申请', subtitle: '选择需要开具的证明类型', icon: '证', color: '#f6903d' },
  32. }
  33. export const approvals = [
  34. { id: 101, type: '请假申请', applicant: '李明', dept: '生产一部', avatar: '李', summary: '年假 · 8月7日 08:30 至 8月8日 17:30', time: '今天 09:42', status: '待审批', color: '#5b8ff9', days: '2天', reason: '陪同家人前往医院复查,工作已与王强完成交接。' },
  35. { id: 102, type: '补卡申请', applicant: '周倩', dept: '财务部', avatar: '周', summary: '8月4日 下班卡 · 忘记打卡', time: '昨天 18:20', status: '待审批', color: '#78d3f8', days: '', reason: '下班时临时接待审计人员,离开公司时忘记打卡。' },
  36. { id: 103, type: '加班申请', applicant: '王建国', dept: '设备管理部', avatar: '王', summary: '8月6日 18:00-21:00 · 设备检修', time: '昨天 16:08', status: '待审批', color: '#61cdbb', days: '3小时', reason: '完成3号产线月度预防性维护。' },
  37. ]
  38. export const contacts = [
  39. { id: 1, name: '高志强', dept: '总经办', position: '总经理', avatar: '高', phone: '138 0013 8000' },
  40. { id: 2, name: '宋慧敏', dept: '人力资源部', position: '人力资源总监', avatar: '宋', phone: '139 1156 2038' },
  41. { id: 3, name: '陈晓雨', dept: '人力资源部', position: '人事专员', avatar: '陈', phone: '138 6678 7621' },
  42. { id: 4, name: '李明', dept: '生产一部', position: '工艺工程师', avatar: '李', phone: '186 3280 1902' },
  43. { id: 5, name: '王建国', dept: '设备管理部', position: '设备主管', avatar: '王', phone: '137 2098 3116' },
  44. { id: 6, name: '周倩', dept: '财务部', position: '成本会计', avatar: '周', phone: '135 7721 4520' },
  45. { id: 7, name: '赵磊', dept: '品质管理部', position: '质量工程师', avatar: '赵', phone: '187 1102 5821' },
  46. ]
  47. export const notices = [
  48. { id: 1, title: '关于2026年高温假及防暑降温工作的通知', date: '08-04', tag: '公司通知', read: false },
  49. { id: 2, title: '8月份员工生日会活动报名开始啦', date: '08-02', tag: '员工活动', read: false },
  50. { id: 3, title: '新版考勤管理制度自8月1日起执行', date: '07-28', tag: '制度发布', read: true },
  51. ]
  52. export const onboardStatus = {
  53. pending: { label: '待入职', class: 'status-pending' },
  54. processing: { label: '入职中', class: 'status-processing' },
  55. done: { label: '已入职', class: 'status-approved' },
  56. overdue: { label: '已逾期', class: 'status-rejected' },
  57. }
  58. // 入职流程节点定义(详情页时间线用)
  59. export const onboardStages = [
  60. { key: 'offer', label: 'Offer 确认', desc: '候选人确认入职意向与到岗日期' },
  61. { key: 'materials', label: '资料收集', desc: '身份证、学历、体检等入职材料' },
  62. { key: 'contract', label: '合同签订', desc: '电子合同 / 纸质合同签署' },
  63. { key: 'social', label: '社保办理', desc: '社保、公积金参保登记' },
  64. { key: 'account', label: '账号开通', desc: '邮箱、门禁、办公系统账号' },
  65. { key: 'training', label: '岗前培训', desc: '新员工入职培训与考试' },
  66. { key: 'onboard', label: '部门接收', desc: '工位分配、直属上级、试用期安排' },
  67. ]
  68. // 办理步骤(与 PC 端 onboardingHandling 五步一致)
  69. export const onboardingStepDefs = [
  70. { key: 'offer', label: 'Offer 发起', icon: '发', desc: '候选人确认入职意向与 Offer' },
  71. { key: 'profile', label: '档案录入', icon: '录', desc: '候选人手机端提交档案资料' },
  72. { key: 'contract', label: '签署合同', icon: '签', desc: '电子合同 / 纸质合同签署' },
  73. { key: 'assets', label: '物品领用', icon: '领', desc: '工牌、工位、办公设备发放' },
  74. { key: 'complete', label: '完成入职', icon: '完', desc: '完成全部流程,进入试用期' },
  75. ]
  76. export const onboardingStepText = {
  77. offer: { empty: '未发起', done: '已发起' },
  78. profile: { empty: '待录入', done: '档案已完善' },
  79. contract: { empty: '未签署', done: '已签署' },
  80. assets: { empty: '未领用', done: '已领用' },
  81. complete: { empty: '待确认', done: '已完成' },
  82. }
  83. export const onboardingDepartments = [
  84. { id: 10, name: '中盈智能科技股份有限公司', type: 'company', parentId: 0, sort: 1 },
  85. { id: 11, name: '中盈产业集团有限公司', type: 'company', parentId: 0, sort: 2 },
  86. { id: 20, name: '北京天成伟达工程有限公司', type: 'company', parentId: 0, sort: 3 },
  87. { id: 101, name: '总经办', type: 'dept', parentId: 10, sort: 1 },
  88. { id: 102, name: '人力资源部', type: 'dept', parentId: 10, sort: 2 },
  89. { id: 103, name: '财务部', type: 'dept', parentId: 10, sort: 3 },
  90. { id: 104, name: '产品研发部', type: 'dept', parentId: 10, sort: 4 },
  91. { id: 105, name: '生产运营部', type: 'dept', parentId: 10, sort: 5 },
  92. { id: 110, name: '人力资源部', type: 'dept', parentId: 11, sort: 1 },
  93. { id: 111, name: '市场部', type: 'dept', parentId: 11, sort: 2 },
  94. { id: 112, name: '商务部', type: 'dept', parentId: 11, sort: 3 },
  95. { id: 201, name: '前端组', type: 'dept', parentId: 104, sort: 1 },
  96. { id: 202, name: '后端组', type: 'dept', parentId: 104, sort: 2 },
  97. { id: 203, name: '测试组', type: 'dept', parentId: 104, sort: 3 },
  98. { id: 204, name: '生产一部', type: 'dept', parentId: 105, sort: 1 },
  99. { id: 205, name: '生产二部', type: 'dept', parentId: 105, sort: 2 },
  100. { id: 206, name: '设备管理部', type: 'dept', parentId: 105, sort: 3 },
  101. { id: 207, name: '品质管理部', type: 'dept', parentId: 105, sort: 4 },
  102. { id: 301, name: '3 号产线', type: 'dept', parentId: 204, sort: 1 },
  103. { id: 302, name: '装配班组', type: 'dept', parentId: 205, sort: 1 },
  104. ]
  105. export const employmentTypes = [
  106. { value: 'FULL_TIME', label: '全职' },
  107. { value: 'INTERN', label: '实习' },
  108. { value: 'PART_TIME', label: '兼职' },
  109. { value: 'OTHER', label: '其他' },
  110. ]
  111. export const probationMonthOptions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
  112. export const invitationValidDays = [3, 7, 14, 30, 60, 90]
  113. export const defaultOnboardingInvitations = [
  114. {
  115. invitationId: 'INV20260915001',
  116. invitationNo: 'INV20260915001',
  117. onboardingId: 'ZY20260915',
  118. name: '孙浩',
  119. department: '生产一部',
  120. position: '工艺员',
  121. legalId: 10,
  122. employmentType: 'FULL_TIME',
  123. offer: '待填写',
  124. invitationStatus: 'PENDING',
  125. publicPath: '/onboarding/public/ZY20260915',
  126. publicToken: 'ZY20260915',
  127. expiresAt: '2026-10-15T00:00:00',
  128. createdAt: '2026-09-12T00:00:00',
  129. },
  130. ]
  131. export const onboardings = [
  132. {
  133. id: 'ZY20260915',
  134. onboardingId: 'ZY20260915',
  135. invitationId: 'INV20260915001',
  136. invitationNo: 'INV20260915001',
  137. employeeNo: 'ZY20260915',
  138. name: '孙浩',
  139. avatar: '孙',
  140. company: '中盈智能科技股份有限公司',
  141. legalId: 10,
  142. department: '生产一部',
  143. deptId: 204,
  144. position: '工艺员',
  145. positionId: 5,
  146. source: '社会招聘',
  147. status: 'pending',
  148. expectedEntryDate: '2026-09-15',
  149. entryDate: null,
  150. probationMonths: 3,
  151. probationEndDate: '2026-12-15',
  152. probationFlag: 1,
  153. validDays: 7,
  154. createMode: 'manual',
  155. flow: '待补充档案',
  156. offer: '待填写',
  157. contract: '未签署',
  158. assets: '未领用',
  159. remark: '',
  160. publicPath: '/onboarding/public/ZY20260915',
  161. publicToken: 'ZY20260915',
  162. invitationStatus: 'PENDING',
  163. rowType: 'record',
  164. phone: '186 1234 5678',
  165. email: 'sunhao@aimill.com',
  166. idNumber: '430102********1826',
  167. gender: '男',
  168. age: 28,
  169. employmentType: 'FULL_TIME',
  170. mentor: '李明',
  171. materials: {
  172. identityCard: true,
  173. degreeCertificate: true,
  174. physicalReport: true,
  175. photo: true,
  176. bankCard: true,
  177. resignationCert: false,
  178. },
  179. contractDetail: { status: '待签订', signMethod: '电子签', deadline: '2026-09-14' },
  180. socialSecurity: { status: '办理中', city: '北京', deadline: '2026-09-30' },
  181. training: { status: '未开始', name: '新员工入职培训', duration: '2天', deadline: '2026-09-20' },
  182. workstation: { status: '已分配', location: '生产一部 3号工位' },
  183. itAccount: { status: '待开通', items: ['邮箱', '门禁', 'OA'] },
  184. stage: 'materials',
  185. },
  186. {
  187. id: 'ZY20260918',
  188. onboardingId: 'ZY20260918',
  189. invitationId: '',
  190. invitationNo: '',
  191. employeeNo: 'ZY20260918',
  192. name: '胡静',
  193. avatar: '胡',
  194. company: '中盈智能科技股份有限公司',
  195. legalId: 10,
  196. department: '财务部',
  197. deptId: 103,
  198. position: '出纳',
  199. positionId: 5,
  200. source: '社会招聘',
  201. status: 'processing',
  202. expectedEntryDate: '2026-09-18',
  203. entryDate: '2026-09-18',
  204. probationMonths: 6,
  205. probationEndDate: '2027-03-18',
  206. probationFlag: 1,
  207. validDays: 7,
  208. createMode: 'manual',
  209. flow: '档案已完善',
  210. offer: '已发起',
  211. contract: '已签署',
  212. assets: '已领用',
  213. remark: '',
  214. publicPath: '',
  215. publicToken: '',
  216. invitationStatus: '',
  217. rowType: 'record',
  218. phone: '135 7721 4521',
  219. email: 'hujing@aimill.com',
  220. idNumber: '110108********3261',
  221. gender: '女',
  222. age: 24,
  223. employmentType: 'FULL_TIME',
  224. mentor: '周倩',
  225. materials: {
  226. identityCard: true,
  227. degreeCertificate: true,
  228. physicalReport: true,
  229. photo: true,
  230. bankCard: true,
  231. resignationCert: true,
  232. },
  233. contractDetail: { status: '已签订', signMethod: '电子签', signDate: '2026-09-10' },
  234. socialSecurity: { status: '已办理', city: '北京', deadline: '2026-09-25' },
  235. training: { status: '进行中', name: '新员工入职培训', duration: '2天', deadline: '2026-09-20' },
  236. workstation: { status: '已分配', location: '财务部 2楼 201' },
  237. itAccount: { status: '已开通', items: ['邮箱', '门禁', 'OA', '财务系统'] },
  238. stage: 'training',
  239. },
  240. {
  241. id: 'ZY20260804',
  242. onboardingId: 'ZY20260804',
  243. invitationId: '',
  244. invitationNo: '',
  245. employeeNo: 'ZY20260804',
  246. name: '郑凯',
  247. avatar: '郑',
  248. company: '中盈智能科技股份有限公司',
  249. legalId: 10,
  250. department: '设备管理部',
  251. deptId: 206,
  252. position: '技工',
  253. positionId: 5,
  254. source: '社会招聘',
  255. status: 'done',
  256. expectedEntryDate: '2026-08-04',
  257. entryDate: '2026-08-04',
  258. probationMonths: 3,
  259. probationEndDate: '2026-11-04',
  260. probationFlag: 1,
  261. validDays: 7,
  262. createMode: 'manual',
  263. flow: '档案已完善',
  264. offer: '已发起',
  265. contract: '已签署',
  266. assets: '已领用',
  267. remark: '',
  268. publicPath: '',
  269. publicToken: '',
  270. invitationStatus: '',
  271. rowType: 'record',
  272. phone: '137 2098 3201',
  273. email: 'zhengkai@aimill.com',
  274. idNumber: '370105********9214',
  275. gender: '男',
  276. age: 32,
  277. employmentType: 'FULL_TIME',
  278. mentor: '王建国',
  279. materials: {
  280. identityCard: true,
  281. degreeCertificate: true,
  282. physicalReport: true,
  283. photo: true,
  284. bankCard: true,
  285. resignationCert: true,
  286. },
  287. contractDetail: { status: '已签订', signMethod: '纸质签', signDate: '2026-08-03' },
  288. socialSecurity: { status: '已办理', city: '北京', deadline: '2026-08-20' },
  289. training: { status: '已完成', name: '新员工入职培训', duration: '2天', deadline: '2026-08-08' },
  290. workstation: { status: '已分配', location: '设备管理部 主楼 B102' },
  291. itAccount: { status: '已开通', items: ['邮箱', '门禁', 'OA', 'EAM'] },
  292. stage: 'onboard',
  293. },
  294. {
  295. id: 'ZY20260905',
  296. onboardingId: 'ZY20260905',
  297. invitationId: '',
  298. invitationNo: '',
  299. employeeNo: 'ZY20260905',
  300. name: '刘洋',
  301. avatar: '刘',
  302. company: '中盈智能科技股份有限公司',
  303. legalId: 10,
  304. department: '品质管理部',
  305. deptId: 207,
  306. position: '质量工程师',
  307. positionId: 5,
  308. source: '社会招聘',
  309. status: 'overdue',
  310. expectedEntryDate: '2026-09-05',
  311. entryDate: null,
  312. probationMonths: 3,
  313. probationEndDate: null,
  314. probationFlag: 1,
  315. validDays: 7,
  316. createMode: 'manual',
  317. flow: '档案已完善',
  318. offer: '已发起',
  319. contract: '待签署',
  320. assets: '未领用',
  321. remark: '',
  322. publicPath: '',
  323. publicToken: '',
  324. invitationStatus: '',
  325. rowType: 'record',
  326. phone: '186 9988 1100',
  327. email: 'liuyang@aimill.com',
  328. idNumber: '510104********5418',
  329. gender: '女',
  330. age: 29,
  331. employmentType: 'FULL_TIME',
  332. mentor: '赵磊',
  333. materials: {
  334. identityCard: true,
  335. degreeCertificate: true,
  336. physicalReport: false,
  337. photo: false,
  338. bankCard: false,
  339. resignationCert: true,
  340. },
  341. contractDetail: { status: '待签订', signMethod: '电子签', deadline: '2026-09-04' },
  342. socialSecurity: { status: '未办理', city: '北京', deadline: null },
  343. training: { status: '未开始', name: '新员工入职培训', duration: '2天', deadline: null },
  344. workstation: { status: '待分配', location: '' },
  345. itAccount: { status: '未开通', items: [] },
  346. stage: 'contract',
  347. },
  348. ]
  349. // 内置入职记录(mock);用户通过表单新增的记录由 storage.js 维护
  350. export const defaultOnboardings = onboardings
  351. // 入职流程可选项
  352. export const onboardOptions = {
  353. sources: ['社会招聘', '校园招聘', '内部转岗', '实习留用'],
  354. departments: [
  355. '总经办',
  356. '人力资源部',
  357. '财务部',
  358. '生产一部',
  359. '生产二部',
  360. '研发中心',
  361. '品质管理部',
  362. '设备管理部',
  363. '采购部',
  364. '市场部',
  365. ],
  366. probationMonths: [1, 2, 3, 6],
  367. signMethods: ['电子签', '纸质签'],
  368. }
  369. // 工号生成:ZY + YYYYMMDD + 3 位序号;同一日期去重
  370. export function generateEmployeeId(usedIds = []) {
  371. const d = new Date()
  372. const ymd = `${d.getFullYear()}${String(d.getMonth() + 1).padStart(2, '0')}${String(d.getDate()).padStart(2, '0')}`
  373. for (let i = 0; i < 999; i++) {
  374. const seq = String(i + 1).padStart(3, '0')
  375. const id = `ZY${ymd}${seq}`
  376. if (!usedIds.includes(id)) return id
  377. }
  378. return `ZY${ymd}${Date.now().toString().slice(-3)}`
  379. }
  380. export const workModules = [
  381. { group: '员工服务', items: [
  382. { label: '我的申请', icon: '申', color: '#5b8ff9', url: '/pages/apply/list' },
  383. { label: '我的考勤', icon: '勤', color: '#61cdbb', url: '/pages/attendance/index' },
  384. { label: '工资条', icon: '薪', color: '#f6bd16', url: '/pages/salary/index' },
  385. { label: '假期余额', icon: '假', color: '#5d7092', url: '/pages/leave/index' },
  386. { label: '绩效记录', icon: '绩', color: '#9270ca', url: '/pages/performance/index' },
  387. { label: '培训学习', icon: '学', color: '#269a99', url: '/pages/training/index' },
  388. { label: '个人档案', icon: '档', color: '#f6903d', url: '/pages/profile/edit' },
  389. { label: '证明申请', icon: '证', color: '#6dc8ec', url: '/pages/apply/form?type=certificate' },
  390. { label: '离职申请', icon: '离', color: '#ee6666', url: '/pages/apply/form?type=resign' },
  391. ] },
  392. { group: '人事管理', items: [
  393. { label: '审批中心', icon: '审', color: '#1677ff', url: '/pages/approval/index', badge: 3 },
  394. { label: '排班查询', icon: '排', color: '#61cdbb', url: '/pages/attendance/index' },
  395. { label: '员工通讯录', icon: '员', color: '#65789b', url: '/pages/contacts/index' },
  396. { label: '招聘面试', icon: '聘', color: '#f6bd16', url: '/pages/manage/index?type=recruit' },
  397. { label: '合同管理', icon: '合', color: '#7262fd', url: '/pages/manage/index?type=contract' },
  398. { label: '员工入职', icon: '入', color: '#78d3f8', url: '/pages/manage/index?type=onboard' },
  399. { label: '人事异动', icon: '动', color: '#f6903d', url: '/pages/manage/index?type=transfer' },
  400. { label: '离职管理', icon: '离', color: '#ee6666', url: '/pages/manage/index?type=resign' },
  401. { label: '数据看板', icon: '数', color: '#5ad8a6', url: '/pages/manage/index?type=dashboard' },
  402. ] },
  403. ]
  404. export const resignStatus = {
  405. pending: { label: '待审批', class: 'status-pending' },
  406. processing: { label: '进行中', class: 'status-processing' },
  407. done: { label: '已离职', class: 'status-approved' },
  408. overdue: { label: '已逾期', class: 'status-rejected' },
  409. cancelled: { label: '已撤回', class: 'status-rejected' },
  410. }
  411. export const resignStages = [
  412. { key: 'submit', label: '申请提交', desc: '员工提交离职申请并填写预计离职日' },
  413. { key: 'manager', label: '直属主管审批', desc: '直属上级确认业务交接可行性' },
  414. { key: 'department', label: '部门负责人审批', desc: '部门负责人审批离职安排' },
  415. { key: 'hrbp', label: 'HRBP 审批', desc: 'HRBP 复核离职条件与补偿方案' },
  416. { key: 'handover', label: '工作交接', desc: '交接人确认工作内容、客户与文档移交' },
  417. { key: 'assetReturn', label: '资产归还', desc: '办公设备、工牌、门禁卡归还登记' },
  418. { key: 'finance', label: '财务结算', desc: '工资、补偿金、年假折算与社保停缴' },
  419. { key: 'certificate', label: '离职证明/账号注销', desc: '开具离职证明并注销 OA/门禁/邮箱账号' },
  420. ]
  421. export const resignings = [
  422. {
  423. id: 'ZY20260812',
  424. name: '郭峰',
  425. avatar: '郭',
  426. department: '设备管理部',
  427. position: '设备维修工',
  428. entryDate: '2019-03-18',
  429. status: 'processing',
  430. expectedLeaveDate: '2026-08-25',
  431. lastWorkDate: null,
  432. submitDate: '2026-08-12',
  433. type: '主动离职',
  434. reason: '寻求个人发展',
  435. handover: {
  436. person: '王建国',
  437. dept: '设备管理部',
  438. progress: '70%',
  439. deadline: '2026-08-25',
  440. items: [
  441. 'EAM 系统权限与账号交接',
  442. '3 号产线设备维护记录归档',
  443. '测量仪器校准台账移交',
  444. '备件库存盘点表交接',
  445. ],
  446. },
  447. compensation: { scheme: 'N+1', amount: '¥ 48,200', status: '审批中', note: '按最近 12 个月平均工资计算' },
  448. assetReturn: {
  449. status: '部分归还',
  450. items: [
  451. { name: '工牌', returned: true, remark: '已交还前台' },
  452. { name: '门禁卡', returned: true, remark: '已注销' },
  453. { name: '办公电脑', returned: false, remark: '预计 8/24 归还' },
  454. { name: '测量仪器', returned: false, remark: '等待王建国验收' },
  455. ],
  456. },
  457. contractTermination: { method: '协商解除', deadline: '2026-08-25', status: '办理中' },
  458. socialSecurity: { stopMonth: '2026-08', city: '北京', status: '办理中' },
  459. financeSettle: { lastSalary: '¥ 12,800', annualLeave: '3 天', compensation: '¥ 23,400', payoutDate: '2026-08-31', status: '办理中' },
  460. accountOff: { status: '办理中', items: ['OA', '门禁', 'EAM'] },
  461. certificate: { status: '待开具', needCopy: true },
  462. stage: 'handover',
  463. },
  464. {
  465. id: 'ZY20260710',
  466. name: '陈静',
  467. avatar: '陈',
  468. department: '财务部',
  469. position: '成本会计',
  470. entryDate: '2018-06-01',
  471. status: 'done',
  472. expectedLeaveDate: '2026-07-31',
  473. lastWorkDate: '2026-07-31',
  474. submitDate: '2026-07-10',
  475. type: '主动离职',
  476. reason: '家庭原因',
  477. handover: {
  478. person: '周倩',
  479. dept: '财务部',
  480. progress: '100%',
  481. deadline: '2026-07-31',
  482. items: [
  483. '成本核算月度结转 SOP',
  484. '供应商对账单归档',
  485. 'ERP 系统操作权限交接',
  486. '银行回单与发票管理移交',
  487. ],
  488. },
  489. compensation: { scheme: '协商一致', amount: '¥ 32,000', status: '已发放', note: '一次性协商补偿' },
  490. assetReturn: {
  491. status: '已归还',
  492. items: [
  493. { name: '工牌', returned: true, remark: '已归档' },
  494. { name: '门禁卡', returned: true, remark: '已注销' },
  495. { name: '办公电脑', returned: true, remark: '已回收' },
  496. ],
  497. },
  498. contractTermination: { method: '协商解除', deadline: '2026-07-31', status: '已解除' },
  499. socialSecurity: { stopMonth: '2026-07', city: '北京', status: '已停缴' },
  500. financeSettle: { lastSalary: '¥ 14,500', annualLeave: '5 天', compensation: '¥ 32,000', payoutDate: '2026-08-15', status: '已结算' },
  501. accountOff: { status: '已注销', items: ['OA', '门禁', '邮箱', 'ERP'] },
  502. certificate: { status: '已开具', needCopy: true },
  503. stage: 'certificate',
  504. },
  505. {
  506. id: 'ZY20260825',
  507. name: '黄亮',
  508. avatar: '黄',
  509. department: '研发中心',
  510. position: '前端工程师',
  511. entryDate: '2022-04-11',
  512. status: 'pending',
  513. expectedLeaveDate: '2026-09-30',
  514. lastWorkDate: null,
  515. submitDate: '2026-08-25',
  516. type: '主动离职',
  517. reason: '职业转型',
  518. handover: {
  519. person: '待指派',
  520. dept: '研发中心',
  521. progress: '0%',
  522. deadline: '2026-09-30',
  523. items: [
  524. 'HR H5 前端代码仓库交接',
  525. 'BPM 表单设计文档移交',
  526. '组件库版本与权限交接',
  527. '未完成工单与发布计划',
  528. ],
  529. },
  530. compensation: { scheme: 'N', amount: '—', status: '待核算', note: 'HRBP 复核中' },
  531. assetReturn: {
  532. status: '未开始',
  533. items: [
  534. { name: '工牌', returned: false, remark: '' },
  535. { name: '门禁卡', returned: false, remark: '' },
  536. { name: '办公电脑', returned: false, remark: '' },
  537. ],
  538. },
  539. contractTermination: { method: '提前 30 日通知', deadline: '2026-09-30', status: '待解除' },
  540. socialSecurity: { stopMonth: '2026-09', city: '北京', status: '待办理' },
  541. financeSettle: { lastSalary: '¥ 18,000', annualLeave: '2 天', compensation: '—', payoutDate: '', status: '待核算' },
  542. accountOff: { status: '待注销', items: [] },
  543. certificate: { status: '待开具', needCopy: true },
  544. stage: 'submit',
  545. },
  546. {
  547. id: 'ZY20260805',
  548. name: '马涛',
  549. avatar: '马',
  550. department: '生产一部',
  551. position: '工艺工程师',
  552. entryDate: '2020-09-15',
  553. status: 'overdue',
  554. expectedLeaveDate: '2026-08-05',
  555. lastWorkDate: '2026-08-05',
  556. submitDate: '2026-07-25',
  557. type: '协商离职',
  558. reason: '公司调整',
  559. handover: {
  560. person: '李明',
  561. dept: '生产一部',
  562. progress: '40%',
  563. deadline: '2026-08-05',
  564. items: [
  565. '工艺路线文档移交',
  566. '3 号产线 SOP 交接',
  567. '质量异常台账',
  568. '设备参数与配方归档',
  569. ],
  570. },
  571. compensation: { scheme: 'N+1', amount: '¥ 56,800', status: '审批中', note: '需 HRBP 加急复核' },
  572. assetReturn: {
  573. status: '部分归还',
  574. items: [
  575. { name: '工牌', returned: true, remark: '已交还' },
  576. { name: '门禁卡', returned: false, remark: '未归还' },
  577. { name: '办公电脑', returned: false, remark: '未归还' },
  578. { name: '测量仪器', returned: true, remark: '已交接' },
  579. ],
  580. },
  581. contractTermination: { method: '协商解除', deadline: '2026-08-05', status: '已逾期' },
  582. socialSecurity: { stopMonth: '2026-08', city: '北京', status: '已逾期' },
  583. financeSettle: { lastSalary: '¥ 13,200', annualLeave: '4 天', compensation: '¥ 56,800', payoutDate: '', status: '已逾期' },
  584. accountOff: { status: '部分注销', items: ['门禁'] },
  585. certificate: { status: '待开具', needCopy: true },
  586. stage: 'assetReturn',
  587. },
  588. ]