全局中文化

This commit is contained in:
Cheng Zhou
2026-01-12 11:14:04 +08:00
parent 9021c7fe2b
commit 1338fa7e2b
103 changed files with 2443 additions and 1533 deletions
+27 -26
View File
@@ -3,7 +3,7 @@
<el-aside :width="isCollapsed ? '72px' : '240px'" class="layout-aside" :class="{ collapsed: isCollapsed }" v-if="isAdmin || study.currentStudy">
<div class="aside-logo">
<div class="logo-icon"></div>
<span class="logo-text">CTMS</span>
<span class="logo-text">{{ TEXT.common.appName }}</span>
</div>
<el-menu
router
@@ -14,73 +14,73 @@
>
<el-menu-item v-if="!isAdmin" index="/workbench">
<el-icon><Monitor /></el-icon>
<span>我的工作台</span>
<span>{{ TEXT.menu.workbench }}</span>
</el-menu-item>
<template v-if="isAdmin">
<div class="menu-divider">管理后台</div>
<div class="menu-divider">{{ TEXT.menu.admin }}</div>
<el-menu-item index="/admin/users">
<el-icon><User /></el-icon>
<span>账号管理</span>
<span>{{ TEXT.menu.accountManagement }}</span>
</el-menu-item>
<el-menu-item index="/admin/projects">
<el-icon><Suitcase /></el-icon>
<span>项目管理</span>
<span>{{ TEXT.menu.projectManagement }}</span>
</el-menu-item>
<el-menu-item v-if="isAdmin" index="/admin/audit-logs">
<el-icon><Document /></el-icon>
<span>审计日志</span>
<span>{{ TEXT.menu.auditLogs }}</span>
</el-menu-item>
</template>
<template v-if="study.currentStudy">
<div class="menu-divider">当前项目</div>
<div class="menu-divider">{{ TEXT.menu.currentProject }}</div>
<el-menu-item index="/project/overview">
<el-icon><House /></el-icon>
<span>项目总览</span>
<span>{{ TEXT.menu.projectOverview }}</span>
</el-menu-item>
<el-sub-menu index="finance">
<template #title>
<el-icon><Coin /></el-icon>
<span>费用管理</span>
<span>{{ TEXT.menu.finance }}</span>
</template>
<el-menu-item index="/finance/contracts">合同费用</el-menu-item>
<el-menu-item index="/finance/special">特殊费用</el-menu-item>
<el-menu-item index="/finance/contracts">{{ TEXT.menu.financeContracts }}</el-menu-item>
<el-menu-item index="/finance/special">{{ TEXT.menu.financeSpecials }}</el-menu-item>
</el-sub-menu>
<el-sub-menu index="drug">
<template #title>
<el-icon><Box /></el-icon>
<span>药品管理</span>
<span>{{ TEXT.menu.drug }}</span>
</template>
<el-menu-item index="/drug/shipments">运输/流向</el-menu-item>
<el-menu-item index="/drug/shipments">{{ TEXT.menu.drugShipments }}</el-menu-item>
</el-sub-menu>
<el-menu-item index="/startup/feasibility-ethics">
<el-icon><Calendar /></el-icon>
<span>立项与伦理</span>
<span>{{ TEXT.menu.startupFeasibilityEthics }}</span>
</el-menu-item>
<el-menu-item index="/startup/meeting-auth">
<el-icon><CircleCheck /></el-icon>
<span>启动与授权</span>
<span>{{ TEXT.menu.startupMeetingAuth }}</span>
</el-menu-item>
<el-menu-item index="/subjects">
<el-icon><User /></el-icon>
<span>受试者管理</span>
<span>{{ TEXT.menu.subjects }}</span>
</el-menu-item>
<el-menu-item index="/monitoring">
<el-icon><ChatDotRound /></el-icon>
<span>监查</span>
<span>{{ TEXT.menu.monitoring }}</span>
</el-menu-item>
<el-menu-item index="/audit">
<el-icon><Flag /></el-icon>
<span>稽查</span>
<span>{{ TEXT.menu.audit }}</span>
</el-menu-item>
<el-sub-menu index="knowledge">
<template #title>
<el-icon><Notebook /></el-icon>
<span>知识库</span>
<span>{{ TEXT.menu.knowledge }}</span>
</template>
<el-menu-item index="/knowledge/medical-consult">医学咨询</el-menu-item>
<el-menu-item index="/knowledge/notes">注意事项</el-menu-item>
<el-menu-item index="/knowledge/medical-consult">{{ TEXT.menu.knowledgeMedicalConsult }}</el-menu-item>
<el-menu-item index="/knowledge/notes">{{ TEXT.menu.knowledgeNotes }}</el-menu-item>
</el-sub-menu>
</template>
</el-menu>
@@ -89,7 +89,7 @@
<el-container class="main-container">
<el-header class="layout-header">
<div class="header-left">
<el-button class="collapse-btn" @click="toggleCollapse" aria-label="收缩侧边栏">
<el-button class="collapse-btn" @click="toggleCollapse" :aria-label="TEXT.common.labels.collapseSidebar">
<el-icon class="collapse-icon">
<svg viewBox="0 0 24 24" aria-hidden="true">
<rect x="4" y="5" width="16" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="1.8" />
@@ -108,20 +108,20 @@
shape="square"
class="user-avatar-comp"
>
{{ (auth.user?.username || auth.user?.email || "U").charAt(0).toUpperCase() }}
{{ (auth.user?.username || auth.user?.email || TEXT.common.labels.userInitialFallback).charAt(0).toUpperCase() }}
</el-avatar>
<span class="username">{{ auth.user?.username || auth.user?.email || "用户" }}</span>
<span class="username">{{ auth.user?.username || auth.user?.email || TEXT.common.labels.userFallback }}</span>
<el-icon><ArrowDown /></el-icon>
</span>
<template #dropdown>
<el-dropdown-menu class="user-dropdown-menu">
<el-dropdown-item command="profile">
<el-icon><User /></el-icon>
<span>个人中心</span>
<span>{{ TEXT.menu.profile }}</span>
</el-dropdown-item>
<el-dropdown-item command="logout">
<el-icon><SwitchButton /></el-icon>
<span>退出登录</span>
<span>{{ TEXT.menu.logout }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</template>
@@ -148,6 +148,7 @@ import { useRoute, useRouter } from "vue-router";
import { useAuthStore } from "../store/auth";
import { useStudyStore } from "../store/study";
import StudySelector from "./StudySelector.vue";
import { TEXT } from "../locales";
import {
Monitor, User, Suitcase, House, Calendar, Flag, ChatDotRound,
CircleCheck, Box, Coin, Notebook, Document, ArrowDown, SwitchButton