|
@@ -1,6 +1,7 @@
|
|
|
import * as React from 'react';
|
|
import * as React from 'react';
|
|
|
import { generatePath, useParams } from 'react-router-dom';
|
|
import { generatePath, useParams } from 'react-router-dom';
|
|
|
import { observer } from 'mobx-react';
|
|
import { observer } from 'mobx-react';
|
|
|
|
|
+import config, { getHeaders } from '@/apis/config';
|
|
|
|
|
|
|
|
import {
|
|
import {
|
|
|
Button,
|
|
Button,
|
|
@@ -27,7 +28,7 @@ import './style.less';
|
|
|
const { Dragger } = Upload;
|
|
const { Dragger } = Upload;
|
|
|
|
|
|
|
|
const KnowledgeLibInfo : React.FC = () => {
|
|
const KnowledgeLibInfo : React.FC = () => {
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const {
|
|
const {
|
|
|
state,
|
|
state,
|
|
|
init,
|
|
init,
|
|
@@ -53,31 +54,31 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
infoModalSettingId,
|
|
infoModalSettingId,
|
|
|
knowledgeDetail,
|
|
knowledgeDetail,
|
|
|
} = state;
|
|
} = state;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const [ uploadLoading, setUploadLoading ] = React.useState( false );
|
|
const [ uploadLoading, setUploadLoading ] = React.useState( false );
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const params = useParams();
|
|
const params = useParams();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const [ fileList, setFileList ] = React.useState<any[]>( [] );
|
|
const [ fileList, setFileList ] = React.useState<any[]>( [] );
|
|
|
const [ uploading, setUploading ] = React.useState( false );
|
|
const [ uploading, setUploading ] = React.useState( false );
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const [ sListFlag, setSListFlag ] = React.useState<boolean>();
|
|
const [ sListFlag, setSListFlag ] = React.useState<boolean>();
|
|
|
const [ cUpdateFlag, setCUpdateFlag ] = React.useState<boolean>();
|
|
const [ cUpdateFlag, setCUpdateFlag ] = React.useState<boolean>();
|
|
|
const [ detailFlag, setDetailFlag ] = React.useState<boolean>();
|
|
const [ detailFlag, setDetailFlag ] = React.useState<boolean>();
|
|
|
const [ deleteFlag, setDeleteFlag ] = React.useState<boolean>();
|
|
const [ deleteFlag, setDeleteFlag ] = React.useState<boolean>();
|
|
|
const [ createFlag, setCreateFlag ] = React.useState<boolean>();
|
|
const [ createFlag, setCreateFlag ] = React.useState<boolean>();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const props : UploadProps = {
|
|
const props : UploadProps = {
|
|
|
name: 'files',
|
|
name: 'files',
|
|
|
multiple: true,
|
|
multiple: true,
|
|
|
action: '/api/deepseek/api/uploadDocument/' + params.knowledgeId,
|
|
action: '/api/deepseek/api/uploadDocument/' + params.knowledgeId,
|
|
|
-
|
|
|
|
|
|
|
+ headers: getHeaders(),
|
|
|
beforeUpload( file, fileList ) {
|
|
beforeUpload( file, fileList ) {
|
|
|
setUploadLoading( true );
|
|
setUploadLoading( true );
|
|
|
// const allowedExtensions = ['md', 'txt', 'pdf', 'jpg', 'png', 'jpeg', 'docx', 'xlsx', 'pptx', 'eml', 'csv', 'tar', 'gz', 'bz2', 'zip', 'rar', 'jar'];
|
|
// const allowedExtensions = ['md', 'txt', 'pdf', 'jpg', 'png', 'jpeg', 'docx', 'xlsx', 'pptx', 'eml', 'csv', 'tar', 'gz', 'bz2', 'zip', 'rar', 'jar'];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const allowedExtensions = [ 'txt', 'pdf', 'jpg', 'png', 'jpeg', 'doc', 'docx', 'ppt', 'pptx' ];
|
|
const allowedExtensions = [ 'txt', 'pdf', 'jpg', 'png', 'jpeg', 'doc', 'docx', 'ppt', 'pptx' ];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 检查文件类型
|
|
// 检查文件类型
|
|
|
for ( const file of fileList ) {
|
|
for ( const file of fileList ) {
|
|
|
const fileExt = file.name.split( '.' ).pop()?.toLowerCase();
|
|
const fileExt = file.name.split( '.' ).pop()?.toLowerCase();
|
|
@@ -87,38 +88,38 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
return Upload.LIST_IGNORE;
|
|
return Upload.LIST_IGNORE;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 检查文件大小
|
|
// 检查文件大小
|
|
|
let totalSize = 0;
|
|
let totalSize = 0;
|
|
|
for ( const file of fileList ) {
|
|
for ( const file of fileList ) {
|
|
|
const fileExt = file.name.split( '.' ).pop()?.toLowerCase();
|
|
const fileExt = file.name.split( '.' ).pop()?.toLowerCase();
|
|
|
const fileSizeMB = file.size / 1024 / 1024;
|
|
const fileSizeMB = file.size / 1024 / 1024;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if ( fileSizeMB > 30 ) {
|
|
if ( fileSizeMB > 30 ) {
|
|
|
message.error( '单个文件不能大于30M' );
|
|
message.error( '单个文件不能大于30M' );
|
|
|
setUploadLoading( false );
|
|
setUploadLoading( false );
|
|
|
return Upload.LIST_IGNORE;
|
|
return Upload.LIST_IGNORE;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if ( [ 'jpg', 'png', 'jpeg' ].includes( fileExt! ) && fileSizeMB > 5 ) {
|
|
if ( [ 'jpg', 'png', 'jpeg' ].includes( fileExt! ) && fileSizeMB > 5 ) {
|
|
|
message.error( '单张图片不能大于5M' );
|
|
message.error( '单张图片不能大于5M' );
|
|
|
setUploadLoading( false );
|
|
setUploadLoading( false );
|
|
|
return Upload.LIST_IGNORE;
|
|
return Upload.LIST_IGNORE;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
totalSize += fileSizeMB;
|
|
totalSize += fileSizeMB;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if ( totalSize > 125 ) {
|
|
if ( totalSize > 125 ) {
|
|
|
message.error( '文件总大小超过125M' );
|
|
message.error( '文件总大小超过125M' );
|
|
|
setUploadLoading( false );
|
|
setUploadLoading( false );
|
|
|
return Upload.LIST_IGNORE;
|
|
return Upload.LIST_IGNORE;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
},
|
|
},
|
|
|
onChange( info ) {
|
|
onChange( info ) {
|
|
|
const { status } = info.file;
|
|
const { status } = info.file;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if ( status !== 'uploading' ) {
|
|
if ( status !== 'uploading' ) {
|
|
|
console.log( status, 'status--uploading' );
|
|
console.log( status, 'status--uploading' );
|
|
|
}
|
|
}
|
|
@@ -140,25 +141,25 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
console.log( 'Dropped files', e.dataTransfer.files );
|
|
console.log( 'Dropped files', e.dataTransfer.files );
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const handleUpload = async () => {
|
|
const handleUpload = async () => {
|
|
|
if ( fileList.length === 0 ) return;
|
|
if ( fileList.length === 0 ) return;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
setUploading( true );
|
|
setUploading( true );
|
|
|
const formData = new FormData();
|
|
const formData = new FormData();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// 添加所有文件
|
|
// 添加所有文件
|
|
|
fileList.forEach( file => {
|
|
fileList.forEach( file => {
|
|
|
if ( file.originFileObj ) {
|
|
if ( file.originFileObj ) {
|
|
|
formData.append( 'files', file.originFileObj );
|
|
formData.append( 'files', file.originFileObj );
|
|
|
}
|
|
}
|
|
|
} );
|
|
} );
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
try {
|
|
try {
|
|
|
const res = await axios.post( '/api/deepseek/api/uploadDocument/' + params.knowledgeId, formData, {
|
|
const res = await axios.post( '/api/deepseek/api/uploadDocument/' + params.knowledgeId, formData, {
|
|
|
headers: { 'Content-Type': 'multipart/form-data' }
|
|
headers: { 'Content-Type': 'multipart/form-data' }
|
|
|
} );
|
|
} );
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
message.success( `${ fileList.length }个文件上传成功` );
|
|
message.success( `${ fileList.length }个文件上传成功` );
|
|
|
setFileList( [] );
|
|
setFileList( [] );
|
|
|
} catch ( err ) {
|
|
} catch ( err ) {
|
|
@@ -167,7 +168,7 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
setUploading( false );
|
|
setUploading( false );
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
React.useEffect( () => {
|
|
React.useEffect( () => {
|
|
|
init( params.knowledgeId );
|
|
init( params.knowledgeId );
|
|
|
const cList = LocalStorage.getStatusFlag( 'deepseek:slice:list' );
|
|
const cList = LocalStorage.getStatusFlag( 'deepseek:slice:list' );
|
|
@@ -182,7 +183,7 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
setCreateFlag( createF );
|
|
setCreateFlag( createF );
|
|
|
return () => reset();
|
|
return () => reset();
|
|
|
}, [] );
|
|
}, [] );
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const columns : TableColumnsType<Record> = [
|
|
const columns : TableColumnsType<Record> = [
|
|
|
{
|
|
{
|
|
|
title: '序号',
|
|
title: '序号',
|
|
@@ -331,7 +332,7 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
];
|
|
];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const paginationConfig : TablePaginationConfig = {
|
|
const paginationConfig : TablePaginationConfig = {
|
|
|
// 显示数据总量
|
|
// 显示数据总量
|
|
|
showTotal: ( total : number ) => {
|
|
showTotal: ( total : number ) => {
|
|
@@ -350,7 +351,7 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
await onChangePagination( page, pageSize );
|
|
await onChangePagination( page, pageSize );
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
return (
|
|
return (
|
|
|
<div className='knowledgeLibInfo'>
|
|
<div className='knowledgeLibInfo'>
|
|
|
<Spin spinning={ uploadLoading || listLoading }>
|
|
<Spin spinning={ uploadLoading || listLoading }>
|
|
@@ -424,7 +425,7 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
onClickCancel={ infoModalOnClickCancel }
|
|
onClickCancel={ infoModalOnClickCancel }
|
|
|
/>
|
|
/>
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
{
|
|
{
|
|
|
infoModalSettingOpen &&
|
|
infoModalSettingOpen &&
|
|
|
<InfoModalSetting
|
|
<InfoModalSetting
|
|
@@ -441,4 +442,4 @@ const KnowledgeLibInfo : React.FC = () => {
|
|
|
);
|
|
);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-export default observer( KnowledgeLibInfo );
|
|
|
|
|
|
|
+export default observer( KnowledgeLibInfo );
|