i18n(ui): 国际化界面文本替换

- 替换费用配置页面的所有静态文本为国际化标签
- 替换组织机构管理页面的表单标签和按钮文本
- 替换病房管理页面的列标题和操作按钮
- 替换设备对照对话框的标题和占位符文本
- 替换诊断治疗对照对话框的标题和字段标签
- 替换CDSS告警页面的消息提示文本
- 在相关组件中引入vue-i18n并创建翻译实例
This commit is contained in:
2026-06-26 09:06:46 +08:00
parent 2e1112b902
commit 905d9c7ffc
6 changed files with 98 additions and 92 deletions

View File

@@ -3,13 +3,13 @@
<el-card shadow="never">
<template #header>
<div class="card-header">
<span class="card-title">费用配置</span>
<span class="card-title">{{ $t('basic.fee.title') }}</span>
<el-button
type="primary"
icon="Plus"
@click="handleAdd"
>
新增项目
{{ $t('common.add') }}
</el-button>
</div>
</template>
@@ -18,10 +18,10 @@
:model="queryParams"
label-width="80px"
>
<el-form-item label="关键字">
<el-form-item :label="$t('basic.fee.keyword')">
<el-input
v-model="queryParams.searchKey"
placeholder="项目名称/编码"
:placeholder="$t('basic.fee.placeholderSearch')"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
@@ -33,13 +33,13 @@
icon="Search"
@click="handleQuery"
>
搜索
{{ $t('common.search') }}
</el-button>
<el-button
icon="Refresh"
@click="resetQuery"
>
重置
{{ $t('common.reset') }}
</el-button>
</el-form-item>
</el-form>
@@ -51,28 +51,28 @@
>
<vxe-column
type="seq"
title="序号"
:title="$t('common.seq')"
width="60"
/>
<vxe-column
field="conditionCode"
title="编码"
:title="$t('basic.fee.code')"
width="120"
/>
<vxe-column
field="name"
title="项目名称"
:title="$t('basic.fee.name')"
min-width="200"
show-overflow="title"
/>
<vxe-column
field="typeCode"
title="类型"
:title="$t('basic.fee.type')"
width="100"
/>
<vxe-column
field="status"
title="状态"
:title="$t('common.status')"
width="80"
align="center"
>
@@ -81,12 +81,12 @@
:type="row.status === '0' ? 'success' : 'info'"
size="small"
>
{{ row.status === '0' ? '启用' : '停用' }}
{{ row.status === '0' ? $t('common.enabled') : $t('common.disabled') }}
</el-tag>
</template>
</vxe-column>
<vxe-column
title="操作"
:title="$t('common.action')"
width="120"
fixed="right"
>
@@ -97,7 +97,7 @@
icon="Edit"
@click="handleEdit(row)"
>
编辑
{{ $t('common.edit') }}
</el-button>
</template>
</vxe-column>
@@ -123,49 +123,49 @@
label-width="100px"
>
<el-form-item
label="项目编码"
:label="$t('basic.fee.code')"
prop="conditionCode"
>
<el-input
v-model="form.conditionCode"
placeholder="项目编码"
:placeholder="$t('basic.fee.code')"
/>
</el-form-item>
<el-form-item
label="项目名称"
:label="$t('basic.fee.name')"
prop="name"
>
<el-input
v-model="form.name"
placeholder="项目名称"
:placeholder="$t('basic.fee.name')"
/>
</el-form-item>
<el-form-item label="类型">
<el-form-item :label="$t('basic.fee.type')">
<el-select
v-model="form.typeCode"
placeholder="选择类型"
:placeholder="$t('basic.fee.selectType')"
clearable
style="width:100%"
>
<el-option
label="诊疗费"
:label="$t('basic.fee.typeTreat')"
value="TREAT"
/><el-option
label="药品费"
:label="$t('basic.fee.typeDrug')"
value="DRUG"
/>
<el-option
label="检查费"
:label="$t('basic.fee.typeExam')"
value="EXAM"
/><el-option
label="检验费"
:label="$t('basic.fee.typeLab')"
value="LAB"
/>
<el-option
label="处置费"
:label="$t('basic.fee.typeDisposal')"
value="DISPOSAL"
/><el-option
label="材料费"
:label="$t('basic.fee.typeMaterial')"
value="MATERIAL"
/>
</el-select>
@@ -173,13 +173,13 @@
</el-form>
<template #footer>
<el-button @click="formVisible = false">
取消
{{ $t('common.cancel') }}
</el-button>
<el-button
type="primary"
@click="submitForm"
>
确定
{{ $t('common.confirm') }}
</el-button>
</template>
</el-dialog>
@@ -199,9 +199,9 @@ const rules = computed(() => ({ conditionCode: [{ required: true, message: t('ba
function getList() { loading.value = true; getFeePage(queryParams.value).then(res => { tableData.value = res.data?.records || []; total.value = res.data?.total || 0 }).finally(() => { loading.value = false }) }
function handleQuery() { queryParams.value.pageNo = 1; getList() }
function resetQuery() { queryParams.value = { searchKey: '', pageNo: 1, pageSize: 10 }; getList() }
function handleAdd() { isEdit.value = false; formTitle.value = '新增项目'; form.value = { id: null, conditionCode: '', name: '', typeCode: 'TREAT' }; formVisible.value = true }
function handleEdit(row) { isEdit.value = true; formTitle.value = '编辑项目'; form.value = { ...row }; formVisible.value = true }
function submitForm() { formRef.value.validate(valid => { if (!valid) return; const action = isEdit.value ? updateFee(form.value) : addFee(form.value); action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? '修改成功' : '新增成功'); formVisible.value = false; getList() } else ElMessage.error(res.msg || t('common.operationFailed')) }) }) }
function handleAdd() { isEdit.value = false; formTitle.value = t('basic.fee.addTitle'); form.value = { id: null, conditionCode: '', name: '', typeCode: 'TREAT' }; formVisible.value = true }
function handleEdit(row) { isEdit.value = true; formTitle.value = t('basic.fee.editTitle'); form.value = { ...row }; formVisible.value = true }
function submitForm() { formRef.value.validate(valid => { if (!valid) return; const action = isEdit.value ? updateFee(form.value) : addFee(form.value); action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? t('basic.fee.msgEditSuccess') : t('basic.fee.msgAddSuccess')); formVisible.value = false; getList() } else ElMessage.error(res.msg || t('common.operationFailed')) }) }) }
onMounted(() => getList())
</script>
<style lang="scss" scoped>

