src/routes/System/Scale/PolicyModal.js (195 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import React, { Component } from "react";
import { Modal, Form, Input, Switch, DatePicker } from "antd";
import moment from "moment";
import { getIntlContent } from "../../../utils/IntlUtils";
import { PolicyType } from "./globalData";
const FormItem = Form.Item;
class AddModal extends Component {
handleSubmit = (e) => {
const { form, handleOk, id = "" } = this.props;
e.preventDefault();
form.validateFieldsAndScroll((err, values) => {
if (!err) {
handleOk({
...values,
id,
status: values.status ? 1 : 0,
beginTime: values.beginTime.format("YYYY-MM-DDTHH:mm:ss[Z]"),
endTime: values.endTime.format("YYYY-MM-DDTHH:mm:ss[Z]"),
});
}
});
};
render() {
let {
handleCancel,
form,
id = null,
num = null,
sort = null,
status = 0,
beginTime = null,
endTime = null,
} = this.props;
const { getFieldDecorator } = form;
const formItemLayout = {
labelCol: {
sm: { span: 5 },
},
wrapperCol: {
sm: { span: 19 },
},
};
return (
<Modal
width={600}
centered
title={getIntlContent("SHENYU.SYSTEM.SCALE.POLICY")}
visible
okText={getIntlContent("SHENYU.COMMON.SURE")}
cancelText={getIntlContent("SHENYU.COMMON.CALCEL")}
onOk={this.handleSubmit}
onCancel={handleCancel}
>
<Form onSubmit={this.handleSubmit} className="login-form">
<FormItem
label={getIntlContent("SHENYU.SYSTEM.SCALE.POLICY_TYPE")}
{...formItemLayout}
>
{getFieldDecorator("id", {
initialValue: getIntlContent(PolicyType[id]),
rules: [
{
required: true,
message: getIntlContent(
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.INPUT",
),
},
],
})(
<Input
disabled
placeholder={getIntlContent(
"SHENYU.SYSTEM.SCALE.POLICY_TYPE.INPUT",
)}
/>,
)}
</FormItem>
<FormItem
label={getIntlContent("SHENYU.SYSTEM.SCALE.POLICY_NUMBER")}
{...formItemLayout}
>
{getFieldDecorator("num", {
initialValue: num,
rules: [
{
required: true,
message: getIntlContent(
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER.INPUT",
),
},
],
})(
<Input
type="number"
allowClear
placeholder={getIntlContent(
"SHENYU.SYSTEM.SCALE.POLICY_NUMBER.INPUT",
)}
/>,
)}
</FormItem>
<FormItem
label={getIntlContent("SHENYU.SYSTEM.SCALE.SORT")}
{...formItemLayout}
>
{getFieldDecorator("sort", {
rules: [
{
required: true,
message: getIntlContent("SHENYU.SYSTEM.SCALE.SORT.INPUT"),
},
],
initialValue: sort,
})(
<Input
type="number"
allowClear
placeholder={getIntlContent("SHENYU.SYSTEM.SCALE.SORT.INPUT")}
/>,
)}
</FormItem>
<FormItem
label={getIntlContent("SHENYU.SYSTEM.SCALE.STATUS")}
{...formItemLayout}
>
{getFieldDecorator("status", {
rules: [{ required: true }],
initialValue: status,
})(
<Switch
checked={Boolean(form.getFieldValue("status"))}
checkedChildren={getIntlContent("SHENYU.COMMON.OPEN")}
unCheckedChildren={getIntlContent("SHENYU.COMMON.CLOSE")}
onChange={(v) => {
form.setFieldsValue({ status: v });
}}
/>,
)}
</FormItem>
{id === "2" && (
<FormItem
label={getIntlContent("SHENYU.SYSTEM.SCALE.BEGIN_TIME")}
{...formItemLayout}
>
{getFieldDecorator("beginTime", {
rules: [{ required: true }],
initialValue: moment(beginTime, "YYYY-MM-DD HH:mm:ss"),
})(
<DatePicker
showTime
placeholder={getIntlContent(
"SHENYU.SYSTEM.SCALE.BEGIN_TIME.INPUT",
)}
onChange={(_, v) => {
form.setFieldsValue({
beginTime: moment(v, "YYYY-MM-DD HH:mm:ss"),
});
}}
format="YYYY-MM-DD HH:mm:ss"
allowClear={false}
/>,
)}
</FormItem>
)}
{id === "2" && (
<FormItem
label={getIntlContent("SHENYU.SYSTEM.SCALE.END_TIME")}
{...formItemLayout}
>
{getFieldDecorator("endTime", {
rules: [{ required: true }],
initialValue: moment(endTime, "YYYY-MM-DD HH:mm:ss"),
})(
<DatePicker
showTime
placeholder={getIntlContent(
"SHENYU.SYSTEM.SCALE.END_TIME.INPUT",
)}
onChange={(_, v) => {
form.setFieldsValue({
endTime: moment(v, "YYYY-MM-DD HH:mm:ss"),
});
}}
format="YYYY-MM-DD HH:mm:ss"
allowClear={false}
/>,
)}
</FormItem>
)}
</Form>
</Modal>
);
}
}
export default Form.create()(AddModal);