From edcd5dcbb7f4b91064c90a21ded549512c0ce8b1 Mon Sep 17 00:00:00 2001 From: Dawn1Ocean <1785590531@qq.com> Date: Tue, 7 May 2024 12:03:00 +0800 Subject: [PATCH] add askleave page --- config/routes.ts | 2 + doc/api.md | 38 +++++++ mock/askleavelist.json | 93 ++++++++++++++++ mock/requestRecord.mock.js | 7 ++ src/pages/Leader/AskLeave/askLeaveItem.ts | 34 ++++++ src/pages/Leader/AskLeave/index.tsx | 123 ++++++++++++++++++++++ 6 files changed, 297 insertions(+) create mode 100644 mock/askleavelist.json create mode 100644 src/pages/Leader/AskLeave/askLeaveItem.ts create mode 100644 src/pages/Leader/AskLeave/index.tsx diff --git a/config/routes.ts b/config/routes.ts index b8be565..5ce9588 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -21,10 +21,12 @@ export default [ path: '/leader', name: '值班管理', icon: 'team', + access: 'canLeader', routes: [ { path: '/leader', redirect: '/leader/conclusion' }, { path: '/leader/conclusion', name: '值班总结管理', component: './Leader/Conclusion' }, { path: '/leader/report', name: '反馈信息', component: './Leader/Report' }, + { path: '/leader/askleave', name: '请假管理', component: './Leader/AskLeave' }, ], }, { name: '关于我们', icon: 'thunderbolt', path: '/about', component: './About' }, diff --git a/doc/api.md b/doc/api.md index 51fc384..1c730d0 100644 --- a/doc/api.md +++ b/doc/api.md @@ -347,3 +347,41 @@ data: ] } ``` + +### 请假管理页面 + +#### 获取请假列表 `GET /leader/askleavelist` + +request: + +```json +{ + "current": 1, + "pageSize": 10, + "member?": "晓洋", // 如果不筛选则不出现在 request-body 内 + "week": "all" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun", // all 之外的选项用于筛选 + "shift": "all" | "first" | "second" | "third" // all 之外的选项用于筛选 +} +``` + +data: + +```json +{ + "page": 1, + "total": 24, + "success": true, + "data": [ + { + "member": "宇航员", + "avatar": "https://...", + "time": "2024-03-07T19:52:48.523303", + "week": "2", + "shift": "3", + "reason": "家庭原因", + "substitute": "晓洋" // 未找人代班则为空 + } + // ... + ] +} +``` diff --git a/mock/askleavelist.json b/mock/askleavelist.json new file mode 100644 index 0000000..ce16d7c --- /dev/null +++ b/mock/askleavelist.json @@ -0,0 +1,93 @@ +[ + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:48.523303", + "week": "2", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:49.523303", + "week": "2", + "shift": "1", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:50.523303", + "week": "2", + "shift": "2", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "晓洋", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:51.523303", + "week": "7", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:52.523303", + "week": "7", + "shift": "1", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:53.523303", + "week": "2", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:54.523303", + "week": "2", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:55.523303", + "week": "2", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:56.523303", + "week": "2", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + }, + { + "member": "宇航员", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "time": "2024-03-07T19:52:57.523303", + "week": "2", + "shift": "3", + "reason": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班", + "substitute": "晓洋" + } + ] + \ No newline at end of file diff --git a/mock/requestRecord.mock.js b/mock/requestRecord.mock.js index d51fb2b..0c4c1e1 100644 --- a/mock/requestRecord.mock.js +++ b/mock/requestRecord.mock.js @@ -3,6 +3,7 @@ import loglist from './loglist.json'; import reportlist from './reportlist.json'; import sheet from './sheet.json'; import sheetlist from './sheetlist.json'; +import askleavelist from './askleavelist.json'; module.exports = { 'GET /stats': { @@ -79,6 +80,12 @@ module.exports = { total: 24, data: conclusionlist, }, + 'GET /leader/askleavelist': { + success: true, + page: 1, + total: 24, + data: askleavelist, + }, 'GET /api/currentUser': { success: true, data: { diff --git a/src/pages/Leader/AskLeave/askLeaveItem.ts b/src/pages/Leader/AskLeave/askLeaveItem.ts new file mode 100644 index 0000000..03db798 --- /dev/null +++ b/src/pages/Leader/AskLeave/askLeaveItem.ts @@ -0,0 +1,34 @@ +export type AskLeaveItem = { + member: string; + time: string; + week: string; + shift: string; + reason: string; + substitute: string; +}; + +const weekMap: { [key: string]: string } = { + '1': '周一', + '2': '周二', + '3': '周三', + '4': '周四', + '5': '周五', + '6': '周六', + '7': '周日', +}; + +const shiftMap: { [key: string]: string } = { + '1': '第一班', + '2': '第二班', + '3': '第三班', +}; + + +const transAskLeave = (week: string, shift: string) => { + if (week === '7' && shift === '3') { + return '其他值班时间'; + } else { + return weekMap[week] + shiftMap[shift]; + } +}; +export default transAskLeave; diff --git a/src/pages/Leader/AskLeave/index.tsx b/src/pages/Leader/AskLeave/index.tsx new file mode 100644 index 0000000..c161e91 --- /dev/null +++ b/src/pages/Leader/AskLeave/index.tsx @@ -0,0 +1,123 @@ +import { PageContainer, ProList } from '@ant-design/pro-components'; +import { Card, Space, Tag } from 'antd'; +import moment from 'moment'; +import request from 'umi-request'; +import transAskLeave, { AskLeaveItem } from './askLeaveItem'; + +const Logs: React.FC = () => { + return ( + + + + search={{ + filterType: 'light', + }} + rowKey="op" + headerTitle="请假列表" + request={async (params = {} as Record) => + request<{ + data: AskLeaveItem[]; + }>('/leader/askleavelist', { + params, + }) + } + pagination={{ + pageSize: 10, + }} + metas={{ + title: { + dataIndex: 'member', + title: '用户', + }, + avatar: { + dataIndex: 'avatar', + search: false, + }, + subTitle: { + dataIndex: ['week', 'shift', 'substitute'], + render: (_, row) => { + return ( + + + {transAskLeave(row.week, row.shift)} + + + {row.substitute ? '代班:' + row.substitute : '未找人代班'} + + + ); + }, + title: '值班时间', + search: false, + }, + description: { + dataIndex: 'reason', + search: false, + render: (_, row) => { + return
{row.reason}
; + }, + }, + extra: { + dataIndex: 'time', + render: (_: React.ReactNode, row: AskLeaveItem) => { + return ( +
+ {moment(row.time).format('YYYY-M-D HH:mm:ss')} +
+ ); + }, + search: false, + }, + week: { + // 自己扩展的字段,主要用于筛选,不在列表中显示 + title: '星期', + valueType: 'select', + valueEnum: { + all: { text: '全部', status: 'Default' }, + mon: { + text: '周一', + }, + tue: { + text: '周二', + }, + wed: { + text: '周三', + }, + thu: { + text: '周四', + }, + fri: { + text: '周五', + }, + sat: { + text: '周六', + }, + sun: { + text: '周日', + }, + }, + }, + shift: { + // 自己扩展的字段,主要用于筛选,不在列表中显示 + title: '值班', + valueType: 'select', + valueEnum: { + all: { text: '全部', status: 'Default' }, + first: { + text: '第一班', + }, + second: { + text: '第二班', + }, + third: { + text: '第三班', + }, + }, + }, + }} + /> +
+
+ ); +}; +export default Logs;