View File

@@ -9,24 +9,24 @@
class="query-form"
>
<el-form-item
label="科室名称"
:label="$t('basic.organization.deptName')"
prop="name"
>
<el-input
v-model="queryParams.name"
placeholder="请输入科室名称"
:placeholder="$t('basic.organization.placeholderDeptName')"
clearable
style="width: 200px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item
label="科室类型"
:label="$t('basic.organization.deptType')"
prop="typeEnum"
>
<el-select
v-model="queryParams.typeEnum"
placeholder="请选择科室类型"
:placeholder="$t('basic.organization.placeholderDeptType')"
clearable
style="width: 200px"
>
@@ -39,12 +39,12 @@
</el-select>
</el-form-item>
<el-form-item
label="科室分类"
:label="$t('basic.organization.deptClass')"
prop="classEnum"
>
<el-select
v-model="queryParams.classEnum"
placeholder="请选择科室分类"
:placeholder="$t('basic.organization.placeholderDeptClass')"
clearable
multiple
style="width: 200px"
@@ -63,13 +63,13 @@
icon="Search"
@click="handleQuery"
>
搜索
{{ $t('common.search') }}
</el-button>
<el-button
icon="Refresh"
@click="resetQuery"
>
重置
{{ $t('common.reset') }}
</el-button>
</el-form-item>
</el-form>
@@ -85,12 +85,12 @@
icon="Plus"
@click="handleAdd"
>
新增
{{ $t('common.add') }}
</el-button>
</el-col>
<el-col :span="1.5">
<el-tooltip
:content="selectRowIds.length == 0 ? '至少选择一条数据' : ''"
:content="selectRowIds.length == 0 ? $t('common.selectAtLeastOne') : ''"
placement="top"
:disabled="selectRowIds.length != 0"
>
@@ -101,7 +101,7 @@
:disabled="selectRowIds.length == 0"
@click="handleDelete"
>
删除
{{ $t('common.delete') }}
</el-button>
</el-tooltip>
</el-col>
@@ -112,7 +112,7 @@
icon="Download"
@click="handleExport"
>
导出
{{ $t('common.export') }}
</el-button>
</el-col>
<el-col :span="1.5">
@@ -122,7 +122,7 @@
icon="Refresh"
@click="getPageList"
>
刷新
{{ $t('common.refresh') }}
</el-button>
</el-col>
<right-toolbar
@@ -142,17 +142,17 @@
width="55"
/>
<vxe-column
title="科室名称"
:title="$t('basic.organization.deptName')"
align="left"
field="name"
/>
<vxe-column
title="科室类型"
:title="$t('basic.organization.deptType')"
align="center"
field="typeEnum_dictText"
/>
<vxe-column
title="科室分类"
:title="$t('basic.organization.deptClass')"
align="center"
>
<template #default="scope">
@@ -170,48 +170,48 @@
</template>
</vxe-column>
<vxe-column
title="医保码"
:title="$t('basic.organization.medicalInsuranceCode')"
align="center"
field="ybNo"
/>
<vxe-column
title="医保名称"
:title="$t('basic.organization.medicalInsuranceName')"
align="center"
field="ybName"
/>
<vxe-column
title="挂号科室"
:title="$t('basic.organization.registrationDept')"
align="center"
>
<template #default="scope">
{{ scope.row.registerFlag ? '是' : '否' }}
{{ scope.row.registerFlag ? $t('common.yes') : $t('common.no') }}
</template>
</vxe-column>
<vxe-column
title="科室位置"
:title="$t('basic.organization.location')"
align="center"
field="location"
show-overflow="title"
/>
<vxe-column
title="科室简介"
:title="$t('basic.organization.intro')"
align="center"
field="intro"
show-overflow="title"
/>
<vxe-column
title="备注"
:title="$t('common.remark')"
align="center"
field="remark"
show-overflow="title"
/>
<vxe-column
title="状态"
:title="$t('common.status')"
align="center"
field="activeFlag_dictText"
/>
<vxe-column
title="操作"
:title="$t('common.operation')"
align="center"
>
<template #default="scope">

