import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, Select, InputNumber } from 'antd'; import { useTranslation } from 'react-i18next'; import type { ChatVariableModalRef } from './types' import type { ChatVariable } from '../../types'; import RbModal from '@/components/RbModal' const FormItem = Form.Item; interface ChatVariableModalProps { refresh: (value: ChatVariable, editIndex?: number) => void; } const types = [ 'string', 'number', 'boolean', ] const ChatVariableModal = forwardRef(({ refresh }, ref) => { const { t } = useTranslation(); const [visible, setVisible] = useState(false); const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const [editIndex, setEditIndex] = useState(undefined) const type = Form.useWatch('type', form); // 封装取消方法,添加关闭弹窗逻辑 const handleClose = () => { setVisible(false); form.resetFields(); setLoading(false) setEditIndex(undefined) }; const handleOpen = (variable?: ChatVariable, index?: number) => { setVisible(true); if (variable) { const { default: _, ...rest } = variable form.setFieldsValue({ ...rest }) setEditIndex(index) } else { form.resetFields(); setEditIndex(undefined) } }; // 封装保存方法,添加提交逻辑 const handleSave = () => { form.validateFields().then((values) => { refresh({ ...values, default: values.defaultValue }, editIndex) handleClose() }) } // 暴露给父组件的方法 useImperativeHandle(ref, () => ({ handleOpen })); return (
: }
); }); export default ChatVariableModal;