import { useKnowledgeBaseId } from '@/hooks/knowledgeHook'; import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks'; import { api_host } from '@/utils/api'; import { DeleteOutlined, MinusSquareOutlined } from '@ant-design/icons'; import type { PaginationProps } from 'antd'; import { Card, Col, Input, Pagination, Popconfirm, Row, Select, Spin, Switch, } from 'antd'; import { debounce } from 'lodash'; import React, { useCallback, useEffect } from 'react'; import { useDispatch, useSelector } from 'umi'; import CreateModal from '../knowledge-chunk/components/createModal'; import styles from './index.less'; const KnowledgeSearching = () => { const dispatch = useDispatch(); const kSearchModel = useSelector((state: any) => state.kSearchModel); const chunkModel = useSelector((state: any) => state.chunkModel); const loading = useOneNamespaceEffectsLoading('kSearchModel', [ 'chunk_list', 'switch_chunk', ]); const knowledgeBaseId = useKnowledgeBaseId(); const { data = [], total, d_list = [], question, doc_ids, pagination, } = kSearchModel; const { chunk_id, doc_id, isShowCreateModal } = chunkModel; const getChunkList = () => { dispatch({ type: 'kSearchModel/chunk_list', payload: { kb_id: knowledgeBaseId, }, }); }; const confirm = (id: string) => { dispatch({ type: 'kSearchModel/rm_chunk', payload: { chunk_ids: [id], kb_id: knowledgeBaseId, }, }); }; const handleEditchunk = (item: any) => { const { chunk_id, doc_id } = item; dispatch({ type: 'chunkModel/updateState', payload: { isShowCreateModal: true, chunk_id, doc_id, }, }); getChunkList(); }; const onShowSizeChange: PaginationProps['onShowSizeChange'] = ( page, size, ) => { dispatch({ type: 'kSearchModel/updateState', payload: { pagination: { page, size }, }, }); }; useEffect(() => { dispatch({ type: 'kSearchModel/updateState', payload: { doc_ids: [], question: '', }, }); dispatch({ type: 'kSearchModel/getKfList', payload: { kb_id: knowledgeBaseId, }, }); }, []); const switchChunk = (item: any, available_int: boolean) => { const { chunk_id, doc_id } = item; dispatch({ type: 'kSearchModel/switch_chunk', payload: { chunk_ids: [chunk_id], doc_id, available_int, kb_id: knowledgeBaseId, }, }); }; useEffect(() => { getChunkList(); }, [doc_ids, pagination, question]); const debounceChange = debounce((value) => { dispatch({ type: 'kSearchModel/updateState', payload: { question: value, }, }); }, 300); const debounceCallback = useCallback( (value: string) => debounceChange(value), [], ); const handleInputChange = ( e: React.ChangeEvent, ) => { const value = e.target.value; debounceCallback(value); }; const handleSelectChange = (value: any[]) => { dispatch({ type: 'kSearchModel/updateState', payload: { doc_ids: value, }, }); }; return ( <>