View File

@@ -50,12 +50,12 @@
width="55"
/>
<vxe-column
title="病区"
:title="$t('basic.ward.wardArea')"
align="center"
field="name"
/>
<vxe-column
title="病区号"
:title="$t('basic.ward.wardAreaNo')"
align="center"
field="startTime"
>
@@ -64,7 +64,7 @@
</template>
</vxe-column>
<vxe-column
title="状态"
:title="$t('common.status')"
align="center"
field="statusEnum_enumText"
>
@@ -83,7 +83,7 @@
</template>
</vxe-column>
<vxe-column
title="操作"
:title="$t('common.operation')"
align="center"
width="150"
>
@@ -93,7 +93,7 @@
link
@click.stop="handleEdit(scope.row)"
>
编辑
{{ $t('common.edit') }}
</el-button>
<el-button
v-if="
@@ -112,7 +112,7 @@
}
"
>
停用
{{ $t('common.disable') }}
</el-button>
<el-button
v-else-if="scope.row.statusEnum === 2"
@@ -127,14 +127,14 @@
}
"
>
启用
{{ $t('common.enable') }}
</el-button>
<el-button
type="danger"
link
@click="handleDelete(scope.row)"
>
删除
{{ $t('common.delete') }}
</el-button>
</template>
</vxe-column>
@@ -144,21 +144,21 @@
<div style="width: 69%; height: 100%; padding-bottom: 20px">
<el-card style="margin-bottom: 20px">
<template #header>
<span style="vertical-align: middle">病房</span>
<span style="vertical-align: middle">{{ $t('basic.ward.room') }}</span>
</template>
<el-button
type="success"
plain
@click="handleEnableBatch('hourseRef')"
>
批量启用
{{ $t('basic.ward.batchEnable') }}
</el-button>
<el-button
type="primary"
plain
@click="handleUnableBatch('hourseRef')"
>
批量停用
{{ $t('basic.ward.batchDisable') }}
</el-button>
<vxe-table
ref="hourseRef"

View File

