import React, { useState, useRef, useEffect, useMemo } from 'react';
|
import {
|
ProForm,
|
ProFormDigit,
|
ProFormText,
|
ProFormSelect,
|
ProFormDateTimePicker,
|
ProFormTreeSelect
|
} from '@ant-design/pro-components';
|
import { FormattedMessage, useIntl } from '@umijs/max';
|
import { Form, Modal, Col } from 'antd';
|
import moment from 'moment';
|
import Http from '@/utils/http';
|
import { createIcon } from '@/utils/icon-util'
|
import IconSelector from '@/components/IconSelector';
|
|
const Edit = (props) => {
|
const intl = useIntl();
|
const [menuType, setMenuType] = useState(0);
|
const [menuIconName, setMenuIconName] = useState();
|
const [iconSelectorOpen, setIconSelectorOpen] = useState(false);
|
|
const [form] = Form.useForm();
|
const { } = props;
|
|
useEffect(() => {
|
form.resetFields();
|
form.setFieldsValue({
|
...props.values
|
})
|
}, [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="parentId"
|
label="上级菜单"
|
params={props.treeData}
|
request={async () => {
|
return props.treeData;
|
}}
|
colProps={{ md: 12, xl: 12 }}
|
rules={[{ required: true, message: "上级菜单不能为空" }]}
|
fieldProps={{
|
treeDefaultExpandedKeys: [0]
|
}}
|
/>
|
<ProFormText
|
name="name"
|
label="菜单名称"
|
colProps={{ md: 12, xl: 12 }}
|
rules={[{ required: true, message: "菜单名称不能为空!" }]}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormText
|
name="route"
|
label="路由地址"
|
colProps={{ md: 12, xl: 12 }}
|
/>
|
<ProFormText
|
name="component"
|
label="页面组件"
|
colProps={{ md: 12, xl: 12 }}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormSelect
|
name="type"
|
label="类型"
|
colProps={{ md: 10, xl: 610 }}
|
options={[
|
{ label: '菜单', value: 0 },
|
{ label: '按钮', value: 1 },
|
]}
|
fieldProps={{
|
onChange: (e) => {
|
setMenuType(e);
|
},
|
}}
|
rules={[{ required: true, message: "类型不能为空!" }]}
|
/>
|
<ProFormText
|
name="authority"
|
label="权限标识"
|
hidden={menuType !== 1}
|
colProps={{ md: 12, xl: 12 }}
|
/>
|
<ProFormSelect
|
name="icon"
|
label="菜单图标"
|
hidden={menuType !== 0}
|
colProps={{ md: 12, xl: 12 }}
|
valueEnum={{}}
|
addonBefore={createIcon(menuIconName)}
|
fieldProps={{
|
onClick: () => {
|
setIconSelectorOpen(true);
|
},
|
}}
|
/>
|
</ProForm.Group>
|
<ProForm.Group>
|
<ProFormDigit
|
name="sort"
|
label="排序"
|
colProps={{ md: 12, xl: 12 }}
|
fieldProps={{ precision: 0 }}
|
/>
|
<ProFormSelect
|
name="status"
|
label="状态"
|
colProps={{ md: 12, xl: 12 }}
|
options={[
|
{ label: '正常', value: 1 },
|
{ label: '禁用', value: 0 },
|
]}
|
/>
|
</ProForm.Group>
|
</ProForm>
|
<Modal
|
width={800}
|
open={iconSelectorOpen}
|
onCancel={() => {
|
setIconSelectorOpen(false);
|
}}
|
footer={null}
|
>
|
<IconSelector
|
onSelect={(name) => {
|
form.setFieldsValue({ icon: name });
|
setMenuIconName(name);
|
setIconSelectorOpen(false);
|
}}
|
/>
|
</Modal>
|
</Modal >
|
</>
|
)
|
}
|
|
export default Edit;
|