diff --git a/ai_knowledge_base_v2/apps/admin-web/src/components/KnowledgeManagementView.vue b/ai_knowledge_base_v2/apps/admin-web/src/components/KnowledgeManagementView.vue index 220b7e2..dbae91b 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/components/KnowledgeManagementView.vue +++ b/ai_knowledge_base_v2/apps/admin-web/src/components/KnowledgeManagementView.vue @@ -297,19 +297,24 @@ async function rollback(version: KnowledgeVersion) { } } -async function toggleOpen(item: KnowledgeItem) { +async function toggleOpen(item: KnowledgeItem): Promise { const next = item.status !== 1; if (!await confirmAction( next ? "开放后,该知识库将从用户下一条消息开始进入 Agent 动态知识目录。" : "关闭后,当前生成不受影响,从用户下一条消息开始无法检索该知识库。", next ? "开放知识库" : "关闭知识库", { confirmButtonText: next ? "确认开放" : "确认关闭", cancelButtonText: "取消", type: "warning" }, - )) return; + )) return false; + operatingId.value = item.id; try { await api.setKnowledgeOpen(item.id, next); ElMessage.success(next ? "知识库已开放" : "知识库已关闭"); - await load(); + if (detailOpen.value && detail.value?.knowledge.id === item.id) await refreshDetail(item.id); + return true; } catch (error) { ElMessage.error(errorMessage(error, next ? "知识库开放失败" : "知识库关闭失败")); + return false; + } finally { + operatingId.value = null; } } @@ -415,9 +420,9 @@ async function confirmAction( - + - + @@ -446,7 +451,7 @@ async function confirmAction( - + @@ -456,7 +461,7 @@ async function confirmAction( - + @@ -485,6 +490,12 @@ async function confirmAction( margin: 0; } +.knowledge-status-cell { + display: flex; + align-items: center; + gap: 10px; +} + .batch-edit-form { margin-top: 20px; } diff --git a/ai_knowledge_base_v2/apps/admin-web/src/main.ts b/ai_knowledge_base_v2/apps/admin-web/src/main.ts index 20c69a6..c70af7d 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/main.ts +++ b/ai_knowledge_base_v2/apps/admin-web/src/main.ts @@ -1,30 +1,40 @@ import { + ElAlert, ElButton, ElCollapse, ElCollapseItem, ElDatePicker, ElDivider, + ElDialog, ElDrawer, + ElDropdown, + ElDropdownItem, + ElDropdownMenu, ElEmpty, ElForm, ElFormItem, ElInput, ElInputNumber, ElOption, + ElProgress, ElSelect, ElSwitch, ElTabPane, ElTable, ElTableColumn, ElTabs, + ElTag, vLoading, } from "element-plus"; import "element-plus/theme-chalk/base.css"; +import "element-plus/theme-chalk/el-alert.css"; import "element-plus/theme-chalk/el-button.css"; import "element-plus/theme-chalk/el-collapse.css"; import "element-plus/theme-chalk/el-date-picker.css"; import "element-plus/theme-chalk/el-divider.css"; +import "element-plus/theme-chalk/el-dialog.css"; import "element-plus/theme-chalk/el-drawer.css"; +import "element-plus/theme-chalk/el-dropdown.css"; import "element-plus/theme-chalk/el-empty.css"; import "element-plus/theme-chalk/el-form.css"; import "element-plus/theme-chalk/el-input.css"; @@ -34,10 +44,12 @@ import "element-plus/theme-chalk/el-message.css"; import "element-plus/theme-chalk/el-message-box.css"; import "element-plus/theme-chalk/el-option.css"; import "element-plus/theme-chalk/el-overlay.css"; +import "element-plus/theme-chalk/el-progress.css"; import "element-plus/theme-chalk/el-select.css"; import "element-plus/theme-chalk/el-switch.css"; import "element-plus/theme-chalk/el-table.css"; import "element-plus/theme-chalk/el-tabs.css"; +import "element-plus/theme-chalk/el-tag.css"; import { createApp } from "vue"; import zhCn from "element-plus/es/locale/lang/zh-cn"; @@ -48,24 +60,31 @@ const app = createApp(App); app.config.globalProperties.$ELEMENT = { locale: zhCn }; [ + ElAlert, ElButton, ElCollapse, ElCollapseItem, ElDatePicker, ElDivider, + ElDialog, ElDrawer, + ElDropdown, + ElDropdownItem, + ElDropdownMenu, ElEmpty, ElForm, ElFormItem, ElInput, ElInputNumber, ElOption, + ElProgress, ElSelect, ElSwitch, ElTabPane, ElTable, ElTableColumn, ElTabs, + ElTag, ].forEach((component) => { app.use(component); });