全局中文化
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user