import {
|
ProFormDateTimePicker,
|
ProFormRadio,
|
ProFormSelect,
|
ProFormText,
|
ProFormTextArea,
|
StepsForm,
|
} from '@ant-design/pro-components';
|
import { FormattedMessage, useIntl } from '@umijs/max';
|
import { Modal } from 'antd';
|
import React from 'react';
|
|
export type FormValueType = {
|
target?: string;
|
template?: string;
|
type?: string;
|
time?: string;
|
frequency?: string;
|
} & Partial<API.RuleListItem>;
|
|
export type UpdateFormProps = {
|
onCancel: (flag?: boolean, formVals?: FormValueType) => void;
|
onSubmit: (values: FormValueType) => Promise<void>;
|
updateModalOpen: boolean;
|
values: Partial<API.RuleListItem>;
|
};
|
|
const UpdateForm: React.FC<UpdateFormProps> = (props) => {
|
const intl = useIntl();
|
return (
|
<StepsForm
|
stepsProps={{
|
size: 'small',
|
}}
|
stepsFormRender={(dom, submitter) => {
|
return (
|
<Modal
|
width={640}
|
bodyStyle={{ padding: '32px 40px 48px' }}
|
destroyOnClose
|
title={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleConfig',
|
defaultMessage: '规则配置',
|
})}
|
open={props.updateModalOpen}
|
footer={submitter}
|
onCancel={() => {
|
props.onCancel();
|
}}
|
>
|
{dom}
|
</Modal>
|
);
|
}}
|
onFinish={props.onSubmit}
|
>
|
<StepsForm.StepForm
|
initialValues={{
|
name: props.values.name,
|
desc: props.values.desc,
|
}}
|
title={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.basicConfig',
|
defaultMessage: '基本信息',
|
})}
|
>
|
<ProFormText
|
name="name"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleName.nameLabel',
|
defaultMessage: '规则名称',
|
})}
|
width="md"
|
rules={[
|
{
|
required: true,
|
message: (
|
<FormattedMessage
|
id="pages.searchTable.updateForm.ruleName.nameRules"
|
defaultMessage="请输入规则名称!"
|
/>
|
),
|
},
|
]}
|
/>
|
<ProFormTextArea
|
name="desc"
|
width="md"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleDesc.descLabel',
|
defaultMessage: '规则描述',
|
})}
|
placeholder={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleDesc.descPlaceholder',
|
defaultMessage: '请输入至少五个字符',
|
})}
|
rules={[
|
{
|
required: true,
|
message: (
|
<FormattedMessage
|
id="pages.searchTable.updateForm.ruleDesc.descRules"
|
defaultMessage="请输入至少五个字符的规则描述!"
|
/>
|
),
|
min: 5,
|
},
|
]}
|
/>
|
</StepsForm.StepForm>
|
<StepsForm.StepForm
|
initialValues={{
|
target: '0',
|
template: '0',
|
}}
|
title={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleProps.title',
|
defaultMessage: '配置规则属性',
|
})}
|
>
|
<ProFormSelect
|
name="target"
|
width="md"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.object',
|
defaultMessage: '监控对象',
|
})}
|
valueEnum={{
|
0: '表一',
|
1: '表二',
|
}}
|
/>
|
<ProFormSelect
|
name="template"
|
width="md"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleProps.templateLabel',
|
defaultMessage: '规则模板',
|
})}
|
valueEnum={{
|
0: '规则模板一',
|
1: '规则模板二',
|
}}
|
/>
|
<ProFormRadio.Group
|
name="type"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.ruleProps.typeLabel',
|
defaultMessage: '规则类型',
|
})}
|
options={[
|
{
|
value: '0',
|
label: '强',
|
},
|
{
|
value: '1',
|
label: '弱',
|
},
|
]}
|
/>
|
</StepsForm.StepForm>
|
<StepsForm.StepForm
|
initialValues={{
|
type: '1',
|
frequency: 'month',
|
}}
|
title={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.schedulingPeriod.title',
|
defaultMessage: '设定调度周期',
|
})}
|
>
|
<ProFormDateTimePicker
|
name="time"
|
width="md"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.schedulingPeriod.timeLabel',
|
defaultMessage: '开始时间',
|
})}
|
rules={[
|
{
|
required: true,
|
message: (
|
<FormattedMessage
|
id="pages.searchTable.updateForm.schedulingPeriod.timeRules"
|
defaultMessage="请选择开始时间!"
|
/>
|
),
|
},
|
]}
|
/>
|
<ProFormSelect
|
name="frequency"
|
label={intl.formatMessage({
|
id: 'pages.searchTable.updateForm.object',
|
defaultMessage: '监控对象',
|
})}
|
width="md"
|
valueEnum={{
|
month: '月',
|
week: '周',
|
}}
|
/>
|
</StepsForm.StepForm>
|
</StepsForm>
|
);
|
};
|
|
export default UpdateForm;
|