add askleave page
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user