import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, Select, InputNumber, Checkbox, Tag } from 'antd'; import { useTranslation } from 'react-i18next'; import type { StartVariableItem, VariableEditModalRef } from '../../types' import RbModal from '@/components/RbModal' import SortableList from '@/components/SortableList' const FormItem = Form.Item; interface VariableEditModalProps { refresh: (values: StartVariableItem) => void; } const types = [ 'string', 'number', 'boolean', // 'array', // 'object' ] const variableType = { string: 'string', number: 'number', boolean: 'boolean', // array: 'array', // object: 'object', } const initialValues = { max_length: 48, required: true } const VariableEditModal = forwardRef(({ refresh }, ref) => { const { t } = useTranslation(); const [visible, setVisible] = useState(false); const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const [editVo, setEditVo] = useState(null) const values = Form.useWatch([], form); // 封装取消方法,添加关闭弹窗逻辑 const handleClose = () => { setVisible(false); form.resetFields(); setLoading(false) setEditVo(null) }; const handleOpen = (variable?: StartVariableItem) => { setVisible(true); if (variable) { setEditVo(variable || null) form.setFieldsValue(variable) } else { form.resetFields(); } }; // 封装保存方法,添加提交逻辑 const handleSave = () => { form.validateFields().then((values) => { refresh({ ...(editVo || {}), ...values, }) handleClose() }) } // 暴露给父组件的方法 useImperativeHandle(ref, () => ({ handleOpen, handleClose })); const nameChange = (e: React.ChangeEvent) => { if (values.description && values.description !== '') return const { value } = e.target form.setFieldsValue({ description: value, }) } return (
{/* 变量类型 */} {/* 显示名称 */} {/* 最大长度 */} {['string'].includes(values?.type) && ( )} {/* 默认值 */} {['string', 'number', 'boolean'].includes(values?.type) && ( {['string'].includes(values.type) && } {['number'].includes(values.type) && } {['boolean'].includes(values.type) &&