@@ -1,8 +1,8 @@
<template>
<template>
<div class="app-container">
<el-dialog
v-model="visible"
title="医用耗材目录"
:title="$t('catalog.device.ybDialogTitle')"
width="1500px"
teleported
destroy-on-close
@@ -11,7 +11,7 @@
<div>
<el-input
v-model="queryParams.searchKey"
placeholder="请输入耗材名"
:placeholder="$t('catalog.device.enterDeviceName')"
clearable
style="width: 20%; margin-bottom: 10px"
@keyup.enter="getList"
@@ -33,17 +33,17 @@
>
<vxe-column
align="center"
title="医保目录编码"
:title="$t('catalog.device.ybCatalogCode')"
field="medicalCatalogCode"
/>
<vxe-column
align="center"
title="耗材名称"
:title="$t('catalog.device.ybDeviceName')"
field="consumableName"
/>
<vxe-column
align="center"
title="产品型号"
:title="$t('catalog.device.ybProductModel')"
field="productModel"
>
<template #default="scope">
@@ -52,22 +52,22 @@
</vxe-column>
<vxe-column
align="center"
title="耗材材质"
:title="$t('catalog.device.ybMaterialType')"
field="materialType"
/>
<vxe-column
align="center"
title="规格"
:title="$t('catalog.device.ybSpecification')"
field="specification"
/>
<vxe-column
align="center"
title="生产厂家"
:title="$t('catalog.device.ybManufacturer')"
field="manufacturerName"
/>
<vxe-column
align="center"
title="操作"
:title="$t('common.operation')"
width="80"
>
<template #default="scope">
@@ -76,7 +76,7 @@
type="primary"
@click="handlewAddDevice(scope.row)"
>
对照
{{ $t('catalog.device.match') }}
</el-button>
</template>
</vxe-column>
@@ -91,7 +91,7 @@
<template #footer>
<div class="dialog-footer">
<el-button @click="cancel">
{{ $t('common.cancel') }}
</el-button>
</div>
</template>
@@ -101,6 +101,9 @@
<script setup>
import {getYbDeviceList} from './device';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const emit = defineEmits(['selectDevice']);
const visible = ref(false);

View File

@@ -1,8 +1,8 @@
<template>
<template>
<div class="app-container">
<el-dialog
v-model="visible"
title="医疗服务项目目录"
:title="$t('catalog.diagnosis.ybDialogTitle')"
width="1500px"
teleported
destroy-on-close
@@ -11,7 +11,7 @@
<div>
<el-input
v-model="queryParams.searchKey"
placeholder="请输入服务项目名"
:placeholder="$t('catalog.diagnosis.enterServiceName')"
clearable
style="width: 20%; margin-bottom: 10px"
@keyup.enter="getList"
@@ -33,17 +33,17 @@
>
<vxe-column
align="center"
title="医保目录编码"
:title="$t('catalog.diagnosis.ybCatalogCode')"
field="medicalCatalogCode"
/>
<vxe-column
align="center"
title="医疗服务项目名称"
:title="$t('catalog.diagnosis.ybServiceName')"
field="medicalServiceName"
/>
<vxe-column
align="center"
title="服务项目类别"
:title="$t('catalog.diagnosis.ybServiceCategory')"
field="serviceCategory"
>
<template #default="scope">
@@ -52,17 +52,17 @@
</vxe-column>
<vxe-column
align="center"
title="诊疗项目说明"
:title="$t('catalog.diagnosis.ybItemDesc')"
field="medicalItemDesc"
/>
<vxe-column
align="center"
title="计价单位"
:title="$t('catalog.diagnosis.ybBillingUnit')"
field="billingUnit"
/>
<vxe-column
align="center"
title="操作"
:title="$t('common.operation')"
width="80"
>
<template #default="scope">
@@ -71,7 +71,7 @@
type="primary"
@click="handlewAddDiadTre(scope.row)"
>
对照
{{ $t('catalog.diagnosis.match') }}
</el-button>
</template>
</vxe-column>
@@ -86,7 +86,7 @@
<template #footer>
<div class="dialog-footer">
<el-button @click="cancel">
{{ $t('common.cancel') }}
</el-button>
</div>
</template>
@@ -96,6 +96,9 @@
<script setup>
import {getYbDiagnosisTreatmentList} from './diagnosistreatment';
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
const emit = defineEmits(['selectDiagnosisTreatment']);
const visible = ref(false);

View File

@@ -187,12 +187,12 @@ const submitEvaluate = async () => {
if (evaluateForm.departmentId) params.departmentId = evaluateForm.departmentId
const res = await evaluateRules(params)
if (res.code === 200) {
ElMessage.success('评估完成,触发 ' + res.data.triggeredAlerts + ' 条告警')
ElMessage.success(t('cdss.alerts.evalSuccess', { count: res.data.triggeredAlerts }))
evaluateDialogVisible.value = false
queryParams.encounterId = evaluateForm.encounterId
getList()
} else {
ElMessage.error(res.msg || '评估失败')
ElMessage.error(res.msg || t('cdss.alerts.evalFailed'))
}
} catch (e) {
ElMessage.error('评估失败')