import React, { useEffect, useState, useCallback } from 'react'; import { useNavigate, connect, Dispatch } from 'umi' import { Card, Row, Col, Input, Select, Switch, Pagination, Spin, Button, Popconfirm } from 'antd'; import { MinusSquareOutlined, DeleteOutlined, } from '@ant-design/icons'; import type { PaginationProps } from 'antd'; import { api_host } from '@/utils/api' import CreateModal from './components/createModal' import styles from './index.less' import { debounce } from 'lodash'; import type { chunkModelState } from './model' interface chunkProps { dispatch: Dispatch; chunkModel: chunkModelState; doc_id: string } const Index: React.FC = ({ chunkModel, dispatch, doc_id }) => { const [keywords, SetKeywords] = useState('') const [available_int, setAvailableInt] = useState(-1) const navigate = useNavigate() const [pagination, setPagination] = useState({ page: 1, size: 30 }) // const [datas, setDatas] = useState(data) const { data = [], total, loading, chunk_id, isShowCreateModal } = chunkModel console.log(chunkModel) const getChunkList = (value?: string) => { dispatch({ type: 'chunkModel/updateState', payload: { loading: true } }); interface payloadType { doc_id: string; keywords?: string; available_int?: number } const payload: payloadType = { doc_id, keywords: value || keywords, available_int } if (payload.available_int === -1) { delete payload.available_int } dispatch({ type: 'chunkModel/chunk_list', payload: { ...payload, ...pagination } }); } const confirm = (id: string) => { console.log(id) dispatch({ type: 'chunkModel/rm_chunk', payload: { chunk_ids: [id] }, callback: getChunkList }); }; const handleEditchunk = (chunk_id?: string) => { dispatch({ type: 'chunkModel/updateState', payload: { isShowCreateModal: true, chunk_id, doc_id }, callback: getChunkList }); } const onShowSizeChange: PaginationProps['onShowSizeChange'] = (page, size) => { setPagination({ page, size }) }; const switchChunk = (id: string, available_int: boolean) => { dispatch({ type: 'chunkModel/updateState', payload: { loading: true } }); dispatch({ type: 'chunkModel/switch_chunk', payload: { chunk_ids: [id], available_int: Number(available_int), doc_id }, callback: getChunkList }); } useEffect(() => { getChunkList() }, [doc_id, 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) } console.log('loading', loading) return (<>