import React, { useState, useCallback } from 'react'; import { Box, Flex, Button, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, Textarea } from '@chakra-ui/react'; import { useForm } from 'react-hook-form'; import { postModelDataInput, putModelDataById } from '@/api/model'; import { useToast } from '@/hooks/useToast'; import { customAlphabet } from 'nanoid'; const nanoid = customAlphabet('abcdefghijklmnopqrstuvwxyz1234567890', 12); export type FormData = { dataId?: string; text: string; q: string }; const InputDataModal = ({ onClose, onSuccess, modelId, defaultValues = { text: '', q: '' } }: { onClose: () => void; onSuccess: () => void; modelId: string; defaultValues?: FormData; }) => { const [importing, setImporting] = useState(false); const { toast } = useToast(); const { register, handleSubmit } = useForm({ defaultValues }); /** * 确认导入新数据 */ const sureImportData = useCallback( async (e: FormData) => { setImporting(true); try { const res = await postModelDataInput({ modelId: modelId, data: [ { text: e.text, q: { id: nanoid(), text: e.q } } ] }); toast({ title: res === 0 ? '导入数据成功,需要一段时间训练' : '数据导入异常', status: res === 0 ? 'success' : 'warning' }); onClose(); onSuccess(); } catch (err) { console.log(err); } setImporting(false); }, [modelId, onClose, onSuccess, toast] ); const updateData = useCallback( async (e: FormData) => { if (!e.dataId) return; if (e.text === defaultValues.text && e.q === defaultValues.q) return; await putModelDataById({ dataId: e.dataId, text: e.text, q: e.q === defaultValues.q ? '' : e.q }); toast({ title: '修改回答成功', status: 'success' }); onClose(); onSuccess(); }, [defaultValues.q, onClose, onSuccess, toast] ); return ( 手动导入 问题