import { api_host } from '@/utils/api'; import { getOneNamespaceEffectsLoading } from '@/utils/stroreUtil'; import { DeleteOutlined, MinusSquareOutlined } from '@ant-design/icons'; import type { PaginationProps } from 'antd'; import { Button, Card, Col, Input, Pagination, Popconfirm, Row, Select, Spin, Switch, } from 'antd'; import { debounce } from 'lodash'; import React, { useCallback, useEffect, useState } from 'react'; import { useDispatch, useSearchParams, useSelector } from 'umi'; import CreateModal from './components/createModal'; import styles from './index.less'; interface PayloadType { doc_id: string; keywords?: string; available_int?: number; } const Chunk = () => { const dispatch = useDispatch(); const chunkModel = useSelector((state: any) => state.chunkModel); const [keywords, SetKeywords] = useState(''); const [available_int, setAvailableInt] = useState(-1); const [searchParams] = useSearchParams(); const [pagination, setPagination] = useState({ page: 1, size: 30 }); const { data = [], total, chunk_id, isShowCreateModal } = chunkModel; const effects = useSelector((state: any) => state.loading.effects); const loading = getOneNamespaceEffectsLoading('chunkModel', effects, [ 'create_hunk', 'chunk_list', 'switch_chunk', ]); const documentId: string = searchParams.get('doc_id') || ''; const getChunkList = (value?: string) => { const payload: PayloadType = { doc_id: documentId, keywords: value || keywords, available_int, }; if (payload.available_int === -1) { delete payload.available_int; } dispatch({ type: 'chunkModel/chunk_list', payload: { ...payload, ...pagination, }, }); }; const confirm = async (id: string) => { const retcode = await dispatch({ type: 'chunkModel/rm_chunk', payload: { chunk_ids: [id], }, }); retcode === 0 && getChunkList(); }; const handleEditchunk = (chunk_id?: string) => { dispatch({ type: 'chunkModel/updateState', payload: { isShowCreateModal: true, chunk_id, doc_id: documentId, }, }); getChunkList(); }; const onShowSizeChange: PaginationProps['onShowSizeChange'] = ( page, size, ) => { setPagination({ page, size }); }; const switchChunk = async (id: string, available_int: boolean) => { const retcode = await dispatch({ type: 'chunkModel/switch_chunk', payload: { chunk_ids: [id], available_int: Number(available_int), doc_id: documentId, }, }); retcode === 0 && getChunkList(); }; useEffect(() => { getChunkList(); }, [documentId, available_int, pagination]); const debounceChange = debounce(getChunkList, 300); const debounceCallback = useCallback( (value: string) => debounceChange(value), [], ); const handleInputChange = ( e: React.ChangeEvent, ) => { const value = e.target.value; SetKeywords(value); debounceCallback(value); }; const handleSelectChange = (value: number) => { setAvailableInt(value); }; return ( <>