add askleave page
parent
dd8c7e0b92
commit
edcd5dcbb7
|
|
@ -21,10 +21,12 @@ export default [
|
||||||
path: '/leader',
|
path: '/leader',
|
||||||
name: '值班管理',
|
name: '值班管理',
|
||||||
icon: 'team',
|
icon: 'team',
|
||||||
|
access: 'canLeader',
|
||||||
routes: [
|
routes: [
|
||||||
{ path: '/leader', redirect: '/leader/conclusion' },
|
{ path: '/leader', redirect: '/leader/conclusion' },
|
||||||
{ path: '/leader/conclusion', name: '值班总结管理', component: './Leader/Conclusion' },
|
{ path: '/leader/conclusion', name: '值班总结管理', component: './Leader/Conclusion' },
|
||||||
{ path: '/leader/report', name: '反馈信息', component: './Leader/Report' },
|
{ path: '/leader/report', name: '反馈信息', component: './Leader/Report' },
|
||||||
|
{ path: '/leader/askleave', name: '请假管理', component: './Leader/AskLeave' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{ name: '关于我们', icon: 'thunderbolt', path: '/about', component: './About' },
|
{ name: '关于我们', icon: 'thunderbolt', path: '/about', component: './About' },
|
||||||
|
|
|
||||||
38
doc/api.md
38
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": "晓洋" // 未找人代班则为空
|
||||||
|
}
|
||||||
|
// ...
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
|
||||||
|
|
@ -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": "晓洋"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
@ -3,6 +3,7 @@ import loglist from './loglist.json';
|
||||||
import reportlist from './reportlist.json';
|
import reportlist from './reportlist.json';
|
||||||
import sheet from './sheet.json';
|
import sheet from './sheet.json';
|
||||||
import sheetlist from './sheetlist.json';
|
import sheetlist from './sheetlist.json';
|
||||||
|
import askleavelist from './askleavelist.json';
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
'GET /stats': {
|
'GET /stats': {
|
||||||
|
|
@ -79,6 +80,12 @@ module.exports = {
|
||||||
total: 24,
|
total: 24,
|
||||||
data: conclusionlist,
|
data: conclusionlist,
|
||||||
},
|
},
|
||||||
|
'GET /leader/askleavelist': {
|
||||||
|
success: true,
|
||||||
|
page: 1,
|
||||||
|
total: 24,
|
||||||
|
data: askleavelist,
|
||||||
|
},
|
||||||
'GET /api/currentUser': {
|
'GET /api/currentUser': {
|
||||||
success: true,
|
success: true,
|
||||||
data: {
|
data: {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -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 (
|
||||||
|
<PageContainer>
|
||||||
|
<Card>
|
||||||
|
<ProList<AskLeaveItem>
|
||||||
|
search={{
|
||||||
|
filterType: 'light',
|
||||||
|
}}
|
||||||
|
rowKey="op"
|
||||||
|
headerTitle="请假列表"
|
||||||
|
request={async (params = {} as Record<string, any>) =>
|
||||||
|
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 (
|
||||||
|
<Space size={0}>
|
||||||
|
<Tag color="blue" key={row.member}>
|
||||||
|
{transAskLeave(row.week, row.shift)}
|
||||||
|
</Tag>
|
||||||
|
<Tag color={row.substitute ? 'green' : 'red'} key={row.member}>
|
||||||
|
{row.substitute ? '代班:' + row.substitute : '未找人代班'}
|
||||||
|
</Tag>
|
||||||
|
</Space>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
title: '值班时间',
|
||||||
|
search: false,
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
dataIndex: 'reason',
|
||||||
|
search: false,
|
||||||
|
render: (_, row) => {
|
||||||
|
return <div>{row.reason}</div>;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
extra: {
|
||||||
|
dataIndex: 'time',
|
||||||
|
render: (_: React.ReactNode, row: AskLeaveItem) => {
|
||||||
|
return (
|
||||||
|
<div style={{ marginLeft: '3vh' }}>
|
||||||
|
{moment(row.time).format('YYYY-M-D HH:mm:ss')}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
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: '第三班',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Card>
|
||||||
|
</PageContainer>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default Logs;
|
||||||
Loading…
Reference in New Issue