| import React, { useState, useRef, useEffect, useMemo } from 'react'; | 
| import { | 
|     ProForm, | 
|     ProFormDigit, | 
|     ProFormText, | 
|     ProFormSelect, | 
|     ProFormDateTimePicker, | 
|     ProFormTreeSelect | 
| } from '@ant-design/pro-components'; | 
| 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 [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="Edit" | 
|                 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 }} | 
|                             placeholder="请选择" | 
|                             rules={[{ required: true, message: "上级菜单不能为空" }]} | 
|                             fieldProps={{ | 
|                                 treeDefaultExpandedKeys: [0] | 
|                             }} | 
|                         /> | 
|                         <ProFormText | 
|                             name="name" | 
|                             label="菜单名称" | 
|                             colProps={{ md: 12, xl: 12 }} | 
|                             placeholder="请输入" | 
|                             rules={[{ required: true, message: "菜单名称不能为空!" }]} | 
|                         /> | 
|                     </ProForm.Group> | 
|                     <ProForm.Group> | 
|                         <ProFormText | 
|                             name="route" | 
|                             label="路由地址" | 
|                             colProps={{ md: 12, xl: 12 }} | 
|                             placeholder="请输入" | 
|                         /> | 
|                         <ProFormText | 
|                             name="component" | 
|                             label="页面组件" | 
|                             colProps={{ md: 12, xl: 12 }} | 
|                             placeholder="请输入" | 
|                         /> | 
|                     </ProForm.Group> | 
|                     <ProForm.Group> | 
|                         <ProFormSelect | 
|                             name="type" | 
|                             label="类型" | 
|                             colProps={{ md: 10, xl: 610 }} | 
|                             placeholder="请选择" | 
|                             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 }} | 
|                             placeholder="请输入" | 
|                         /> | 
|                         <ProFormSelect | 
|                             name="icon" | 
|                             label="菜单图标" | 
|                             hidden={menuType !== 0} | 
|                             colProps={{ md: 12, xl: 12 }} | 
|                             placeholder="请输入" | 
|                             valueEnum={{}} | 
|                             addonBefore={createIcon(menuIconName)} | 
|                             fieldProps={{ | 
|                                 onClick: () => { | 
|                                     setIconSelectorOpen(true); | 
|                                 }, | 
|                             }} | 
|                         /> | 
|                     </ProForm.Group> | 
|                     <ProForm.Group> | 
|                         <ProFormDigit | 
|                             name="sort" | 
|                             label="排序" | 
|                             colProps={{ md: 12, xl: 12 }} | 
|                             fieldProps={{ precision: 0 }} | 
|                             placeholder="请输入" | 
|                         /> | 
|                         <ProFormSelect | 
|                             name="status" | 
|                             label="状态" | 
|                             colProps={{ md: 12, xl: 12 }} | 
|                             placeholder="请选择" | 
|                             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; |