handleSelectKnowledgeBase(dataset)}
+ style={{ opacity: isNavigating && selectedDatasetId !== dataset.id ? 0.6 : 1 }}
>
-
{dataset.name}
+
+ {dataset.name}
+ {selectedDatasetId === dataset.id && isNavigating && (
+
+ 加载中...
+
+ )}
+
{dataset.desc || dataset.description || ''}
diff --git a/src/pages/KnowledgeBase/Detail/SettingsTab.jsx b/src/pages/KnowledgeBase/Detail/SettingsTab.jsx
index ae5014b..bc59dc0 100644
--- a/src/pages/KnowledgeBase/Detail/SettingsTab.jsx
+++ b/src/pages/KnowledgeBase/Detail/SettingsTab.jsx
@@ -89,10 +89,10 @@ export default function SettingsTab({ knowledgeBase }) {
allowed = ['admin', 'leader', 'member', 'private', 'secret'].includes(value);
} else if (role === 'leader') {
// 组长只能选择 member 和 private
- allowed = ['member', 'private'].includes(value);
+ allowed = ['admin', 'member', 'private'].includes(value);
} else {
- // 普通成员只能选择 private
- allowed = value === 'private';
+ // 普通成员只能选择公共和private
+ allowed = ['admin', 'private'].includes(value);
}
if (!allowed) {
@@ -299,6 +299,7 @@ export default function SettingsTab({ knowledgeBase }) {
})
);
// Navigate back to knowledge base list
+ // Redux store 已在 reducer 中更新,不需要重新调用接口获取知识库列表
navigate('/knowledge-base');
})
.catch((error) => {
diff --git a/src/pages/KnowledgeBase/Detail/components/KnowledgeBaseForm.jsx b/src/pages/KnowledgeBase/Detail/components/KnowledgeBaseForm.jsx
index f53e54f..ff747d1 100644
--- a/src/pages/KnowledgeBase/Detail/components/KnowledgeBaseForm.jsx
+++ b/src/pages/KnowledgeBase/Detail/components/KnowledgeBaseForm.jsx
@@ -27,15 +27,15 @@ const KnowledgeBaseForm = ({
if (isAdmin) {
return [
{ value: 'admin', label: '公共知识库' },
- { value: 'leader', label: 'Leader 级知识库' },
- { value: 'member', label: 'Member 级知识库' },
+ { value: 'leader', label: '组长级知识库' },
+ { value: 'member', label: '组内知识库' },
{ value: 'private', label: '私有知识库' },
- { value: 'secret', label: '保密知识库' },
+ { value: 'secret', label: '私密知识库' },
];
} else if (isLeader) {
return [
{ value: 'admin', label: '公共知识库' },
- { value: 'member', label: 'Member 级知识库' },
+ { value: 'member', label: '组内知识库' },
{ value: 'private', label: '私有知识库' },
];
} else {
@@ -125,7 +125,7 @@ const KnowledgeBaseForm = ({
{/* 仅当不是私有知识库时才显示部门选项 */}
- {formData.type !== 'private' && (
+ {formData.type === 'member' && (
)}
{/* 仅当不是私有知识库时才显示组别选项 */}
- {formData.type !== 'private' && (
+ {formData.type === 'member' && (
diff --git a/src/pages/KnowledgeBase/KnowledgeBase.jsx b/src/pages/KnowledgeBase/KnowledgeBase.jsx
index 4240de1..0d87f4f 100644
--- a/src/pages/KnowledgeBase/KnowledgeBase.jsx
+++ b/src/pages/KnowledgeBase/KnowledgeBase.jsx
@@ -108,6 +108,7 @@ export default function KnowledgeBase() {
// Handle search input change
const handleSearchInputChange = (e) => {
const value = e.target.value;
+ console.log('搜索框输入值:', value);
setSearchKeyword(value);
// 如果搜索框清空,关闭下拉框
@@ -206,10 +207,10 @@ export default function KnowledgeBase() {
allowed = ['admin', 'leader', 'member', 'private', 'secret'].includes(value);
} else if (role === 'leader') {
// 组长只能选择 member 和 private
- allowed = ['member', 'private'].includes(value);
+ allowed = ['admin', 'member', 'private'].includes(value);
} else {
// 普通成员只能选择 private
- allowed = value === 'private';
+ allowed = ['admin', 'private'].includes(value);
}
if (!allowed) {
@@ -401,6 +402,7 @@ export default function KnowledgeBase() {
const handleDelete = (e, id) => {
e.preventDefault();
e.stopPropagation();
+
// Dispatch delete knowledge base action
dispatch(deleteKnowledgeBase(id))
.unwrap()
@@ -411,6 +413,7 @@ export default function KnowledgeBase() {
type: 'success',
})
);
+ // 不需要重新获取知识库列表,Redux store 已经在 reducer 中更新
})
.catch((error) => {
dispatch(
diff --git a/src/pages/KnowledgeBase/components/KnowledgeCard.jsx b/src/pages/KnowledgeBase/components/KnowledgeCard.jsx
index 022f478..8fe7ed2 100644
--- a/src/pages/KnowledgeBase/components/KnowledgeCard.jsx
+++ b/src/pages/KnowledgeBase/components/KnowledgeCard.jsx
@@ -94,13 +94,14 @@ export default function KnowledgeCard({
)}
{access === 'full' || access === 'read' ? (
-
+ <>>
+ //
) : (
{request.status === 'pending' && (
diff --git a/src/store/knowledgeBase/knowledgeBase.slice.js b/src/store/knowledgeBase/knowledgeBase.slice.js
index 9648e19..c95515c 100644
--- a/src/store/knowledgeBase/knowledgeBase.slice.js
+++ b/src/store/knowledgeBase/knowledgeBase.slice.js
@@ -104,7 +104,12 @@ const knowledgeBaseSlice = createSlice({
})
.addCase(deleteKnowledgeBase.fulfilled, (state, action) => {
state.loading = false;
- state.knowledgeBases = state.knowledgeBases.filter((kb) => kb.id !== action.meta.arg.knowledgeBaseId);
+ const deletedId = action.payload;
+ state.knowledgeBases = state.knowledgeBases.filter((kb) => kb.id !== deletedId);
+ if (state.pagination.total > 0) {
+ state.pagination.total -= 1;
+ state.pagination.total_pages = Math.ceil(state.pagination.total / state.pagination.page_size);
+ }
})
.addCase(deleteKnowledgeBase.rejected, (state, action) => {
state.loading = false;