i18n(ui): 国际化界面文本替换
- 替换费用配置页面的所有静态文本为国际化标签 - 替换组织机构管理页面的表单标签和按钮文本 - 替换病房管理页面的列标题和操作按钮 - 替换设备对照对话框的标题和占位符文本 - 替换诊断治疗对照对话框的标题和字段标签 - 替换CDSS告警页面的消息提示文本 - 在相关组件中引入vue-i18n并创建翻译实例
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<div class="container">
|
||||
<!-- 页面标题和用户信息 -->
|
||||
<div class="header-section">
|
||||
<h2>发票管理</h2>
|
||||
<h2>{{ $t('basic.invoice.title') }}</h2>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<span class="card-title">自动计算</span>
|
||||
<span class="card-title">{{ $t('basic.automaticBilling.title') }}</span>
|
||||
</template>
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="queryParams"
|
||||
>
|
||||
<el-form-item label="搜索">
|
||||
<el-form-item :label="$t('common.search')">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="搜索"
|
||||
:placeholder="$t('common.search')"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
@@ -22,14 +22,14 @@
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
搜索
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -40,29 +40,29 @@
|
||||
>
|
||||
<vxe-column
|
||||
type="seq"
|
||||
title="序号"
|
||||
:title="$t('common.seq')"
|
||||
width="60"
|
||||
/>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.automaticBilling.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="code"
|
||||
title="编码"
|
||||
:title="$t('basic.automaticBilling.code')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="status"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'info'">
|
||||
{{ row.status === '0' ? '正常' : '停用' }}
|
||||
{{ row.status === '0' ? $t('common.normal') : $t('common.disabled') }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.action')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
@@ -71,14 +71,14 @@
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -88,13 +88,15 @@
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { ElMessage } from 'element-plus'
|
||||
const { t } = useI18n()
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 10 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = () => { tableData.value = [] }
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleDelete = (row) => { ElMessage.info('删除功能开发中') }
|
||||
const handleAdd = () => { ElMessage.info(t('common.developing')) }
|
||||
const handleEdit = (row) => { ElMessage.info(t('common.developing')) }
|
||||
const handleDelete = (row) => { ElMessage.info(t('common.developing')) }
|
||||
onMounted(() => handleQuery())
|
||||
</script>
|
||||
<style scoped>.card-title { font-weight: bold; font-size: 16px; }</style>
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<span class="card-title">划价组套</span>
|
||||
<span class="card-title">{{ $t('basic.bargainSets.title') }}</span>
|
||||
</template>
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="queryParams"
|
||||
>
|
||||
<el-form-item label="搜索">
|
||||
<el-form-item :label="$t('common.search')">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="搜索"
|
||||
:placeholder="$t('common.search')"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
@@ -22,14 +22,14 @@
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
搜索
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -40,29 +40,29 @@
|
||||
>
|
||||
<vxe-column
|
||||
type="seq"
|
||||
title="序号"
|
||||
:title="$t('common.seq')"
|
||||
width="60"
|
||||
/>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.bargainSets.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="code"
|
||||
title="编码"
|
||||
:title="$t('basic.bargainSets.code')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="status"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'info'">
|
||||
{{ row.status === '0' ? '正常' : '停用' }}
|
||||
{{ row.status === '0' ? $t('common.normal') : $t('common.disabled') }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.action')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
@@ -71,14 +71,14 @@
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -88,13 +88,15 @@
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { ElMessage } from 'element-plus'
|
||||
const { t } = useI18n()
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 10 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = () => { tableData.value = [] }
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleDelete = (row) => { ElMessage.info('删除功能开发中') }
|
||||
const handleAdd = () => { ElMessage.info(t('common.developing')) }
|
||||
const handleEdit = (row) => { ElMessage.info(t('common.developing')) }
|
||||
const handleDelete = (row) => { ElMessage.info(t('common.developing')) }
|
||||
onMounted(() => handleQuery())
|
||||
</script>
|
||||
<style scoped>.card-title { font-weight: bold; font-size: 16px; }</style>
|
||||
|
||||
@@ -278,7 +278,7 @@ import { getBedPage, addBed, updateBed, deleteBed, updateBedStatus } from './com
|
||||
const { t } = useI18n()
|
||||
const loading = ref(false); const tableData = ref([]); const total = ref(0)
|
||||
const queryParams = ref({ bedNo: '', status: undefined, pageNo: 1, pageSize: 10 })
|
||||
const formVisible = ref(false); const formTitle = ref('新增床位'); const isEdit = ref(false); const formRef = ref()
|
||||
const formVisible = ref(false); const formTitle = ref(t('basic.bedspace.addTitle')); const isEdit = ref(false); const formRef = ref()
|
||||
const form = ref({ id: null, bedNo: '', bedName: '', wardName: '', deptName: '', bedType: 1, remark: '' })
|
||||
const rules = computed(() => ({ bedNo: [{ required: true, message: t('basic.bedspace.msgInputBedNo'), trigger: 'blur' }] }))
|
||||
const statusText = (s) => ({ 0: t('basic.bedspace.statusFree'), 1: t('basic.bedspace.statusOccupied'), 2: t('basic.bedspace.statusClean'), 3: t('basic.bedspace.statusRepair') }[s] || t('common.unknown'))
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
label-width="120px"
|
||||
>
|
||||
<el-form-item
|
||||
label="一级菜单"
|
||||
:label="$t('basic.caseTemplate.primaryMenu')"
|
||||
prop="primaryMenuEnum"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.primaryMenuEnum"
|
||||
placeholder="请选择一级菜单"
|
||||
:placeholder="$t('basic.caseTemplate.selectPrimaryMenu')"
|
||||
value-key="value"
|
||||
>
|
||||
<el-option
|
||||
@@ -32,40 +32,40 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="二级菜单"
|
||||
:label="$t('basic.caseTemplate.subMenu')"
|
||||
prop="subMenu"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.subMenu"
|
||||
placeholder="二级菜单"
|
||||
:placeholder="$t('basic.caseTemplate.subMenu')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="版本"
|
||||
:label="$t('basic.caseTemplate.version')"
|
||||
prop="version"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.version"
|
||||
placeholder="请输入版本"
|
||||
:placeholder="$t('basic.caseTemplate.versionPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="名称"
|
||||
:label="$t('basic.caseTemplate.name')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.caseTemplate.namePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="文件"
|
||||
:label="$t('basic.caseTemplate.file')"
|
||||
prop="vueRouter"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.vueRouter"
|
||||
placeholder="请选择文件路径"
|
||||
:placeholder="$t('basic.caseTemplate.selectFilePath')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in components"
|
||||
@@ -77,7 +77,7 @@
|
||||
<!-- <el-input v-model="formData.vueRouter" placeholder="请输入文件路径"></el-input>s -->
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="显示顺序"
|
||||
:label="$t('basic.caseTemplate.displayOrder')"
|
||||
prop="displayOrder"
|
||||
>
|
||||
<el-input-number
|
||||
@@ -87,7 +87,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="使用范围"
|
||||
:label="$t('basic.caseTemplate.useRange')"
|
||||
prop="useRangeEnum"
|
||||
>
|
||||
<div class="radio-group">
|
||||
@@ -107,14 +107,14 @@
|
||||
<!-- 科室选择框,仅当使用范围为科室使用时显示 -->
|
||||
<el-form-item
|
||||
v-if="formData.useRangeEnum === 2"
|
||||
label="科室选择"
|
||||
:label="$t('basic.caseTemplate.deptSelect')"
|
||||
prop="organizationIds"
|
||||
>
|
||||
<el-transfer
|
||||
v-model="formData.organizationIds"
|
||||
filterable
|
||||
:titles="['未分配科室', '已分配科室']"
|
||||
:button-texts="['移除', '添加']"
|
||||
:titles="[$t('basic.caseTemplate.unassignedDept'), $t('basic.caseTemplate.assignedDept')]"
|
||||
:button-texts="[$t('basic.caseTemplate.remove'), $t('basic.caseTemplate.add')]"
|
||||
:format="{
|
||||
noChecked: '${total}',
|
||||
hasChecked: '${checked}/${total}',
|
||||
@@ -128,29 +128,32 @@
|
||||
<template #footer>
|
||||
<div class="dialog-footer" />
|
||||
<el-button @click="dialogVisible = false">
|
||||
取消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script setup>
|
||||
import {onMounted, ref} from 'vue'
|
||||
import {computed, onMounted, ref} from 'vue'
|
||||
import useUserStore from '@/store/modules/user';
|
||||
import {add, getLocationTree, update} from '../api';
|
||||
import {ElMessage} from 'element-plus';
|
||||
import {components} from '@/template';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const emits = defineEmits(['submitOk'])
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
default: '编辑病历文件信息'
|
||||
default: () => t('basic.caseTemplate.editFileInfo')
|
||||
},
|
||||
formData: {
|
||||
type: Object,
|
||||
@@ -190,22 +193,22 @@ const formData = ref({
|
||||
environment: '0'
|
||||
});
|
||||
// 表单验证规则(响应式,支持动态验证)
|
||||
const rules = reactive({
|
||||
primaryMenuEnum: [{ required: true, message: '请选择一级菜单', trigger: 'change' }],
|
||||
const rules = computed(() => ({
|
||||
primaryMenuEnum: [{ required: true, message: t('basic.caseTemplate.selectPrimaryMenu'), trigger: 'change' }],
|
||||
// subMenu: [{ required: true, message: '请输入二级菜单', trigger: 'blur' }],
|
||||
version: [{ required: true, message: '请输入版本', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
vueRouter: [{ required: true, message: '请输入文件路径', trigger: 'blur' }],
|
||||
displayOrder: [{ required: true, message: '请设置显示顺序', trigger: 'change' }],
|
||||
useRangeEnum: [{ required: true, message: '请选择使用范围', trigger: 'change' }],
|
||||
version: [{ required: true, message: t('basic.caseTemplate.versionPlaceholder'), trigger: 'blur' }],
|
||||
name: [{ required: true, message: t('basic.caseTemplate.namePlaceholder'), trigger: 'blur' }],
|
||||
vueRouter: [{ required: true, message: t('basic.caseTemplate.selectFilePath'), trigger: 'blur' }],
|
||||
displayOrder: [{ required: true, message: t('basic.caseTemplate.setDisplayOrder'), trigger: 'change' }],
|
||||
useRangeEnum: [{ required: true, message: t('basic.caseTemplate.selectUseRange'), trigger: 'change' }],
|
||||
organizationIds: [
|
||||
{
|
||||
{
|
||||
required: () => formData.value.useRangeEnum === 2, // 仅当"科室使用"时必填
|
||||
message: '请选择科室',
|
||||
trigger: ['change', 'blur']
|
||||
message: t('basic.caseTemplate.selectDept'),
|
||||
trigger: ['change', 'blur']
|
||||
}
|
||||
]
|
||||
});
|
||||
}));
|
||||
const transferData = ref([]);
|
||||
/** 查询科室树数据(TreeSelect和Transfer共用) */
|
||||
const getLocationInfo = () => {
|
||||
@@ -213,7 +216,7 @@ const getLocationInfo = () => {
|
||||
getLocationTree().then((response) => {
|
||||
transferData.value = response?.data || [];
|
||||
}).catch((error) => {
|
||||
ElMessage.error('获取科室树失败');
|
||||
ElMessage.error(t('basic.caseTemplate.getDeptTreeFailed'));
|
||||
});
|
||||
}
|
||||
/** 递归将所有ID转换为整数类型 */
|
||||
@@ -246,7 +249,7 @@ const submitForm = () => {
|
||||
saveForm();
|
||||
} else {
|
||||
// 表单验证失败
|
||||
ElMessage.error('请填写必填项');
|
||||
ElMessage.error(t('basic.caseTemplate.fillRequired'));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@@ -268,19 +271,19 @@ const saveForm =async () => {
|
||||
console.log('data',data)
|
||||
const res = await update(data);
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('更新成功');
|
||||
ElMessage.success(t('basic.caseTemplate.updateSuccess'));
|
||||
emits('submitOk')
|
||||
}else {
|
||||
ElMessage.error('保存失败');
|
||||
ElMessage.error(t('basic.caseTemplate.saveFailed'));
|
||||
}
|
||||
} else {
|
||||
// 新建操作
|
||||
const res = await add(data);
|
||||
if (res.code == 200) {
|
||||
ElMessage.success('保存成功');
|
||||
ElMessage.success(t('basic.caseTemplate.saveSuccess'));
|
||||
emits('submitOk')
|
||||
}else {
|
||||
ElMessage.error('保存失败',error);
|
||||
ElMessage.error(t('basic.caseTemplate.saveFailed'),error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,25 +6,25 @@
|
||||
type="primary"
|
||||
@click="newTemplate"
|
||||
>
|
||||
新建
|
||||
{{ $t('basic.caseTemplate.create') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="editTemplate"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button @click="refresh">
|
||||
刷新
|
||||
{{ $t('common.refresh') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="deleteTemplate"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
<el-button @click="printTemplate">
|
||||
打印
|
||||
{{ $t('basic.caseTemplate.print') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
children: 'children',
|
||||
}"
|
||||
value-key="id"
|
||||
placeholder="请选择就诊科室"
|
||||
:placeholder="$t('basic.caseTemplate.selectDept')"
|
||||
check-strictly
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterNode"
|
||||
@@ -57,13 +57,13 @@
|
||||
<div class="search-box">
|
||||
<el-input
|
||||
v-model="searchKeyword"
|
||||
placeholder="病历名称搜索..."
|
||||
:placeholder="$t('basic.caseTemplate.searchPlaceholder')"
|
||||
/>
|
||||
<el-button
|
||||
class="search-btn"
|
||||
@click="handleSearch"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
@node-click="handleNodeClick"
|
||||
/>
|
||||
<el-button @click="toggleExpand">
|
||||
{{ isExpanded ? '全部收起' : '全部展开' }}
|
||||
{{ isExpanded ? $t('basic.caseTemplate.collapseAll') : $t('basic.caseTemplate.expandAll') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="middle-panel">
|
||||
@@ -87,7 +87,7 @@
|
||||
@tab-click="handleClick"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="打印预览"
|
||||
:label="$t('basic.caseTemplate.printPreview')"
|
||||
name="first"
|
||||
>
|
||||
<!-- {{components}} -->
|
||||
@@ -101,7 +101,7 @@
|
||||
</div>
|
||||
<EditTemplate
|
||||
v-model:dialog-visible="dialogVisible"
|
||||
:title="currentNodeData ? '编辑病历文件信息' : '病历文件基本信息'"
|
||||
:title="currentNodeData ? $t('basic.caseTemplate.editFileInfo') : $t('basic.caseTemplate.fileInfo')"
|
||||
:form-data="formData"
|
||||
:current-node-data="currentNodeData"
|
||||
:doc-types="templateDataInit.docTypes"
|
||||
@@ -116,6 +116,9 @@ import {nextTick, onMounted, reactive, ref} from 'vue';
|
||||
import {ElLoading, ElMessage, ElMessageBox, ElTree} from 'element-plus';
|
||||
import {deleteDefinition, getDefinitionById, getLocationTree, getTreeList, init} from './api';
|
||||
import EditTemplate from './components/editTemplate.vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
// 添加当前模板路径和组件的响应式变量
|
||||
const currentComponent = ref('');
|
||||
const currentNodeData = ref(null); // 存储当前选中的节点数据
|
||||
@@ -160,7 +163,7 @@ const getLocationInfo = () => {
|
||||
getLocationTree().then((response) => {
|
||||
orgOptions.value = response?.data || [];
|
||||
}).catch((error) => {
|
||||
ElMessage.error('获取科室树失败');
|
||||
ElMessage.error(t('basic.caseTemplate.getDeptTreeFailed'));
|
||||
});
|
||||
}
|
||||
const handleSubmitOk = () => {
|
||||
@@ -230,7 +233,7 @@ const getInit = async () => {
|
||||
templateDataInit.value = response.data || {};
|
||||
console.log('模板初始化数据:', templateDataInit.value);
|
||||
} catch (error) {
|
||||
handleApiError('初始化', '初始化接口异常')(error);
|
||||
handleApiError(t('basic.caseTemplate.init'), t('basic.caseTemplate.initError'))(error);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -263,7 +266,7 @@ function initTemplateTree(data) {
|
||||
// console.log('模板树数据(按科室筛选):', templateData.value);
|
||||
})
|
||||
.catch((error) => {
|
||||
handleApiError('获取模板列表', '获取模板树失败')(error);
|
||||
handleApiError(t('basic.caseTemplate.getTemplateList'), t('basic.caseTemplate.getTemplateTreeFailed'))(error);
|
||||
templateData.value = [];
|
||||
});
|
||||
}
|
||||
@@ -271,12 +274,12 @@ function initTemplateTree(data) {
|
||||
/** 编辑模板(打开弹窗并回显数据) */
|
||||
const editTemplate = async () => {
|
||||
if (!currentNodeData.value) {
|
||||
ElMessage.warning('请先选择一个模板节点');
|
||||
ElMessage.warning(t('basic.caseTemplate.selectNodeFirst'));
|
||||
return;
|
||||
}
|
||||
const loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '加载模板信息...',
|
||||
text: t('basic.caseTemplate.loadingTemplate'),
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
});
|
||||
|
||||
@@ -286,7 +289,7 @@ const editTemplate = async () => {
|
||||
openEditDialog(response.data);
|
||||
}
|
||||
} catch (error) {
|
||||
handleApiError('加载模板信息', '加载模板信息失败')(error);
|
||||
handleApiError(t('basic.caseTemplate.loadingTemplate'), t('basic.caseTemplate.loadTemplateFailed'))(error);
|
||||
} finally {
|
||||
loading.close();
|
||||
}
|
||||
@@ -349,7 +352,7 @@ const newTemplate = () => {
|
||||
const deleteTemplate = async () => {
|
||||
// 1. 检查是否选中节点
|
||||
if (!currentNodeData.value) {
|
||||
ElMessage.warning('请先选择一个模板节点');
|
||||
ElMessage.warning(t('basic.caseTemplate.selectNodeFirst'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -359,11 +362,11 @@ const deleteTemplate = async () => {
|
||||
try {
|
||||
// 2. 显示确认对话框,增加操作描述
|
||||
const confirmResult = await ElMessageBox.confirm(
|
||||
`确定要删除模板「${templateName}」吗?<br>此操作不可撤销,删除后将无法恢复。`,
|
||||
'删除确认',
|
||||
t('basic.caseTemplate.confirmDeleteTemplate', { name: templateName }),
|
||||
t('basic.caseTemplate.deleteConfirm'),
|
||||
{
|
||||
confirmButtonText: '确认删除',
|
||||
cancelButtonText: '取消',
|
||||
confirmButtonText: t('basic.caseTemplate.confirmDelete'),
|
||||
cancelButtonText: t('common.cancel'),
|
||||
type: 'warning',
|
||||
dangerouslyUseHTMLString: true,
|
||||
center: true,
|
||||
@@ -376,14 +379,14 @@ const deleteTemplate = async () => {
|
||||
// 显示加载状态
|
||||
loading = ElLoading.service({
|
||||
lock: true,
|
||||
text: '正在删除模板...',
|
||||
text: t('basic.caseTemplate.deleting'),
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
});
|
||||
|
||||
// 调用删除API
|
||||
await deleteDefinition(templateId);
|
||||
// 删除成功处理
|
||||
ElMessage.success(`模板「${templateName}」删除成功`);
|
||||
ElMessage.success(t('basic.caseTemplate.deleteSuccess', { name: templateName }));
|
||||
// 清空当前选中状态
|
||||
currentNodeData.value = null;
|
||||
initFormData();
|
||||
@@ -398,7 +401,7 @@ const deleteTemplate = async () => {
|
||||
console.log('用户取消删除操作');
|
||||
} else {
|
||||
// API错误或其他错误,使用统一的错误处理函数
|
||||
handleApiError('删除模板', '删除模板失败')(error);
|
||||
handleApiError(t('basic.caseTemplate.deleteTemplate'), t('basic.caseTemplate.deleteTemplateFailed'))(error);
|
||||
}
|
||||
} finally {
|
||||
// 确保加载状态总是被关闭
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div style="height: 780px; display: flex; justify-content: space-between">
|
||||
<el-card style="height: 100%; width: 25%">
|
||||
<el-tabs v-model="activeTab">
|
||||
<el-tab-pane
|
||||
label="用法"
|
||||
:label="$t('basic.consumables.usage')"
|
||||
:name="1"
|
||||
>
|
||||
<vxe-table
|
||||
@@ -15,19 +15,19 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="项目名"
|
||||
:title="$t('basic.consumables.itemName')"
|
||||
align="center"
|
||||
field="label"
|
||||
/>
|
||||
</vxe-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
label="诊疗"
|
||||
:label="$t('basic.consumables.diagnosis')"
|
||||
:name="2"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入项目名"
|
||||
:placeholder="$t('basic.consumables.itemNamePlaceholder')"
|
||||
clearable
|
||||
style="width: 100%; margin-bottom: 10px"
|
||||
@keyup.enter="getList"
|
||||
@@ -100,9 +100,12 @@
|
||||
|
||||
<script setup>
|
||||
import {ref} from 'vue';
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {getActivityList, getBindList, getRegistrationfeeList} from './components/api.js';
|
||||
import ConsumablesList from './components/consumablesList.vue';
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const activityList = ref([]);
|
||||
const queryParams = ref({
|
||||
statusEnum: 2,
|
||||
|
||||
@@ -193,7 +193,7 @@ import { getFeePage, addFee, updateFee } from './components/api'
|
||||
const { t } = useI18n()
|
||||
const loading = ref(false); const tableData = ref([]); const total = ref(0)
|
||||
const queryParams = ref({ searchKey: '', pageNo: 1, pageSize: 10 })
|
||||
const formVisible = ref(false); const formTitle = ref('新增项目'); const isEdit = ref(false); const formRef = ref()
|
||||
const formVisible = ref(false); const formTitle = ref(t('basic.fee.addTitle')); const isEdit = ref(false); const formRef = ref()
|
||||
const form = ref({ id: null, conditionCode: '', name: '', typeCode: 'TREAT' })
|
||||
const rules = computed(() => ({ conditionCode: [{ required: true, message: t('basic.fee.msgInputCode'), trigger: 'blur' }], name: [{ required: true, message: t('basic.fee.msgInputName'), trigger: 'blur' }] }))
|
||||
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 }) }
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<span class="card-title">LIS合管配置</span>
|
||||
<span class="card-title">{{ $t('basic.lisMerge.title') }}</span>
|
||||
</template>
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="queryParams"
|
||||
>
|
||||
<el-form-item label="搜索">
|
||||
<el-form-item :label="$t('common.search')">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="搜索"
|
||||
:placeholder="$t('common.search')"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
@@ -22,14 +22,14 @@
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
搜索
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -40,29 +40,29 @@
|
||||
>
|
||||
<vxe-column
|
||||
type="seq"
|
||||
title="序号"
|
||||
:title="$t('common.seq')"
|
||||
width="60"
|
||||
/>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.lisMerge.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="code"
|
||||
title="编码"
|
||||
:title="$t('basic.lisMerge.code')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="status"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'info'">
|
||||
{{ row.status === '0' ? '正常' : '停用' }}
|
||||
{{ row.status === '0' ? $t('common.normal') : $t('common.disabled') }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.action')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
@@ -71,14 +71,14 @@
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -88,13 +88,15 @@
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { ElMessage } from 'element-plus'
|
||||
const { t } = useI18n()
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 10 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = () => { tableData.value = [] }
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleDelete = (row) => { ElMessage.info('删除功能开发中') }
|
||||
const handleAdd = () => { ElMessage.info(t('common.developing')) }
|
||||
const handleEdit = (row) => { ElMessage.info(t('common.developing')) }
|
||||
const handleDelete = (row) => { ElMessage.info(t('common.developing')) }
|
||||
onMounted(() => handleQuery())
|
||||
</script>
|
||||
<style scoped>.card-title { font-weight: bold; font-size: 16px; }</style>
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<span class="card-title">货位管理</span>
|
||||
<span class="card-title">{{ $t('basic.locationMgmt.title') }}</span>
|
||||
</template>
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="queryParams"
|
||||
>
|
||||
<el-form-item label="搜索">
|
||||
<el-form-item :label="$t('common.search')">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="货位名称/编码"
|
||||
:placeholder="$t('basic.locationMgmt.placeholder')"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
@@ -22,14 +22,14 @@
|
||||
icon="Search"
|
||||
@click="handleQuery"
|
||||
>
|
||||
搜索
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -40,33 +40,33 @@
|
||||
>
|
||||
<vxe-column
|
||||
type="seq"
|
||||
title="序号"
|
||||
:title="$t('common.seq')"
|
||||
width="60"
|
||||
/>
|
||||
<vxe-column
|
||||
field="locationCode"
|
||||
title="货位编码"
|
||||
:title="$t('basic.locationMgmt.locationCode')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="locationName"
|
||||
title="货位名称"
|
||||
:title="$t('basic.locationMgmt.locationName')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="warehouseName"
|
||||
title="所属库房"
|
||||
:title="$t('basic.locationMgmt.warehouseName')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="status"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'danger'">
|
||||
{{ row.status === '0' ? '正常' : '停用' }}
|
||||
{{ row.status === '0' ? $t('common.normal') : $t('common.disabled') }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.action')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
@@ -75,14 +75,14 @@
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -92,8 +92,10 @@
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { getList, remove } from './components/api'
|
||||
const { t } = useI18n()
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 10 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = async () => {
|
||||
@@ -102,12 +104,12 @@ const handleQuery = async () => {
|
||||
tableData.value = res.data?.records || res.data || []
|
||||
} catch (e) { tableData.value = [] }
|
||||
}
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleAdd = () => { ElMessage.info(t('common.developing')) }
|
||||
const handleEdit = (row) => { ElMessage.info(t('common.developing')) }
|
||||
const handleDelete = async (row) => {
|
||||
await ElMessageBox.confirm('确认删除?', '提示', { type: 'warning' })
|
||||
await ElMessageBox.confirm(t('common.confirmDelete'), t('common.tip'), { type: 'warning' })
|
||||
await remove(row.id)
|
||||
ElMessage.success('删除成功')
|
||||
ElMessage.success(t('common.deleteSuccess'))
|
||||
handleQuery()
|
||||
}
|
||||
onMounted(() => handleQuery())
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<template>
|
||||
<template>
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="dialogTitle"
|
||||
@@ -13,23 +13,23 @@
|
||||
>
|
||||
<div class="dialog-top-row">
|
||||
<el-form-item
|
||||
label="名称"
|
||||
:label="$t('basic.medOrderSet.name')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.medOrderSet.namePlaceholder')"
|
||||
style="width: 220px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
v-if="showRangeSelector && !isEdit"
|
||||
label="使用范围"
|
||||
:label="$t('basic.medOrderSet.useRange')"
|
||||
>
|
||||
<el-select
|
||||
v-model="rangeSelectValue"
|
||||
placeholder="个人/科室/全院"
|
||||
:placeholder="$t('basic.medOrderSet.rangePlaceholder')"
|
||||
style="width: 220px"
|
||||
@change="handleRangeChange"
|
||||
>
|
||||
@@ -415,6 +415,7 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, computed, onMounted, getCurrentInstance } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import adviceBaseList from './adviceBaseList';
|
||||
import {
|
||||
queryParticipantList,
|
||||
@@ -425,6 +426,8 @@ import { saveOrderGroup } from '@/views/doctorstation/components/api.js';
|
||||
import useUserStore from '@/store/modules/user';
|
||||
import { ElMessage } from 'element-plus';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const props = defineProps({
|
||||
// 是否在“医生站/住院医生站”场景复用:个人不选人(practitionerId 置空),科室可选科室
|
||||
isDoctorStation: {
|
||||
|
||||
@@ -15,57 +15,57 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="名称"
|
||||
:title="$t('basic.medOrderSet.name')"
|
||||
align="center"
|
||||
field="adviceName"
|
||||
/>
|
||||
<vxe-column
|
||||
title="类型"
|
||||
:title="$t('basic.medOrderSet.type')"
|
||||
align="center"
|
||||
field="activityType_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="包装单位"
|
||||
:title="$t('basic.medOrderSet.packUnit')"
|
||||
align="center"
|
||||
field="unitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="最小单位"
|
||||
:title="$t('basic.medOrderSet.minUnit')"
|
||||
align="center"
|
||||
field="minUnitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="规格"
|
||||
:title="$t('basic.medOrderSet.spec')"
|
||||
align="center"
|
||||
field="volume"
|
||||
/>
|
||||
<vxe-column
|
||||
title="用法"
|
||||
:title="$t('basic.medOrderSet.usage')"
|
||||
align="center"
|
||||
field="methodCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="频次"
|
||||
:title="$t('basic.medOrderSet.frequency')"
|
||||
align="center"
|
||||
field="rateCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="单次剂量"
|
||||
:title="$t('basic.medOrderSet.singleDose')"
|
||||
align="center"
|
||||
field="dose"
|
||||
/>
|
||||
<vxe-column
|
||||
title="剂量单位"
|
||||
:title="$t('basic.medOrderSet.doseUnit')"
|
||||
align="center"
|
||||
field="doseUnitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="注射药品"
|
||||
:title="$t('basic.medOrderSet.injectDrug')"
|
||||
align="center"
|
||||
field="injectFlag_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="皮试"
|
||||
:title="$t('basic.medOrderSet.skinTest')"
|
||||
align="center"
|
||||
field="skinTestFlag_enumText"
|
||||
/>
|
||||
@@ -85,9 +85,12 @@
|
||||
|
||||
<script setup>
|
||||
import {nextTick} from 'vue';
|
||||
import {useI18n} from 'vue-i18n';
|
||||
import {getAdviceBaseInfo} from './api';
|
||||
import {debounce} from 'lodash-es';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const props = defineProps({
|
||||
adviceQueryParams: {
|
||||
type: Object,
|
||||
|
||||
@@ -13,57 +13,57 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="名称"
|
||||
:title="$t('basic.ordersCombo.name')"
|
||||
align="center"
|
||||
field="adviceName"
|
||||
/>
|
||||
<vxe-column
|
||||
title="类型"
|
||||
:title="$t('basic.ordersCombo.type')"
|
||||
align="center"
|
||||
field="activityType_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="包装单位"
|
||||
:title="$t('basic.ordersCombo.packUnit')"
|
||||
align="center"
|
||||
field="unitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="最小单位"
|
||||
:title="$t('basic.ordersCombo.minUnit')"
|
||||
align="center"
|
||||
field="minUnitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="规格"
|
||||
:title="$t('basic.ordersCombo.spec')"
|
||||
align="center"
|
||||
field="volume"
|
||||
/>
|
||||
<vxe-column
|
||||
title="用法"
|
||||
:title="$t('basic.ordersCombo.usage')"
|
||||
align="center"
|
||||
field="methodCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="频次"
|
||||
:title="$t('basic.ordersCombo.frequency')"
|
||||
align="center"
|
||||
field="rateCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="单次剂量"
|
||||
:title="$t('basic.ordersCombo.singleDose')"
|
||||
align="center"
|
||||
field="dose"
|
||||
/>
|
||||
<vxe-column
|
||||
title="剂量单位"
|
||||
:title="$t('basic.ordersCombo.doseUnit')"
|
||||
align="center"
|
||||
field="doseUnitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="注射药品"
|
||||
:title="$t('basic.ordersCombo.injectDrug')"
|
||||
align="center"
|
||||
field="injectFlag_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="皮试"
|
||||
:title="$t('basic.ordersCombo.skinTest')"
|
||||
align="center"
|
||||
field="skinTestFlag_enumText"
|
||||
/>
|
||||
@@ -73,9 +73,12 @@
|
||||
|
||||
<script setup>
|
||||
import {nextTick} from 'vue';
|
||||
import {useI18n} from 'vue-i18n';
|
||||
import {getAdviceBaseInfo} from './api';
|
||||
import {throttle} from 'lodash-es';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const props = defineProps({
|
||||
adviceQueryParams: {
|
||||
type: Object,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:disabled="false"
|
||||
@click="handleAddPrescription()"
|
||||
>
|
||||
添加项目
|
||||
{{ $t('basic.ordersCombo.addItem') }}
|
||||
</el-button>
|
||||
<!-- <el-button type="default" @click="saveCombination()" :disabled="false"> 保存 </el-button> -->
|
||||
<!-- <el-button type="default" @click="combination()" :disabled="false"> 组合 </el-button> -->
|
||||
@@ -17,7 +17,7 @@
|
||||
:disabled="false"
|
||||
@click="handleDelete()"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<vxe-table
|
||||
@@ -50,7 +50,7 @@
|
||||
scope.row.volume +
|
||||
' [' +
|
||||
scope.row.unitPrice.toFixed(2) +
|
||||
' 元' +
|
||||
' ' + $t('basic.ordersCombo.yuan') +
|
||||
'/' +
|
||||
scope.row.unitCode_dictText +
|
||||
']'
|
||||
@@ -101,10 +101,10 @@
|
||||
@keyup.enter.prevent="handleEnter('executeNum', scope.row, scope.rowIndex)"
|
||||
/>
|
||||
</el-form-item>
|
||||
<span class="medicine-info"> 皮试:{{ scope.row.skinTestFlag_enumText }} </span>
|
||||
<span class="medicine-info"> 注射药品:{{ scope.row.injectFlag_enumText }} </span>
|
||||
<span class="medicine-info"> {{ $t('basic.ordersCombo.skinTest') }}{{ scope.row.skinTestFlag_enumText }} </span>
|
||||
<span class="medicine-info"> {{ $t('basic.ordersCombo.injectDrug') }}{{ scope.row.injectFlag_enumText }} </span>
|
||||
<span class="total-amount">
|
||||
总金额:{{ scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '0.00 元' }}
|
||||
{{ $t('basic.ordersCombo.totalAmount') }}{{ scope.row.totalPrice ? scope.row.totalPrice + ' ' + $t('basic.ordersCombo.yuan') : '0.00 ' + $t('basic.ordersCombo.yuan') }}
|
||||
</span>
|
||||
</div>
|
||||
<div style="display: flex; align-items: center; gap: 12px; flex-wrap: wrap">
|
||||
@@ -184,7 +184,7 @@
|
||||
<el-select
|
||||
:ref="(el) => (inputRefs.methodCode = el)"
|
||||
v-model="scope.row.methodCode"
|
||||
placeholder="给药途径"
|
||||
:placeholder="$t('basic.ordersCombo.route')"
|
||||
clearable
|
||||
style="width: 160px"
|
||||
filterable
|
||||
@@ -218,7 +218,7 @@
|
||||
<el-select
|
||||
:ref="(el) => (inputRefs.rateCode = el)"
|
||||
v-model="scope.row.rateCode"
|
||||
placeholder="频次"
|
||||
:placeholder="$t('basic.ordersCombo.frequency')"
|
||||
style="width: 120px"
|
||||
filterable
|
||||
@keyup.enter.prevent="
|
||||
@@ -313,7 +313,7 @@
|
||||
scope.row.volume +
|
||||
' ' +
|
||||
scope.row.unitPrice +
|
||||
' 元/' +
|
||||
' ' + $t('basic.ordersCombo.yuan') + '/' +
|
||||
scope.row.unitCode_dictText
|
||||
}}
|
||||
</span>
|
||||
@@ -321,7 +321,7 @@
|
||||
<el-select
|
||||
v-model="scope.row.lotNumber"
|
||||
style="width: 180px; margin-right: 20px"
|
||||
placeholder="药房"
|
||||
:placeholder="$t('basic.ordersCombo.pharmacy')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in scope.row.stockList"
|
||||
@@ -330,13 +330,13 @@
|
||||
:label="
|
||||
item.locationName +
|
||||
' ' +
|
||||
'批次号: ' +
|
||||
$t('basic.ordersCombo.lotNumber') + ' ' +
|
||||
item.lotNumber +
|
||||
' ' +
|
||||
' 库存:' +
|
||||
' ' + $t('basic.ordersCombo.stock') +
|
||||
item.quantity / scope.row.partPercent +
|
||||
item.unitCode_dictText +
|
||||
' 单价:' +
|
||||
' ' + $t('basic.ordersCombo.unitPrice') +
|
||||
item.price.toFixed(2) +
|
||||
'/' +
|
||||
item.unitCode_dictText
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
<div class="section-card-left">
|
||||
<div class="section-header">
|
||||
<div class="actions">
|
||||
<span class="descriptions-item-label">组套名称:</span>
|
||||
<span class="descriptions-item-label">{{ $t('basic.ordersCombo.setName') }}</span>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入组套名称"
|
||||
:placeholder="$t('basic.ordersCombo.setNamePlaceholder')"
|
||||
clearable
|
||||
class="search-input"
|
||||
@keydown.enter="getOrderGroupList"
|
||||
@@ -19,10 +19,10 @@
|
||||
/>
|
||||
</template>
|
||||
</el-input>
|
||||
<span class="descriptions-item-label">使用范围:</span>
|
||||
<span class="descriptions-item-label">{{ $t('basic.ordersCombo.useRange') }}</span>
|
||||
<el-select
|
||||
v-model="queryParams.rangeCode"
|
||||
placeholder="请选择使用范围"
|
||||
:placeholder="$t('basic.ordersCombo.useRangePlaceholder')"
|
||||
prefix-icon="el-icon-search"
|
||||
clearable
|
||||
class="search-input"
|
||||
@@ -47,25 +47,25 @@
|
||||
>
|
||||
<vxe-column
|
||||
type="seq"
|
||||
title="序号"
|
||||
:title="$t('basic.ordersCombo.seq')"
|
||||
width="60"
|
||||
align="center"
|
||||
/>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="组套名称"
|
||||
:title="$t('basic.ordersCombo.setName')"
|
||||
min-width="180"
|
||||
header-align="center"
|
||||
/>
|
||||
<vxe-column
|
||||
field="rangeCode_dictText"
|
||||
title="使用范围"
|
||||
:title="$t('basic.ordersCombo.useRange')"
|
||||
width="100"
|
||||
align="center"
|
||||
/>
|
||||
<vxe-column
|
||||
field="createdAt"
|
||||
title="创建时间"
|
||||
:title="$t('common.createTime')"
|
||||
width="160"
|
||||
align="center"
|
||||
>
|
||||
@@ -74,7 +74,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="100"
|
||||
fixed="right"
|
||||
align="center"
|
||||
@@ -84,14 +84,14 @@
|
||||
link
|
||||
@click="editTemplate(row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
style="color: #EF4444"
|
||||
@click="deleteTemplate(row.id)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -106,18 +106,18 @@
|
||||
<!-- 基本信息卡片 -->
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<span>基本信息</span>
|
||||
<span>{{ $t('basic.ordersCombo.basicInfo') }}</span>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="addTemplate"
|
||||
>
|
||||
新建组套
|
||||
{{ $t('basic.ordersCombo.createSet') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="addTemplate"
|
||||
>
|
||||
保存组套
|
||||
{{ $t('basic.ordersCombo.saveSet') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-form
|
||||
@@ -126,17 +126,17 @@
|
||||
class="info-form"
|
||||
:inline="true"
|
||||
>
|
||||
<el-form-item label="组套名称">
|
||||
<el-form-item :label="$t('basic.ordersCombo.setName')">
|
||||
<el-input
|
||||
ref="name"
|
||||
v-model="currentTemplate.name"
|
||||
placeholder="请输入组套名称"
|
||||
:placeholder="$t('basic.ordersCombo.setNamePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="组套类型">
|
||||
<el-form-item :label="$t('basic.ordersCombo.setType')">
|
||||
<el-select
|
||||
v-model="currentTemplate.typeEnum"
|
||||
placeholder="请选择组套类型"
|
||||
:placeholder="$t('basic.ordersCombo.setTypePlaceholder')"
|
||||
class="search-input"
|
||||
>
|
||||
<el-option
|
||||
@@ -147,10 +147,10 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="使用范围">
|
||||
<el-form-item :label="$t('basic.ordersCombo.useRange')">
|
||||
<el-select
|
||||
v-model="currentTemplate.rangeCode"
|
||||
placeholder="请选择使用范围"
|
||||
:placeholder="$t('basic.ordersCombo.useRangePlaceholder')"
|
||||
class="search-input"
|
||||
>
|
||||
<el-option
|
||||
@@ -165,7 +165,7 @@
|
||||
</div>
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<span>项目列表</span>
|
||||
<span>{{ $t('basic.ordersCombo.itemList') }}</span>
|
||||
</div>
|
||||
<div style="padding: 10px 10px">
|
||||
<Prescriptionlist :comtination="comtination" />
|
||||
@@ -179,6 +179,9 @@
|
||||
<script setup>
|
||||
import Prescriptionlist from './components/prescriptionlist.vue';
|
||||
import {deleteOrderGroup, getOrderGroup} from './components/api.js';
|
||||
import {useI18n} from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { use_range } = proxy.useDict('use_range');
|
||||
@@ -191,11 +194,11 @@ const orderGroupList = ref([]);
|
||||
const typeEnum = ref([
|
||||
{
|
||||
value: '1',
|
||||
label: '医嘱组套',
|
||||
label: t('basic.ordersCombo.medicalSet'),
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '诊疗组套',
|
||||
label: t('basic.ordersCombo.treatmentSet'),
|
||||
},
|
||||
]);
|
||||
const comtination = ref('');
|
||||
@@ -227,7 +230,7 @@ const editTemplate = () => {};
|
||||
const deleteTemplate = (id) => {
|
||||
deleteOrderGroup({ id: id }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
proxy.$modal.msgSuccess(t('basic.ordersCombo.deleteSuccess'));
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
type="primary"
|
||||
@click="handelEdit(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.activeFlag == '1'"
|
||||
@@ -228,7 +228,7 @@
|
||||
type="primary"
|
||||
@click="handleDisabled(scope.row.id)"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disabled') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else
|
||||
@@ -236,14 +236,14 @@
|
||||
type="primary"
|
||||
@click="handelEnable(scope.row.id)"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enabled') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleAddInferior(scope.row)"
|
||||
>
|
||||
添加下级
|
||||
{{ $t('basic.organization.addChild') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -281,53 +281,53 @@
|
||||
>
|
||||
<el-input
|
||||
v-model="form.id"
|
||||
placeholder="请输入科室编号"
|
||||
:placeholder="$t('basic.organization.placeholderDeptNo')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-show="false"
|
||||
label="科室编号"
|
||||
:label="$t('basic.organization.deptNo')"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.busNo"
|
||||
placeholder="请输入科室编号"
|
||||
:placeholder="$t('basic.organization.placeholderDeptNo')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="科室名称"
|
||||
:label="$t('basic.organization.deptName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入科室名称"
|
||||
:placeholder="$t('basic.organization.placeholderDeptName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保码"
|
||||
:label="$t('basic.organization.medicalInsuranceCode')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.ybNo"
|
||||
placeholder="请输入医保码"
|
||||
:placeholder="$t('basic.organization.placeholderMedicalInsuranceCode')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保名称"
|
||||
:label="$t('basic.organization.medicalInsuranceName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.ybName"
|
||||
placeholder="请输入医保名称"
|
||||
:placeholder="$t('basic.organization.placeholderMedicalInsuranceName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="科室类型"
|
||||
:label="$t('basic.organization.deptType')"
|
||||
prop="typeEnum"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.typeEnum"
|
||||
placeholder="请选择科室类型"
|
||||
:placeholder="$t('basic.organization.placeholderDeptType')"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
>
|
||||
@@ -340,12 +340,12 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="科室分类"
|
||||
:label="$t('basic.organization.deptClass')"
|
||||
prop="classEnum"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.classEnum"
|
||||
placeholder="请选择科室分类"
|
||||
:placeholder="$t('basic.organization.placeholderDeptClass')"
|
||||
clearable
|
||||
multiple
|
||||
style="width: 100%"
|
||||
@@ -361,7 +361,7 @@
|
||||
</el-form-item>
|
||||
<el-col>
|
||||
<el-form-item
|
||||
label="上级科室"
|
||||
:label="$t('basic.organization.parentDept')"
|
||||
prop="busNoParent"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -376,7 +376,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-form-item
|
||||
label="挂号科室"
|
||||
:label="$t('basic.organization.registrationDept')"
|
||||
prop="registerFlag"
|
||||
>
|
||||
<el-radio-group
|
||||
@@ -384,45 +384,45 @@
|
||||
size="large"
|
||||
>
|
||||
<el-radio :value="true">
|
||||
是
|
||||
{{ $t('common.yes') }}
|
||||
</el-radio>
|
||||
<el-radio :value="false">
|
||||
否
|
||||
{{ $t('common.no') }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="科室位置"
|
||||
:label="$t('basic.organization.location')"
|
||||
prop="location"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.location"
|
||||
placeholder="请输入科室位置"
|
||||
:placeholder="$t('basic.organization.placeholderLocation')"
|
||||
maxlength="100"
|
||||
show-word-limit
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="科室简介"
|
||||
:label="$t('basic.organization.intro')"
|
||||
prop="intro"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.intro"
|
||||
type="textarea"
|
||||
placeholder="请输入科室简介"
|
||||
:placeholder="$t('basic.organization.placeholderIntro')"
|
||||
maxlength="500"
|
||||
show-word-limit
|
||||
:rows="4"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="备注"
|
||||
:label="$t('common.remark')"
|
||||
prop="remark"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入备注信息"
|
||||
:placeholder="$t('common.placeholderRemark')"
|
||||
maxlength="1000"
|
||||
show-word-limit
|
||||
:rows="3"
|
||||
@@ -435,10 +435,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -490,18 +490,17 @@ const classEnumOption = ref([]);
|
||||
const selectRowIds = ref([]);
|
||||
const total = ref(0);
|
||||
const title = ref('');
|
||||
const rules = ref({
|
||||
busNo: [{ required: false, message: '请输入科室编号', trigger: 'input' }],
|
||||
const rules = computed(() => ({
|
||||
busNo: [{ required: false, message: t('basic.organization.placeholderDeptNo'), trigger: 'input' }],
|
||||
name: [
|
||||
{ required: true, message: '请输入科室名称', trigger: 'change' },
|
||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'change' },
|
||||
{ required: true, message: t('basic.organization.placeholderDeptName'), trigger: 'change' },
|
||||
{ min: 2, max: 20, message: t('basic.organization.lengthTip'), trigger: 'change' },
|
||||
],
|
||||
typeEnum: [{ required: true, message: '请选择科室类型', trigger: 'change' }],
|
||||
// 新增字段验证规则
|
||||
location: [{ required: false, message: '请输入科室位置', trigger: 'blur' }],
|
||||
intro: [{ required: false, message: '请输入科室简介', trigger: 'blur' }],
|
||||
remark: [{ required: false, message: '请输入备注信息', trigger: 'blur' }],
|
||||
});
|
||||
typeEnum: [{ required: true, message: t('basic.organization.placeholderDeptType'), trigger: 'change' }],
|
||||
location: [{ required: false, message: t('basic.organization.placeholderLocation'), trigger: 'blur' }],
|
||||
intro: [{ required: false, message: t('basic.organization.placeholderIntro'), trigger: 'blur' }],
|
||||
remark: [{ required: false, message: t('common.placeholderRemark'), trigger: 'blur' }],
|
||||
}));
|
||||
|
||||
getPageList();
|
||||
initOption();
|
||||
@@ -658,7 +657,7 @@ function getPageList(pagination) {
|
||||
|
||||
}).catch(error => {
|
||||
console.error('获取科室列表失败:', error);
|
||||
proxy.$modal.msgError('获取科室列表失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('basic.organization.fetchDeptListFailed'));
|
||||
organization.value = [];
|
||||
total.value = 0;
|
||||
}).finally(() => {
|
||||
@@ -667,7 +666,7 @@ function getPageList(pagination) {
|
||||
}
|
||||
|
||||
function handleAdd() {
|
||||
title.value = '添加科室';
|
||||
title.value = t('basic.organization.addDept');
|
||||
open.value = true;
|
||||
reset();
|
||||
console.log(form.value);
|
||||
@@ -676,7 +675,7 @@ function handleAdd() {
|
||||
function handelEdit(row) {
|
||||
console.log(row.busNo);
|
||||
|
||||
title.value = '编辑科室';
|
||||
title.value = t('basic.organization.editDept');
|
||||
open.value = true;
|
||||
|
||||
// 调用后端API获取完整的科室信息,确保包含所有字段
|
||||
@@ -707,7 +706,7 @@ function handelEdit(row) {
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error('获取科室信息失败:', error);
|
||||
proxy.$modal.msgError('获取科室信息失败');
|
||||
proxy.$modal.msgError(t('basic.organization.fetchDeptInfoFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -744,21 +743,21 @@ function submitForm() {
|
||||
formData.busNo = form.value.busNoParent;
|
||||
}
|
||||
addOrganization(formData).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
open.value = false;
|
||||
getPageList();
|
||||
}).catch(error => {
|
||||
console.error('添加科室失败:', error);
|
||||
proxy.$modal.msgError('添加科室失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('basic.organization.addDeptFailed'));
|
||||
});
|
||||
} else {
|
||||
updateOrganization(formData).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
open.value = false;
|
||||
getPageList();
|
||||
}).catch(error => {
|
||||
console.error('更新科室失败:', error);
|
||||
proxy.$modal.msgError('更新科室失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('basic.organization.updateDeptFailed'));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -767,7 +766,7 @@ function submitForm() {
|
||||
|
||||
// 添加下级
|
||||
function handleAddInferior(row) {
|
||||
title.value = '添加下级';
|
||||
title.value = t('basic.organization.addChild');
|
||||
open.value = true;
|
||||
form.value.busNoParent = row.busNo;
|
||||
}
|
||||
@@ -776,11 +775,11 @@ function handleAddInferior(row) {
|
||||
function handleDelete() {
|
||||
loading.value = true;
|
||||
deleteOrganization(selectRowIds.value.join(',')).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
getPageList();
|
||||
}).catch(error => {
|
||||
console.error('删除科室失败:', error);
|
||||
proxy.$modal.msgError('删除科室失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('basic.organization.deleteDeptFailed'));
|
||||
}).finally(() => {
|
||||
loading.value = false;
|
||||
});
|
||||
@@ -788,22 +787,22 @@ function handleDelete() {
|
||||
// 停用
|
||||
function handleDisabled(id) {
|
||||
disableOrg(id).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
getPageList();
|
||||
}).catch(error => {
|
||||
console.error('停用科室失败:', error);
|
||||
proxy.$modal.msgError('停用科室失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('basic.organization.disableDeptFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
// 启用
|
||||
function handelEnable(id) {
|
||||
enableOrg(id).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
getPageList();
|
||||
}).catch(error => {
|
||||
console.error('启用科室失败:', error);
|
||||
proxy.$modal.msgError('启用科室失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('basic.organization.enableDeptFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -173,12 +173,12 @@
|
||||
width="55"
|
||||
/>
|
||||
<vxe-column
|
||||
title="病房"
|
||||
:title="$t('basic.ward.room')"
|
||||
align="center"
|
||||
field="name"
|
||||
/>
|
||||
<vxe-column
|
||||
title="病房号"
|
||||
:title="$t('basic.ward.roomNo')"
|
||||
align="center"
|
||||
field="busNo"
|
||||
>
|
||||
@@ -187,7 +187,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
>
|
||||
@@ -206,7 +206,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -215,7 +215,7 @@
|
||||
link
|
||||
@click.stop="handleEdit(scope.row, 4)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="
|
||||
@@ -234,7 +234,7 @@
|
||||
}
|
||||
"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disable') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else-if="scope.row.statusEnum === 2"
|
||||
@@ -249,14 +249,14 @@
|
||||
}
|
||||
"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enable') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -264,21 +264,21 @@
|
||||
</el-card>
|
||||
<el-card>
|
||||
<template #header>
|
||||
<span style="vertical-align: middle">床位</span>
|
||||
<span style="vertical-align: middle">{{ $t('basic.ward.bed') }}</span>
|
||||
</template>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleEnableBatch('bedRef')"
|
||||
>
|
||||
批量启用
|
||||
{{ $t('basic.ward.batchEnable') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="handleUnableBatch('bedRef')"
|
||||
>
|
||||
批量停用
|
||||
{{ $t('basic.ward.batchDisable') }}
|
||||
</el-button>
|
||||
<vxe-table
|
||||
ref="bedRef"
|
||||
@@ -293,12 +293,12 @@
|
||||
width="55"
|
||||
/>
|
||||
<vxe-column
|
||||
title="病床"
|
||||
:title="$t('basic.ward.bedName')"
|
||||
align="center"
|
||||
field="name"
|
||||
/>
|
||||
<vxe-column
|
||||
title="病床号"
|
||||
:title="$t('basic.ward.bedNo')"
|
||||
align="center"
|
||||
field="busNo"
|
||||
>
|
||||
@@ -307,7 +307,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
>
|
||||
@@ -326,7 +326,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -335,7 +335,7 @@
|
||||
link
|
||||
@click.stop="handleEdit(scope.row, 10)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="
|
||||
@@ -354,7 +354,7 @@
|
||||
}
|
||||
"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disable') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-else-if="scope.row.statusEnum === 2"
|
||||
@@ -369,14 +369,14 @@
|
||||
}
|
||||
"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enable') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -385,7 +385,7 @@
|
||||
</div>
|
||||
<el-dialog
|
||||
v-model="open"
|
||||
:title="title"
|
||||
:title="$t(title)"
|
||||
width="600px"
|
||||
teleported
|
||||
@close="cancel"
|
||||
@@ -403,21 +403,21 @@
|
||||
>
|
||||
<el-input
|
||||
v-model="form.id"
|
||||
placeholder="请输入科室编号"
|
||||
:placeholder="$t('basic.ward.inputDeptNo')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-show="false"
|
||||
label="科室编号"
|
||||
:label="$t('basic.ward.deptNo')"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.busNo"
|
||||
placeholder="请输入科室编号"
|
||||
:placeholder="$t('basic.ward.inputDeptNo')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="type + '分类'"
|
||||
:label="$t(type) + $t('basic.ward.category')"
|
||||
prop="formEnum"
|
||||
>
|
||||
<el-radio-group
|
||||
@@ -426,28 +426,28 @@
|
||||
@change="handleRadioChange"
|
||||
>
|
||||
<el-radio :value="4">
|
||||
病区
|
||||
{{ $t('basic.ward.wardArea') }}
|
||||
</el-radio>
|
||||
<el-radio :value="10">
|
||||
病房
|
||||
{{ $t('basic.ward.room') }}
|
||||
</el-radio>
|
||||
<el-radio :value="8">
|
||||
床位
|
||||
{{ $t('basic.ward.bed') }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="type + '名称'"
|
||||
:label="$t(type) + $t('basic.ward.nameLabel')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
:placeholder="'请输入' + type + '名称'"
|
||||
:placeholder="$t('basic.ward.inputPrefix') + $t(type) + $t('basic.ward.nameLabel')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-col>
|
||||
<el-form-item
|
||||
:label="upLabel"
|
||||
:label="$t(upLabel)"
|
||||
prop="busNoParent"
|
||||
>
|
||||
<template v-if="form.formEnum == 4">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<template>
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form
|
||||
ref="queryRef"
|
||||
@@ -11,7 +11,7 @@
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="仓库名称"
|
||||
:placeholder="$t('basic.warehouse.namePlaceholder')"
|
||||
clearable
|
||||
style="width: 150px"
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -24,13 +24,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>
|
||||
@@ -45,7 +45,7 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
@@ -76,7 +76,7 @@
|
||||
icon="Refresh"
|
||||
@click="getPageList"
|
||||
>
|
||||
刷新
|
||||
{{ $t('common.refresh') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <right-toolbar
|
||||
@@ -96,12 +96,12 @@
|
||||
width="55"
|
||||
/>
|
||||
<vxe-column
|
||||
title="仓库名称"
|
||||
:title="$t('basic.warehouse.name')"
|
||||
align="left"
|
||||
field="name"
|
||||
/>
|
||||
<vxe-column
|
||||
title="仓库类型"
|
||||
:title="$t('basic.warehouse.type')"
|
||||
align="center"
|
||||
field="formEnum_enumText"
|
||||
/>
|
||||
@@ -111,17 +111,17 @@
|
||||
field="classEnum_dictText"
|
||||
/> -->
|
||||
<vxe-column
|
||||
title="是否使用"
|
||||
:title="$t('basic.warehouse.inUse')"
|
||||
align="center"
|
||||
field="operationalEnum_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="停用状态"
|
||||
:title="$t('basic.warehouse.stopStatus')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -130,7 +130,7 @@
|
||||
type="primary"
|
||||
@click="handelEdit(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<!-- <el-button
|
||||
type="primary"
|
||||
@@ -150,7 +150,7 @@
|
||||
:disabled="scope.row.busNo == ''"
|
||||
@click="handelDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -184,25 +184,25 @@
|
||||
>
|
||||
<el-input
|
||||
v-model="form.id"
|
||||
placeholder="请输入科室编号"
|
||||
:placeholder="$t('basic.warehouse.deptCodePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="名称"
|
||||
:label="$t('basic.warehouse.name')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.warehouse.namePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="类型"
|
||||
:label="$t('basic.warehouse.type')"
|
||||
prop="formEnum"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.formEnum"
|
||||
placeholder="请选择类型"
|
||||
:placeholder="$t('basic.warehouse.typePlaceholder')"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
:disabled="editShow"
|
||||
@@ -222,10 +222,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -234,6 +234,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Organization">
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {
|
||||
addWarehouse,
|
||||
deleteWarehouse,
|
||||
@@ -244,6 +245,7 @@ import {
|
||||
updateWarehouse,
|
||||
} from './components/api';
|
||||
|
||||
const { t } = useI18n()
|
||||
const { proxy } = getCurrentInstance();
|
||||
const loading = ref(true);
|
||||
const organization = ref([]);
|
||||
@@ -267,14 +269,14 @@ const total = ref(0);
|
||||
const title = ref('');
|
||||
const editShow = ref(false);
|
||||
const { warehous_type } = proxy.useDict('warehous_type');
|
||||
const rules = ref({
|
||||
busNo: [{ required: false, message: '请输入科室编号', trigger: 'change' }],
|
||||
const rules = computed(() => ({
|
||||
busNo: [{ required: false, message: t('basic.warehouse.deptCodePlaceholder'), trigger: 'change' }],
|
||||
name: [
|
||||
{ required: true, message: '请输入', trigger: 'change' },
|
||||
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'change' },
|
||||
{ required: true, message: t('common.pleaseEnter'), trigger: 'change' },
|
||||
{ min: 2, max: 20, message: t('basic.warehouse.nameLength'), trigger: 'change' },
|
||||
],
|
||||
formEnum: [{ required: true, message: '请选择仓库类型', trigger: 'change' }],
|
||||
});
|
||||
formEnum: [{ required: true, message: t('basic.warehouse.typePlaceholder'), trigger: 'change' }],
|
||||
}));
|
||||
|
||||
getPageList();
|
||||
initOption();
|
||||
@@ -310,7 +312,7 @@ function resetQuery() {
|
||||
function handleEnable(row) {
|
||||
enableLocation({ locationId: row.id, busNo: row.busNo }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
proxy.$modal.msgSuccess(t('basic.warehouse.enableSuccess'));
|
||||
handleQuery();
|
||||
}
|
||||
});
|
||||
@@ -319,7 +321,7 @@ function handleEnable(row) {
|
||||
function handleUnable(row) {
|
||||
unableLocation({ locationId: row.id, busNo: row.busNo }).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
proxy.$modal.msgSuccess(t('basic.warehouse.disableSuccess'));
|
||||
handleQuery();
|
||||
}
|
||||
});
|
||||
@@ -340,14 +342,14 @@ function getPageList() {
|
||||
}
|
||||
|
||||
function handleAdd() {
|
||||
title.value = '添加库房/药房/耗材库';
|
||||
title.value = t('basic.warehouse.addTitle');
|
||||
open.value = true;
|
||||
editShow.value = false;
|
||||
reset();
|
||||
}
|
||||
|
||||
function handelEdit(row) {
|
||||
title.value = '编辑库房/药房/耗材库';
|
||||
title.value = t('basic.warehouse.editTitle');
|
||||
open.value = true;
|
||||
editShow.value = true;
|
||||
setTimeout(() => {
|
||||
@@ -372,13 +374,13 @@ function submitForm() {
|
||||
}
|
||||
if (form.value.id == undefined) {
|
||||
addWarehouse(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
open.value = false;
|
||||
getPageList();
|
||||
});
|
||||
} else {
|
||||
updateWarehouse(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
open.value = false;
|
||||
getPageList();
|
||||
});
|
||||
@@ -391,7 +393,7 @@ function submitForm() {
|
||||
function handelDelete(data) {
|
||||
loading.value = true;
|
||||
deleteWarehouse(data).then((res) => {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
loading.value = false;
|
||||
getPageList();
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<template>
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<!--疾病目录数据-->
|
||||
@@ -7,7 +7,7 @@
|
||||
:xs="24"
|
||||
>
|
||||
<div class="head-title">
|
||||
疾病目录
|
||||
{{ $t('catalog.disease.title') }}
|
||||
</div>
|
||||
<div class="head-container">
|
||||
<el-tree
|
||||
@@ -36,19 +36,19 @@
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item
|
||||
label="疾病:"
|
||||
:label="$t('catalog.disease.diseaseLabel')"
|
||||
prop="searchKey"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="名称/ICD10编码/拼音助记码"
|
||||
:placeholder="$t('catalog.disease.searchPlaceholder')"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="状态"
|
||||
:label="$t('common.status')"
|
||||
prop="statusEnum"
|
||||
>
|
||||
<el-select
|
||||
@@ -65,12 +65,12 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="诊断类型"
|
||||
:label="$t('catalog.disease.diagnosisType')"
|
||||
prop="typeCode"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.typeCode"
|
||||
placeholder="请选择"
|
||||
:placeholder="$t('common.pleaseSelect')"
|
||||
style="width: 240px"
|
||||
clearable
|
||||
>
|
||||
@@ -99,7 +99,7 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
添加新项目
|
||||
{{ $t('catalog.disease.addNew') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -110,7 +110,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleClose"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -121,7 +121,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleStart"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -131,7 +131,7 @@
|
||||
icon="Search"
|
||||
@click="getList"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
@@ -158,20 +158,20 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="conditionCode"
|
||||
title="编码"
|
||||
:title="$t('catalog.disease.code')"
|
||||
align="center"
|
||||
field="conditionCode"
|
||||
/>
|
||||
<vxe-column
|
||||
key="name"
|
||||
title="名称"
|
||||
:title="$t('catalog.disease.name')"
|
||||
align="center"
|
||||
field="name"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="sourceEnum_enumText"
|
||||
title="疾病分类"
|
||||
:title="$t('catalog.disease.category')"
|
||||
align="center"
|
||||
field="sourceEnum_enumText"
|
||||
show-overflow="title"
|
||||
@@ -185,21 +185,21 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="typeCode_dictText"
|
||||
title="类型"
|
||||
:title="$t('catalog.disease.type')"
|
||||
align="center"
|
||||
field="typeCode_dictText"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="reportTypeCode_dictText"
|
||||
title="报卡类型"
|
||||
:title="$t('catalog.disease.reportType')"
|
||||
align="center"
|
||||
field="reportTypeCode_dictText"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="ybNo"
|
||||
title="医保编码 "
|
||||
:title="$t('catalog.disease.ybCode')"
|
||||
align="center"
|
||||
field="ybNo"
|
||||
show-overflow="title"
|
||||
@@ -218,20 +218,20 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="statusEnum_enumText"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
width="160"
|
||||
/>
|
||||
<vxe-column
|
||||
key="description"
|
||||
title="描述"
|
||||
:title="$t('catalog.disease.description')"
|
||||
align="center"
|
||||
field="description"
|
||||
width="160"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
@@ -243,7 +243,7 @@
|
||||
icon="Edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -443,6 +443,8 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Disease">
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { computed } from 'vue';
|
||||
import {
|
||||
addDisease,
|
||||
editDisease,
|
||||
@@ -454,6 +456,7 @@ import {
|
||||
} from './components/disease';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
const { condition_type_code, card_name_code } = proxy.useDict('condition_type_code', 'card_name_code');
|
||||
|
||||
const diseaseList = ref([]);
|
||||
@@ -471,27 +474,22 @@ const conditionDefinition = ref(undefined);
|
||||
// 是否停用
|
||||
const statusFlagOptions = ref(undefined);
|
||||
|
||||
const rules = computed(() => ({
|
||||
name: [{ required: true, message: t('catalog.disease.nameRequired'), trigger: 'blur' }],
|
||||
}));
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
queryParams: {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined, // 疾病名称
|
||||
statusEnum: undefined, // 状态(包括 1:预置,2:启用,3:停用)
|
||||
sourceEnum: undefined, // 来源(包括 1:病种目录分类,2:自定义)
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
//typeCode: [{ required: true, message: "类型不能为空", trigger: "blur" }],
|
||||
// statusEnum: [{ required: true, message: "状态不能为空", trigger: "blur" }],
|
||||
// ybFlag: [{ required: true, message: "医保标记不能为空", trigger: "blur" }],
|
||||
// ybMatchFlag: [
|
||||
// { required: true, message: "医保对码标记不能为空", trigger: "blur" },
|
||||
// ],
|
||||
searchKey: undefined,
|
||||
statusEnum: undefined,
|
||||
sourceEnum: undefined,
|
||||
},
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const { queryParams, form } = toRefs(data);
|
||||
|
||||
/** 通过条件过滤节点 */
|
||||
const filterNode = (value, data) => {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
title="医保药品目录"
|
||||
:title="$t('catalog.medicine.ybDialogTitle')"
|
||||
width="1800px"
|
||||
teleported
|
||||
destroy-on-close
|
||||
@@ -11,7 +11,7 @@
|
||||
<div>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入药品名"
|
||||
:placeholder="$t('catalog.medicine.enterDrugName')"
|
||||
clearable
|
||||
style="width: 20%; margin-bottom: 10px"
|
||||
@keyup.enter="getList"
|
||||
@@ -33,12 +33,12 @@
|
||||
>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="医保目录编码"
|
||||
:title="$t('catalog.medicine.ybCatalogCode')"
|
||||
field="medicalCatalogCode"
|
||||
/>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="药品名称"
|
||||
:title="$t('catalog.medicine.ybDrugName')"
|
||||
field="registeredName"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -48,7 +48,7 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="药品类别"
|
||||
:title="$t('catalog.medicine.ybDrugCategory')"
|
||||
field="drugCategoryName"
|
||||
width="120"
|
||||
>
|
||||
@@ -58,7 +58,7 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="国药准字"
|
||||
:title="$t('catalog.medicine.ybApprovalNo')"
|
||||
field="drugCategoryName"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -67,7 +67,7 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="药品规格"
|
||||
:title="$t('catalog.medicine.ybDrugSpec')"
|
||||
field="drugSpecification"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -77,7 +77,7 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="处方药"
|
||||
:title="$t('catalog.medicine.ybRxDrug')"
|
||||
field="otcFlagName"
|
||||
width="120"
|
||||
>
|
||||
@@ -87,7 +87,7 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="厂家"
|
||||
:title="$t('catalog.medicine.ybManufacturer')"
|
||||
field="manufacturerName"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -96,12 +96,12 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="批准文号"
|
||||
:title="$t('catalog.medicine.ybApprovalNumber')"
|
||||
field="approvalNo"
|
||||
/>
|
||||
<vxe-column
|
||||
align="center"
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="80"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -110,7 +110,7 @@
|
||||
type="primary"
|
||||
@click="handlewAddMedicine(scope.row)"
|
||||
>
|
||||
对照
|
||||
{{ $t('catalog.medicine.match') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -125,7 +125,7 @@
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -136,6 +136,9 @@
|
||||
<script setup>
|
||||
import {getYbMedicationList, queryYbCatalogue} from './medicine';
|
||||
import {formatDateStr} from '@/utils/index';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const emit = defineEmits(['selectMedicine']);
|
||||
const visible = ref(false);
|
||||
|
||||
@@ -195,7 +195,7 @@ const submitEvaluate = async () => {
|
||||
ElMessage.error(res.msg || t('cdss.alerts.evalFailed'))
|
||||
}
|
||||
} catch (e) {
|
||||
ElMessage.error('评估失败')
|
||||
ElMessage.error(t('cdss.alerts.evalFailed'))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,14 +210,14 @@ const submitAcknowledge = async () => {
|
||||
try {
|
||||
const res = await acknowledgeAlert(acknowledgeForm.id, { remark: acknowledgeForm.remark })
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('确认成功')
|
||||
ElMessage.success(t('cdss.alerts.ackSuccess'))
|
||||
acknowledgeDialogVisible.value = false
|
||||
getList()
|
||||
} else {
|
||||
ElMessage.error(res.msg || '确认失败')
|
||||
ElMessage.error(res.msg || t('cdss.alerts.ackFailed'))
|
||||
}
|
||||
} catch (e) {
|
||||
ElMessage.error('确认失败')
|
||||
ElMessage.error(t('cdss.alerts.ackFailed'))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryFormRef" :inline="true" v-show="showSearch" label-width="100px">
|
||||
<el-form-item label="规则类型" prop="ruleType">
|
||||
<el-select v-model="queryParams.ruleType" placeholder="请选择" clearable style="width: 140px">
|
||||
<el-option label="药物审查" value="DRUG_REVIEW" />
|
||||
<el-option label="诊断提示" value="DIAGNOSIS" />
|
||||
<el-option label="检验预警" value="LAB_ALERT" />
|
||||
<el-option label="用药禁忌" value="CONTRAINDICATION" />
|
||||
<el-form-item :label="$t('cdss.rules.ruleType')" prop="ruleType">
|
||||
<el-select v-model="queryParams.ruleType" :placeholder="$t('common.pleaseSelect')" clearable style="width: 140px">
|
||||
<el-option :label="$t('cdss.rules.typeDrugReview')" value="DRUG_REVIEW" />
|
||||
<el-option :label="$t('cdss.rules.typeDiagnosis')" value="DIAGNOSIS" />
|
||||
<el-option :label="$t('cdss.rules.typeLabAlert')" value="LAB_ALERT" />
|
||||
<el-option :label="$t('cdss.rules.typeContraindication')" value="CONTRAINDICATION" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="严重程度" prop="severity">
|
||||
<el-select v-model="queryParams.severity" placeholder="请选择" clearable style="width: 140px">
|
||||
<el-form-item :label="$t('cdss.rules.severity')" prop="severity">
|
||||
<el-select v-model="queryParams.severity" :placeholder="$t('common.pleaseSelect')" clearable style="width: 140px">
|
||||
<el-option label="CRITICAL" value="CRITICAL" />
|
||||
<el-option label="HIGH" value="HIGH" />
|
||||
<el-option label="MEDIUM" value="MEDIUM" />
|
||||
@@ -18,23 +18,23 @@
|
||||
<el-option label="INFO" value="INFO" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="优先级" prop="priority">
|
||||
<el-select v-model="queryParams.priority" placeholder="请选择" clearable style="width: 120px">
|
||||
<el-option label="最高" :value="2" />
|
||||
<el-option label="紧急" :value="1" />
|
||||
<el-option label="普通" :value="0" />
|
||||
<el-form-item :label="$t('cdss.rules.priority')" prop="priority">
|
||||
<el-select v-model="queryParams.priority" :placeholder="$t('common.pleaseSelect')" clearable style="width: 120px">
|
||||
<el-option :label="$t('cdss.rules.priorityHighest')" :value="2" />
|
||||
<el-option :label="$t('cdss.rules.priorityUrgent')" :value="1" />
|
||||
<el-option :label="$t('cdss.rules.priorityNormal')" :value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="分类" prop="category">
|
||||
<el-input v-model="queryParams.category" placeholder="规则分类" clearable style="width: 140px" />
|
||||
<el-form-item :label="$t('cdss.rules.category')" prop="category">
|
||||
<el-input v-model="queryParams.category" :placeholder="$t('cdss.rules.categoryPlaceholder')" clearable style="width: 140px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="规则名称" prop="keyword">
|
||||
<el-input v-model="queryParams.keyword" placeholder="搜索规则名称" clearable style="width: 180px" @keyup.enter="handleQuery" />
|
||||
<el-form-item :label="$t('cdss.rules.ruleName')" prop="keyword">
|
||||
<el-input v-model="queryParams.keyword" :placeholder="$t('cdss.rules.searchByName')" clearable style="width: 180px" @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="info" icon="DataAnalysis" @click="handleToggleStats">{{ showStats ? '返回列表' : '统计概览' }}</el-button>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">{{ $t('common.search') }}</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">{{ $t('common.reset') }}</el-button>
|
||||
<el-button type="info" icon="DataAnalysis" @click="handleToggleStats">{{ showStats ? $t('cdss.rules.backToList') : $t('cdss.rules.statsOverview') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
@@ -43,25 +43,25 @@
|
||||
<el-col :span="6">
|
||||
<el-card shadow="hover" class="stat-card">
|
||||
<div class="stat-value">{{ ruleStats.totalRules || 0 }}</div>
|
||||
<div class="stat-label">规则总数</div>
|
||||
<div class="stat-label">{{ $t('cdss.rules.totalRules') }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card shadow="hover" class="stat-card stat-active">
|
||||
<div class="stat-value">{{ ruleStats.activeRules || 0 }}</div>
|
||||
<div class="stat-label">启用规则</div>
|
||||
<div class="stat-label">{{ $t('cdss.rules.activeRules') }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card shadow="hover" class="stat-card stat-exec">
|
||||
<div class="stat-value">{{ ruleStats.totalExecutions || 0 }}</div>
|
||||
<div class="stat-label">执行总次数</div>
|
||||
<div class="stat-label">{{ $t('cdss.rules.totalExecutions') }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-card shadow="hover" class="stat-card stat-hit">
|
||||
<div class="stat-value">{{ ruleStats.hitRate || 0 }}%</div>
|
||||
<div class="stat-label">命中率</div>
|
||||
<div class="stat-label">{{ $t('cdss.rules.hitRate') }}</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -116,8 +116,11 @@
|
||||
|
||||
<script setup name="CdssRules">
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { getCdssRuleListEnhanced, getCdssRuleStats, getCdssRuleHistory } from '@/api/cdss/cdssRule'
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const ruleList = ref([])
|
||||
const loading = ref(false)
|
||||
const showSearch = ref(true)
|
||||
|
||||
Reference in New Issue
Block a user