import React, { useCallback } from 'react'; import { Box, TableContainer, Table, Thead, Tbody, Tr, Th, Td, IconButton, Flex, Button, useDisclosure, Textarea, Menu, MenuButton, MenuList, MenuItem } from '@chakra-ui/react'; import type { ModelSchema } from '@/types/mongoSchema'; import { ModelDataSchema } from '@/types/mongoSchema'; import { ModelDataStatusMap } from '@/constants/model'; import { usePagination } from '@/hooks/usePagination'; import { getModelDataList, delOneModelData, putModelDataById, getModelSplitDataList } from '@/api/model'; import { DeleteIcon, RepeatIcon } from '@chakra-ui/icons'; import { useToast } from '@/hooks/useToast'; import { useLoading } from '@/hooks/useLoading'; import dynamic from 'next/dynamic'; import { useQuery } from '@tanstack/react-query'; const InputModel = dynamic(() => import('./InputDataModal')); const SelectModel = dynamic(() => import('./SelectFileModal')); const ModelDataCard = ({ model }: { model: ModelSchema }) => { const { toast } = useToast(); const { Loading } = useLoading(); const { data: modelDataList, isLoading, Pagination, total, getData, pageNum } = usePagination({ api: getModelDataList, pageSize: 10, params: { modelId: model._id } }); const updateAnswer = useCallback( async (dataId: string, text: string) => { await putModelDataById({ dataId, text }); toast({ title: '修改回答成功', status: 'success' }); }, [toast] ); const { isOpen: isOpenInputModal, onOpen: onOpenInputModal, onClose: onCloseInputModal } = useDisclosure(); const { isOpen: isOpenSelectModal, onOpen: onOpenSelectModal, onClose: onCloseSelectModal } = useDisclosure(); const { data, refetch } = useQuery(['getModelSplitDataList'], () => getModelSplitDataList(model._id) ); const refetchData = useCallback( (num = 1) => { getData(num); refetch(); }, [getData, refetch] ); return ( <> 模型数据: {total}组{' '} (测试版本) } aria-label={'refresh'} variant={'outline'} mr={4} onClick={() => refetchData(pageNum)} /> 导入 手动输入 文件导入 {data && data.length > 0 && {data.length}条数据正在拆分中...} {modelDataList.map((item) => ( ))}
Question Text Status
{item.q.map((item, i) => ( Q{i + 1}:{' '} {item.text} ))} {ModelDataStatusMap[item.status]} } variant={'outline'} colorScheme={'gray'} aria-label={'delete'} size={'sm'} onClick={async () => { delOneModelData(item._id); refetchData(pageNum); }} />
{isOpenInputModal && ( )} {isOpenSelectModal && ( )} ); }; export default ModelDataCard;