import './proj-config-list-mod.css'; import { Alert, Button, Col, Flex, Form, Input, message, Modal, Row, Spin, } from "antd"; import { useNavigate, useParams} from "react-router-dom"; import {useEffect, useState} from "react"; import FaiconSelect from "../../../components/faicon/FaIconSelect.tsx"; import ModField, {IModField} from "../../../components/modfield/ModField.tsx"; import {get, put} from "../../../util/AjaxUtils.ts"; import {MAX_MOD_SIZE, MAX_MOD_SIZE_FREE, MIN_MOD_SIZE, MIN_MOD_SIZE_FREE} from "./ProjConfigModList.tsx"; type FormFieldType = { projId: string; modName: string; modDesc: string; modIcon: string; fields: IModField[]; } type PropsType = { isFree?: boolean; } export default function ProjConfigModEdit(props: PropsType) { const nav = useNavigate(); const pathParams = useParams(); const [messageApi, contextHolder] = message.useMessage(); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [isModIconModalOpen, setIsModIconModalOpen] = useState(false); const [isEditModalOpen, setIsEditModalOpen] = useState(false); const [selectedModIcon, setSelectedModIcon] = useState('fa fa-list'); const [fields, setFields] = useState([]); const minSize = props.isFree ? MIN_MOD_SIZE_FREE : MIN_MOD_SIZE; const maxSize = props.isFree ? MAX_MOD_SIZE_FREE : MAX_MOD_SIZE; const height = window.innerHeight - 205; useEffect(() => { get({ messageApi, url: `api/proj-mod/get/${pathParams.projModId}`, onSuccess({data}) { form.setFieldsValue({ projId: data.projId, modName: data.modName, modDesc: data.modDesc, modIcon: data.modIcon, fields: data.fields, }); setSelectedModIcon(data.modIcon); setFields(data.fields) } }) }, []) return ( <> {contextHolder} {/* 首页}, {title: 创建项目}, { title: { if(props.isFree) { nav(`/proj-efree/${pathParams.projId}`) } else { `/proj-edit/${pathParams.projId}` } }}>编辑项目 }, { title: { nav(-1); }}>系统菜单管理 }, {title: '编辑菜单'}, ]} /> */}
{ setIsEditModalOpen(true); }} autoComplete="off" > label="菜单名称" name="modName" extra="此内容会作为菜单名生成菜单,最多8个字" rules={[{required: true, message: '请输入菜单名称'}]} > label="菜单说明" name="modDesc" extra="此内容会作为功能描述生成到操作手册中,请详细描述,最多600字" rules={[{required: true, message: '请输入菜单说明'}]} > label="菜单图标" name="modIcon" extra="菜单图标会显示在菜单栏中" rules={[{required: true, message: '请输入菜单图标'}]} > name="fields" rules={[{required: true, message: '请添加菜单属性'}]} > { if (!dataArray) { return; } form.setFieldValue('fields', dataArray); }}/>
{ setIsEditModalOpen(false); const reg = /^[\u4e00-\u9fa5]+$/; // 中文字符的正则表达式 console.log( ((form.getFieldValue('fields'))[0].fieldDesc )); if (!reg.test((form.getFieldValue('fields'))[0].fieldDesc)) { messageApi.error('描述必须为中文') }else{ put({ messageApi, url: `/api/proj-mod/update/${pathParams.projModId}`, body: { projId: form.getFieldValue('projId'), modName: form.getFieldValue('modName'), modDesc: form.getFieldValue('modDesc'), modIcon: form.getFieldValue('modIcon'), fields: form.getFieldValue('fields'), }, onBefore() { setLoading(true); }, onSuccess() { messageApi.success('编辑成功'); }, onFinally() { setLoading(false); } }) } }} onCancel={() => { setIsEditModalOpen(false); }}>
确定提交吗?
{ setIsModIconModalOpen(false); }}>
{ form.setFieldValue('modIcon', icon); setSelectedModIcon(icon); }} />
) }