import React, { useState, useRef, useEffect } from 'react';
|
import {
|
ProForm,
|
ProFormDigit,
|
ProFormText,
|
ProFormSelect,
|
ProFormTreeSelect,
|
ProFormTextArea,
|
ProFormRadio
|
} from '@ant-design/pro-components';
|
import { FormattedMessage, useIntl } from '@umijs/max';
|
import { Form, Modal } from 'antd';
|
import moment from 'moment';
|
import Http from '@/utils/http';
|
|
const Edit = (props) => {
|
const intl = useIntl();
|
const [form] = Form.useForm();
|
const { } = props;
|
|
useEffect(() => {
|
form.resetFields();
|
form.setFieldsValue({
|
...props.values,
|
roleIds: props.values.userRoleIds
|
})
|
}, [form, props])
|
|
const handleCancel = () => {
|
props.onCancel();
|
};
|
|
const handleOk = () => {
|
form.submit();
|
}
|
|
const handleFinish = async (values) => {
|
props.onSubmit({ ...values });
|
}
|
|
return (
|
<>
|
<Modal
|
title={
|
Object.keys(props.values).length > 0
|
? intl.formatMessage({ id: 'page.edit', defaultMessage: '编辑' })
|
: intl.formatMessage({ id: 'page.add', defaultMessage: '添加' })
|
}
|
width={640}
|
forceRender
|
destroyOnClose
|
open={props.open}
|
onCancel={handleCancel}
|
onOk={handleOk}
|
>
|
<ProForm
|
form={form}
|
submitter={false}
|
onFinish={handleFinish}
|
layout="horizontal"
|
grid={true}
|
>
|
<ProFormDigit
|
name="id"
|
disabled
|
hidden={true}
|
/>
|
<ProForm.Group>
|
<ProFormTreeSelect
|
name="deptId"
|
label="所属部门"
|
params={props.treeData}
|
request={async () => {
|
return props.treeData;
|
}}
|
colProps={{ md: 12, xl: 12 }}
|
fieldProps={{
|
treeDefaultExpandedKeys: [0]
|
}}
|
rules={[{ required: true }]}
|
/>
|
<ProFormText
|
name="username"
|
label="登录账号"
|
colProps={{ md: 12, xl: 12 }}
|
rules={[{ required: true }]}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormText
|
name="nickname"
|
label="名称"
|
colProps={{ md: 12, xl: 12 }}
|
rules={[{ required: true }]}
|
/>
|
<ProFormSelect
|
name="sex"
|
label="性别"
|
colProps={{ md: 12, xl: 12 }}
|
options={[
|
{ label: '未知', value: 0 },
|
{ label: '男', value: 1 },
|
{ label: '女', value: 2 },
|
]}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormText
|
name="phone"
|
label="手机号"
|
colProps={{ md: 12, xl: 12 }}
|
placeholder="请输入"
|
rules={[
|
{
|
pattern: /^1[3456789]\d{9}$/,
|
message: '请输入正确的手机号码!',
|
},
|
{
|
required: false,
|
message: '手机号码不能为空!',
|
},
|
]}
|
|
/>
|
<ProFormText
|
name="email"
|
label="邮箱"
|
colProps={{ md: 12, xl: 12 }}
|
rules={[
|
{
|
type: 'email',
|
message: '请输入正确的邮箱地址!',
|
},
|
{
|
required: false,
|
},
|
]}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormText
|
name="realName"
|
label="真实姓名"
|
colProps={{ md: 12, xl: 12 }}
|
/>
|
<ProFormText
|
name="idCard"
|
label="身份证号"
|
colProps={{ md: 12, xl: 12 }}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormRadio.Group
|
name="status"
|
label="状态"
|
colProps={{ md: 12, xl: 12 }}
|
options={[
|
{ label: '正常', value: 1 },
|
{ label: '禁用', value: 0 },
|
]}
|
rules={[
|
{
|
required: true,
|
},
|
]}
|
/>
|
<ProFormSelect
|
name="roleIds"
|
mode="multiple"
|
label="角色"
|
colProps={{ md: 12, xl: 12 }}
|
rules={[{ required: true, type: 'array', message: '角色不能为空!' }]}
|
request={async ({ keyWords }) => {
|
const resp = await Http.doPostForm('api/role/query', { condition: keyWords });
|
return resp.data;
|
}}
|
/>
|
</ProForm.Group>
|
<ProFormTextArea
|
name="memo"
|
label="备注"
|
colProps={{ md: 24, xl: 24 }}
|
/>
|
</ProForm>
|
</Modal>
|
</>
|
)
|
}
|
|
export default Edit;
|