中文:收口权限与中心/立项配置改造

This commit is contained in:
Cheng Zhou
2026-05-12 10:16:52 +08:00
parent 6e90370a5f
commit 77e842637d
67 changed files with 706 additions and 669 deletions
+8 -6
View File
@@ -175,6 +175,7 @@ import { useAuthStore } from "../../store/auth";
import { roleDict, getDictLabel } from "../../dictionaries";
import { exportAuditCsv } from "../../audit/export/auditExportService";
import { displayDateTime } from "../../utils/display";
import { getProjectRole, isSystemAdmin } from "../../utils/roles";
import { TEXT } from "../../locales";
const study = useStudyStore();
@@ -209,19 +210,20 @@ const resolveUserDisplayName = (u: any): string => {
};
const userOptions = computed(() => users.value.map((u: any) => ({ label: resolveUserDisplayName(u), value: u.id })));
const isAdmin = computed(() => auth.user?.role === "ADMIN");
const canProjectExport = computed(() => !!study.currentStudy && auth.user?.role === "ADMIN");
const isAdmin = computed(() => isSystemAdmin(auth.user));
const projectRole = computed(() => getProjectRole(study.currentStudy, study.currentStudyRole));
const canProjectExport = computed(() => !!study.currentStudy && isAdmin.value);
const canAccessAuditLogs = computed(() => isAdmin.value || projectRole.value === "PM");
const ensureAccess = () => {
const role = auth.user?.role;
if (role !== "ADMIN") {
router.replace("/admin/users");
if (!canAccessAuditLogs.value) {
router.replace(study.currentStudy ? "/project/overview" : "/workbench");
}
};
const loadUsers = async () => {
try {
if (auth.user?.role === "ADMIN") {
if (isAdmin.value) {
const { data } = await fetchUsers({ limit: 500 });
users.value = Array.isArray(data) ? data : (data as any).items || [];
} else if (study.currentStudy) {