diff --git a/ai_knowledge_base_v2/apps/admin-web/src/App.vue b/ai_knowledge_base_v2/apps/admin-web/src/App.vue index dd1ad70..c582d7c 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/App.vue +++ b/ai_knowledge_base_v2/apps/admin-web/src/App.vue @@ -12,6 +12,7 @@ import { api, clearToken, getToken, saveToken } from "./services/api"; import type { AdminProfile, AdminUser, + AdminUserDetail, AiLogRecord, ChatDetail, ChatRecord, @@ -41,6 +42,9 @@ const dashboardFilters = reactive({ end: "", }); const users = ref([]); +const selectedUserDetail = ref(null); +const userDetailOpen = ref(false); +const userDetailLoading = ref(false); const userKeyword = ref(""); const entitlementPlans = ref([]); const editingEntitlementPlanId = ref(null); @@ -401,6 +405,17 @@ async function assignUserEntitlement(row: AdminUser, planId: number) { ElMessage.success("用户权益已更新"); } +async function openUserDetail(row: AdminUser) { + userDetailOpen.value = true; + selectedUserDetail.value = null; + userDetailLoading.value = true; + try { + selectedUserDetail.value = await api.userDetail(row.id); + } finally { + userDetailLoading.value = false; + } +} + async function loadRecordTab(tab = recordTab.value) { loading.value = true; try { @@ -1138,10 +1153,20 @@ function formatRecordDateTime(value: string, boundary: "start" | "end") { - + @@ -1610,6 +1635,125 @@ function formatRecordDateTime(value: string, boundary: "start" | "end") { + +
+ +
+
+