全局中文化

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
+19 -18
View File
@@ -2,14 +2,14 @@
<div class="login-container">
<div class="login-content">
<div class="login-brand">
<h1 class="brand-title">CTMS</h1>
<p class="brand-subtitle">临床试验管理系统</p>
<h1 class="brand-title">{{ TEXT.common.appName }}</h1>
<p class="brand-subtitle">{{ TEXT.modules.auth.brandSubtitle }}</p>
</div>
<el-card class="login-card">
<div class="login-header">
<h2 class="form-title">欢迎回来</h2>
<p class="form-desc">请输入您的凭据以访问系统</p>
<h2 class="form-title">{{ TEXT.modules.auth.loginTitle }}</h2>
<p class="form-desc">{{ TEXT.modules.auth.loginDesc }}</p>
</div>
<el-form
@@ -20,10 +20,10 @@
@keyup.enter.native="onSubmit"
class="elegant-form"
>
<el-form-item label="电子邮箱" prop="email">
<el-form-item :label="TEXT.modules.auth.emailLabel" prop="email">
<el-input
v-model="form.email"
placeholder="name@company.com"
:placeholder="TEXT.modules.auth.emailPlaceholder"
autocomplete="email"
>
<template #prefix>
@@ -31,11 +31,11 @@
</template>
</el-input>
</el-form-item>
<el-form-item label="登录密码" prop="password">
<el-form-item :label="TEXT.modules.auth.passwordLabel" prop="password">
<el-input
v-model="form.password"
type="password"
placeholder="最小 8 位字符"
:placeholder="TEXT.modules.auth.passwordPlaceholder"
autocomplete="current-password"
show-password
>
@@ -46,8 +46,8 @@
</el-form-item>
<div class="form-options">
<el-checkbox v-model="form.remember">记住我</el-checkbox>
<RouterLink to="/forgot-password" class="forgot-link">忘记密码</RouterLink>
<el-checkbox v-model="form.remember">{{ TEXT.modules.auth.remember }}</el-checkbox>
<RouterLink to="/forgot-password" class="forgot-link">{{ TEXT.modules.auth.forgot }}</RouterLink>
</div>
<el-button
@@ -56,18 +56,18 @@
class="submit-btn"
@click="onSubmit"
>
{{ TEXT.modules.auth.loginButton }}
</el-button>
<div class="register-prompt">
<span>还没有账号</span>
<RouterLink to="/register">立即注册</RouterLink>
<span>{{ TEXT.modules.auth.registerPrompt }}</span>
<RouterLink to="/register">{{ TEXT.modules.auth.registerNow }}</RouterLink>
</div>
</el-form>
</el-card>
<div class="login-footer">
<p>© 2025 CTMS Enterprise. Powered by Professional Clinical Research.</p>
<p>{{ TEXT.modules.auth.footer }}</p>
</div>
</div>
</div>
@@ -80,6 +80,7 @@ import { ElCheckbox, ElMessage, type FormInstance, type FormRules } from "elemen
import { Message, Lock } from "@element-plus/icons-vue";
import { useAuthStore } from "../store/auth";
import { getCachedCredential, setCachedCredential, clearCachedCredential } from "../utils/auth";
import { TEXT, requiredMessage } from "../locales";
const auth = useAuthStore();
const router = useRouter();
@@ -93,10 +94,10 @@ const form = reactive({
const rules: FormRules<typeof form> = {
email: [
{ required: true, message: "请输入有效的邮箱地址", trigger: "blur" },
{ type: "email", message: "邮箱格式不正确", trigger: "blur" },
{ required: true, message: requiredMessage(TEXT.modules.auth.emailLabel), trigger: "blur" },
{ type: "email", message: TEXT.common.validation.invalidEmail, trigger: "blur" },
],
password: [{ required: true, message: "请输入您的密码", trigger: "blur" }],
password: [{ required: true, message: requiredMessage(TEXT.modules.auth.passwordLabel), trigger: "blur" }],
};
const loading = ref(false);
@@ -125,7 +126,7 @@ const onSubmit = async () => {
router.push("/");
} catch (error: any) {
const detail = error?.response?.data?.detail || error?.response?.data?.message;
ElMessage.error(detail || "认证失败,请检查您的凭据");
ElMessage.error(detail || TEXT.modules.auth.authFailed);
} finally {
loading.value = false;
}