import Icon from '@ant-design/icons'; import { Col, Form, Input, InputNumber, message, Modal, Radio, Row, Select, TreeSelect, } from 'antd'; import React, { useEffect, useState } from 'react'; import IconSelector from '@/components/IconSelecter'; import { createMenu, editMenu, queryMenu } from '@/services/menu'; interface editPros { visible: boolean; editCallback: () => void; params: any; } /** * 菜单管理 - 编辑 * @param props * @constructor */ const Edit: React.FC = (props) => { const { params, visible, editCallback } = props; const [iconSelectorVisible, setIconSelectorVisible] = useState(false); const [form] = Form.useForm(); const { getFieldValue, setFieldsValue } = form; const iconType = getFieldValue('icon') || (params ? params.icon : ''); // 菜单树列表数据 const [treeData, setTreeData] = useState([]); useEffect(() => { // 获取树结构的菜单列表数据 queryMenu({ q: 'tree', query_all: 1 }).then((res) => { if (res && res.code === 0) { setTreeData(res.data.list); } }); }, []); // 确认弹框 const onOk = () => { form.validateFields().then((values) => { if (values) { const data = { ...values }; if (params) { data.record_id = params.record_id; editMenu(data) .then((res) => { if (res.code === 0) { message.success('编辑成功'); editCallback(); } else { message.error(res?.message); editCallback(); } }) .catch((e) => { message.error(e?.message); editCallback(); }); } else { createMenu(data) .then((res) => { if (res.code === 0) { message.success('新增成功'); editCallback(); } else { message.error(res?.message); editCallback(); } }) .catch((e) => { message.error(e?.message); editCallback(); }); } } }); }; // 取消 const onCancel = () => { editCallback(); }; // 打开图标选择框 const openIconSelector = () => { setIconSelectorVisible(true); }; // 上级菜单 树选择 const toTreeSelect = (data: any) => { if (!data) { return []; } const newData = []; for (let i = 0; i < data.length; i += 1) { const item = { ...data[i], title: data[i].name, value: data[i].record_id, }; if (item.children && item.children.length > 0) { item.children = toTreeSelect(item.children); } newData.push(item); } return newData; }; // 选中图标后 const onIconSelected = (item: any) => { if (item && typeof item === 'string') { setFieldsValue({ icon: item }); } setIconSelectorVisible(false); }; const formItemLayout = { labelCol: { span: 6, }, wrapperCol: { span: 18, }, }; const formItemLayout24 = { labelCol: { span: 3 }, wrapperCol: { span: 21 }, }; return (
: null} /> 显示 隐藏
{iconSelectorVisible && ( )}
); }; export default Edit;