全局中文化
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
<div class="register-container">
|
||||
<div class="register-card">
|
||||
<div class="header">
|
||||
<h2>创建账号</h2>
|
||||
<p>提交后需管理员审核通过方可登录</p>
|
||||
<h2>{{ TEXT.modules.auth.registerTitle }}</h2>
|
||||
<p>{{ TEXT.modules.auth.registerDesc }}</p>
|
||||
</div>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
@@ -12,36 +12,36 @@
|
||||
label-position="top"
|
||||
@keyup.enter.native="onSubmit"
|
||||
>
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="form.email" placeholder="name@example.com" autocomplete="email" />
|
||||
<el-form-item :label="TEXT.modules.auth.emailLabel" prop="email">
|
||||
<el-input v-model="form.email" :placeholder="TEXT.modules.auth.emailPlaceholder" autocomplete="email" />
|
||||
</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.passwordRuleMix"
|
||||
show-password
|
||||
autocomplete="new-password"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="确认密码" prop="confirmPassword">
|
||||
<el-form-item :label="TEXT.modules.auth.confirmPasswordLabel" prop="confirmPassword">
|
||||
<el-input
|
||||
v-model="form.confirmPassword"
|
||||
type="password"
|
||||
placeholder="再次输入密码"
|
||||
:placeholder="TEXT.modules.auth.confirmPasswordPlaceholder"
|
||||
show-password
|
||||
autocomplete="new-password"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="full_name">
|
||||
<el-input v-model="form.full_name" placeholder="请输入姓名" />
|
||||
<el-form-item :label="TEXT.modules.auth.fullNameLabel" prop="full_name">
|
||||
<el-input v-model="form.full_name" :placeholder="TEXT.modules.auth.fullNamePlaceholder" />
|
||||
</el-form-item>
|
||||
<el-form-item label="部门" prop="department">
|
||||
<el-input v-model="form.department" placeholder="请输入部门" />
|
||||
<el-form-item :label="TEXT.modules.auth.departmentLabel" prop="department">
|
||||
<el-input v-model="form.department" :placeholder="TEXT.modules.auth.departmentPlaceholder" />
|
||||
</el-form-item>
|
||||
<div class="actions">
|
||||
<el-button type="primary" :loading="submitting" @click="onSubmit">提交注册</el-button>
|
||||
<RouterLink to="/login">已有账号?返回登录</RouterLink>
|
||||
<el-button type="primary" :loading="submitting" @click="onSubmit">{{ TEXT.modules.auth.registerButton }}</el-button>
|
||||
<RouterLink to="/login">{{ TEXT.modules.auth.backToLogin }}</RouterLink>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
@@ -55,6 +55,7 @@ import type { FormInstance, FormRules } from "element-plus";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { register as apiRegister } from "../api/auth";
|
||||
import type { RegisterRequest } from "../types/api";
|
||||
import { TEXT, requiredMessage } from "../locales";
|
||||
|
||||
const router = useRouter();
|
||||
const defaultRole: RegisterRequest["role"] = "CRA";
|
||||
@@ -72,11 +73,11 @@ const submitting = ref(false);
|
||||
const passwordRule = {
|
||||
validator: (_: any, value: string, callback: (err?: Error) => void) => {
|
||||
if (!value || value.length < 8) {
|
||||
callback(new Error("密码至少 8 位"));
|
||||
callback(new Error(TEXT.modules.auth.passwordRuleMin));
|
||||
return;
|
||||
}
|
||||
if (!/[A-Za-z]/.test(value) || !/[0-9]/.test(value)) {
|
||||
callback(new Error("需包含字母和数字"));
|
||||
callback(new Error(TEXT.modules.auth.passwordRuleMix));
|
||||
return;
|
||||
}
|
||||
callback();
|
||||
@@ -86,19 +87,19 @@ const passwordRule = {
|
||||
|
||||
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" },
|
||||
{ required: true, message: requiredMessage(TEXT.modules.auth.passwordLabel), trigger: "blur" },
|
||||
passwordRule,
|
||||
],
|
||||
confirmPassword: [
|
||||
{ required: true, message: "请确认密码", trigger: "blur" },
|
||||
{ required: true, message: requiredMessage(TEXT.modules.auth.confirmPasswordLabel), trigger: "blur" },
|
||||
{
|
||||
validator: (_: any, value: string, callback: (err?: Error) => void) => {
|
||||
if (value !== form.password) {
|
||||
callback(new Error("两次输入的密码不一致"));
|
||||
callback(new Error(TEXT.modules.auth.passwordMismatch));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
@@ -106,8 +107,8 @@ const rules: FormRules<typeof form> = {
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
full_name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
|
||||
department: [{ required: true, message: "请输入部门", trigger: "blur" }],
|
||||
full_name: [{ required: true, message: requiredMessage(TEXT.modules.auth.fullNameLabel), trigger: "blur" }],
|
||||
department: [{ required: true, message: requiredMessage(TEXT.modules.auth.departmentLabel), trigger: "blur" }],
|
||||
};
|
||||
|
||||
const onSubmit = async () => {
|
||||
@@ -123,7 +124,7 @@ const onSubmit = async () => {
|
||||
role: defaultRole,
|
||||
department: form.department,
|
||||
});
|
||||
ElMessage.success("注册成功,等待管理员审核");
|
||||
ElMessage.success(TEXT.modules.auth.registerSuccess);
|
||||
setTimeout(() => {
|
||||
router.push("/login");
|
||||
}, 3000);
|
||||
|
||||
Reference in New Issue
Block a user