feat: required check in dutyinfo; change service in dutyinfo

mgy
Dawn1Ocean 2024-05-08 19:01:58 +08:00
parent 8f062b0e8c
commit 31fca48feb
3 changed files with 82 additions and 73 deletions

View File

@ -1,4 +1,4 @@
import { getDutyInfo, updateDutyInfo } from '@/services/api';
import { getDutyInfo } from '@/services/api';
import {
EditableProTable,
PageContainer,
@ -12,6 +12,7 @@ import {
} from '@ant-design/pro-components';
import { Card, message } from 'antd';
import { useEffect, useState } from 'react';
import request from 'umi-request';
import { Info } from './info';
type Shift = {
@ -81,20 +82,34 @@ const DutyInfo: React.FC = () => {
{contextHolder}
<Card>
{!loading && (
<ProForm<Info>
submitter={{
resetButtonProps: { style: { display: 'none' } },
submitButtonProps: {
style: { width: '31%' },
},
render: (_, doms) => {
return <div style={{ textAlign: 'center' }}>{doms}</div>;
},
}}
onFinish={updateDutyInfo}
initialValues={dutyInfo}
>
<div style={{ justifyContent: 'center', display: 'flex' }}>
<ProForm<Info>
submitter={{
resetButtonProps: { style: { display: 'none' } },
submitButtonProps: {
style: { width: '31%' },
},
render: (_, doms) => {
return <div style={{ textAlign: 'center' }}>{doms}</div>;
},
}}
onFinish={async (values) => {
setLoading(true);
request('/admin/duty/update', {
method: 'POST',
data: values,
})
.then(() => {
setLoading(false);
message.success('提交成功');
})
.catch((err) => {
setLoading(false);
message.error('提交失败:' + err);
});
}}
initialValues={dutyInfo}
>
<div style={{ justifyContent: 'center', display: 'flex' }}>
<ProFormRadio.Group
name="dutyStatus"
label="值班状态"
@ -113,8 +128,8 @@ const DutyInfo: React.FC = () => {
},
]}
/>
</div>
<div style={{ justifyContent: 'center', display: 'flex' }}>
</div>
<div style={{ justifyContent: 'center', display: 'flex' }}>
<ProFormDependency name={['dutyStatus']}>
{({ dutyStatus }) => {
if (dutyStatus === 'pause') {
@ -125,11 +140,13 @@ const DutyInfo: React.FC = () => {
name="offDutyReason"
label="值班暂停原因"
placeholder="请输入暂停值班的原因"
rules={[{ required: true }]}
/>
<ProFormDateTimePicker
name="dutyRecoverTime"
width="md"
label="值班恢复时间"
rules={[{ required: true }]}
/>
</div>
);
@ -142,55 +159,57 @@ const DutyInfo: React.FC = () => {
width="md"
min={0}
max={10}
rules={[{ required: true }]}
/>
);
}}
</ProFormDependency>
</div>
<ProFormDependency name={['dutyStatus']}>
{({ dutyStatus }) => {
if (dutyStatus === 'others') {
return (
<div style={{ justifyContent: 'center', display: 'flex' }}>
<ProForm.Item
label="其他值班班次"
name="dataSource"
initialValue={dutyInfo?.otherDutyTime}
trigger="onValuesChange"
style={{ width: '80%' }}
>
<EditableProTable<Shift>
rowKey="id"
toolBarRender={false}
columns={columns}
recordCreatorProps={{
newRecordType: 'dataSource',
position: 'bottom',
creatorButtonText: '新建一个值班班次',
style: { width: '100%', margin: 'auto', marginTop: '2%' },
record: () => ({
id: Date.now(),
title: '',
place: '',
range: [],
}),
}}
editable={{
type: 'multiple',
editableKeys,
onChange: setEditableRowKeys,
actionRender: (row, _, dom) => {
return [dom.delete];
},
}}
/>
</ProForm.Item>
</div>
);
}
}}
</ProFormDependency>
</ProForm>
</div>
<ProFormDependency name={['dutyStatus']}>
{({ dutyStatus }) => {
if (dutyStatus === 'others') {
return (
<div style={{ justifyContent: 'center', display: 'flex' }}>
<ProForm.Item
label="其他值班班次"
name="dataSource"
initialValue={dutyInfo?.otherDutyTime}
trigger="onValuesChange"
style={{ width: '80%' }}
rules={[{ required: true }]}
>
<EditableProTable<Shift>
rowKey="id"
toolBarRender={false}
columns={columns}
recordCreatorProps={{
newRecordType: 'dataSource',
position: 'bottom',
creatorButtonText: '新建一个值班班次',
style: { width: '100%', margin: 'auto', marginTop: '2%' },
record: () => ({
id: Date.now(),
title: '',
place: '',
range: [],
}),
}}
editable={{
type: 'multiple',
editableKeys,
onChange: setEditableRowKeys,
actionRender: (row, _, dom) => {
return [dom.delete];
},
}}
/>
</ProForm.Item>
</div>
);
}
}}
</ProFormDependency>
</ProForm>
)}
</Card>
</PageContainer>

View File

@ -208,7 +208,6 @@ const Login: React.FC = () => {
</ProFormCheckbox>
</div>
<div style={{ marginBottom: '2vh' }}>
{' '}
<Button
type="default"
block

View File

@ -1,6 +1,6 @@
// @ts-ignore
/* eslint-disable */
import { Info, ServerInfo } from '@/pages/Admin/DutyInfo/info';
import { ServerInfo } from '@/pages/Admin/DutyInfo/info';
import { Stat } from '@/pages/Welcome/stat';
import { request } from '@umijs/max';
import { API } from './typings';
@ -54,12 +54,3 @@ export async function getDutyInfo(options?: { [key: string]: any }) {
...(options || {}),
});
}
/** 上传当前值班信息 POST /admin/duty/update */
export async function updateDutyInfo(body: Info, options?: { [key: string]: any }) {
return request<boolean | void>('/admin/duty/update', {
method: 'POST',
data: body,
...(options || {}),
});
}