审计日志并入系统管理、规范项目成员获取逻辑

This commit is contained in:
Cheng Zhou
2025-12-26 14:57:57 +08:00
parent 7c9befc3c9
commit 71db309e12
17 changed files with 94 additions and 116 deletions
+3 -3
View File
@@ -30,7 +30,7 @@ import { ElMessage } from "element-plus";
import { fetchComments, createComment } from "../api/comments";
import { useStudyStore } from "../store/study";
import { listMembers } from "../api/members";
import { displayDateTime, displayUser } from "../utils/display";
import { displayDateTime, displayUser, getMemberDisplayName } from "../utils/display";
interface Props {
studyId: string;
@@ -72,8 +72,8 @@ const loadMembers = async () => {
const memberMap = computed(() =>
members.value.reduce<Record<string, string>>((acc, cur) => {
const username = cur?.user?.display_name || cur?.user?.username || cur?.username;
if (cur?.user_id) acc[cur.user_id] = username || cur.user_id;
const username = getMemberDisplayName(cur);
if (cur?.user_id && username) acc[cur.user_id] = username;
return acc;
}, {})
);
+4 -4
View File
@@ -27,6 +27,10 @@
<el-icon><Suitcase /></el-icon>
<span>项目管理</span>
</el-menu-item>
<el-menu-item v-if="isAdmin" index="/admin/audit-logs">
<el-icon><Document /></el-icon>
<span>审计日志</span>
</el-menu-item>
</template>
<template v-if="study.currentStudy">
@@ -77,10 +81,6 @@
<el-icon><Notebook /></el-icon>
<span>知识库</span>
</el-menu-item>
<el-menu-item v-if="isAdmin || isPm" index="/study/audit-logs">
<el-icon><Document /></el-icon>
<span>审计日志</span>
</el-menu-item>
</template>
</el-menu>
</el-aside>
@@ -51,7 +51,7 @@ import { formatFileSize } from "./attachmentUtils";
import { useAuthStore } from "../../store/auth";
import { useStudyStore } from "../../store/study";
import { listMembers } from "../../api/members";
import { displayDateTime, displayUser } from "../../utils/display";
import { displayDateTime, displayUser, getMemberDisplayName, getUserDisplayName } from "../../utils/display";
const props = defineProps<{
studyId: string;
@@ -90,12 +90,12 @@ const loadMembers = async () => {
const uploaderLabel = (row: any) => {
const memberMap = members.value.reduce<Record<string, string>>((acc, cur) => {
const username = cur?.user?.display_name || cur?.user?.username || cur?.username;
if (cur?.user_id) acc[cur.user_id] = username || cur.user_id;
const username = getMemberDisplayName(cur);
if (cur?.user_id && username) acc[cur.user_id] = username;
return acc;
}, {});
if (row?.uploaded_by && typeof row.uploaded_by === "object") {
return row.uploaded_by.display_name || row.uploaded_by.username || row.uploaded_by.id || "—";
return getUserDisplayName(row.uploaded_by) || row.uploaded_by.id || "—";
}
return displayUser(row.uploaded_by_id || row.uploaded_by, { members: memberMap });
};