全局中文化
This commit is contained in:
@@ -1,24 +1,24 @@
|
||||
<template>
|
||||
<el-dialog :title="site ? '编辑中心' : '新建中心'" width="520px" v-model="visibleProxy" :close-on-click-modal="false">
|
||||
<el-dialog :title="site ? TEXT.modules.adminSites.editTitle : TEXT.modules.adminSites.newTitle" width="520px" v-model="visibleProxy" :close-on-click-modal="false">
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="中心名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入中心名称" />
|
||||
<el-form-item :label="TEXT.common.fields.siteName" prop="name">
|
||||
<el-input v-model="form.name" :placeholder="TEXT.common.placeholders.input + TEXT.common.fields.siteName" />
|
||||
</el-form-item>
|
||||
<el-form-item label="城市" prop="city">
|
||||
<el-input v-model="form.city" placeholder="所在城市(可选)" />
|
||||
<el-form-item :label="TEXT.common.fields.city" prop="city">
|
||||
<el-input v-model="form.city" :placeholder="TEXT.modules.adminSites.cityPlaceholder" />
|
||||
</el-form-item>
|
||||
<el-form-item label="PI" prop="pi_name">
|
||||
<el-input v-model="form.pi_name" placeholder="PI(可选)" />
|
||||
<el-form-item :label="TEXT.modules.adminSites.piLabel" prop="pi_name">
|
||||
<el-input v-model="form.pi_name" :placeholder="TEXT.modules.adminSites.piPlaceholder" />
|
||||
</el-form-item>
|
||||
<el-form-item label="电话" prop="phone">
|
||||
<el-input v-model="form.phone" placeholder="电话(可选)" />
|
||||
<el-form-item :label="TEXT.common.fields.phone" prop="phone">
|
||||
<el-input v-model="form.phone" :placeholder="TEXT.modules.adminSites.phonePlaceholder" />
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人" prop="contact">
|
||||
<el-form-item :label="TEXT.common.fields.contact" prop="contact">
|
||||
<el-select
|
||||
v-model="form.craSelections"
|
||||
multiple
|
||||
filterable
|
||||
placeholder="选择项目成员作为负责人,可多选"
|
||||
:placeholder="TEXT.modules.adminSites.contactPlaceholder"
|
||||
>
|
||||
<el-option
|
||||
v-for="user in craOptions"
|
||||
@@ -28,13 +28,13 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="site" label="状态" prop="is_active">
|
||||
<el-switch v-model="form.is_active" active-text="启用" inactive-text="停用" />
|
||||
<el-form-item v-if="site" :label="TEXT.common.fields.status" prop="is_active">
|
||||
<el-switch v-model="form.is_active" :active-text="TEXT.common.actions.enable" :inactive-text="TEXT.common.actions.disable" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visibleProxy = false">取消</el-button>
|
||||
<el-button type="primary" :loading="submitting" @click="onSubmit">保存</el-button>
|
||||
<el-button @click="visibleProxy = false">{{ TEXT.common.actions.cancel }}</el-button>
|
||||
<el-button type="primary" :loading="submitting" @click="onSubmit">{{ TEXT.common.actions.save }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@@ -47,6 +47,7 @@ import type { Site } from "../../types/api";
|
||||
import { useAuthStore } from "../../store/auth";
|
||||
import { evaluateAction } from "../../guards/actionGuard";
|
||||
import { logAudit } from "../../audit";
|
||||
import { TEXT, requiredMessage } from "../../locales";
|
||||
|
||||
const props = defineProps<{
|
||||
visible: boolean;
|
||||
@@ -80,7 +81,7 @@ const form = reactive({
|
||||
});
|
||||
|
||||
const rules = reactive<FormRules>({
|
||||
name: [{ required: true, message: "请输入中心名称", trigger: "blur" }],
|
||||
name: [{ required: true, message: requiredMessage(TEXT.common.fields.siteName), trigger: "blur" }],
|
||||
});
|
||||
|
||||
const craOptions = computed(() => {
|
||||
@@ -138,7 +139,7 @@ const onSubmit = async () => {
|
||||
target: { siteId: props.site?.id, studyId: props.studyId },
|
||||
});
|
||||
if (!decision.allowed) {
|
||||
ElMessage.warning(decision.reason || "无权限执行该操作");
|
||||
ElMessage.warning(decision.reason || TEXT.common.messages.noPermission);
|
||||
logAudit(decision.auditType, {
|
||||
targetId: props.site?.id || props.studyId,
|
||||
targetName: props.site?.name,
|
||||
@@ -159,7 +160,7 @@ const onSubmit = async () => {
|
||||
contact,
|
||||
is_active: form.is_active,
|
||||
});
|
||||
ElMessage.success("中心已更新");
|
||||
ElMessage.success(TEXT.modules.adminSites.updateSuccess);
|
||||
logAudit("SITE_STATUS_CHANGED", {
|
||||
targetId: props.site.id,
|
||||
targetName: props.site.name,
|
||||
@@ -173,7 +174,7 @@ const onSubmit = async () => {
|
||||
pi_name: form.pi_name,
|
||||
contact,
|
||||
});
|
||||
ElMessage.success("中心已创建");
|
||||
ElMessage.success(TEXT.modules.adminSites.createSuccess);
|
||||
logAudit("SITE_STATUS_CHANGED", {
|
||||
targetId: props.studyId,
|
||||
targetName: form.name,
|
||||
@@ -184,7 +185,7 @@ const onSubmit = async () => {
|
||||
emit("saved");
|
||||
visibleProxy.value = false;
|
||||
} catch (e: any) {
|
||||
ElMessage.error(e?.response?.data?.message || "保存失败");
|
||||
ElMessage.error(e?.response?.data?.message || TEXT.common.messages.saveFailed);
|
||||
logAudit("SITE_STATUS_CHANGED", {
|
||||
targetId: props.site?.id || props.studyId,
|
||||
targetName: props.site?.name || form.name,
|
||||
|
||||
Reference in New Issue
Block a user