fix:面包屑修改
This commit is contained in:
@@ -30,16 +30,74 @@ export const useBreadcrumbManager = (options?: BreadcrumbOptions) => {
|
|||||||
const updateBreadcrumbs = useCallback((breadcrumbPath: BreadcrumbPath) => {
|
const updateBreadcrumbs = useCallback((breadcrumbPath: BreadcrumbPath) => {
|
||||||
const breadcrumbType = options?.breadcrumbType || 'list';
|
const breadcrumbType = options?.breadcrumbType || 'list';
|
||||||
|
|
||||||
// 获取基础面包屑,对于详情页面,使用列表页面的基础面包屑作为起点
|
// 对于详情页面,直接使用固定的知识库管理面包屑,不依赖可能被污染的 allBreadcrumbs
|
||||||
const baseBreadcrumbs = breadcrumbType === 'list'
|
let baseBreadcrumbs: MenuItem[] = [];
|
||||||
? (allBreadcrumbs['space'] || [])
|
|
||||||
: (allBreadcrumbs['space'] || []); // 详情页面也从 space 获取基础面包屑
|
|
||||||
|
|
||||||
// 只保留知识库菜单项之前的面包屑
|
if (breadcrumbType === 'detail') {
|
||||||
const knowledgeBaseMenuIndex = baseBreadcrumbs.findIndex(item => item.path === '/knowledge-base');
|
// 详情页面:始终使用固定的知识库管理面包屑
|
||||||
const filteredBaseBreadcrumbs = knowledgeBaseMenuIndex >= 0
|
baseBreadcrumbs = [
|
||||||
? baseBreadcrumbs.slice(0, knowledgeBaseMenuIndex + 1)
|
{
|
||||||
: baseBreadcrumbs;
|
id: 6,
|
||||||
|
parent: 0,
|
||||||
|
code: 'knowledge',
|
||||||
|
label: '知识库',
|
||||||
|
i18nKey: 'menu.knowledgeManagement',
|
||||||
|
path: '/knowledge-base',
|
||||||
|
enable: true,
|
||||||
|
display: true,
|
||||||
|
level: 1,
|
||||||
|
sort: 0,
|
||||||
|
icon: null,
|
||||||
|
iconActive: null,
|
||||||
|
menuDesc: null,
|
||||||
|
deleted: null,
|
||||||
|
updateTime: 0,
|
||||||
|
new_: null,
|
||||||
|
keepAlive: false,
|
||||||
|
master: null,
|
||||||
|
disposable: false,
|
||||||
|
appSystem: null,
|
||||||
|
subs: [],
|
||||||
|
}
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
// 列表页面:从 space 获取基础面包屑,但确保包含知识库管理
|
||||||
|
const spaceBreadcrumbs = allBreadcrumbs['space'] || [];
|
||||||
|
const knowledgeBaseMenuIndex = spaceBreadcrumbs.findIndex(item => item.path === '/knowledge-base');
|
||||||
|
|
||||||
|
if (knowledgeBaseMenuIndex >= 0) {
|
||||||
|
baseBreadcrumbs = spaceBreadcrumbs.slice(0, knowledgeBaseMenuIndex + 1);
|
||||||
|
} else {
|
||||||
|
// 如果没有找到知识库菜单,使用默认的知识库管理面包屑
|
||||||
|
baseBreadcrumbs = [
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
parent: 0,
|
||||||
|
code: 'knowledge',
|
||||||
|
label: '知识库',
|
||||||
|
i18nKey: 'menu.knowledgeManagement',
|
||||||
|
path: '/knowledge-base',
|
||||||
|
enable: true,
|
||||||
|
display: true,
|
||||||
|
level: 1,
|
||||||
|
sort: 0,
|
||||||
|
icon: null,
|
||||||
|
iconActive: null,
|
||||||
|
menuDesc: null,
|
||||||
|
deleted: null,
|
||||||
|
updateTime: 0,
|
||||||
|
new_: null,
|
||||||
|
keepAlive: false,
|
||||||
|
master: null,
|
||||||
|
disposable: false,
|
||||||
|
appSystem: null,
|
||||||
|
subs: [],
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const filteredBaseBreadcrumbs = baseBreadcrumbs;
|
||||||
|
|
||||||
// 给"知识库管理"添加点击事件
|
// 给"知识库管理"添加点击事件
|
||||||
const breadcrumbsWithClick = filteredBaseBreadcrumbs.map((item) => {
|
const breadcrumbsWithClick = filteredBaseBreadcrumbs.map((item) => {
|
||||||
|
|||||||
@@ -613,6 +613,8 @@ export const en = {
|
|||||||
answer: 'Answer',
|
answer: 'Answer',
|
||||||
normalMode: 'Normal Mode',
|
normalMode: 'Normal Mode',
|
||||||
qaMode: 'QA Mode',
|
qaMode: 'QA Mode',
|
||||||
|
fileParsingSettings: 'File Parsing Settings',
|
||||||
|
pdfEnhancementAnalysis: 'PDF Enhancement Analysis',
|
||||||
createForm:{
|
createForm:{
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
embedding_id: 'Embedding',
|
embedding_id: 'Embedding',
|
||||||
|
|||||||
@@ -237,6 +237,8 @@ export const zh = {
|
|||||||
answer: '答案',
|
answer: '答案',
|
||||||
normalMode: '常规模式',
|
normalMode: '常规模式',
|
||||||
qaMode: '问答模式',
|
qaMode: '问答模式',
|
||||||
|
fileParsingSettings: '文件解析设置',
|
||||||
|
pdfEnhancementAnalysis: 'PDF增强解析',
|
||||||
createForm: {
|
createForm: {
|
||||||
name: '名称',
|
name: '名称',
|
||||||
embedding_id: '嵌入模型',
|
embedding_id: '嵌入模型',
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useMemo,useRef, useState, useEffect } from 'react';
|
import { useMemo,useRef, useState, useEffect } from 'react';
|
||||||
import { Button, Flex, Radio, Steps, Modal, Input, Spin,message} from 'antd';
|
import { Button, Flex, Radio, Steps, Modal, Input, Spin, message, Checkbox} from 'antd';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useLocation, useNavigate, useParams } from 'react-router-dom';
|
import { useLocation, useNavigate, useParams } from 'react-router-dom';
|
||||||
import Table, { type TableRef } from '@/components/Table'
|
import Table, { type TableRef } from '@/components/Table'
|
||||||
@@ -81,6 +81,7 @@ const CreateDataset = () => {
|
|||||||
const [blockSize, setBlockSize] = useState<number>(130);
|
const [blockSize, setBlockSize] = useState<number>(130);
|
||||||
const [processingMethod, setProcessingMethod] = useState<ProcessingMethod>('directBlock');
|
const [processingMethod, setProcessingMethod] = useState<ProcessingMethod>('directBlock');
|
||||||
const [parameterSettings, setParameterSettings] = useState<ParameterSettings>('defaultSettings');
|
const [parameterSettings, setParameterSettings] = useState<ParameterSettings>('defaultSettings');
|
||||||
|
const [pdfEnhancementEnabled, setPdfEnhancementEnabled] = useState<boolean>(false);
|
||||||
const [messageApi, contextHolder] = message.useMessage();
|
const [messageApi, contextHolder] = message.useMessage();
|
||||||
const fileType = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'csv', 'md', 'htm', 'html', 'json', 'ppt', 'pptx', 'txt','png','jpg']
|
const fileType = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'csv', 'md', 'htm', 'html', 'json', 'ppt', 'pptx', 'txt','png','jpg']
|
||||||
const steps = useMemo(
|
const steps = useMemo(
|
||||||
@@ -469,6 +470,26 @@ const CreateDataset = () => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className='rb:text-base rb:font-medium rb:text-gray-800'>
|
<div className='rb:text-base rb:font-medium rb:text-gray-800'>
|
||||||
|
{t('knowledgeBase.fileParsingSettings')}
|
||||||
|
</div>
|
||||||
|
<div className='rb:mt-4'>
|
||||||
|
<div
|
||||||
|
className={`rb:flex rb:items-center rb:w-full rb:border rb:rounded-lg rb:p-4 rb:cursor-pointer ${
|
||||||
|
pdfEnhancementEnabled ? 'rb:border-blue-500' : 'rb:border-gray-300'
|
||||||
|
}`}
|
||||||
|
onClick={() => setPdfEnhancementEnabled(!pdfEnhancementEnabled)}
|
||||||
|
>
|
||||||
|
<Checkbox
|
||||||
|
checked={pdfEnhancementEnabled}
|
||||||
|
onChange={(e) => setPdfEnhancementEnabled(e.target.checked)}
|
||||||
|
className='rb:mr-3'
|
||||||
|
/>
|
||||||
|
<span className='rb:text-base rb:font-medium rb:text-gray-800 rb:pl-[22px]'>
|
||||||
|
{t('knowledgeBase.pdfEnhancementAnalysis')}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className='rb:text-base rb:font-medium rb:text-gray-800 rb:mt-6'>
|
||||||
{t('knowledgeBase.dataProcessingSettings')}
|
{t('knowledgeBase.dataProcessingSettings')}
|
||||||
</div>
|
</div>
|
||||||
<div className='rb:font-medium rb:text-gray-500 rb:mt-4 rb:mb-3'>
|
<div className='rb:font-medium rb:text-gray-500 rb:mt-4 rb:mb-3'>
|
||||||
|
|||||||
@@ -118,6 +118,17 @@ const Private: FC = () => {
|
|||||||
let url = `/documents/${knowledgeBaseId}/documents`;
|
let url = `/documents/${knowledgeBaseId}/documents`;
|
||||||
setTableApi(url);
|
setTableApi(url);
|
||||||
fetchKnowledgeBaseDetail(knowledgeBaseId);
|
fetchKnowledgeBaseDetail(knowledgeBaseId);
|
||||||
|
|
||||||
|
// 立即设置基础面包屑,确保不会显示其他页面的面包屑
|
||||||
|
updateBreadcrumbs({
|
||||||
|
knowledgeBaseFolderPath,
|
||||||
|
knowledgeBase: {
|
||||||
|
id: knowledgeBaseId,
|
||||||
|
name: '加载中...',
|
||||||
|
type: 'knowledgeBase'
|
||||||
|
},
|
||||||
|
documentFolderPath: folderPath,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}, [knowledgeBaseId]);
|
}, [knowledgeBaseId]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user