feat(i18n): 实现病例模板统计模块国际化功能
- 将病例模板统计相关界面文本替换为国际化标签 - 添加 vue-i18n 依赖并配置翻译函数 - 实现表单验证消息的国际化显示 - 将按钮、表格列标题等界面元素转换为多语言支持 - 重构表单验证规则以支持动态国际化消息 - 更新常用诊断、耗材绑定等其他模块的国际化内容
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
class="pan-btn blue-btn"
|
||||
@click="addNewRow"
|
||||
>
|
||||
<i class="icon-plus" /> 添加新行
|
||||
<i class="icon-plus" /> {{ $t('basic.invoice.addRow') }}
|
||||
</button>
|
||||
<button
|
||||
class="pan-btn green-btn"
|
||||
@@ -29,7 +29,7 @@
|
||||
class="alert alert-danger error-messages"
|
||||
>
|
||||
<h4 class="error-title">
|
||||
验证失败
|
||||
{{ $t('basic.invoice.validationFailed') }}
|
||||
</h4>
|
||||
<ul class="error-list">
|
||||
<li
|
||||
@@ -49,14 +49,14 @@
|
||||
<table class="table table-bordered table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>序号</th>
|
||||
<th>操作员</th>
|
||||
<th>员工账号</th>
|
||||
<th>领用日期</th>
|
||||
<th>起始号码</th>
|
||||
<th>终止号码</th>
|
||||
<th>当前使用号码</th>
|
||||
<th>操作</th>
|
||||
<th>{{ $t('common.seq') }}</th>
|
||||
<th>{{ $t('basic.invoice.operator') }}</th>
|
||||
<th>{{ $t('basic.invoice.employeeAccount') }}</th>
|
||||
<th>{{ $t('basic.invoice.receiveDate') }}</th>
|
||||
<th>{{ $t('basic.invoice.startNum') }}</th>
|
||||
<th>{{ $t('basic.invoice.endNum') }}</th>
|
||||
<th>{{ $t('basic.invoice.currentNum') }}</th>
|
||||
<th>{{ $t('common.action') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -78,7 +78,7 @@
|
||||
@change="updateOperatorFromEmployeeId(item)"
|
||||
>
|
||||
<option value="">
|
||||
请选择操作员
|
||||
{{ $t('basic.invoice.selectOperator') }}
|
||||
</option>
|
||||
<option
|
||||
v-for="user in userList"
|
||||
@@ -107,7 +107,7 @@
|
||||
v-model="item.date"
|
||||
type="date"
|
||||
class="form-control"
|
||||
placeholder="领用日期"
|
||||
:placeholder="$t('basic.invoice.receiveDate')"
|
||||
>
|
||||
<span v-else>{{ item.date || '-' }}</span>
|
||||
</div>
|
||||
@@ -118,7 +118,7 @@
|
||||
v-if="item.isActive"
|
||||
v-model="item.startNum"
|
||||
class="form-control"
|
||||
placeholder="请输入起始号码"
|
||||
:placeholder="$t('basic.invoice.placeholderStartNum')"
|
||||
maxlength="12"
|
||||
>
|
||||
<span
|
||||
@@ -133,7 +133,7 @@
|
||||
v-if="item.isActive"
|
||||
v-model="item.endNum"
|
||||
class="form-control"
|
||||
placeholder="请输入终止号码"
|
||||
:placeholder="$t('basic.invoice.placeholderEndNum')"
|
||||
maxlength="12"
|
||||
>
|
||||
<span
|
||||
@@ -148,7 +148,7 @@
|
||||
v-if="item.isActive"
|
||||
v-model="item.currentNum"
|
||||
class="form-control"
|
||||
placeholder="当前使用号码"
|
||||
:placeholder="$t('basic.invoice.currentNum')"
|
||||
maxlength="12"
|
||||
>
|
||||
<span
|
||||
@@ -161,25 +161,25 @@
|
||||
<button
|
||||
v-if="!item.isActive"
|
||||
class="pan-btn-link blue-btn-link"
|
||||
title="编辑"
|
||||
:title="$t('common.edit')"
|
||||
@click="toggleEdit(item.keyId)"
|
||||
>
|
||||
<i class="icon-edit" /> 编辑
|
||||
<i class="icon-edit" /> {{ $t('common.edit') }}
|
||||
</button>
|
||||
<button
|
||||
v-if="item.isActive"
|
||||
class="pan-btn-link info-btn-link"
|
||||
title="取消"
|
||||
:title="$t('common.cancel')"
|
||||
@click="toggleEdit(item.keyId)"
|
||||
>
|
||||
<i class="icon-cancel" /> 取消
|
||||
<i class="icon-cancel" /> {{ $t('common.cancel') }}
|
||||
</button>
|
||||
<button
|
||||
class="pan-btn-link red-btn-link"
|
||||
title="删除"
|
||||
:title="$t('common.delete')"
|
||||
@click="deleteRow(item)"
|
||||
>
|
||||
<i class="icon-delete" /> 删除
|
||||
<i class="icon-delete" /> {{ $t('common.delete') }}
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -188,7 +188,7 @@
|
||||
colspan="8"
|
||||
class="no-data-row"
|
||||
>
|
||||
暂无数据,请添加新记录
|
||||
{{ $t('basic.invoice.noDataHint') }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<!-- 病历文件基本信息弹窗 -->
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="formData.id ? '编辑模板' : '新增模板'"
|
||||
:title="formData.id ? $t('basic.caseStats.editTemplate') : $t('basic.caseStats.addTemplate')"
|
||||
width="900px"
|
||||
destroy-on-close
|
||||
@open="handleOpen"
|
||||
@@ -20,18 +20,18 @@
|
||||
>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="模板名称"
|
||||
:label="$t('basic.caseStats.templateName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入模板名称"
|
||||
:placeholder="$t('basic.caseStats.templateNamePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="使用范围"
|
||||
:label="$t('basic.caseStats.useRange')"
|
||||
prop="useRange"
|
||||
>
|
||||
<el-radio-group v-model="formData.useRange">
|
||||
@@ -39,31 +39,31 @@
|
||||
:value="0"
|
||||
size="large"
|
||||
>
|
||||
全院
|
||||
{{ $t('basic.caseStats.hospital') }}
|
||||
</el-radio>
|
||||
<el-radio
|
||||
:value="1"
|
||||
size="large"
|
||||
>
|
||||
指定机构
|
||||
{{ $t('basic.caseStats.designatedOrg') }}
|
||||
</el-radio>
|
||||
<el-radio
|
||||
:value="2"
|
||||
size="large"
|
||||
>
|
||||
指定用户
|
||||
{{ $t('basic.caseStats.designatedUser') }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="备注"
|
||||
:label="$t('common.remark')"
|
||||
prop="remark"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.remark"
|
||||
placeholder="请输入版本"
|
||||
:placeholder="$t('basic.caseTemplate.versionPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -73,20 +73,23 @@
|
||||
<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 {ElMessage} from 'element-plus';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const emits = defineEmits(['submitOk']);
|
||||
const props = defineProps({
|
||||
@@ -115,9 +118,9 @@ const formData = ref({
|
||||
remark: '',
|
||||
});
|
||||
// 表单验证规则(响应式,支持动态验证)
|
||||
const rules = reactive({
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
});
|
||||
const rules = computed(() => ({
|
||||
name: [{ required: true, message: t('basic.caseStats.namePlaceholder'), trigger: 'blur' }],
|
||||
}));
|
||||
const handleOpen = () => {
|
||||
if (props.formData) {
|
||||
formData.value = props.formData;
|
||||
@@ -134,7 +137,7 @@ const submitForm = () => {
|
||||
saveForm();
|
||||
} else {
|
||||
// 表单验证失败
|
||||
ElMessage.error('请填写必填项');
|
||||
ElMessage.error(t('basic.caseStats.fillRequired'));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
:inline="true"
|
||||
>
|
||||
<el-form-item
|
||||
label="名称"
|
||||
:label="$t('basic.caseStats.name')"
|
||||
prop="searchKey"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入名称搜索"
|
||||
:placeholder="$t('basic.caseStats.nameSearchPlaceholder')"
|
||||
clearable
|
||||
style="width: 200px"
|
||||
@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>
|
||||
@@ -46,7 +46,7 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -61,17 +61,17 @@
|
||||
:data="statisticsList"
|
||||
>
|
||||
<vxe-column
|
||||
title="属性名称"
|
||||
:title="$t('basic.caseStats.attrName')"
|
||||
align="center"
|
||||
field="name"
|
||||
/>
|
||||
<vxe-column
|
||||
title="属性代码"
|
||||
:title="$t('basic.caseStats.attrCode')"
|
||||
align="center"
|
||||
field="code"
|
||||
/>
|
||||
<vxe-column
|
||||
title="属性类型"
|
||||
:title="$t('basic.caseStats.attrType')"
|
||||
align="center"
|
||||
field="typeEnum"
|
||||
>
|
||||
@@ -80,45 +80,45 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="统计值单位"
|
||||
:title="$t('basic.caseStats.statUnit')"
|
||||
align="center"
|
||||
field="unit"
|
||||
/>
|
||||
<vxe-column
|
||||
title="是否必填"
|
||||
:title="$t('basic.caseStats.required')"
|
||||
align="center"
|
||||
field="required"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.required === 1 ? '必填' : '不必填' }}
|
||||
{{ scope.row.required === 1 ? $t('basic.caseStats.isRequired') : $t('basic.caseStats.notRequired') }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="是否统计"
|
||||
:title="$t('basic.caseStats.isStatistics')"
|
||||
align="center"
|
||||
field="isStatistics"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.isStatistics === 1 ? '统计' : '不统计' }}
|
||||
{{ scope.row.isStatistics === 1 ? $t('basic.caseStats.statistics') : $t('basic.caseStats.noStatistics') }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="字典名称"
|
||||
:title="$t('basic.caseStats.dictName')"
|
||||
align="center"
|
||||
field="dictName"
|
||||
/>
|
||||
<vxe-column
|
||||
title="字典类型"
|
||||
:title="$t('basic.caseStats.dictType')"
|
||||
align="center"
|
||||
field="dictType"
|
||||
/>
|
||||
<vxe-column
|
||||
title="备注"
|
||||
:title="$t('common.remark')"
|
||||
align="center"
|
||||
field="remark"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="180"
|
||||
align="center"
|
||||
class-name="small-padding fixed-width"
|
||||
@@ -130,7 +130,7 @@
|
||||
icon="Edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>
|
||||
修改
|
||||
{{ $t('basic.caseStats.modify') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
@@ -138,7 +138,7 @@
|
||||
icon="Delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -166,34 +166,34 @@
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item
|
||||
label="属性名称"
|
||||
:label="$t('basic.caseStats.attrName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入属性名称"
|
||||
:placeholder="$t('basic.caseStats.attrNamePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="属性代码"
|
||||
:label="$t('basic.caseStats.attrCode')"
|
||||
prop="code"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.code"
|
||||
placeholder="请输入属性代码"
|
||||
:placeholder="$t('basic.caseStats.attrCodePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="体温单类型编码"
|
||||
:label="$t('basic.caseStats.tempTypeCode')"
|
||||
prop="typeCode"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.typeCode"
|
||||
placeholder="请输入体温单属性编码"
|
||||
:placeholder="$t('basic.caseStats.tempTypeCodePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="岗位顺序"
|
||||
:label="$t('basic.caseStats.displayOrder')"
|
||||
prop="displayOrder"
|
||||
>
|
||||
<el-input-number
|
||||
@@ -203,7 +203,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="属性类型"
|
||||
:label="$t('basic.caseStats.attrType')"
|
||||
prop="typeEnum"
|
||||
>
|
||||
<el-radio-group v-model="form.typeEnum">
|
||||
@@ -219,42 +219,42 @@
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="是否必填"
|
||||
:label="$t('basic.caseStats.required')"
|
||||
prop="required"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.required"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
active-text="是"
|
||||
inactive-text="否"
|
||||
:active-text="$t('common.yes')"
|
||||
:inactive-text="$t('common.no')"
|
||||
inline-prompt
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="是否统计"
|
||||
:label="$t('basic.caseStats.isStatistics')"
|
||||
prop="isStatistics"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.isStatistics"
|
||||
:active-value="1"
|
||||
:inactive-value="0"
|
||||
active-text="是"
|
||||
inactive-text="否"
|
||||
:active-text="$t('common.yes')"
|
||||
:inactive-text="$t('common.no')"
|
||||
inline-prompt
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="单位"
|
||||
:label="$t('basic.caseStats.unit')"
|
||||
prop="unit"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.unit"
|
||||
placeholder="请输入统计值单位"
|
||||
:placeholder="$t('basic.caseStats.unitPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="字典名称"
|
||||
:label="$t('basic.caseStats.dictName')"
|
||||
prop="dictType"
|
||||
>
|
||||
<el-select
|
||||
@@ -274,13 +274,13 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="备注"
|
||||
:label="$t('common.remark')"
|
||||
prop="remark"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
placeholder="请输入内容"
|
||||
:placeholder="$t('basic.caseStats.contentPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -290,10 +290,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -304,6 +304,9 @@
|
||||
<script setup name="Post">
|
||||
import {add, deleteStatistics, getPageList, init, update} from './api';
|
||||
import {optionselect as getDictOptionselect} from '@/api/system/dict/type';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_normal_disable } = proxy.useDict('sys_normal_disable');
|
||||
@@ -323,13 +326,14 @@ const data = reactive({
|
||||
pageSize: 10,
|
||||
searchKey: undefined,
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入属性名称', trigger: 'blur' }],
|
||||
code: [{ required: true, message: '请输入属性代码', trigger: 'blur' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const rules = computed(() => ({
|
||||
name: [{ required: true, message: t('basic.caseStats.attrNamePlaceholder'), trigger: 'blur' }],
|
||||
code: [{ required: true, message: t('basic.caseStats.attrCodePlaceholder'), trigger: 'blur' }],
|
||||
}));
|
||||
|
||||
const { queryParams, form } = toRefs(data);
|
||||
|
||||
/** 查询岗位列表 */
|
||||
function getList() {
|
||||
@@ -377,14 +381,14 @@ function resetQuery() {
|
||||
function handleAdd() {
|
||||
reset();
|
||||
open.value = true;
|
||||
title.value = '添加统计';
|
||||
title.value = t('basic.caseStats.addTitle');
|
||||
}
|
||||
/** 修改按钮操作 */
|
||||
function handleUpdate(row) {
|
||||
reset();
|
||||
form.value = row;
|
||||
open.value = true;
|
||||
title.value = '修改统计';
|
||||
title.value = t('basic.caseStats.editTitle');
|
||||
}
|
||||
/** 提交按钮 */
|
||||
function submitForm() {
|
||||
@@ -395,13 +399,13 @@ function submitForm() {
|
||||
if (valid) {
|
||||
if (form.value.id != undefined) {
|
||||
update(form.value).then((response) => {
|
||||
proxy.$modal.msgSuccess('修改成功');
|
||||
proxy.$modal.msgSuccess(t('basic.caseStats.modifySuccess'));
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
} else {
|
||||
add(form.value).then((response) => {
|
||||
proxy.$modal.msgSuccess('新增成功');
|
||||
proxy.$modal.msgSuccess(t('basic.caseStats.addSuccess'));
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
@@ -412,20 +416,20 @@ function submitForm() {
|
||||
/** 删除按钮操作 */
|
||||
function handleDelete(row) {
|
||||
proxy.$modal
|
||||
.confirm('是否确认删除编号为"' + row.id + '"的数据项?')
|
||||
.confirm(t('basic.caseStats.confirmDeleteItem', { id: row.id }))
|
||||
.then(function () {
|
||||
return deleteStatistics(row.id);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
proxy.$modal.msgSuccess(t('basic.caseStats.deleteSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
const typeEnumsOptions = ref([]);
|
||||
const typeEnums = (value) => {
|
||||
if (typeEnumsOptions.value.length) {
|
||||
return typeEnumsOptions.value.find((item) => item.value == value)?.info || '未知';
|
||||
return typeEnumsOptions.value.find((item) => item.value == value)?.info || t('basic.caseStats.unknown');
|
||||
}
|
||||
};
|
||||
const initPage = async () => {
|
||||
|
||||
@@ -4,18 +4,18 @@
|
||||
<el-space>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="请输入名称搜索"
|
||||
:placeholder="$t('basic.caseStats.nameSearchPlaceholder')"
|
||||
clearable
|
||||
/>
|
||||
<el-button @click="refresh">
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="newTemplate"
|
||||
>
|
||||
新建
|
||||
{{ $t('basic.caseStats.create') }}
|
||||
</el-button>
|
||||
</el-space>
|
||||
</div>
|
||||
@@ -26,25 +26,25 @@
|
||||
>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.caseStats.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="count"
|
||||
title="数量"
|
||||
:title="$t('basic.caseStats.count')"
|
||||
/>
|
||||
<vxe-column title="操作">
|
||||
<vxe-column :title="$t('common.operation')">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="editStatistics(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="deleteStatistics(scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
<EditStatistics
|
||||
v-model:dialog-visible="dialogVisible"
|
||||
:title="currentNodeData ? '编辑病历文件信息' : '病历文件基本信息'"
|
||||
:title="currentNodeData ? $t('basic.caseTemplate.editFileInfo') : $t('basic.caseTemplate.fileInfo')"
|
||||
:form-data="formData"
|
||||
:current-node-data="currentNodeData"
|
||||
@submit-ok="handleSubmitOk"
|
||||
@@ -64,6 +64,9 @@
|
||||
import {onMounted, reactive, ref} from 'vue';
|
||||
import {init,} from './api';
|
||||
import EditStatistics from './components/editStatistics.vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const queryParams = ref({
|
||||
pageNo: 1,
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span class="card-title">常用诊断</span>
|
||||
<span class="card-title">{{ $t('commonDiagnosis.title') }}</span>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增诊断
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -194,30 +194,32 @@
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ref, onMounted, computed } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { getDiagnosisPage, addDiagnosis, updateDiagnosis, stopDiagnosis, startDiagnosis } 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('commonDiagnosis.addTitle')); const isEdit = ref(false); const formRef = ref()
|
||||
const form = ref({ id: null, conditionCode: '', name: '', pyStr: '', typeCode: 'WEST' })
|
||||
const rules = { conditionCode: [{ required: true, message: '请输入编码', trigger: 'blur' }], name: [{ required: true, message: '请输入名称', trigger: 'blur' }] }
|
||||
const rules = computed(() => ({ conditionCode: [{ required: true, message: t('commonDiagnosis.msgInputCode'), trigger: 'blur' }], name: [{ required: true, message: t('commonDiagnosis.msgInputName'), trigger: 'blur' }] }))
|
||||
function getList() {
|
||||
loading.value = true
|
||||
getDiagnosisPage(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: '', pyStr: '', typeCode: 'WEST' }; formVisible.value = true }
|
||||
function handleEdit(row) { isEdit.value = true; formTitle.value = '编辑诊断'; form.value = { ...row }; formVisible.value = true }
|
||||
function handleAdd() { isEdit.value = false; formTitle.value = t('commonDiagnosis.addTitle'); form.value = { id: null, conditionCode: '', name: '', pyStr: '', typeCode: 'WEST' }; formVisible.value = true }
|
||||
function handleEdit(row) { isEdit.value = true; formTitle.value = t('commonDiagnosis.editTitle'); form.value = { ...row }; formVisible.value = true }
|
||||
function submitForm() {
|
||||
formRef.value.validate(valid => { if (!valid) return
|
||||
const action = isEdit.value ? updateDiagnosis(form.value) : addDiagnosis(form.value)
|
||||
action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? '修改成功' : '新增成功'); formVisible.value = false; getList() } else ElMessage.error(res.msg || '操作失败') })
|
||||
action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? t('commonDiagnosis.msgEditSuccess') : t('commonDiagnosis.msgAddSuccess')); formVisible.value = false; getList() } else ElMessage.error(res.msg || t('common.operationFailed')) })
|
||||
})
|
||||
}
|
||||
function handleStop(row) { stopDiagnosis(row.id).then(res => { if (res.code === 200) { ElMessage.success('已停用'); getList() } }) }
|
||||
function handleStart(row) { startDiagnosis(row.id).then(res => { if (res.code === 200) { ElMessage.success('已启用'); getList() } }) }
|
||||
function handleStop(row) { stopDiagnosis(row.id).then(res => { if (res.code === 200) { ElMessage.success(t('commonDiagnosis.msgStopped')); getList() } }) }
|
||||
function handleStart(row) { startDiagnosis(row.id).then(res => { if (res.code === 200) { ElMessage.success(t('commonDiagnosis.msgStarted')); getList() } }) }
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -8,18 +8,18 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="项目名称"
|
||||
:title="$t('basic.consumables.itemName')"
|
||||
align="center"
|
||||
field="name"
|
||||
width="300"
|
||||
/>
|
||||
<vxe-column
|
||||
title="类型"
|
||||
:title="$t('basic.consumables.type')"
|
||||
align="center"
|
||||
field="typeEnum_enumText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="价格"
|
||||
:title="$t('basic.consumables.price')"
|
||||
align="right"
|
||||
field="retailPrice"
|
||||
>
|
||||
@@ -28,7 +28,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="说明"
|
||||
:title="$t('basic.consumables.description')"
|
||||
align="center"
|
||||
field="descriptionText"
|
||||
/>
|
||||
@@ -39,8 +39,11 @@
|
||||
<script setup>
|
||||
import {getActivityList} from './api';
|
||||
import {watch} from 'vue';
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {throttle} from 'lodash-es';
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const props = defineProps({
|
||||
searchKey: {
|
||||
type: String,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
:disabled="buttonDisabled"
|
||||
@click="handleAddPrescription()"
|
||||
>
|
||||
添加绑定项目
|
||||
{{ $t('basic.consumables.addBinding') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-form
|
||||
@@ -24,7 +24,7 @@
|
||||
@checkbox-change="handleSelectionChange"
|
||||
>
|
||||
<vxe-column
|
||||
title="项目类型"
|
||||
:title="$t('basic.consumables.itemType')"
|
||||
align="center"
|
||||
field="type"
|
||||
width="150"
|
||||
@@ -43,12 +43,12 @@
|
||||
>
|
||||
<el-option
|
||||
v-if="props.tab == 1 || props.tab == 3"
|
||||
label="诊疗"
|
||||
:label="$t('basic.consumables.diagnosis')"
|
||||
value="1"
|
||||
/>
|
||||
<el-option
|
||||
v-if="props.tab != 3"
|
||||
label="耗材"
|
||||
:label="$t('basic.consumables.consumable')"
|
||||
value="2"
|
||||
/>
|
||||
</el-select>
|
||||
@@ -56,7 +56,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="项目名"
|
||||
:title="$t('basic.consumables.itemName')"
|
||||
align="center"
|
||||
field="name"
|
||||
>
|
||||
@@ -89,7 +89,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="绑定数量"
|
||||
:title="$t('basic.consumables.bindQuantity')"
|
||||
align="center"
|
||||
field="quantity"
|
||||
width="250"
|
||||
@@ -109,7 +109,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="单位"
|
||||
:title="$t('basic.consumables.unit')"
|
||||
align="center"
|
||||
field="unitCode_dictText"
|
||||
width="100"
|
||||
@@ -168,7 +168,7 @@
|
||||
</template>
|
||||
</vxe-column> -->
|
||||
<vxe-column
|
||||
title="启用状态"
|
||||
:title="$t('basic.consumables.enableStatus')"
|
||||
align="center"
|
||||
field="statusEnum"
|
||||
width="250"
|
||||
@@ -196,7 +196,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
fixed="right"
|
||||
width="250"
|
||||
@@ -208,7 +208,7 @@
|
||||
type="primary"
|
||||
@click="handleEdit(scope.rowIndex)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.isEdit"
|
||||
@@ -216,7 +216,7 @@
|
||||
type="primary"
|
||||
@click="handleSave(scope.row, scope.rowIndex)"
|
||||
>
|
||||
保存
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-if="scope.row.isEdit"
|
||||
@@ -232,14 +232,14 @@
|
||||
}
|
||||
"
|
||||
>
|
||||
取消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click.stop="handleDelete(scope.row, scope.rowIndex)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -249,12 +249,15 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {reactive, watch} from 'vue';
|
||||
import {reactive, watch, computed} from 'vue';
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {bind, deleteBind, init} from './api';
|
||||
import PopoverList from '@/components/HealthLinkHis/popoverList/index.vue';
|
||||
import DeviceList from './deviceList.vue';
|
||||
import ActivityList from './activityList.vue';
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const emit = defineEmits(['refresh']);
|
||||
const total = ref(0);
|
||||
const queryParams = ref({});
|
||||
@@ -262,11 +265,11 @@ const consumablesList = ref([]);
|
||||
const searchKey = ref('');
|
||||
const rowIndex = ref(-1);
|
||||
const isAdd = ref(true);
|
||||
const rules = ref({
|
||||
name: [{ required: true, message: '请选择耗材项', trigger: 'change' }],
|
||||
quantity: [{ required: true, message: '请输入绑定数量', trigger: 'blur' }],
|
||||
rangeCode: [{ required: true, message: '请选择使用范围', trigger: 'blur' }],
|
||||
});
|
||||
const rules = computed(() => ({
|
||||
name: [{ required: true, message: t('basic.consumables.selectConsumable'), trigger: 'change' }],
|
||||
quantity: [{ required: true, message: t('basic.consumables.enterQuantity'), trigger: 'blur' }],
|
||||
rangeCode: [{ required: true, message: t('basic.consumables.selectRange'), trigger: 'blur' }],
|
||||
}));
|
||||
const form = reactive({
|
||||
consumablesList: [],
|
||||
});
|
||||
@@ -311,7 +314,7 @@ watch(
|
||||
typeCode: item.typeCode,
|
||||
typeCode_dictText: item.typeCode_dictText,
|
||||
type: item.activityName ? '1' : '2',
|
||||
type_dictText: item.activityName ? '诊疗' : '耗材',
|
||||
type_dictText: item.activityName ? t('basic.consumables.diagnosis') : t('basic.consumables.consumable'),
|
||||
};
|
||||
});
|
||||
isAdd.value = true;
|
||||
@@ -332,7 +335,7 @@ const { proxy } = getCurrentInstance();
|
||||
const { use_range } = proxy.useDict('use_range');
|
||||
function handleAddPrescription() {
|
||||
if (!isAdd.value) {
|
||||
proxy.$modal.msgWarning('请先保存当前行');
|
||||
proxy.$modal.msgWarning(t('basic.consumables.saveFirst'));
|
||||
return;
|
||||
}
|
||||
form.consumablesList.push({
|
||||
@@ -365,7 +368,7 @@ function handleSave(row, index) {
|
||||
devActTable: row.type == '1' ? 'wor_activity_definition' : 'adm_device_definition',
|
||||
}).then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('操作成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
emit('refresh');
|
||||
isAdd.value = true;
|
||||
}
|
||||
@@ -377,10 +380,10 @@ function handleSave(row, index) {
|
||||
|
||||
function handleDelete(row, index) {
|
||||
if (row.id) {
|
||||
proxy.$modal.confirm('确认删除当前绑定项目吗').then(() => {
|
||||
proxy.$modal.confirm(t('basic.consumables.confirmDeleteBinding')).then(() => {
|
||||
deleteBind(row.id).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
proxy.$modal.msgSuccess(t('basic.consumables.deleteSuccess'));
|
||||
emit('refresh');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="项目名称"
|
||||
:title="$t('basic.consumables.itemName')"
|
||||
align="center"
|
||||
field="name"
|
||||
width="200"
|
||||
/>
|
||||
<vxe-column
|
||||
title="分类"
|
||||
:title="$t('basic.consumables.category')"
|
||||
align="center"
|
||||
field="categoryCode_dictText"
|
||||
width="150"
|
||||
/>
|
||||
<vxe-column
|
||||
title="种类"
|
||||
:title="$t('basic.consumables.kind')"
|
||||
align="center"
|
||||
field="typeCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="规格"
|
||||
:title="$t('basic.consumables.spec')"
|
||||
align="center"
|
||||
field="size"
|
||||
/>
|
||||
<vxe-column
|
||||
title="价格"
|
||||
:title="$t('basic.consumables.price')"
|
||||
align="right"
|
||||
field="retailPrice"
|
||||
>
|
||||
@@ -39,7 +39,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="生产厂家"
|
||||
:title="$t('basic.consumables.manufacturer')"
|
||||
align="center"
|
||||
field="supplyId_dictText"
|
||||
/>
|
||||
@@ -50,8 +50,11 @@
|
||||
<script setup>
|
||||
import {getFullDeviceList} from './api';
|
||||
import {watch} from 'vue';
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {throttle} from 'lodash-es';
|
||||
|
||||
const { t } = useI18n()
|
||||
|
||||
const props = defineProps({
|
||||
searchKey: {
|
||||
type: String,
|
||||
|
||||
@@ -46,19 +46,19 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="项目名"
|
||||
:title="$t('basic.consumables.itemName')"
|
||||
align="center"
|
||||
field="name"
|
||||
/>
|
||||
</vxe-table>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane
|
||||
label="号源"
|
||||
:label="$t('basic.consumables.numberSource')"
|
||||
:name="3"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParamsRegistration.searchKey"
|
||||
placeholder="请输入项目名"
|
||||
:placeholder="$t('basic.consumables.itemNamePlaceholder')"
|
||||
clearable
|
||||
style="width: 100%; margin-bottom: 10px"
|
||||
@keyup.enter="getRegistrationList"
|
||||
@@ -77,7 +77,7 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="项目名"
|
||||
:title="$t('basic.consumables.itemName')"
|
||||
align="center"
|
||||
field="name"
|
||||
/>
|
||||
|
||||
@@ -34,15 +34,15 @@
|
||||
@change="handleRangeChange"
|
||||
>
|
||||
<el-option
|
||||
label="个人"
|
||||
:label="$t('basic.medOrderSet.personal')"
|
||||
value="personal"
|
||||
/>
|
||||
<el-option
|
||||
label="科室"
|
||||
:label="$t('basic.medOrderSet.department')"
|
||||
value="department"
|
||||
/>
|
||||
<el-option
|
||||
label="全院"
|
||||
:label="$t('basic.medOrderSet.hospital')"
|
||||
value="hospital"
|
||||
/>
|
||||
</el-select>
|
||||
@@ -50,12 +50,12 @@
|
||||
|
||||
<el-form-item
|
||||
v-if="currentTab === 'personal' && !isDoctorStation && !showRangeSelector"
|
||||
label="参与者"
|
||||
:label="$t('basic.medOrderSet.participant')"
|
||||
prop="practitionerId"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.practitionerId"
|
||||
placeholder="请选择参与者"
|
||||
:placeholder="$t('basic.medOrderSet.selectParticipant')"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
>
|
||||
@@ -81,7 +81,7 @@
|
||||
value-key="id"
|
||||
check-strictly
|
||||
default-expand-all
|
||||
placeholder="请选择科室"
|
||||
:placeholder="$t('basic.medOrderSet.selectDept')"
|
||||
style="width: 220px"
|
||||
:render-after-expand="false"
|
||||
@change="handleOrgChange"
|
||||
@@ -95,13 +95,13 @@
|
||||
type="primary"
|
||||
@click="handleAddRow"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
<el-button @click="handleCombineGroup">
|
||||
组合
|
||||
{{ $t('basic.medOrderSet.combine') }}
|
||||
</el-button>
|
||||
<el-button @click="handleSplitGroup">
|
||||
拆组
|
||||
{{ $t('basic.medOrderSet.splitGroup') }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
:selectable="isRowSelectable"
|
||||
/>
|
||||
<vxe-column
|
||||
title="组"
|
||||
:title="$t('basic.medOrderSet.group')"
|
||||
align="center"
|
||||
width="60"
|
||||
>
|
||||
@@ -129,7 +129,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="类型"
|
||||
:title="$t('basic.medOrderSet.type')"
|
||||
align="center"
|
||||
width="160"
|
||||
>
|
||||
@@ -140,22 +140,22 @@
|
||||
size="small"
|
||||
>
|
||||
<el-radio-button value="1">
|
||||
长期
|
||||
{{ $t('basic.medOrderSet.longTerm') }}
|
||||
</el-radio-button>
|
||||
<el-radio-button value="2">
|
||||
临时
|
||||
{{ $t('basic.medOrderSet.temporary') }}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
<span v-else>
|
||||
{{
|
||||
scope.row.therapyEnum == '1' ? '长期' : scope.row.therapyEnum == '2' ? '临时' : '-'
|
||||
scope.row.therapyEnum == '1' ? $t('basic.medOrderSet.longTerm') : scope.row.therapyEnum == '2' ? $t('basic.medOrderSet.temporary') : '-'
|
||||
}}
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="医嘱"
|
||||
:title="$t('basic.medOrderSet.order')"
|
||||
align="center"
|
||||
field="productName"
|
||||
width="300"
|
||||
@@ -179,7 +179,7 @@
|
||||
:ref="'adviceRef' + scope.rowIndex"
|
||||
v-model="scope.row.adviceName"
|
||||
style="width: 100%"
|
||||
placeholder="请选择项目"
|
||||
:placeholder="$t('basic.medOrderSet.selectItem')"
|
||||
@input="(value) => handleInput(value, scope.row, scope.rowIndex)"
|
||||
@click="handleFocus(scope.row, scope.rowIndex)"
|
||||
@keyup.enter.stop="handleFocus(scope.row, scope.rowIndex)"
|
||||
@@ -202,7 +202,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="单次剂量"
|
||||
:title="$t('basic.medOrderSet.singleDose')"
|
||||
align="center"
|
||||
width="250"
|
||||
>
|
||||
@@ -248,7 +248,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="给药途径"
|
||||
:title="$t('basic.medOrderSet.route')"
|
||||
align="center"
|
||||
width="150"
|
||||
>
|
||||
@@ -257,7 +257,7 @@
|
||||
<template v-if="scope.row.adviceType == 1 || !scope.row.adviceDefinitionId">
|
||||
<el-select
|
||||
v-model="scope.row.methodCode"
|
||||
placeholder="给药途径"
|
||||
:placeholder="$t('basic.medOrderSet.route')"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
@@ -279,7 +279,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="用药频次"
|
||||
:title="$t('basic.medOrderSet.frequency')"
|
||||
align="center"
|
||||
width="150"
|
||||
>
|
||||
@@ -288,7 +288,7 @@
|
||||
<template v-if="scope.row.adviceType == 1 || !scope.row.adviceDefinitionId">
|
||||
<el-select
|
||||
v-model="scope.row.rateCode"
|
||||
placeholder="频次"
|
||||
:placeholder="$t('basic.medOrderSet.frequency')"
|
||||
style="width: 120px"
|
||||
filterable
|
||||
>
|
||||
@@ -310,7 +310,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="用药天数"
|
||||
:title="$t('basic.medOrderSet.medicationDays')"
|
||||
align="center"
|
||||
width="100"
|
||||
>
|
||||
@@ -332,7 +332,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="总量/执行次数"
|
||||
:title="$t('basic.medOrderSet.totalOrExec')"
|
||||
align="center"
|
||||
width="150"
|
||||
field="sortNumber"
|
||||
@@ -351,7 +351,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="单位"
|
||||
:title="$t('basic.medOrderSet.unit')"
|
||||
align="center"
|
||||
width="120"
|
||||
field="unitCode"
|
||||
@@ -360,7 +360,7 @@
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
<el-select
|
||||
v-model="scope.row.selectUnitCode"
|
||||
placeholder="请选择单位"
|
||||
:placeholder="$t('basic.medOrderSet.selectUnit')"
|
||||
@change="handleUnitChange(scope.row)"
|
||||
>
|
||||
<el-option
|
||||
@@ -382,7 +382,7 @@
|
||||
</vxe-column>
|
||||
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
width="80"
|
||||
>
|
||||
@@ -400,14 +400,14 @@
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:loading="submitLoading"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -485,14 +485,14 @@ const adviceTableRef = ref();
|
||||
|
||||
const formRules = computed(() => {
|
||||
const rules = {
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
name: [{ required: true, message: t('basic.medOrderSet.namePlaceholder'), trigger: 'blur' }],
|
||||
};
|
||||
// 独立页面:个人必须选参与者;科室必须选科室
|
||||
if (!props.isDoctorStation && currentTab.value === 'personal') {
|
||||
rules.practitionerId = [{ required: true, message: '请选择参与者', trigger: 'change' }];
|
||||
rules.practitionerId = [{ required: true, message: t('basic.medOrderSet.selectParticipant'), trigger: 'change' }];
|
||||
}
|
||||
if (currentTab.value === 'department') {
|
||||
rules.organizationId = [{ required: true, message: '请选择科室', trigger: 'change' }];
|
||||
rules.organizationId = [{ required: true, message: t('basic.medOrderSet.selectDept'), trigger: 'change' }];
|
||||
}
|
||||
return rules;
|
||||
});
|
||||
@@ -509,7 +509,7 @@ onMounted(() => {
|
||||
function openAdd(tab) {
|
||||
currentTab.value = tab;
|
||||
isEdit.value = false;
|
||||
dialogTitle.value = '新增医嘱';
|
||||
dialogTitle.value = t('basic.medOrderSet.addOrder');
|
||||
dialogVisible.value = true;
|
||||
|
||||
if (props.showRangeSelector) rangeSelectValue.value = tab;
|
||||
@@ -553,7 +553,7 @@ function handleRangeChange(tab) {
|
||||
function openFromSelection(tab, rows = []) {
|
||||
currentTab.value = tab;
|
||||
isEdit.value = false;
|
||||
dialogTitle.value = '另存组套';
|
||||
dialogTitle.value = t('basic.medOrderSet.saveAsSet');
|
||||
dialogVisible.value = true;
|
||||
|
||||
if (props.showRangeSelector) rangeSelectValue.value = tab;
|
||||
@@ -573,7 +573,7 @@ function openFromSelection(tab, rows = []) {
|
||||
|
||||
const validRows = (rows || []).filter((i) => i.adviceDefinitionId);
|
||||
if (validRows.length === 0) {
|
||||
proxy.$modal.msgWarning('所选医嘱中没有有效的医嘱项,请先选择医嘱后再另存组套');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.noValidOrders'));
|
||||
dialogVisible.value = false;
|
||||
return;
|
||||
}
|
||||
@@ -623,7 +623,7 @@ function openFromSelection(tab, rows = []) {
|
||||
function openEdit(tab, row) {
|
||||
currentTab.value = tab;
|
||||
isEdit.value = true;
|
||||
dialogTitle.value = '编辑医嘱';
|
||||
dialogTitle.value = t('basic.medOrderSet.editOrder');
|
||||
dialogVisible.value = true;
|
||||
|
||||
formData.groupPackageId = row.groupPackageId;
|
||||
@@ -696,13 +696,13 @@ function handleSelectionChange(selection) {
|
||||
function handleCombineGroup() {
|
||||
const rows = selectedRows.value || [];
|
||||
if (rows.length <= 1) {
|
||||
proxy.$modal.msgWarning('至少选择两项');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.selectAtLeastTwo'));
|
||||
return;
|
||||
}
|
||||
|
||||
// 必须都已选择医嘱
|
||||
if (rows.some((r) => !r.adviceDefinitionId)) {
|
||||
proxy.$modal.msgWarning('请先完成医嘱选择');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.completeOrderSelection'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -712,7 +712,7 @@ function handleCombineGroup() {
|
||||
if (r.methodCode != null) methodSet.add(r.methodCode);
|
||||
});
|
||||
if (methodSet.size > 1) {
|
||||
proxy.$modal.msgWarning('同一分组药品用法必须相同');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.sameGroupUsage'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -722,7 +722,7 @@ function handleCombineGroup() {
|
||||
if (r.rateCode != null) rateSet.add(r.rateCode);
|
||||
});
|
||||
if (rateSet.size > 1) {
|
||||
proxy.$modal.msgWarning('同一分组药品频次必须相同');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.sameGroupFrequency'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -741,7 +741,7 @@ function handleCombineGroup() {
|
||||
groupIndex.value += 1;
|
||||
prescriptionList.value = newList;
|
||||
prescriptionRef.value?.clearSelection?.();
|
||||
proxy.$modal.msgSuccess('组套成功');
|
||||
proxy.$modal.msgSuccess(t('basic.medOrderSet.combineSuccess'));
|
||||
}
|
||||
|
||||
function isRowSelectable(row) {
|
||||
@@ -781,11 +781,11 @@ function getRateOptions(row) {
|
||||
function handleSplitGroup() {
|
||||
const rows = selectedRows.value || [];
|
||||
if (rows.length < 1) {
|
||||
proxy.$modal.msgWarning('至少选择一项');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.selectAtLeastOne'));
|
||||
return;
|
||||
}
|
||||
if (rows.some((r) => !r.groupId)) {
|
||||
proxy.$modal.msgWarning('包含非组合数据无法拆组');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.cannotSplit'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -800,7 +800,7 @@ function handleSplitGroup() {
|
||||
|
||||
prescriptionList.value = newList;
|
||||
prescriptionRef.value?.clearSelection?.();
|
||||
proxy.$modal.msgSuccess('拆组成功');
|
||||
proxy.$modal.msgSuccess(t('basic.medOrderSet.splitSuccess'));
|
||||
}
|
||||
|
||||
function submitForm() {
|
||||
@@ -810,7 +810,7 @@ function submitForm() {
|
||||
// 验证至少选择了一条医嘱
|
||||
const detailList = prescriptionList.value.filter((item) => item.adviceDefinitionId);
|
||||
if (detailList.length === 0) {
|
||||
proxy?.$modal?.msgWarning?.('请至少选择一条医嘱');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.selectAtLeastOneOrder'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -818,27 +818,27 @@ function submitForm() {
|
||||
const westernMedicineRows = detailList.filter((item) => item.adviceType == 1);
|
||||
for (const row of westernMedicineRows) {
|
||||
if (!row.dose && row.dose !== 0) {
|
||||
proxy?.$modal?.msgWarning?.('单次剂量为必填项');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.doseRequired'));
|
||||
return;
|
||||
}
|
||||
if (!row.methodCode) {
|
||||
proxy?.$modal?.msgWarning?.('给药途径为必填项');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.routeRequired'));
|
||||
return;
|
||||
}
|
||||
if (!row.rateCode) {
|
||||
proxy?.$modal?.msgWarning?.('用药频次为必填项');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.frequencyRequired'));
|
||||
return;
|
||||
}
|
||||
if (!row.dispensePerDuration && row.dispensePerDuration !== 0) {
|
||||
proxy?.$modal?.msgWarning?.('用药天数为必填项');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.daysRequired'));
|
||||
return;
|
||||
}
|
||||
if (!row.sortNumber && row.sortNumber !== 0) {
|
||||
proxy?.$modal?.msgWarning?.('总量/执行次数为必填项');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.quantityRequired'));
|
||||
return;
|
||||
}
|
||||
if (!row.selectUnitCode) {
|
||||
proxy?.$modal?.msgWarning?.('单位为必填项');
|
||||
proxy?.$modal?.msgWarning?.(t('basic.medOrderSet.unitRequired'));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -888,19 +888,19 @@ function submitForm() {
|
||||
.then((res) => {
|
||||
console.log('[submitForm] 保存API返回:', res);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(res.message || '保存成功');
|
||||
ElMessage.success(res.message || t('basic.medOrderSet.saveSuccess'));
|
||||
console.log('[submitForm] 准备触发 saved 事件');
|
||||
emit('saved');
|
||||
console.log('[submitForm] saved 事件已触发');
|
||||
dialogVisible.value = false;
|
||||
prescriptionList.value = [];
|
||||
} else {
|
||||
proxy?.$modal?.msgError?.(res.message || '保存失败');
|
||||
proxy?.$modal?.msgError?.(res.message || t('basic.medOrderSet.saveFailed'));
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('保存失败:', err);
|
||||
proxy?.$modal?.msgError?.(err?.message || '保存失败,请检查网络或联系管理员');
|
||||
proxy?.$modal?.msgError?.(err?.message || t('basic.medOrderSet.saveFailedNetwork'));
|
||||
})
|
||||
.finally(() => {
|
||||
submitLoading.value = false;
|
||||
@@ -1001,14 +1001,14 @@ function handleUnitChange(row) {
|
||||
|
||||
function handleDeleteRow(index) {
|
||||
if (prescriptionList.value.length <= 1) {
|
||||
proxy.$modal.msgWarning('至少保留一行');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.keepOneRow'));
|
||||
return;
|
||||
}
|
||||
proxy.$modal
|
||||
.confirm('确定要删除该行吗?')
|
||||
.confirm(t('basic.medOrderSet.confirmDeleteRow'))
|
||||
.then(() => {
|
||||
prescriptionList.value.splice(index, 1);
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
proxy.$modal.msgSuccess(t('basic.medOrderSet.deleteSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -1036,7 +1036,7 @@ function handleOrgChange(value) {
|
||||
};
|
||||
const selectedNode = findNode(organization.value);
|
||||
if (selectedNode && !isLeafNode(selectedNode)) {
|
||||
proxy.$modal.msgWarning('只能选择末级科室');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.selectLeafDept'));
|
||||
formData.organizationId = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
@tab-change="handleTabChange"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="个人"
|
||||
:label="$t('basic.medOrderSet.personal')"
|
||||
name="personal"
|
||||
>
|
||||
<div class="mb10">
|
||||
@@ -16,7 +16,7 @@
|
||||
<el-col :span="6">
|
||||
<el-input
|
||||
v-model="personalQuery.searchKey"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.medOrderSet.namePlaceholder')"
|
||||
clearable
|
||||
@keyup.enter="getPersonalListData"
|
||||
/>
|
||||
@@ -27,7 +27,7 @@
|
||||
icon="Search"
|
||||
@click="getPersonalListData"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -37,7 +37,7 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd('personal')"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<vxe-table
|
||||
@@ -47,14 +47,14 @@
|
||||
>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.medOrderSet.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="practitionerName"
|
||||
title="参与者"
|
||||
:title="$t('basic.medOrderSet.participant')"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -64,7 +64,7 @@
|
||||
icon="Edit"
|
||||
@click="handleEdit('personal', scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
@@ -72,15 +72,15 @@
|
||||
icon="Delete"
|
||||
@click="handleDelete('personal', scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane
|
||||
label="科室"
|
||||
<el-tab-pane
|
||||
:label="$t('basic.medOrderSet.department')"
|
||||
name="department"
|
||||
>
|
||||
<div class="mb10">
|
||||
@@ -91,7 +91,7 @@
|
||||
<el-col :span="6">
|
||||
<el-input
|
||||
v-model="departmentQuery.searchKey"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.medOrderSet.namePlaceholder')"
|
||||
clearable
|
||||
@keyup.enter="getDepartmentListData"
|
||||
/>
|
||||
@@ -102,7 +102,7 @@
|
||||
icon="Search"
|
||||
@click="getDepartmentListData"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -112,7 +112,7 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd('department')"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<vxe-table
|
||||
@@ -122,14 +122,14 @@
|
||||
>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.medOrderSet.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="organizationName"
|
||||
title="科室"
|
||||
:title="$t('basic.medOrderSet.department')"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -139,7 +139,7 @@
|
||||
icon="Edit"
|
||||
@click="handleEdit('department', scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
@@ -147,15 +147,15 @@
|
||||
icon="Delete"
|
||||
@click="handleDelete('department', scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</el-tab-pane>
|
||||
|
||||
<el-tab-pane
|
||||
label="全院"
|
||||
<el-tab-pane
|
||||
:label="$t('basic.medOrderSet.hospital')"
|
||||
name="hospital"
|
||||
>
|
||||
<div class="mb10">
|
||||
@@ -166,7 +166,7 @@
|
||||
<el-col :span="6">
|
||||
<el-input
|
||||
v-model="hospitalQuery.searchKey"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.medOrderSet.namePlaceholder')"
|
||||
clearable
|
||||
@keyup.enter="getHospitalListData"
|
||||
/>
|
||||
@@ -177,7 +177,7 @@
|
||||
icon="Search"
|
||||
@click="getHospitalListData"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -187,7 +187,7 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd('hospital')"
|
||||
>
|
||||
新增
|
||||
{{ $t('common.add') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<vxe-table
|
||||
@@ -197,10 +197,10 @@
|
||||
>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="名称"
|
||||
:title="$t('basic.medOrderSet.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -210,7 +210,7 @@
|
||||
icon="Edit"
|
||||
@click="handleEdit('hospital', scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
@@ -218,7 +218,7 @@
|
||||
icon="Delete"
|
||||
@click="handleDelete('hospital', scope.row)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -242,24 +242,24 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="名称"
|
||||
:label="$t('basic.medOrderSet.name')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="formData.name"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('basic.medOrderSet.namePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
v-if="currentTab == 'personal'"
|
||||
label="参与者"
|
||||
:label="$t('basic.medOrderSet.participant')"
|
||||
prop="practitionerId"
|
||||
>
|
||||
<el-select
|
||||
v-model="formData.practitionerId"
|
||||
placeholder="请选择参与者"
|
||||
:placeholder="$t('basic.medOrderSet.selectParticipant')"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
@@ -272,7 +272,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="currentTab == 'department'"
|
||||
label="科室"
|
||||
:label="$t('basic.medOrderSet.department')"
|
||||
prop="organizationId"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -283,7 +283,7 @@
|
||||
value-key="id"
|
||||
check-strictly
|
||||
default-expand-all
|
||||
placeholder="请选择科室"
|
||||
:placeholder="$t('basic.medOrderSet.selectDept')"
|
||||
:render-after-expand="false"
|
||||
@change="handleOrgChange"
|
||||
/>
|
||||
@@ -300,7 +300,7 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="医嘱"
|
||||
:title="$t('basic.medOrderSet.order')"
|
||||
align="center"
|
||||
field="productName"
|
||||
>
|
||||
@@ -323,7 +323,7 @@
|
||||
:ref="'adviceRef' + scope.rowIndex"
|
||||
v-model="scope.row.adviceName"
|
||||
style="width: 50%"
|
||||
placeholder="请选择项目"
|
||||
:placeholder="$t('basic.medOrderSet.selectItem')"
|
||||
@input="(value) => handleInput(value, scope.row, scope.rowIndex)"
|
||||
@click="handleFocus(scope.row, scope.rowIndex)"
|
||||
@keyup.enter.stop="handleFocus(scope.row, scope.rowIndex)"
|
||||
@@ -347,7 +347,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="单次剂量"
|
||||
:title="$t('basic.medOrderSet.singleDose')"
|
||||
align="center"
|
||||
width="250"
|
||||
field="sortNumber"
|
||||
@@ -383,7 +383,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="给药途径"
|
||||
:title="$t('basic.medOrderSet.route')"
|
||||
align="center"
|
||||
width="150"
|
||||
field="sortNumber"
|
||||
@@ -393,7 +393,7 @@
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
<el-select
|
||||
v-model="scope.row.methodCode"
|
||||
placeholder="给药途径"
|
||||
:placeholder="$t('basic.medOrderSet.route')"
|
||||
clearable
|
||||
filterable
|
||||
>
|
||||
@@ -411,7 +411,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="用药频次"
|
||||
:title="$t('basic.medOrderSet.frequency')"
|
||||
align="center"
|
||||
width="150"
|
||||
field="sortNumber"
|
||||
@@ -421,7 +421,7 @@
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
<el-select
|
||||
v-model="scope.row.rateCode"
|
||||
placeholder="频次"
|
||||
:placeholder="$t('basic.medOrderSet.frequency')"
|
||||
style="width: 120px"
|
||||
filterable
|
||||
>
|
||||
@@ -439,7 +439,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="用药天数"
|
||||
:title="$t('basic.medOrderSet.medicationDays')"
|
||||
align="center"
|
||||
width="100"
|
||||
field="sortNumber"
|
||||
@@ -458,7 +458,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="总量/执行次数"
|
||||
:title="$t('basic.medOrderSet.totalOrExec')"
|
||||
align="center"
|
||||
width="150"
|
||||
field="sortNumber"
|
||||
@@ -476,7 +476,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="单位"
|
||||
:title="$t('basic.medOrderSet.unit')"
|
||||
align="center"
|
||||
width="120"
|
||||
field="unitCode"
|
||||
@@ -485,7 +485,7 @@
|
||||
<template v-if="!scope.row.groupPackageId">
|
||||
<el-select
|
||||
v-model="scope.row.selectUnitCode"
|
||||
placeholder="请选择单位"
|
||||
:placeholder="$t('basic.medOrderSet.selectUnit')"
|
||||
@change="handleUnitChange(scope.row)"
|
||||
>
|
||||
<el-option
|
||||
@@ -506,7 +506,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
width="80"
|
||||
>
|
||||
@@ -523,14 +523,14 @@
|
||||
</vxe-table>
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:loading="submitLoading"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -538,7 +538,8 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {onMounted, reactive, ref} from 'vue';
|
||||
import {computed, onMounted, reactive, ref} from 'vue';
|
||||
import {useI18n} from 'vue-i18n';
|
||||
import {
|
||||
deleteGroup,
|
||||
getAllList,
|
||||
@@ -557,6 +558,7 @@ import useUserStore from '@/store/modules/user';
|
||||
|
||||
// 获取当前实例用于使用proxy
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
// 定义tab相关数据
|
||||
const activeTab = ref('personal');
|
||||
|
||||
@@ -605,9 +607,9 @@ const nextId = ref(1);
|
||||
const rowIndex = ref(0);
|
||||
|
||||
// 表单验证规则
|
||||
const formRules = {
|
||||
name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
||||
};
|
||||
const formRules = computed(() => ({
|
||||
name: [{ required: true, message: t('basic.medOrderSet.namePlaceholder'), trigger: 'blur' }],
|
||||
}));
|
||||
|
||||
// 表单引用
|
||||
const formRef = ref();
|
||||
@@ -650,7 +652,7 @@ function getPersonalListData() {
|
||||
.catch((error) => {
|
||||
console.error('获取个人医嘱列表失败:', error);
|
||||
loading.personal = false;
|
||||
proxy.$modal.msgError('获取个人医嘱列表失败');
|
||||
proxy.$modal.msgError(t('basic.medOrderSet.getPersonalFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -665,7 +667,7 @@ function getDepartmentListData() {
|
||||
.catch((error) => {
|
||||
console.error('获取科室医嘱列表失败:', error);
|
||||
loading.department = false;
|
||||
proxy.$modal.msgError('获取科室医嘱列表失败');
|
||||
proxy.$modal.msgError(t('basic.medOrderSet.getDeptFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -680,7 +682,7 @@ function getHospitalListData() {
|
||||
.catch((error) => {
|
||||
console.error('获取全院医嘱列表失败:', error);
|
||||
loading.hospital = false;
|
||||
proxy.$modal.msgError('获取全院医嘱列表失败');
|
||||
proxy.$modal.msgError(t('basic.medOrderSet.getAllFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -704,7 +706,7 @@ function handleTabChange(tab) {
|
||||
function handleAdd(tab) {
|
||||
currentTab.value = tab;
|
||||
isEdit.value = false;
|
||||
dialogTitle.value = '新增医嘱';
|
||||
dialogTitle.value = t('basic.medOrderSet.addOrder');
|
||||
dialogVisible.value = true;
|
||||
// 重置表单
|
||||
prescriptionList.value.unshift({
|
||||
@@ -739,7 +741,7 @@ function handleEdit(tab, row) {
|
||||
currentTab.value = tab;
|
||||
isEdit.value = true;
|
||||
currentRow.value = row;
|
||||
dialogTitle.value = '编辑医嘱';
|
||||
dialogTitle.value = t('basic.medOrderSet.editOrder');
|
||||
dialogVisible.value = true;
|
||||
formData.groupPackageId = row.groupPackageId;
|
||||
formData.name = row.name;
|
||||
@@ -790,7 +792,7 @@ function handleEdit(tab, row) {
|
||||
function handleDelete(tab, row) {
|
||||
// 显示确认框
|
||||
proxy.$modal
|
||||
.confirm('确定要删除该医嘱吗?')
|
||||
.confirm(t('basic.medOrderSet.confirmDelete'))
|
||||
.then(() => {
|
||||
deleteGroup({ groupPackageId: row.groupPackageId }).then((res) => {
|
||||
proxy.$modal.msgSuccess(res.msg);
|
||||
@@ -834,11 +836,11 @@ function submitForm() {
|
||||
savePersonal(params).then((res) => {
|
||||
console.log('保存个人组套返回:', res);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(res.msg || '保存成功');
|
||||
ElMessage.success(res.msg || t('basic.medOrderSet.saveSuccess'));
|
||||
// 重新获取数据以保持一致性
|
||||
fetchAllData();
|
||||
} else {
|
||||
ElMessage.error(res.msg || '保存失败');
|
||||
ElMessage.error(res.msg || t('basic.medOrderSet.saveFailed'));
|
||||
}
|
||||
submitLoading.value = false;
|
||||
dialogVisible.value = false;
|
||||
@@ -846,7 +848,7 @@ function submitForm() {
|
||||
prescriptionList.value = [];
|
||||
}).catch((err) => {
|
||||
console.error('保存个人组套失败:', err);
|
||||
ElMessage.error('保存失败: ' + (err.message || '未知错误'));
|
||||
ElMessage.error(t('basic.medOrderSet.saveFailed') + ': ' + (err.message || '未知错误'));
|
||||
submitLoading.value = false;
|
||||
});
|
||||
break;
|
||||
@@ -854,11 +856,11 @@ function submitForm() {
|
||||
saveDepartment(params).then((res) => {
|
||||
console.log('保存科室组套返回:', res);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(res.msg || '保存成功');
|
||||
ElMessage.success(res.msg || t('basic.medOrderSet.saveSuccess'));
|
||||
// 重新获取数据以保持一致性
|
||||
fetchAllData();
|
||||
} else {
|
||||
ElMessage.error(res.msg || '保存失败');
|
||||
ElMessage.error(res.msg || t('basic.medOrderSet.saveFailed'));
|
||||
}
|
||||
submitLoading.value = false;
|
||||
dialogVisible.value = false;
|
||||
@@ -866,7 +868,7 @@ function submitForm() {
|
||||
prescriptionList.value = [];
|
||||
}).catch((err) => {
|
||||
console.error('保存科室组套失败:', err);
|
||||
ElMessage.error('保存失败: ' + (err.message || '未知错误'));
|
||||
ElMessage.error(t('basic.medOrderSet.saveFailed') + ': ' + (err.message || '未知错误'));
|
||||
submitLoading.value = false;
|
||||
});
|
||||
break;
|
||||
@@ -874,11 +876,11 @@ function submitForm() {
|
||||
saveAll(params).then((res) => {
|
||||
console.log('保存全院组套返回:', res);
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(res.msg || '保存成功');
|
||||
ElMessage.success(res.msg || t('basic.medOrderSet.saveSuccess'));
|
||||
// 重新获取数据以保持一致性
|
||||
fetchAllData();
|
||||
} else {
|
||||
ElMessage.error(res.msg || '保存失败');
|
||||
ElMessage.error(res.msg || t('basic.medOrderSet.saveFailed'));
|
||||
}
|
||||
submitLoading.value = false;
|
||||
dialogVisible.value = false;
|
||||
@@ -886,7 +888,7 @@ function submitForm() {
|
||||
prescriptionList.value = [];
|
||||
}).catch((err) => {
|
||||
console.error('保存全院组套失败:', err);
|
||||
ElMessage.error('保存失败: ' + (err.message || '未知错误'));
|
||||
ElMessage.error(t('basic.medOrderSet.saveFailed') + ': ' + (err.message || '未知错误'));
|
||||
submitLoading.value = false;
|
||||
});
|
||||
break;
|
||||
@@ -982,16 +984,16 @@ function handleUnitChange(row) {
|
||||
function handleDeleteRow(index, row) {
|
||||
// 确保至少保留一行
|
||||
if (prescriptionList.value.length <= 1) {
|
||||
proxy.$modal.msgWarning('至少保留一行');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.keepOneRow'));
|
||||
return;
|
||||
}
|
||||
|
||||
// 确认删除
|
||||
proxy.$modal
|
||||
.confirm('确定要删除该行吗?')
|
||||
.confirm(t('basic.medOrderSet.confirmDeleteRow'))
|
||||
.then(() => {
|
||||
prescriptionList.value.splice(index, 1);
|
||||
proxy.$modal.msgSuccess('删除成功');
|
||||
proxy.$modal.msgSuccess(t('basic.medOrderSet.deleteSuccess'));
|
||||
})
|
||||
.catch(() => {
|
||||
// 取消删除
|
||||
@@ -1032,7 +1034,7 @@ function handleOrgChange(value) {
|
||||
|
||||
// 如果选中的不是叶子节点,则清空选择
|
||||
if (selectedNode && !isLeafNode(selectedNode)) {
|
||||
proxy.$modal.msgWarning('只能选择末级科室');
|
||||
proxy.$modal.msgWarning(t('basic.medOrderSet.selectLeafDept'));
|
||||
formData.organizationId = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<el-select
|
||||
v-model="scope.row.inventoryId"
|
||||
style="width: 180px; margin-right: 20px"
|
||||
placeholder="药房"
|
||||
:placeholder="$t('basic.ordersCombo.pharmacy')"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in scope.row.stockList"
|
||||
@@ -69,13 +69,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
|
||||
@@ -86,7 +86,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="scope.row.injectFlag == 1"
|
||||
label="执行次数:"
|
||||
:label="$t('basic.ordersCombo.executeCount')"
|
||||
prop="executeNum"
|
||||
class="required-field"
|
||||
data-prop="executeNum"
|
||||
@@ -111,7 +111,7 @@
|
||||
<div class="form-group">
|
||||
<!-- 单次剂量 -->
|
||||
<el-form-item
|
||||
label="单次剂量:"
|
||||
:label="$t('basic.ordersCombo.singleDose')"
|
||||
prop="dose"
|
||||
class="required-field"
|
||||
data-prop="dose"
|
||||
@@ -244,7 +244,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="用药天数:"
|
||||
:label="$t('basic.ordersCombo.medicationDays')"
|
||||
prop="dispensePerDuration"
|
||||
class="required-field"
|
||||
data-prop="dispensePerDuration"
|
||||
@@ -262,13 +262,13 @@
|
||||
@input="calculateTotalAmount(scope.row, scope.rowIndex)"
|
||||
>
|
||||
<template #suffix>
|
||||
天
|
||||
{{ $t('basic.ordersCombo.day') }}
|
||||
</template>
|
||||
</el-input-number>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="总量:"
|
||||
:label="$t('basic.ordersCombo.totalQuantity')"
|
||||
prop="quantity"
|
||||
>
|
||||
<el-input-number
|
||||
@@ -300,7 +300,7 @@
|
||||
type="primary"
|
||||
@click="handleSaveSign(scope.row, scope.rowIndex)"
|
||||
>
|
||||
保存
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -345,14 +345,14 @@
|
||||
/>
|
||||
</el-select>
|
||||
<el-form-item
|
||||
label="数量:"
|
||||
:label="$t('basic.ordersCombo.quantity')"
|
||||
prop="quantity"
|
||||
class="required-field"
|
||||
data-prop="quantity"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="scope.row.quantity"
|
||||
placeholder="数量"
|
||||
:placeholder="$t('basic.ordersCombo.quantity')"
|
||||
style="width: 70px"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
@@ -378,14 +378,14 @@
|
||||
</template>
|
||||
</el-select>
|
||||
<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>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSaveSign(scope.row, scope.rowIndex)"
|
||||
>
|
||||
保存
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -395,19 +395,19 @@
|
||||
{{
|
||||
scope.row.adviceName + ' ' + scope.row.unitPrice
|
||||
? Number(scope.row.unitPrice).toFixed(2)
|
||||
: '-' + '元'
|
||||
: '-' + $t('basic.ordersCombo.yuan')
|
||||
}}
|
||||
</span>
|
||||
<div class="form-group">
|
||||
<el-form-item
|
||||
label="执行次数:"
|
||||
:label="$t('basic.ordersCombo.executeCount')"
|
||||
prop="quantity"
|
||||
class="required-field"
|
||||
data-prop="quantity"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="scope.row.quantity"
|
||||
placeholder="执行次数"
|
||||
:placeholder="$t('basic.ordersCombo.executeCount')"
|
||||
style="width: 100px; margin: 0 20px"
|
||||
controls-position="right"
|
||||
:controls="false"
|
||||
@@ -422,10 +422,10 @@
|
||||
:props="{ value: 'id', label: 'name', children: 'children' }"
|
||||
value-key="id"
|
||||
check-strictly
|
||||
placeholder="请选择执行科室"
|
||||
:placeholder="$t('basic.ordersCombo.selectExecDept')"
|
||||
/>
|
||||
<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>
|
||||
<span style="font-size: 16px; font-weight: 600">
|
||||
<!-- 金额: {{ scope.row.priceList[0].price }} -->
|
||||
@@ -435,7 +435,7 @@
|
||||
type="primary"
|
||||
@click="handleSaveSign(scope.row, scope.rowIndex)"
|
||||
>
|
||||
保存
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -484,7 +484,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="医嘱项目"
|
||||
:title="$t('basic.ordersCombo.orderItem')"
|
||||
align="center"
|
||||
field="productName"
|
||||
width="400"
|
||||
@@ -534,7 +534,7 @@
|
||||
:ref="'adviceRef' + scope.rowIndex"
|
||||
v-model="scope.row.adviceName"
|
||||
style="width: 50%"
|
||||
placeholder="请选择项目"
|
||||
:placeholder="$t('basic.ordersCombo.selectItem')"
|
||||
@input="handleChange"
|
||||
@click="handleFocus(scope.row, scope.rowIndex)"
|
||||
@keyup.enter.stop="handleFocus(scope.row, scope.rowIndex)"
|
||||
@@ -568,18 +568,18 @@
|
||||
v-if="scope.row.statusEnum == 2"
|
||||
type="success"
|
||||
>
|
||||
已签发
|
||||
{{ $t('basic.ordersCombo.issued') }}
|
||||
</el-tag>
|
||||
<el-tag
|
||||
v-else-if="scope.row.statusEnum == 1"
|
||||
type=""
|
||||
>
|
||||
待签发
|
||||
{{ $t('basic.ordersCombo.pendingIssue') }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="单次剂量"
|
||||
:title="$t('basic.ordersCombo.singleDose')"
|
||||
align="center"
|
||||
field=""
|
||||
>
|
||||
@@ -594,7 +594,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="总量"
|
||||
:title="$t('basic.ordersCombo.totalQuantity')"
|
||||
align="center"
|
||||
field=""
|
||||
>
|
||||
@@ -605,7 +605,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="总金额"
|
||||
:title="$t('basic.ordersCombo.totalAmount')"
|
||||
align="right"
|
||||
field=""
|
||||
header-align="center"
|
||||
@@ -615,12 +615,12 @@
|
||||
v-if="!scope.row.isEdit"
|
||||
style="text-align: right"
|
||||
>
|
||||
{{ scope.row.totalPrice ? Number(scope.row.totalPrice).toFixed(2) + ' 元' : '-' }}
|
||||
{{ scope.row.totalPrice ? Number(scope.row.totalPrice).toFixed(2) + ' ' + $t('basic.ordersCombo.yuan') : '-' }}
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="药房/科室"
|
||||
:title="$t('basic.ordersCombo.pharmacyDept')"
|
||||
align="center"
|
||||
field=""
|
||||
width="200"
|
||||
@@ -632,7 +632,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="频次/用法"
|
||||
:title="$t('basic.ordersCombo.freqUsage')"
|
||||
align="center"
|
||||
field=""
|
||||
width="180"
|
||||
@@ -647,7 +647,7 @@
|
||||
? scope.row.rateCode_dictText +
|
||||
' ' +
|
||||
scope.row.dispensePerDuration +
|
||||
'天' +
|
||||
$t('basic.ordersCombo.day') +
|
||||
' ' +
|
||||
scope.row.methodCode_dictText
|
||||
: ''
|
||||
@@ -656,7 +656,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="注射药品"
|
||||
:title="$t('basic.ordersCombo.injectDrug')"
|
||||
align="center"
|
||||
field=""
|
||||
width="80"
|
||||
@@ -668,7 +668,7 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="皮试"
|
||||
:title="$t('basic.ordersCombo.skinTest')"
|
||||
align="center"
|
||||
field=""
|
||||
width="80"
|
||||
@@ -687,8 +687,11 @@
|
||||
import {getOrgTree, saveOrderGroup} from './api';
|
||||
import adviceBaseList from './adviceBaseList';
|
||||
import {computed, getCurrentInstance, nextTick, ref, watch} from 'vue';
|
||||
import {useI18n} from 'vue-i18n';
|
||||
import {calculateQuantityByDays, formatNumber} from '@/utils/his';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const emit = defineEmits(['selectDiagnosis']);
|
||||
const total = ref(0);
|
||||
const queryParams = ref({});
|
||||
@@ -704,13 +707,13 @@ const nextId = ref(1);
|
||||
const unitCodeList = ref([]);
|
||||
const adviceTableRef = ref([]);
|
||||
const organization = ref([]);
|
||||
const rowRules = ref({
|
||||
conditionDefinitionId: [{ required: true, message: '请选择诊断', trigger: 'change' }],
|
||||
dose: [{ required: true, message: '请输入单次剂量', trigger: 'change' }],
|
||||
doseQuantity: [{ required: true, message: '请输入单次剂量', trigger: 'change' }],
|
||||
quantity: [{ required: true, message: '请输入数量', trigger: 'change' }],
|
||||
dispensePerDuration: [{ required: true, message: '请输入用药天数', trigger: 'change' }],
|
||||
});
|
||||
const rowRules = computed(() => ({
|
||||
conditionDefinitionId: [{ required: true, message: t('basic.ordersCombo.selectDiagnosis'), trigger: 'change' }],
|
||||
dose: [{ required: true, message: t('basic.ordersCombo.enterDose'), trigger: 'change' }],
|
||||
doseQuantity: [{ required: true, message: t('basic.ordersCombo.enterDose'), trigger: 'change' }],
|
||||
quantity: [{ required: true, message: t('basic.ordersCombo.enterQuantity'), trigger: 'change' }],
|
||||
dispensePerDuration: [{ required: true, message: t('basic.ordersCombo.enterDays'), trigger: 'change' }],
|
||||
}));
|
||||
const unitMap = ref({
|
||||
dose: 'dose',
|
||||
minUnit: 'minUnit',
|
||||
@@ -750,14 +753,14 @@ const adviceTypeList = computed(() => {
|
||||
label: item.label,
|
||||
value: parseInt(item.value) || item.value
|
||||
}));
|
||||
return [...list, { label: '全部', value: undefined }];
|
||||
return [...list, { label: t('basic.ordersCombo.all'), value: undefined }];
|
||||
}
|
||||
// 默认值
|
||||
return [
|
||||
{ label: '西药中成药', value: 1 },
|
||||
{ label: '耗材', value: 4 },
|
||||
{ label: '诊疗', value: 3 },
|
||||
{ label: '全部', value: undefined },
|
||||
{ label: t('basic.ordersCombo.westernMedicine'), value: 1 },
|
||||
{ label: t('basic.consumables.consumable'), value: 4 },
|
||||
{ label: t('basic.consumables.diagnosis'), value: 3 },
|
||||
{ label: t('basic.ordersCombo.all'), value: undefined },
|
||||
];
|
||||
});
|
||||
onMounted(() => {
|
||||
@@ -810,7 +813,7 @@ function getRowDisabled(row) {
|
||||
// 新增医嘱
|
||||
function handleAddPrescription() {
|
||||
if (isAdding.value) {
|
||||
proxy.$modal.msgWarning('请先保存当前医嘱');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.saveFirst'));
|
||||
return;
|
||||
}
|
||||
isAdding.value = true;
|
||||
@@ -917,7 +920,7 @@ function selectAdviceBase(key, row) {
|
||||
if (row.adviceType != 3) {
|
||||
if (row.inventoryList && row.inventoryList.length == 0) {
|
||||
expandOrder.value = [];
|
||||
proxy.$modal.msgWarning('该项目无库存');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.noStock'));
|
||||
return;
|
||||
}
|
||||
stockList.value = row.inventoryList.map((item, index) => {
|
||||
@@ -930,7 +933,7 @@ function selectAdviceBase(key, row) {
|
||||
})[0];
|
||||
if (stock != {} && stock != undefined) {
|
||||
if (stock.quantity <= 0) {
|
||||
proxy.$modal.msgWarning('该项目库存不足,请选择其它库房');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.insufficientStock'));
|
||||
// return;
|
||||
}
|
||||
combinationList.value[rowIndex.value].lotNumber = stock.lotNumber;
|
||||
@@ -977,7 +980,7 @@ function handleDelete() {
|
||||
};
|
||||
});
|
||||
if (deleteList.length == 0) {
|
||||
proxy.$modal.msgWarning('请选择要删除的处方');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.selectPrescription'));
|
||||
return;
|
||||
}
|
||||
if (!deleteList[0].requestId) {
|
||||
@@ -1009,14 +1012,14 @@ function handleNumberClick(item, index) {
|
||||
*/
|
||||
function handleSave() {
|
||||
if (expandOrder.value.length > 0) {
|
||||
proxy.$modal.msgWarning('请先保存当前医嘱');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.saveFirst'));
|
||||
return;
|
||||
}
|
||||
let saveList = combinationList.value.filter((item) => {
|
||||
return item.statusEnum == 1;
|
||||
});
|
||||
if (saveList.length == 0) {
|
||||
proxy.$modal.msgWarning('当前无可签发处方');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.noPrescription'));
|
||||
return;
|
||||
}
|
||||
if (!validateGroups(saveList)) {
|
||||
@@ -1048,7 +1051,7 @@ function handleSaveSign(row, index) {
|
||||
row.minUnitQuantity = row.quantity * row.partPercent;
|
||||
savePrescription({ adviceSaveList: [row] }).then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('保存成功');
|
||||
proxy.$modal.msgSuccess(t('basic.ordersCombo.saveSuccess'));
|
||||
// getListInfo(true);
|
||||
nextId.value == 1;
|
||||
}
|
||||
@@ -1065,7 +1068,7 @@ function saveCombination() {
|
||||
params.groupJson = JSON.stringify(combinationList.value);
|
||||
saveOrderGroup(params).then((res) => {
|
||||
if (res.code === 200) {
|
||||
proxy.$modal.msgSuccess('保存成功');
|
||||
proxy.$modal.msgSuccess(t('basic.ordersCombo.saveSuccess'));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1115,7 +1118,7 @@ function combination() {
|
||||
uniqueValues.add(combinationList.value[index].methodCode);
|
||||
});
|
||||
if (uniqueValues.size != 1) {
|
||||
proxy.$modal.msgWarning('同一分组药品用法必须相同');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.sameGroupUsage'));
|
||||
return;
|
||||
}
|
||||
let timeStamp = new Date().now().toString();
|
||||
@@ -1355,10 +1358,10 @@ function validateGroups(saveList) {
|
||||
.map((group) => group.groupId);
|
||||
|
||||
if (countStr.length > 0) {
|
||||
proxy.$modal.msgWarning('分组"' + countStr + '"数量超出限制');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.groupCountExceeded', { group: countStr }));
|
||||
return false;
|
||||
} else if (totalStr.length > 0) {
|
||||
proxy.$modal.msgWarning('分组"' + totalStr + '"金额总和超出限制');
|
||||
proxy.$modal.msgWarning(t('basic.ordersCombo.groupAmountExceeded', { group: totalStr }));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -15,32 +15,32 @@
|
||||
@cell-click="clickRow"
|
||||
>
|
||||
<vxe-column
|
||||
title="名称"
|
||||
:title="$t('basic.tcmOrderSet.name')"
|
||||
align="center"
|
||||
field="adviceName"
|
||||
/>
|
||||
<vxe-column
|
||||
title="类型"
|
||||
:title="$t('basic.tcmOrderSet.type')"
|
||||
align="center"
|
||||
field="categoryCodeText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="医保等级"
|
||||
:title="$t('basic.tcmOrderSet.insuranceLevel')"
|
||||
align="center"
|
||||
field="chrgitmLv_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="包装单位"
|
||||
:title="$t('basic.tcmOrderSet.packUnit')"
|
||||
align="center"
|
||||
field="unitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="最小单位"
|
||||
:title="$t('basic.tcmOrderSet.minUnit')"
|
||||
align="center"
|
||||
field="minUnitCode_dictText"
|
||||
/>
|
||||
<vxe-column
|
||||
title="库存数量"
|
||||
:title="$t('basic.tcmOrderSet.stockQuantity')"
|
||||
align="center"
|
||||
>
|
||||
<template #default="scope">
|
||||
@@ -63,9 +63,12 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, watch, nextTick } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { getTcmMedicine } from './api';
|
||||
import { debounce } from 'lodash-es';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const props = defineProps({
|
||||
searchKey: {
|
||||
type: String,
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
class="tree-card panel-shadow"
|
||||
>
|
||||
<template #header>
|
||||
<span>中医组套</span>
|
||||
<span>{{ $t('basic.tcmOrderSet.tcmSet') }}</span>
|
||||
</template>
|
||||
<el-tree
|
||||
:data="treeData"
|
||||
@@ -43,19 +43,19 @@
|
||||
plain
|
||||
@click="clearForm"
|
||||
>
|
||||
清空
|
||||
{{ $t('basic.tcmOrderSet.clear') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="createNew"
|
||||
>
|
||||
新建
|
||||
{{ $t('basic.tcmOrderSet.create') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="saveCommonForm"
|
||||
>
|
||||
保存
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="common-bar">
|
||||
@@ -64,41 +64,41 @@
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
>
|
||||
<el-form-item label="组套名称">
|
||||
<el-form-item :label="$t('basic.tcmOrderSet.setName')">
|
||||
<el-input
|
||||
v-model="commonForm.name"
|
||||
placeholder="组套名称"
|
||||
:placeholder="$t('basic.tcmOrderSet.setNamePlaceholder')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="使用范围">
|
||||
<el-form-item :label="$t('basic.tcmOrderSet.useRange')">
|
||||
<el-select
|
||||
v-model="commonForm.useRange"
|
||||
placeholder="个人/科室/全院"
|
||||
:placeholder="$t('basic.tcmOrderSet.rangePlaceholder')"
|
||||
clearable
|
||||
@change="handleRangeChange"
|
||||
>
|
||||
<el-option
|
||||
label="个人"
|
||||
:label="$t('basic.tcmOrderSet.personal')"
|
||||
value="personal"
|
||||
/>
|
||||
<el-option
|
||||
label="科室"
|
||||
:label="$t('basic.tcmOrderSet.department')"
|
||||
value="department"
|
||||
/>
|
||||
<el-option
|
||||
label="全院"
|
||||
:label="$t('basic.tcmOrderSet.hospital')"
|
||||
value="hospital"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="commonForm.useRange === 'personal'"
|
||||
label="使用人"
|
||||
:label="$t('basic.tcmOrderSet.user')"
|
||||
>
|
||||
<el-select
|
||||
v-model="commonForm.practitionerId"
|
||||
placeholder="请选择使用人"
|
||||
:placeholder="$t('basic.tcmOrderSet.selectUser')"
|
||||
clearable
|
||||
style="width: 200px"
|
||||
>
|
||||
@@ -112,7 +112,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="commonForm.useRange === 'department'"
|
||||
label="科室"
|
||||
:label="$t('basic.tcmOrderSet.department')"
|
||||
>
|
||||
<el-tree-select
|
||||
v-model="commonForm.organizationId"
|
||||
@@ -122,15 +122,15 @@
|
||||
value-key="id"
|
||||
check-strictly
|
||||
default-expand-all
|
||||
placeholder="请选择科室"
|
||||
:placeholder="$t('basic.tcmOrderSet.selectDept')"
|
||||
style="width: 200px"
|
||||
:render-after-expand="false"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="用法">
|
||||
<el-form-item :label="$t('basic.tcmOrderSet.usage')">
|
||||
<el-select
|
||||
v-model="commonForm.method"
|
||||
placeholder="用法"
|
||||
:placeholder="$t('basic.tcmOrderSet.usage')"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
@@ -141,10 +141,10 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="频次">
|
||||
<el-form-item :label="$t('basic.tcmOrderSet.frequency')">
|
||||
<el-select
|
||||
v-model="commonForm.frequency"
|
||||
placeholder="频次"
|
||||
:placeholder="$t('basic.tcmOrderSet.frequency')"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
@@ -193,7 +193,7 @@
|
||||
type="primary"
|
||||
text
|
||||
:icon="Edit"
|
||||
title="编辑"
|
||||
:title="$t('common.edit')"
|
||||
@click.stop="editDrug(item)"
|
||||
/>
|
||||
<el-button
|
||||
@@ -201,7 +201,7 @@
|
||||
type="danger"
|
||||
text
|
||||
:icon="Delete"
|
||||
title="删除"
|
||||
:title="$t('common.delete')"
|
||||
@click.stop="removeDrug(index)"
|
||||
/>
|
||||
</div>
|
||||
@@ -232,7 +232,7 @@
|
||||
<template #reference>
|
||||
<el-input
|
||||
v-model="item.drugName"
|
||||
placeholder="请选择中药"
|
||||
:placeholder="$t('basic.tcmOrderSet.selectTcmDrug')"
|
||||
clearable
|
||||
@input="(val) => handleSearchKeyChange(val, item)"
|
||||
@click="() => handleClick(item)"
|
||||
@@ -262,14 +262,14 @@
|
||||
link
|
||||
@click.stop="saveDrug(item)"
|
||||
>
|
||||
保存
|
||||
{{ $t('common.save') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
link
|
||||
@click.stop="removeDrug(index)"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -286,7 +286,7 @@
|
||||
<el-icon class="add-icon">
|
||||
<Plus />
|
||||
</el-icon>
|
||||
<span>新增</span>
|
||||
<span>{{ $t('common.add') }}</span>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
@@ -298,6 +298,7 @@
|
||||
|
||||
<script setup name="TcmMedicalOrderSet">
|
||||
import { ref, reactive, onMounted, getCurrentInstance } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import {
|
||||
getPersonalList,
|
||||
@@ -313,6 +314,8 @@ import {
|
||||
import TcmMedicineList from './components/tcmMedicineList.vue';
|
||||
import { Edit, Delete, Plus } from '@element-plus/icons-vue';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
// 字典数据
|
||||
@@ -342,7 +345,7 @@ function loadTreeData() {
|
||||
treeData.value = [
|
||||
{
|
||||
id: 'personal',
|
||||
label: '个人',
|
||||
label: t('basic.tcmOrderSet.personal'),
|
||||
children: personalList.map((item) => ({
|
||||
id: item.groupPackageId,
|
||||
value: item.groupPackageId,
|
||||
@@ -353,7 +356,7 @@ function loadTreeData() {
|
||||
},
|
||||
{
|
||||
id: 'department',
|
||||
label: '科室',
|
||||
label: t('basic.tcmOrderSet.department'),
|
||||
children: deptList.map((item) => ({
|
||||
id: item.groupPackageId,
|
||||
value: item.groupPackageId,
|
||||
@@ -364,7 +367,7 @@ function loadTreeData() {
|
||||
},
|
||||
{
|
||||
id: 'hospital',
|
||||
label: '全院',
|
||||
label: t('basic.tcmOrderSet.hospital'),
|
||||
children: allList.map((item) => ({
|
||||
id: item.groupPackageId,
|
||||
value: item.groupPackageId,
|
||||
@@ -376,7 +379,7 @@ function loadTreeData() {
|
||||
];
|
||||
})
|
||||
.catch(() => {
|
||||
ElMessage.error('加载组套树失败');
|
||||
ElMessage.error(t('basic.tcmOrderSet.loadTreeFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -499,7 +502,7 @@ function handleTreeNodeClick(data, node) {
|
||||
currentSetName.value = data.label;
|
||||
})
|
||||
.catch(() => {
|
||||
ElMessage.error('加载组套详情失败');
|
||||
ElMessage.error(t('basic.tcmOrderSet.loadDetailFailed'));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -510,7 +513,7 @@ function addDrug() {
|
||||
const last = drugList.value[drugList.value.length - 1];
|
||||
// 如果上一个药品未选择药品,不允许添加下一个
|
||||
if (!last.orderDefinitionId) {
|
||||
ElMessage.warning('请先选择上一个药品');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.selectPrevDrug'));
|
||||
return;
|
||||
}
|
||||
// 如果上一个药品已有药品ID且处于编辑状态,自动保存
|
||||
@@ -527,15 +530,15 @@ function addDrug() {
|
||||
// 删除药品
|
||||
function removeDrug(index) {
|
||||
if (drugList.value.length <= 1) {
|
||||
ElMessage.warning('至少保留一条药品信息');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.keepOneDrug'));
|
||||
return;
|
||||
}
|
||||
drugList.value.splice(index, 1);
|
||||
}
|
||||
|
||||
function validateDrug(item) {
|
||||
if (!item.orderDefinitionId) return '请选择中药';
|
||||
if (!item.quantity || Number(item.quantity) <= 0) return '请填写数量';
|
||||
if (!item.orderDefinitionId) return t('basic.tcmOrderSet.selectTcmDrug');
|
||||
if (!item.quantity || Number(item.quantity) <= 0) return t('basic.tcmOrderSet.enterQuantity');
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -614,38 +617,38 @@ function createNew() {
|
||||
function saveCommonForm() {
|
||||
// 校验组套名称
|
||||
if (!commonForm.name) {
|
||||
ElMessage.warning('请填写组套名称');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.enterSetName'));
|
||||
return;
|
||||
}
|
||||
// 校验使用范围
|
||||
if (!commonForm.useRange) {
|
||||
ElMessage.warning('请选择使用范围');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.selectUseRange'));
|
||||
return;
|
||||
}
|
||||
// 校验个人时选择使用人
|
||||
if (commonForm.useRange === 'personal' && !commonForm.practitionerId) {
|
||||
ElMessage.warning('请选择使用人');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.selectUser'));
|
||||
return;
|
||||
}
|
||||
// 校验科室时选择科室
|
||||
if (commonForm.useRange === 'department' && !commonForm.organizationId) {
|
||||
ElMessage.warning('请选择科室');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.selectDept'));
|
||||
return;
|
||||
}
|
||||
// 校验药品列表
|
||||
if (drugList.value.length === 0) {
|
||||
ElMessage.warning('请添加药品');
|
||||
ElMessage.warning(t('basic.tcmOrderSet.addDrug'));
|
||||
return;
|
||||
}
|
||||
// 校验每个药品
|
||||
for (let i = 0; i < drugList.value.length; i++) {
|
||||
const item = drugList.value[i];
|
||||
if (!item.orderDefinitionId) {
|
||||
ElMessage.warning(`请选择第${i + 1}个药品`);
|
||||
ElMessage.warning(t('basic.tcmOrderSet.selectDrugN', { n: i + 1 }));
|
||||
return;
|
||||
}
|
||||
if (!item.quantity || Number(item.quantity) <= 0) {
|
||||
ElMessage.warning(`请填写第${i + 1}个药品的数量`);
|
||||
ElMessage.warning(t('basic.tcmOrderSet.enterDrugQuantity', { n: i + 1 }));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -694,11 +697,11 @@ function saveCommonForm() {
|
||||
|
||||
saveApi(data)
|
||||
.then(() => {
|
||||
ElMessage.success('保存成功');
|
||||
ElMessage.success(t('basic.tcmOrderSet.saveSuccess'));
|
||||
loadTreeData();
|
||||
})
|
||||
.catch((err) => {
|
||||
ElMessage.error('保存失败:' + (err.message || '未知错误'));
|
||||
ElMessage.error(t('basic.tcmOrderSet.saveFailed') + ':' + (err.message || '未知错误'));
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -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.tcmPrescription.tcmPrescription') }}</span>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
新增处方
|
||||
{{ $t('basic.tcmPrescription.addPrescription') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -18,10 +18,10 @@
|
||||
:model="queryParams"
|
||||
label-width="80px"
|
||||
>
|
||||
<el-form-item label="关键字">
|
||||
<el-form-item :label="$t('basic.tcmPrescription.keyword')">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="处方名称/编码"
|
||||
:placeholder="$t('basic.tcmPrescription.searchPlaceholder')"
|
||||
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('basic.tcmPrescription.seq')"
|
||||
width="60"
|
||||
/>
|
||||
<vxe-column
|
||||
field="conditionCode"
|
||||
title="编码"
|
||||
:title="$t('basic.tcmPrescription.code')"
|
||||
width="120"
|
||||
/>
|
||||
<vxe-column
|
||||
field="name"
|
||||
title="处方名称"
|
||||
:title="$t('basic.tcmPrescription.prescriptionName')"
|
||||
min-width="200"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
field="typeCode"
|
||||
title="类型"
|
||||
:title="$t('basic.tcmPrescription.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.operation')"
|
||||
width="120"
|
||||
fixed="right"
|
||||
>
|
||||
@@ -97,7 +97,7 @@
|
||||
icon="Edit"
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -123,59 +123,61 @@
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item
|
||||
label="处方编码"
|
||||
:label="$t('basic.tcmPrescription.prescriptionCode')"
|
||||
prop="conditionCode"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.conditionCode"
|
||||
placeholder="处方编码"
|
||||
:placeholder="$t('basic.tcmPrescription.codePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="处方名称"
|
||||
:label="$t('basic.tcmPrescription.prescriptionName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="处方名称"
|
||||
:placeholder="$t('basic.tcmPrescription.namePlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="证型">
|
||||
<el-form-item :label="$t('basic.tcmPrescription.pattern')">
|
||||
<el-input
|
||||
v-model="form.typeCode"
|
||||
placeholder="中医证型"
|
||||
:placeholder="$t('basic.tcmPrescription.patternPlaceholder')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</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>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { getTcmPage, addTcm, updateTcm } 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 form = ref({ id: null, conditionCode: '', name: '', typeCode: '' })
|
||||
const rules = { conditionCode: [{ required: true, message: '请输入编码', trigger: 'blur' }], name: [{ required: true, message: '请输入名称', trigger: 'blur' }] }
|
||||
const rules = computed(() => ({ conditionCode: [{ required: true, message: t('basic.tcmPrescription.codePlaceholder'), trigger: 'blur' }], name: [{ required: true, message: t('basic.tcmPrescription.namePlaceholder'), trigger: 'blur' }] }))
|
||||
function getList() { loading.value = true; getTcmPage(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: '' }; 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 ? updateTcm(form.value) : addTcm(form.value); action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? '修改成功' : '新增成功'); formVisible.value = false; getList() } else ElMessage.error(res.msg || '操作失败') }) }) }
|
||||
function handleAdd() { isEdit.value = false; formTitle.value = t('basic.tcmPrescription.addPrescription'); form.value = { id: null, conditionCode: '', name: '', typeCode: '' }; formVisible.value = true }
|
||||
function handleEdit(row) { isEdit.value = true; formTitle.value = t('basic.tcmPrescription.editPrescription'); form.value = { ...row }; formVisible.value = true }
|
||||
function submitForm() { formRef.value.validate(valid => { if (!valid) return; const action = isEdit.value ? updateTcm(form.value) : addTcm(form.value); action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? t('basic.tcmPrescription.editSuccess') : t('basic.tcmPrescription.addSuccess')); formVisible.value = false; getList() } else ElMessage.error(res.msg || t('basic.tcmPrescription.operationFailed')) }) }) }
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -464,13 +464,13 @@
|
||||
}"
|
||||
value-key="id"
|
||||
check-strictly
|
||||
placeholder="请选择上级科室/病区/床位"
|
||||
:placeholder="$t('basic.ward.selectParent')"
|
||||
/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-select
|
||||
v-model="form.busNoParent"
|
||||
placeholder="请选择上级科室/病区/床位"
|
||||
:placeholder="$t('basic.ward.selectParent')"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%"
|
||||
@@ -492,10 +492,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -541,7 +541,7 @@ const querybedParams = ref({
|
||||
// locationFormList: [4],
|
||||
});
|
||||
// 病区、病房、病床类型
|
||||
const type = ref('病区');
|
||||
const type = ref('basic.ward.wardArea');
|
||||
// 病区列表
|
||||
const wardList = ref([]);
|
||||
// 床位列表
|
||||
@@ -570,21 +570,21 @@ const form = reactive({
|
||||
name: '',
|
||||
busNo: '',
|
||||
});
|
||||
const upLabel = ref('关联科室');
|
||||
const title = ref('新增');
|
||||
const rules = ref({
|
||||
const upLabel = ref('basic.ward.linkedDept');
|
||||
const title = ref('common.add');
|
||||
const rules = computed(() => ({
|
||||
name: [
|
||||
{ required: true, message: '请输入名称', trigger: 'blur' },
|
||||
{ required: true, min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' },
|
||||
{ required: true, message: t('basic.ward.inputName'), trigger: 'blur' },
|
||||
{ required: true, min: 2, max: 20, message: t('basic.ward.nameLength'), trigger: 'blur' },
|
||||
],
|
||||
busNoParent: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择上级' + type.value,
|
||||
message: t('basic.ward.selectParentType', { type: t(type.value) }),
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
});
|
||||
}));
|
||||
// 递归过滤树形数据,只保留classEnum包含住院(2)的科室
|
||||
function filterOrgByClassEnum(orgList, targetClassEnum = '2') {
|
||||
if (!orgList || !Array.isArray(orgList)) return [];
|
||||
@@ -687,17 +687,17 @@ const getHomeOrBed = (formEnum) => {
|
||||
function handleRadioChange(val) {
|
||||
let formEnum = 4;
|
||||
if (val == 4) {
|
||||
type.value = '病区';
|
||||
upLabel.value = '关联科室';
|
||||
type.value = 'basic.ward.wardArea';
|
||||
upLabel.value = 'basic.ward.linkedDept';
|
||||
return;
|
||||
} else if (val == 10) {
|
||||
type.value = '病房';
|
||||
upLabel.value = '所属病区';
|
||||
type.value = 'basic.ward.room';
|
||||
upLabel.value = 'basic.ward.parentWard';
|
||||
formEnum = 4;
|
||||
// queryParams.value.formEnum = 4;
|
||||
} else {
|
||||
type.value = '床位';
|
||||
upLabel.value = '所属病房';
|
||||
type.value = 'basic.ward.bed';
|
||||
upLabel.value = 'basic.ward.parentRoom';
|
||||
formEnum = 10;
|
||||
// queryParams.value.formEnum = 10;
|
||||
}
|
||||
@@ -752,7 +752,7 @@ function checkSelectable(row, index) {
|
||||
function handleEnable(row) {
|
||||
return enableLocation([row.id]).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
proxy.$modal.msgSuccess(t('basic.ward.enableSuccess'));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -760,7 +760,7 @@ function handleEnable(row) {
|
||||
function handleUnable(row) {
|
||||
return unableLocation([row.id]).then((res) => {
|
||||
if (res.code == 200) {
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
proxy.$modal.msgSuccess(t('basic.ward.disableSuccess'));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -770,7 +770,7 @@ function handleEnableBatch(tableRef) {
|
||||
return item.id;
|
||||
});
|
||||
if (list.length == 0) {
|
||||
proxy.$modal.msgError('请选择要启用的数据');
|
||||
proxy.$modal.msgError(t('basic.ward.selectEnableData'));
|
||||
return;
|
||||
}
|
||||
enableLocation(list).then((res) => {
|
||||
@@ -785,7 +785,7 @@ function handleUnableBatch(tableRef) {
|
||||
return item.id;
|
||||
});
|
||||
if (list.length == 0) {
|
||||
proxy.$modal.msgError('请选择要停用的数据');
|
||||
proxy.$modal.msgError(t('basic.ward.selectDisableData'));
|
||||
return;
|
||||
}
|
||||
unableLocation(list).then((res) => {
|
||||
@@ -829,7 +829,7 @@ function submitForm() {
|
||||
if (!(params.organizationId && params.organizationId.length > 0)) {
|
||||
ElMessage({
|
||||
type: 'error',
|
||||
message: '请选择关联科室!',
|
||||
message: t('basic.ward.selectLinkedDept'),
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -837,7 +837,7 @@ function submitForm() {
|
||||
if (!(params.busNo && params.busNo.length > 0)) {
|
||||
ElMessage({
|
||||
type: 'error',
|
||||
message: '请选择所属病区!',
|
||||
message: t('basic.ward.selectParentWard'),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
style="margin-left: 5px; margin-top: -10px; margin-bottom: 20px"
|
||||
@click="handleImportYb()"
|
||||
>
|
||||
从医保目录导入
|
||||
{{ $t('catalog.device.importFromYb') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
@@ -31,32 +31,32 @@
|
||||
:span="8"
|
||||
>
|
||||
<el-form-item
|
||||
label="编号"
|
||||
:label="$t('catalog.device.code')"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.busNo"
|
||||
clearable
|
||||
placeholder="请输入编码"
|
||||
:placeholder="$t('catalog.device.enterCode')"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="器材名称"
|
||||
:label="$t('catalog.device.deviceName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
clearable
|
||||
placeholder="请输入器材名称"
|
||||
:placeholder="$t('catalog.device.enterDeviceName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="器材分类"
|
||||
:label="$t('catalog.device.category')"
|
||||
prop="categoryCode"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -75,7 +75,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="器材种类"
|
||||
:label="$t('catalog.device.deviceType')"
|
||||
prop="typeCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -94,7 +94,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="提供部门"
|
||||
:label="$t('catalog.device.provideDept')"
|
||||
prop="orgId"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -102,7 +102,7 @@
|
||||
:data="deptOptions"
|
||||
:props="{ value: 'id', label: 'name', children: 'children' }"
|
||||
value-key="id"
|
||||
placeholder="请选择提供部门"
|
||||
:placeholder="$t('catalog.device.selectDept')"
|
||||
check-strictly
|
||||
clearable
|
||||
filterable
|
||||
@@ -111,7 +111,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="地点"
|
||||
:label="$t('catalog.device.location')"
|
||||
prop="locationId"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -119,7 +119,7 @@
|
||||
:data="locationOptions"
|
||||
:props="{ value: 'id', label: 'name', children: 'children' }"
|
||||
value-key="id"
|
||||
placeholder="请选择地点"
|
||||
:placeholder="$t('catalog.device.selectLocation')"
|
||||
check-strictly
|
||||
clearable
|
||||
filterable
|
||||
@@ -130,7 +130,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="包装单位"
|
||||
:label="$t('catalog.device.packUnit')"
|
||||
prop="unitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -151,7 +151,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="销售单位"
|
||||
:label="$t('catalog.device.salesUnit')"
|
||||
prop="salesUnitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -170,7 +170,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="最小单位"
|
||||
:label="$t('catalog.device.minUnit')"
|
||||
prop="minUnitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -192,7 +192,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="包装规格"
|
||||
:label="$t('catalog.device.packSpec')"
|
||||
prop="size"
|
||||
>
|
||||
<el-input
|
||||
@@ -204,7 +204,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="拆零比"
|
||||
:label="$t('catalog.device.partPercent')"
|
||||
prop="partPercent"
|
||||
>
|
||||
<el-input-number
|
||||
@@ -217,7 +217,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="产品型号"
|
||||
:label="$t('catalog.device.modelNumber')"
|
||||
prop="modelNumber"
|
||||
>
|
||||
<el-input
|
||||
@@ -230,7 +230,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="批准文号"
|
||||
:label="$t('catalog.device.approvalNumber')"
|
||||
prop="approvalNumber"
|
||||
>
|
||||
<el-input
|
||||
@@ -241,7 +241,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保编码"
|
||||
:label="$t('catalog.device.ybCode')"
|
||||
prop="ybNo"
|
||||
>
|
||||
<el-input
|
||||
@@ -252,7 +252,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医药机构目录编码"
|
||||
:label="$t('catalog.device.ybOrgCode')"
|
||||
prop="ybOrgNo"
|
||||
label-width="125px"
|
||||
>
|
||||
@@ -264,7 +264,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="主要成分"
|
||||
:label="$t('catalog.device.substance')"
|
||||
prop="substanceText"
|
||||
>
|
||||
<el-input
|
||||
@@ -275,7 +275,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="警戒线最低值(常规单位)"
|
||||
:label="$t('catalog.device.alertMin')"
|
||||
prop="itemMinQuantity"
|
||||
label-width="180px"
|
||||
>
|
||||
@@ -288,7 +288,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="警戒线最高值(常规单位)"
|
||||
:label="$t('catalog.device.alertMax')"
|
||||
prop="itemMaxQuantity"
|
||||
label-width="180px"
|
||||
>
|
||||
@@ -303,7 +303,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="生产厂家"
|
||||
:label="$t('catalog.device.manufacturer')"
|
||||
prop="manufacturerText"
|
||||
>
|
||||
<el-input
|
||||
@@ -314,7 +314,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="供应商"
|
||||
:label="$t('catalog.device.supplier')"
|
||||
prop="supplyId"
|
||||
>
|
||||
<el-select
|
||||
@@ -334,7 +334,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="过敏标记"
|
||||
:label="$t('catalog.device.allergenFlag')"
|
||||
prop="allergenFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.allergenFlag" />
|
||||
@@ -344,7 +344,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保标记"
|
||||
:label="$t('catalog.device.ybFlag')"
|
||||
prop="ybFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.ybFlag" />
|
||||
@@ -352,7 +352,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保对码标记"
|
||||
:label="$t('catalog.device.ybMatchFlag')"
|
||||
prop="ybMatchFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.ybMatchFlag" />
|
||||
@@ -360,7 +360,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="高值器材标志"
|
||||
:label="$t('catalog.device.hvcmFlag')"
|
||||
prop="hvcmFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.hvcmFlag" />
|
||||
@@ -370,7 +370,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="财务类型"
|
||||
:label="$t('catalog.device.financeType')"
|
||||
prop="itemTypeCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -390,12 +390,12 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保类别"
|
||||
:label="$t('catalog.device.ybCategory')"
|
||||
prop="ybType"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.ybType"
|
||||
placeholder="医保类别"
|
||||
:placeholder="$t('catalog.device.ybCategory')"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
@@ -412,7 +412,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="适用范围"
|
||||
:label="$t('catalog.device.jurisdiction')"
|
||||
prop="jurisdiction"
|
||||
>
|
||||
<el-input
|
||||
@@ -425,7 +425,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="购入价"
|
||||
:label="$t('catalog.device.purchasePrice')"
|
||||
prop="purchasePrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -437,7 +437,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="零售价"
|
||||
:label="$t('catalog.device.retailPrice')"
|
||||
prop="retailPrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -449,7 +449,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="最高零售价"
|
||||
:label="$t('catalog.device.maxRetailPrice')"
|
||||
prop="maximumRetailPrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -463,12 +463,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保等级"
|
||||
:label="$t('catalog.device.ybLevel')"
|
||||
prop="chrgitmLv"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.chrgitmLv"
|
||||
placeholder="医保等级"
|
||||
:placeholder="$t('catalog.device.ybLevel')"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
@@ -487,7 +487,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="16">
|
||||
<el-form-item
|
||||
label="说明"
|
||||
:label="$t('catalog.device.description')"
|
||||
prop="description"
|
||||
>
|
||||
<el-input
|
||||
@@ -501,7 +501,7 @@
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template
|
||||
v-if="title != '查看'"
|
||||
v-if="title != $t('common.view')"
|
||||
#footer
|
||||
>
|
||||
<div class="dialog-footer">
|
||||
@@ -509,10 +509,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -523,8 +523,11 @@
|
||||
<script setup name="MedicineDialog">
|
||||
import {addDevice, deptTreeSelect, editDevice, locationTreeSelect} from './device';
|
||||
import {getDicts} from '@/api/system/dict/data';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { computed } from 'vue';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
const { device_type_code, unit_code, fin_type_code, chrgitm_lv, med_chrgitm_type } = proxy.useDict(
|
||||
'device_type_code',
|
||||
'unit_code',
|
||||
@@ -540,30 +543,31 @@ const locationOptions = ref(undefined); // 地点树选项
|
||||
const unitCodeOptions = ref([]); // 包装单位选项列表(用于搜索)
|
||||
const unitCodeLoading = ref(false); // 包装单位搜索加载状态
|
||||
|
||||
const rules = computed(() => ({
|
||||
name: [{ required: true, message: t('catalog.device.nameRequired'), trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: t('catalog.device.categoryRequired'), trigger: 'blur' }],
|
||||
unitCode: [{ required: true, message: t('catalog.device.unitRequired'), trigger: 'blur' }],
|
||||
size: [{ required: true, message: t('catalog.device.sizeRequired'), trigger: 'blur' }],
|
||||
partPercent: [{ required: true, message: t('catalog.device.partPercentRequired'), trigger: 'blur' }],
|
||||
minUnitCode: [{ required: true, message: t('catalog.device.minUnitRequired'), trigger: 'blur' }],
|
||||
itemMinQuantity: [{ required: true, message: t('catalog.device.alertMinRequired'), trigger: 'blur' }],
|
||||
itemMaxQuantity: [{ required: true, message: t('catalog.device.alertMaxRequired'), trigger: 'blur' }],
|
||||
salesUnitCode: [{ required: true, message: t('catalog.device.salesUnitRequired'), trigger: 'blur' }],
|
||||
manufacturerId: [{ required: true, message: t('catalog.device.manufacturerRequired'), trigger: 'blur' }],
|
||||
ruleId: [{ required: true, message: t('catalog.device.deptRequired'), trigger: 'blur' }],
|
||||
locationId: [{ required: true, message: t('catalog.device.locationRequired'), trigger: 'blur' }],
|
||||
purchasePrice: [{ required: true, message: t('catalog.device.purchasePriceRequired'), trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: t('catalog.device.retailPriceRequired'), trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: t('catalog.device.ybTypeRequired'), trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: t('catalog.device.ybLevelRequired'), trigger: 'blur' }],
|
||||
itemTypeCode: [{ required: true, message: t('catalog.device.financeTypeRequired'), trigger: 'blur' }],
|
||||
}));
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
rules: {
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: '器材分类不能为空', trigger: 'blur' }],
|
||||
unitCode: [{ required: true, message: '包装单位不能为空', trigger: 'blur' }],
|
||||
size: [{ required: true, message: '包装规格不能为空', trigger: 'blur' }],
|
||||
partPercent: [{ required: true, message: '拆零比不能为空', trigger: 'blur' }],
|
||||
minUnitCode: [{ required: true, message: '最小使用单位不能为空', trigger: 'blur' }],
|
||||
itemMinQuantity: [{ required: true, message: '警戒线最低值不能为空', trigger: 'blur' }],
|
||||
itemMaxQuantity: [{ required: true, message: '警戒线最高值不能为空', trigger: 'blur' }],
|
||||
salesUnitCode: [{ required: true, message: '销售单位不能为空', trigger: 'blur' }],
|
||||
manufacturerId: [{ required: true, message: '生产厂家不能为空', trigger: 'blur' }],
|
||||
ruleId: [{ required: true, message: '执行科室不能为空', trigger: 'blur' }],
|
||||
locationId: [{ required: true, message: '地点不能为空', trigger: 'blur' }],
|
||||
purchasePrice: [{ required: true, message: '购入价不能为空', trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: '医保类型不能为空', trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: '医保等级不能为空', trigger: 'blur' }],
|
||||
itemTypeCode: [{ required: true, message: '财务类型不能为空', trigger: 'blur' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { form, rules } = toRefs(data);
|
||||
const { form } = toRefs(data);
|
||||
|
||||
const props = defineProps({
|
||||
item: {
|
||||
@@ -699,7 +703,7 @@ function submitForm() {
|
||||
editDevice(form.value).then((response) => {
|
||||
// 触发自定义事件,并传递数据给父组件
|
||||
emits('submit');
|
||||
proxy.$modal.msgSuccess('修改成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
visible.value = false;
|
||||
reset(); // 重置表单数据
|
||||
});
|
||||
@@ -707,7 +711,7 @@ function submitForm() {
|
||||
addDevice(form.value).then((response) => {
|
||||
// 触发自定义事件,并传递数据给父组件
|
||||
emits('submit');
|
||||
proxy.$modal.msgSuccess('新增成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.device.addSuccess'));
|
||||
visible.value = false;
|
||||
reset(); // 重置表单数据
|
||||
});
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
:xs="24"
|
||||
>
|
||||
<div class="head-title">
|
||||
器材目录
|
||||
{{ $t('catalog.device.title') }}
|
||||
</div>
|
||||
<div class="head-container">
|
||||
<el-tree
|
||||
@@ -37,20 +37,20 @@
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-form-item
|
||||
label="项目名"
|
||||
:label="$t('catalog.device.itemName')"
|
||||
prop="searchKey"
|
||||
label-width="55"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="品名/商品名/英文品名/编码/拼音"
|
||||
:placeholder="$t('catalog.device.searchPlaceholder')"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="状态"
|
||||
:label="$t('common.status')"
|
||||
prop="statusEnum"
|
||||
label-width="50"
|
||||
>
|
||||
@@ -67,7 +67,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保是否对码"
|
||||
:label="$t('catalog.device.ybMatch')"
|
||||
prop="ybMatchFlag"
|
||||
label-width="100"
|
||||
>
|
||||
@@ -98,7 +98,7 @@
|
||||
icon="Plus"
|
||||
@click="openAddDevice"
|
||||
>
|
||||
添加新项目
|
||||
{{ $t('catalog.device.addNew') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -109,7 +109,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleClose"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -120,7 +120,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleStart"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -130,7 +130,7 @@
|
||||
icon="Upload"
|
||||
@click="handleImport"
|
||||
>
|
||||
导入
|
||||
{{ $t('common.import') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -140,7 +140,7 @@
|
||||
icon="Search"
|
||||
@click="getList"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
@@ -167,7 +167,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="busNo"
|
||||
title="编码"
|
||||
:title="$t('catalog.device.code')"
|
||||
align="center"
|
||||
field="busNo"
|
||||
show-overflow="title"
|
||||
@@ -175,7 +175,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="name"
|
||||
title="器材名称"
|
||||
:title="$t('catalog.device.deviceName')"
|
||||
align="center"
|
||||
field="name"
|
||||
show-overflow="title"
|
||||
@@ -183,7 +183,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="size"
|
||||
title="包装规格"
|
||||
:title="$t('catalog.device.packSpec')"
|
||||
align="center"
|
||||
field="size"
|
||||
width="100"
|
||||
@@ -198,7 +198,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="categoryCode_dictText"
|
||||
title="器材分类"
|
||||
:title="$t('catalog.device.category')"
|
||||
align="center"
|
||||
field="categoryCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -214,7 +214,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="unitCode_dictText"
|
||||
title="包装单位"
|
||||
:title="$t('catalog.device.packUnit')"
|
||||
align="center"
|
||||
field="unitCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -222,7 +222,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="partPercent"
|
||||
title="拆零比"
|
||||
:title="$t('catalog.device.partPercent')"
|
||||
align="center"
|
||||
field="partPercent"
|
||||
show-overflow="title"
|
||||
@@ -238,7 +238,7 @@
|
||||
|
||||
<vxe-column
|
||||
key="minUnitCode_dictText"
|
||||
title="最小使用单位"
|
||||
:title="$t('catalog.device.minUnit')"
|
||||
align="center"
|
||||
field="minUnitCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -268,7 +268,7 @@
|
||||
|
||||
<vxe-column
|
||||
key="salesUnitCode_dictText"
|
||||
title="销售单位"
|
||||
:title="$t('catalog.device.salesUnit')"
|
||||
align="center"
|
||||
field="salesUnitCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -291,7 +291,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="ybNo"
|
||||
title="医保编码"
|
||||
:title="$t('catalog.device.ybCode')"
|
||||
align="center"
|
||||
field="ybNo"
|
||||
show-overflow="title"
|
||||
@@ -299,7 +299,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="ybOrgNo"
|
||||
title="医药机构目录编码"
|
||||
:title="$t('catalog.device.ybOrgCode')"
|
||||
align="center"
|
||||
field="ybOrgNo"
|
||||
show-overflow="title"
|
||||
@@ -315,7 +315,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="statusEnum_enumText"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
show-overflow="title"
|
||||
@@ -331,7 +331,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="manufacturerText"
|
||||
title="生产厂家"
|
||||
:title="$t('catalog.device.manufacturer')"
|
||||
align="center"
|
||||
field="manufacturerText"
|
||||
show-overflow="title"
|
||||
@@ -385,7 +385,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="retailPrice"
|
||||
title="售价"
|
||||
:title="$t('catalog.device.price')"
|
||||
align="center"
|
||||
field="retailPrice"
|
||||
show-overflow="title"
|
||||
@@ -393,7 +393,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="itemTypeCode_dictText"
|
||||
title="财务类别"
|
||||
:title="$t('catalog.device.financeType')"
|
||||
align="center"
|
||||
field="itemTypeCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -401,7 +401,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="hvcmFlag_enumText"
|
||||
title="高值器材标志"
|
||||
:title="$t('catalog.device.hvcmFlag')"
|
||||
align="center"
|
||||
field="hvcmFlag_enumText"
|
||||
show-overflow="title"
|
||||
@@ -416,7 +416,7 @@
|
||||
width="90"
|
||||
/> -->
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
@@ -429,7 +429,7 @@
|
||||
icon="Edit"
|
||||
@click="openEditDevice(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -490,18 +490,18 @@
|
||||
<upload-filled />
|
||||
</el-icon>
|
||||
<div class="el-upload__text">
|
||||
将文件拖到此处,或<em>点击上传</em>
|
||||
{{ $t('catalog.device.dragOrClick') }}<em>{{ $t('catalog.device.clickUpload') }}</em>
|
||||
</div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip text-center">
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<span>{{ $t('catalog.device.uploadTip') }}</span>
|
||||
<el-link
|
||||
type="primary"
|
||||
:underline="false"
|
||||
style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate"
|
||||
>
|
||||
下载模板
|
||||
{{ $t('catalog.device.downloadTemplate') }}
|
||||
</el-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -512,10 +512,10 @@
|
||||
type="primary"
|
||||
@click="submitFileForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="upload.open = false">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -536,8 +536,10 @@ import {
|
||||
import deviceDialog from './components/deviceDialog';
|
||||
import DeviceYbDialog from './components/deviceYbDialog';
|
||||
import {nextTick} from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
|
||||
const deviceList = ref([]);
|
||||
const loading = ref(true);
|
||||
@@ -605,7 +607,7 @@ function getDiseaseTreatmentList() {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
}
|
||||
);
|
||||
deviceCategories.value.push({ info: '全部', value: '' });
|
||||
deviceCategories.value.push({ info: t('catalog.device.all'), value: '' });
|
||||
deviceCategorieList.value = response.data.deviceCategories.sort((a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
});
|
||||
@@ -640,13 +642,13 @@ function handleStart() {
|
||||
const stardIds = ids.value;
|
||||
// selectedData
|
||||
proxy.$modal
|
||||
.confirm('是否确定启用数据!')
|
||||
.confirm(t('catalog.device.confirmEnable'))
|
||||
.then(function () {
|
||||
return startDevice(stardIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.device.enableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -654,13 +656,13 @@ function handleStart() {
|
||||
function handleClose() {
|
||||
const stopIds = ids.value;
|
||||
proxy.$modal
|
||||
.confirm('是否确认停用数据!')
|
||||
.confirm(t('catalog.device.confirmDisable'))
|
||||
.then(function () {
|
||||
return stopDevice(stopIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.device.disableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -677,7 +679,7 @@ function handleExport() {
|
||||
|
||||
/** 导入按钮操作 */
|
||||
function handleImport() {
|
||||
upload.title = '器材目录导入';
|
||||
upload.title = t('catalog.device.importTitle');
|
||||
upload.open = true;
|
||||
}
|
||||
/** 下载模板操作 */
|
||||
@@ -701,7 +703,7 @@ const handleFileSuccess = (response, file, fileList) => {
|
||||
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||
response.msg +
|
||||
'</div>',
|
||||
'导入结果',
|
||||
t('catalog.device.importResult'),
|
||||
{ dangerouslyUseHTMLString: true }
|
||||
);
|
||||
getList();
|
||||
@@ -721,7 +723,7 @@ function handleSelectionChange(selection) {
|
||||
|
||||
/** 打开新增弹窗 */
|
||||
function openAddDevice() {
|
||||
title.value = '新增';
|
||||
title.value = t('common.add');
|
||||
nextTick(() => {
|
||||
proxy.$refs.deviceRef.show();
|
||||
});
|
||||
@@ -758,7 +760,7 @@ function getDeviceInfo(row) {
|
||||
? (currentData.value.allergenFlag = true)
|
||||
: (currentData.value.allergenFlag = false);
|
||||
}
|
||||
title.value = '编辑';
|
||||
title.value = t('common.edit');
|
||||
nextTick(() => {
|
||||
proxy.$refs['deviceRef'].edit();
|
||||
});
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
style="margin-left: 5px; margin-top: -10px; margin-bottom: 20px"
|
||||
@click="handleImportYb()"
|
||||
>
|
||||
从医保目录导入
|
||||
{{ $t('catalog.diagnosis.importFromYb') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
@@ -31,30 +31,30 @@
|
||||
:span="8"
|
||||
>
|
||||
<el-form-item
|
||||
label="编号"
|
||||
:label="$t('catalog.diagnosis.code')"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.busNo"
|
||||
placeholder="请输入编码"
|
||||
:placeholder="$t('catalog.diagnosis.enterCode')"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="项目名称"
|
||||
:label="$t('catalog.diagnosis.itemNameFull')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('catalog.diagnosis.enterName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="所属科室"
|
||||
:label="$t('catalog.diagnosis.department')"
|
||||
prop="orgId"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -66,7 +66,7 @@
|
||||
children: 'children',
|
||||
}"
|
||||
value-key="id"
|
||||
placeholder="请选择提供部门"
|
||||
:placeholder="$t('catalog.diagnosis.selectDept')"
|
||||
check-strictly
|
||||
filterable
|
||||
clearable
|
||||
@@ -75,12 +75,12 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="项目编码"
|
||||
:label="$t('catalog.diagnosis.itemCode')"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.busNo"
|
||||
placeholder="请输入项目编码"
|
||||
:placeholder="$t('catalog.diagnosis.enterItemCode')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -88,7 +88,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="地点"
|
||||
:label="$t('catalog.diagnosis.location')"
|
||||
prop="locationId"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -100,7 +100,7 @@
|
||||
children: 'children',
|
||||
}"
|
||||
value-key="id"
|
||||
placeholder="请选择地点"
|
||||
:placeholder="$t('catalog.diagnosis.selectLocation')"
|
||||
check-strictly
|
||||
clearable
|
||||
/>
|
||||
@@ -108,7 +108,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="目录分类"
|
||||
:label="$t('catalog.diagnosis.categoryType')"
|
||||
prop="categoryCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -128,7 +128,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="业务类型"
|
||||
:label="$t('catalog.diagnosis.bizType')"
|
||||
prop="typeEnum"
|
||||
>
|
||||
<el-select
|
||||
@@ -151,7 +151,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保标记"
|
||||
:label="$t('catalog.diagnosis.ybFlag')"
|
||||
prop="ybFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.ybFlag" />
|
||||
@@ -159,7 +159,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保对码标记"
|
||||
:label="$t('catalog.diagnosis.ybMatchFlag')"
|
||||
prop="ybMatchFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.ybMatchFlag" />
|
||||
@@ -167,7 +167,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保编码"
|
||||
:label="$t('catalog.diagnosis.ybCode')"
|
||||
prop="conditionCode"
|
||||
>
|
||||
<el-input
|
||||
@@ -182,12 +182,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保类别"
|
||||
:label="$t('catalog.diagnosis.ybCategory')"
|
||||
prop="ybType"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.ybType"
|
||||
placeholder="医保类别"
|
||||
:placeholder="$t('catalog.diagnosis.ybCategory')"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
@@ -204,7 +204,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="身体部位"
|
||||
:label="$t('catalog.diagnosis.bodySite')"
|
||||
prop="bodySiteCode"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -216,7 +216,7 @@
|
||||
children: 'children',
|
||||
}"
|
||||
value-key="id"
|
||||
placeholder="请选择身体部位"
|
||||
:placeholder="$t('catalog.diagnosis.selectBodySite')"
|
||||
check-strictly
|
||||
filterable
|
||||
clearable
|
||||
@@ -226,7 +226,7 @@
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="所需标本"
|
||||
:label="$t('catalog.diagnosis.specimen')"
|
||||
prop="specimenCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -248,7 +248,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="医保等级"
|
||||
:label="$t('catalog.diagnosis.ybLevel')"
|
||||
prop="chrgitmLv"
|
||||
>
|
||||
<el-select
|
||||
@@ -270,7 +270,7 @@
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="使用单位"
|
||||
:label="$t('catalog.diagnosis.useUnit')"
|
||||
prop="permittedUnitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -290,7 +290,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="财务类型"
|
||||
:label="$t('catalog.diagnosis.financeType')"
|
||||
prop="itemTypeCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -314,7 +314,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="零售价"
|
||||
:label="$t('catalog.diagnosis.retailPrice')"
|
||||
prop="retailPrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -326,7 +326,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="最高零售价"
|
||||
:label="$t('catalog.diagnosis.maxRetailPrice')"
|
||||
prop="maximumRetailPrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -338,7 +338,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="划价标记"
|
||||
:label="$t('catalog.diagnosis.pricingFlag')"
|
||||
prop="maximumRetailPrice"
|
||||
>
|
||||
<el-checkbox
|
||||
@@ -357,7 +357,7 @@
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="诊疗子项">
|
||||
<el-form-item :label="$t('catalog.diagnosis.subItem')">
|
||||
<div style="position: relative">
|
||||
<PopoverList
|
||||
:width="1000"
|
||||
@@ -394,7 +394,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="执行次数">
|
||||
<el-form-item :label="$t('catalog.diagnosis.execCount')">
|
||||
<el-input-number
|
||||
v-model="item.childrenRequestNum"
|
||||
controls-position="right"
|
||||
@@ -440,7 +440,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="16">
|
||||
<el-form-item
|
||||
label="说明"
|
||||
:label="$t('catalog.diagnosis.descLabel')"
|
||||
prop="descriptionText"
|
||||
>
|
||||
<el-input
|
||||
@@ -456,13 +456,13 @@
|
||||
style="display: flex; align-items: center; justify-content: flex-start"
|
||||
>
|
||||
<div style="font-size: 18px; font-weight: bold; color: #276ef1">
|
||||
总价: ¥{{ totalPrice }}
|
||||
{{ $t('catalog.diagnosis.totalPrice') }}: ¥{{ totalPrice }}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template
|
||||
v-if="title != '查看'"
|
||||
v-if="title != $t('common.view')"
|
||||
#footer
|
||||
>
|
||||
<div class="dialog-footer">
|
||||
@@ -470,10 +470,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -493,9 +493,11 @@ import {
|
||||
} from './diagnosistreatment';
|
||||
import PopoverList from '@/components/HealthLinkHis/popoverList/index.vue';
|
||||
import medicineList from './medicineList.vue';
|
||||
import {getCurrentInstance, nextTick, watch} from 'vue';
|
||||
import {computed, getCurrentInstance, nextTick, watch} from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
const { specimen_code, unit_code, med_chrgitm_type, fin_type_code, activity_category_code, chrgitm_lv } =
|
||||
proxy.useDict(
|
||||
'specimen_code',
|
||||
@@ -518,20 +520,21 @@ const filteredUnitCode = ref([]);
|
||||
// 标记是否正在进行过滤查询
|
||||
const isFilteringUnitCode = ref(false);
|
||||
|
||||
const rules = computed(() => ({
|
||||
name: [{ required: true, message: t('catalog.diagnosis.nameRequired'), trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: t('catalog.diagnosis.categoryRequired'), trigger: 'blur' }],
|
||||
permittedUnitCode: [{ required: true, message: t('catalog.diagnosis.unitRequired'), trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: t('catalog.diagnosis.priceRequired'), trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: t('catalog.diagnosis.ybTypeRequired'), trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: t('catalog.diagnosis.ybLevelRequired'), trigger: 'blur' }],
|
||||
itemTypeCode: [{ required: true, message: t('catalog.diagnosis.financeTypeRequired'), trigger: 'blur' }],
|
||||
}));
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
rules: {
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: '诊疗目录不能为空', trigger: 'blur' }],
|
||||
permittedUnitCode: [{ required: true, message: '使用单位不能为空', trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: '医保类型不能为空', trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: '医保等级不能为空', trigger: 'blur' }],
|
||||
itemTypeCode: [{ required: true, message: '财务类型不能为空', trigger: 'blur' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { form, rules } = toRefs(data);
|
||||
const { form } = toRefs(data);
|
||||
|
||||
const props = defineProps({
|
||||
item: {
|
||||
@@ -598,7 +601,7 @@ function calculateTotalPrice() {
|
||||
}
|
||||
} catch (error) {
|
||||
totalPrice.value = '0.00';
|
||||
proxy.$modal.msgWarning('价格计算过程中遇到错误,请检查输入数据');
|
||||
proxy.$modal.msgWarning(t('catalog.diagnosis.priceCalcError'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -773,12 +776,12 @@ async function submitForm() {
|
||||
isValidatingYbNo.value = true;
|
||||
const isUnique = await validateYbNoUnique(form.value.ybNo, form.value.id);
|
||||
if (!isUnique) {
|
||||
proxy.$modal.msgWarning('医保编码已存在,请输入其他医保编码');
|
||||
proxy.$modal.msgWarning(t('catalog.diagnosis.ybCodeExists'));
|
||||
return;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('医保编码校验失败:', error);
|
||||
proxy.$modal.msgError('医保编码校验失败,请稍后重试');
|
||||
proxy.$modal.msgError(t('catalog.diagnosis.ybCodeCheckFailed'));
|
||||
return;
|
||||
} finally {
|
||||
isValidatingYbNo.value = false;
|
||||
@@ -789,7 +792,7 @@ async function submitForm() {
|
||||
editDiagnosisTreatment(form.value).then((response) => {
|
||||
// 触发自定义事件,并传递数据给父组件
|
||||
emits('submit');
|
||||
proxy.$modal.msgSuccess('修改成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
visible.value = false;
|
||||
reset(); // 重置表单数据
|
||||
});
|
||||
@@ -797,7 +800,7 @@ async function submitForm() {
|
||||
addDiagnosisTreatment(form.value).then((response) => {
|
||||
// 触发自定义事件,并传递数据给父组件
|
||||
emits('submit');
|
||||
proxy.$modal.msgSuccess('新增成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.diagnosis.addSuccess'));
|
||||
visible.value = false;
|
||||
reset(); // 重置表单数据
|
||||
});
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
:xs="24"
|
||||
>
|
||||
<div class="head-title">
|
||||
诊疗目录
|
||||
{{ $t('catalog.diagnosis.title') }}
|
||||
</div>
|
||||
<div class="head-container">
|
||||
<el-tree
|
||||
@@ -37,13 +37,13 @@
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-form-item
|
||||
label="项目名"
|
||||
:label="$t('catalog.diagnosis.itemName')"
|
||||
prop="searchKey"
|
||||
label-width="55"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="品名/商品名/英文品名/编码/拼音"
|
||||
:placeholder="$t('catalog.diagnosis.searchPlaceholder')"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -51,7 +51,7 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="状态"
|
||||
:label="$t('common.status')"
|
||||
prop="statusEnum"
|
||||
label-width="80"
|
||||
>
|
||||
@@ -68,7 +68,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保是否对码"
|
||||
:label="$t('catalog.diagnosis.ybMatch')"
|
||||
prop="ybMatchFlag"
|
||||
label-width="120"
|
||||
>
|
||||
@@ -87,7 +87,7 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
label="类型"
|
||||
:label="$t('catalog.diagnosis.type')"
|
||||
prop="typeEnum"
|
||||
label-width="100"
|
||||
>
|
||||
@@ -105,7 +105,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="划价标记"
|
||||
:label="$t('catalog.diagnosis.pricingFlag')"
|
||||
prop="pricingFlag"
|
||||
label-width="80"
|
||||
>
|
||||
@@ -137,7 +137,7 @@
|
||||
icon="Plus"
|
||||
@click="openAddDiagnosisTreatment"
|
||||
>
|
||||
添加新项目
|
||||
{{ $t('catalog.diagnosis.addNew') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -148,7 +148,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleClose"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -159,7 +159,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleStart"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handlePricingFlag(1)"
|
||||
>
|
||||
允许划价
|
||||
{{ $t('catalog.diagnosis.allowPricing') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handlePricingFlag(0)"
|
||||
>
|
||||
禁止划价
|
||||
{{ $t('catalog.diagnosis.forbidPricing') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
icon="Upload"
|
||||
@click="handleImport"
|
||||
>
|
||||
导入
|
||||
{{ $t('common.import') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
icon="Search"
|
||||
@click="getList"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
@@ -233,7 +233,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="busNo"
|
||||
title="编码"
|
||||
:title="$t('catalog.diagnosis.code')"
|
||||
align="center"
|
||||
field="busNo"
|
||||
show-overflow="title"
|
||||
@@ -241,7 +241,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="name"
|
||||
title="项目名称"
|
||||
:title="$t('catalog.diagnosis.itemNameFull')"
|
||||
align="center"
|
||||
field="name"
|
||||
show-overflow="title"
|
||||
@@ -250,7 +250,7 @@
|
||||
|
||||
<vxe-column
|
||||
key="categoryCode_dictText"
|
||||
title="目录类别"
|
||||
:title="$t('catalog.diagnosis.categoryType')"
|
||||
align="center"
|
||||
field="categoryCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -258,7 +258,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="retailPrice"
|
||||
title="售价"
|
||||
:title="$t('catalog.diagnosis.price')"
|
||||
align="center"
|
||||
field="retailPrice"
|
||||
show-overflow="title"
|
||||
@@ -266,7 +266,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="itemTypeCode_dictText"
|
||||
title="财务类别"
|
||||
:title="$t('catalog.diagnosis.financeType')"
|
||||
align="center"
|
||||
field="itemTypeCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -274,28 +274,28 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="permittedUnitCode_dictText"
|
||||
title="使用单位"
|
||||
:title="$t('catalog.diagnosis.useUnit')"
|
||||
align="center"
|
||||
field="permittedUnitCode_dictText"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="ybNo"
|
||||
title="医保编码"
|
||||
:title="$t('catalog.diagnosis.ybCode')"
|
||||
align="center"
|
||||
field="ybNo"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="statusEnum_enumText"
|
||||
title="状态"
|
||||
:title="$t('common.status')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="pricingFlag_enumText"
|
||||
title="划价标记"
|
||||
:title="$t('catalog.diagnosis.pricingFlag')"
|
||||
align="center"
|
||||
field="pricingFlag_enumText"
|
||||
show-overflow="title"
|
||||
@@ -306,12 +306,12 @@
|
||||
:type="scope.row.pricingFlag === 1 ? 'success' : scope.row.pricingFlag === 0 ? 'danger' : 'info'"
|
||||
size="small"
|
||||
>
|
||||
{{ scope.row.pricingFlag_enumText || (scope.row.pricingFlag === 1 ? '允许' : scope.row.pricingFlag === 0 ? '不允许' : '未设置') }}
|
||||
{{ scope.row.pricingFlag_enumText || (scope.row.pricingFlag === 1 ? $t('catalog.diagnosis.allowed') : scope.row.pricingFlag === 0 ? $t('catalog.diagnosis.notAllowed') : $t('catalog.diagnosis.notSet')) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
@@ -324,7 +324,7 @@
|
||||
icon="Edit"
|
||||
@click="openEditDiagnosisTreatment(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -387,18 +387,18 @@
|
||||
<upload-filled />
|
||||
</el-icon>
|
||||
<div class="el-upload__text">
|
||||
将文件拖到此处,或<em>点击上传</em>
|
||||
{{ $t('catalog.diagnosis.dragOrClick') }}<em>{{ $t('catalog.diagnosis.clickUpload') }}</em>
|
||||
</div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip text-center">
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<span>{{ $t('catalog.diagnosis.uploadTip') }}</span>
|
||||
<el-link
|
||||
type="primary"
|
||||
:underline="false"
|
||||
style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate"
|
||||
>
|
||||
下载模板
|
||||
{{ $t('catalog.diagnosis.downloadTemplate') }}
|
||||
</el-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -409,10 +409,10 @@
|
||||
type="primary"
|
||||
@click="submitFileForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="upload.open = false">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -422,6 +422,7 @@
|
||||
|
||||
<script setup name="DiagnosisTreatment">
|
||||
import {getToken} from '@/utils/auth';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import {
|
||||
getDiagnosisTreatmentList,
|
||||
getDiagnosisTreatmentOne,
|
||||
@@ -436,6 +437,7 @@ import DiagTreYbDialog from './components/diagTreYbDialog';
|
||||
import {nextTick} from 'vue';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
|
||||
const diagnosisTreatmentList = ref([]);
|
||||
const loading = ref(true);
|
||||
@@ -502,7 +504,7 @@ function getDiseaseTreatmentList() {
|
||||
diagnosisCategoryOptions.value = response.data.diagnosisCategoryOptions.sort((a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
});
|
||||
diagnosisCategoryOptions.value.push({ info: '全部', value: '' });
|
||||
diagnosisCategoryOptions.value.push({ info: t('catalog.diagnosis.all'), value: '' });
|
||||
statusFlagOptions.value = response.data.statusFlagOptions;
|
||||
exeOrganizations.value = response.data.exeOrganizations;
|
||||
typeEnumOptions.value = response.data.typeEnumOptions;
|
||||
@@ -535,13 +537,13 @@ function handleStart() {
|
||||
const stardIds = ids.value;
|
||||
// selectedData
|
||||
proxy.$modal
|
||||
.confirm('是否确定启用数据!')
|
||||
.confirm(t('catalog.diagnosis.confirmEnable'))
|
||||
.then(function () {
|
||||
return startDiseaseTreatment(stardIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.diagnosis.enableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -549,13 +551,13 @@ function handleStart() {
|
||||
function handleClose() {
|
||||
const stopIds = ids.value;
|
||||
proxy.$modal
|
||||
.confirm('是否确认停用数据!')
|
||||
.confirm(t('catalog.diagnosis.confirmDisable'))
|
||||
.then(function () {
|
||||
return stopDiseaseTreatment(stopIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.diagnosis.disableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -563,15 +565,15 @@ function handleClose() {
|
||||
/** 批量设置划价标记 */
|
||||
function handlePricingFlag(pricingFlag) {
|
||||
const selectedIds = ids.value;
|
||||
const flagText = pricingFlag === 1 ? '允许划价' : '禁止划价';
|
||||
const flagText = pricingFlag === 1 ? t('catalog.diagnosis.allowPricing') : t('catalog.diagnosis.forbidPricing');
|
||||
proxy.$modal
|
||||
.confirm(`是否确认将选中的诊疗项目设置为"${flagText}"?`)
|
||||
.confirm(t('catalog.diagnosis.confirmPricing', { flag: flagText }))
|
||||
.then(function () {
|
||||
return updatePricingFlag(selectedIds, pricingFlag);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess(`批量设置${flagText}成功`);
|
||||
proxy.$modal.msgSuccess(t('catalog.diagnosis.batchPricingSuccess', { flag: flagText }));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -588,7 +590,7 @@ function handleExport() {
|
||||
|
||||
/** 导入按钮操作 */
|
||||
function handleImport() {
|
||||
upload.title = '诊疗目录导入';
|
||||
upload.title = t('catalog.diagnosis.importTitle');
|
||||
upload.open = true;
|
||||
}
|
||||
/** 下载模板操作 */
|
||||
@@ -612,7 +614,7 @@ const handleFileSuccess = (response, file, fileList) => {
|
||||
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||
response.msg +
|
||||
'</div>',
|
||||
'导入结果',
|
||||
t('catalog.diagnosis.importResult'),
|
||||
{ dangerouslyUseHTMLString: true }
|
||||
);
|
||||
getList();
|
||||
@@ -632,7 +634,7 @@ function handleSelectionChange(selection) {
|
||||
|
||||
/** 打开新增弹窗 */
|
||||
function openAddDiagnosisTreatment() {
|
||||
title.value = '新增';
|
||||
title.value = t('common.add');
|
||||
nextTick(() => {
|
||||
proxy.$refs.diagnosisTreatmentRef.show();
|
||||
});
|
||||
@@ -660,7 +662,7 @@ function getDiagnosisTreatmentInfo(row) {
|
||||
currentData.value.ybMatchFlag == 1
|
||||
? (currentData.value.ybMatchFlag = true)
|
||||
: (currentData.value.ybMatchFlag = false);
|
||||
title.value = '编辑';
|
||||
title.value = t('common.edit');
|
||||
nextTick(() => {
|
||||
proxy.$refs['diagnosisTreatmentRef'].edit();
|
||||
});
|
||||
|
||||
@@ -274,12 +274,12 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="名称"
|
||||
:label="$t('catalog.disease.name')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.name"
|
||||
placeholder="请输入名称"
|
||||
:placeholder="$t('catalog.disease.enterName')"
|
||||
:disabled="form.id != undefined"
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -289,12 +289,12 @@
|
||||
:span="12"
|
||||
>
|
||||
<el-form-item
|
||||
label="编码"
|
||||
:label="$t('catalog.disease.code')"
|
||||
prop="conditionCode"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.conditionCode"
|
||||
placeholder="请输入编码"
|
||||
:placeholder="$t('catalog.disease.enterCode')"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -303,12 +303,12 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="疾病类型"
|
||||
:label="$t('catalog.disease.diseaseType')"
|
||||
prop="sourceEnum"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.sourceEnum"
|
||||
placeholder="请选择"
|
||||
:placeholder="$t('common.pleaseSelect')"
|
||||
clearable
|
||||
:disabled="form.sourceEnum != '' && form.sourceEnum != undefined"
|
||||
>
|
||||
@@ -323,12 +323,12 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="诊断类型"
|
||||
:label="$t('catalog.disease.diagnosisType')"
|
||||
prop="typeCode"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.typeCode"
|
||||
placeholder="请选择"
|
||||
:placeholder="$t('common.pleaseSelect')"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
@@ -360,7 +360,7 @@
|
||||
</el-col> -->
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="医保编码"
|
||||
:label="$t('catalog.disease.ybCode')"
|
||||
prop="ybNo"
|
||||
>
|
||||
<el-input
|
||||
@@ -373,7 +373,7 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="医保标记"
|
||||
:label="$t('catalog.disease.ybFlag')"
|
||||
prop="ybFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.ybFlag" />
|
||||
@@ -381,7 +381,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="医保对码"
|
||||
:label="$t('catalog.disease.ybMatch')"
|
||||
prop="ybMatchFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.ybMatchFlag" />
|
||||
@@ -391,12 +391,12 @@
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="报卡类型"
|
||||
:label="$t('catalog.disease.reportType')"
|
||||
prop="reportTypeCode"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.reportTypeCode"
|
||||
placeholder="请选择"
|
||||
:placeholder="$t('common.pleaseSelect')"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
@@ -412,7 +412,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="16">
|
||||
<el-form-item
|
||||
label="说明"
|
||||
:label="$t('catalog.disease.descLabel')"
|
||||
prop="description"
|
||||
>
|
||||
<el-input
|
||||
@@ -431,10 +431,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -506,7 +506,7 @@ function getDiseaseCategoryList() {
|
||||
).sort((a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
});
|
||||
conditionDefinitionOptions.value.push({ info: '全部', value: '' });
|
||||
conditionDefinitionOptions.value.push({ info: t('catalog.disease.all'), value: '' });
|
||||
conditionDefinitionList.value = JSON.parse(
|
||||
JSON.stringify(response.data.diseaseCategoryList)
|
||||
).sort((a, b) => {
|
||||
@@ -541,13 +541,13 @@ function handleQuery() {
|
||||
function handleStart(row) {
|
||||
const stardIds = row.id || ids.value;
|
||||
proxy.$modal
|
||||
.confirm('是否确定启用数据!')
|
||||
.confirm(t('catalog.disease.confirmEnable'))
|
||||
.then(function () {
|
||||
return startDisease(stardIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.disease.enableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -555,13 +555,13 @@ function handleStart(row) {
|
||||
function handleClose(row) {
|
||||
const stopIds = row.id || ids.value;
|
||||
proxy.$modal
|
||||
.confirm('是否确认停用数据!')
|
||||
.confirm(t('catalog.disease.confirmDisable'))
|
||||
.then(function () {
|
||||
return stopDisease(stopIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.disease.disableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -613,7 +613,7 @@ function handleAdd() {
|
||||
reset();
|
||||
form.value.sourceEnum = conditionDefinition.value;
|
||||
open.value = true;
|
||||
title.value = '新增';
|
||||
title.value = t('catalog.disease.addTitle');
|
||||
}
|
||||
/** 修改按钮操作 */
|
||||
function handleUpdate(row) {
|
||||
@@ -630,7 +630,7 @@ function handleUpdate(row) {
|
||||
// console.log(row, "row");
|
||||
// form.value = JSON.parse(JSON.stringify(row));
|
||||
open.value = true;
|
||||
title.value = '病种编辑';
|
||||
title.value = t('catalog.disease.editTitle');
|
||||
}
|
||||
/** 提交按钮 */
|
||||
function submitForm() {
|
||||
@@ -642,13 +642,13 @@ function submitForm() {
|
||||
if (form.value.id != undefined) {
|
||||
console.log(form.value, 'editDisease', form.value.statusEnum);
|
||||
editDisease(form.value).then((response) => {
|
||||
proxy.$modal.msgSuccess('修改成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
} else {
|
||||
addDisease(form.value).then((response) => {
|
||||
proxy.$modal.msgSuccess('新增成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.disease.addSuccess'));
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
type="border-card"
|
||||
>
|
||||
<el-tab-pane
|
||||
label="基本信息"
|
||||
:label="$t('catalog.medicine.basicInfo')"
|
||||
name="basic"
|
||||
>
|
||||
<el-form
|
||||
@@ -23,7 +23,7 @@
|
||||
label-position="left"
|
||||
>
|
||||
<div class="title">
|
||||
基本信息
|
||||
{{ $t('catalog.medicine.basicInfo') }}
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@@ -31,7 +31,7 @@
|
||||
style="margin-left: 32px"
|
||||
@click="handleImportYb()"
|
||||
>
|
||||
从医保目录导入
|
||||
{{ $t('catalog.medicine.importFromYb') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
@@ -40,7 +40,7 @@
|
||||
:span="6"
|
||||
>
|
||||
<el-form-item
|
||||
label="药品编号"
|
||||
:label="$t('catalog.medicine.drugNo')"
|
||||
prop="busNo"
|
||||
>
|
||||
<el-input
|
||||
@@ -52,7 +52,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="通用名称"
|
||||
:label="$t('catalog.medicine.genericName')"
|
||||
prop="name"
|
||||
>
|
||||
<el-input
|
||||
@@ -63,7 +63,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="商品名称"
|
||||
:label="$t('catalog.medicine.brandName')"
|
||||
prop="merchandiseName"
|
||||
>
|
||||
<el-input
|
||||
@@ -74,12 +74,12 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="医保等级"
|
||||
:label="$t('catalog.medicine.ybLevel')"
|
||||
prop="chrgitmLv"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.chrgitmLv"
|
||||
placeholder="医保等级"
|
||||
:placeholder="$t('catalog.medicine.ybLevel')"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
@@ -97,7 +97,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="医保编码"
|
||||
:label="$t('catalog.medicine.ybCode')"
|
||||
prop="ybNo"
|
||||
>
|
||||
<el-input
|
||||
@@ -110,7 +110,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="贯标国家编码"
|
||||
:label="$t('catalog.medicine.nationalCode')"
|
||||
prop="nationalDrugCode"
|
||||
>
|
||||
<el-input
|
||||
@@ -121,7 +121,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="药品分类"
|
||||
:label="$t('catalog.medicine.drugCategory')"
|
||||
prop="categoryCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -141,7 +141,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="生产厂家 "
|
||||
:label="$t('catalog.medicine.manufacturer')"
|
||||
prop="manufacturerText"
|
||||
>
|
||||
<el-input
|
||||
@@ -152,7 +152,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="医保对码"
|
||||
:label="$t('catalog.medicine.ybMatch')"
|
||||
prop="ybMatchFlag"
|
||||
>
|
||||
<el-checkbox
|
||||
@@ -165,7 +165,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="69码"
|
||||
:label="$t('catalog.medicine.code69')"
|
||||
prop="drug69Code"
|
||||
>
|
||||
<el-input
|
||||
@@ -176,12 +176,12 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="title">
|
||||
临床信息
|
||||
{{ $t('catalog.medicine.clinicalInfo') }}
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="药品性质"
|
||||
:label="$t('catalog.medicine.drugProperty')"
|
||||
prop="pharmacologyCategoryCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -199,7 +199,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="规格"
|
||||
:label="$t('catalog.medicine.specification')"
|
||||
prop="totalVolume"
|
||||
>
|
||||
<el-input
|
||||
@@ -211,7 +211,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="计量换算"
|
||||
:label="$t('catalog.medicine.conversion')"
|
||||
prop="totalVolume"
|
||||
>
|
||||
<el-input
|
||||
@@ -224,7 +224,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="剂量单位"
|
||||
:label="$t('catalog.medicine.doseUnit')"
|
||||
prop="doseUnitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -246,7 +246,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="剂型"
|
||||
:label="$t('catalog.medicine.doseForm')"
|
||||
prop="doseFormCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -266,7 +266,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="用量限定"
|
||||
:label="$t('catalog.medicine.usageLimit')"
|
||||
prop="usageLimit"
|
||||
>
|
||||
<el-input
|
||||
@@ -277,7 +277,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="用法"
|
||||
:label="$t('catalog.medicine.method')"
|
||||
prop="methodCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -296,7 +296,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="用药频次"
|
||||
:label="$t('catalog.medicine.frequency')"
|
||||
prop="rateCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -317,7 +317,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="单次剂量"
|
||||
:label="$t('catalog.medicine.singleDose')"
|
||||
prop="dose"
|
||||
>
|
||||
<el-input
|
||||
@@ -328,7 +328,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="单次最大剂量"
|
||||
:label="$t('catalog.medicine.maxDose')"
|
||||
prop="maxUnit"
|
||||
>
|
||||
<el-input
|
||||
@@ -339,7 +339,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="用法说明"
|
||||
:label="$t('catalog.medicine.dosageInstruction')"
|
||||
prop="dosageInstruction"
|
||||
>
|
||||
<el-select
|
||||
@@ -358,7 +358,7 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="title">
|
||||
库存信息
|
||||
{{ $t('catalog.medicine.stockInfo') }}
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="6">
|
||||
@@ -380,7 +380,7 @@
|
||||
</el-col> -->
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="采购入库位置"
|
||||
:label="$t('catalog.medicine.stockLocation')"
|
||||
prop="locationId"
|
||||
>
|
||||
<el-tree-select
|
||||
@@ -392,7 +392,7 @@
|
||||
children: 'children',
|
||||
}"
|
||||
value-key="id"
|
||||
placeholder="请选择采购入库位置"
|
||||
:placeholder="$t('catalog.medicine.selectStockLocation')"
|
||||
check-strictly
|
||||
clearable
|
||||
filterable
|
||||
@@ -401,7 +401,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="包装单位"
|
||||
:label="$t('catalog.medicine.packUnit')"
|
||||
prop="unitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -421,7 +421,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="最小单位"
|
||||
:label="$t('catalog.medicine.minUnit')"
|
||||
prop="minUnitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -441,7 +441,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="警戒线最低值(常规单位)"
|
||||
:label="$t('catalog.medicine.alertMin')"
|
||||
prop="itemMinQuantity"
|
||||
label-width="180px"
|
||||
>
|
||||
@@ -458,7 +458,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="门诊拆分属性"
|
||||
:label="$t('catalog.medicine.outpatientSplit')"
|
||||
prop="partAttributeEnum"
|
||||
>
|
||||
<el-select
|
||||
@@ -476,7 +476,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="住院临时医嘱拆分属性"
|
||||
:label="$t('catalog.medicine.inpatientSplit')"
|
||||
prop="thoPartAttributeEnum"
|
||||
class="custom-label-height"
|
||||
>
|
||||
@@ -495,7 +495,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="拆零比"
|
||||
:label="$t('catalog.medicine.partPercent')"
|
||||
prop="partPercent"
|
||||
>
|
||||
<el-input-number
|
||||
@@ -511,7 +511,7 @@
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="警戒线最高值(常规单位)"
|
||||
:label="$t('catalog.medicine.alertMax')"
|
||||
prop="itemMaxQuantity"
|
||||
label-width="180px"
|
||||
>
|
||||
@@ -525,12 +525,12 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="title">
|
||||
价格信息
|
||||
{{ $t('catalog.medicine.priceInfo') }}
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="购入价"
|
||||
:label="$t('catalog.medicine.purchasePrice')"
|
||||
prop="purchasePrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -543,7 +543,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="零售价"
|
||||
:label="$t('catalog.medicine.retailPrice')"
|
||||
prop="retailPrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -556,7 +556,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="最高零售价"
|
||||
:label="$t('catalog.medicine.maxRetailPrice')"
|
||||
prop="maximumRetailPrice"
|
||||
>
|
||||
<el-input
|
||||
@@ -568,12 +568,12 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="title">
|
||||
业务信息
|
||||
{{ $t('catalog.medicine.bizInfo') }}
|
||||
</div>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="财务类型"
|
||||
:label="$t('catalog.medicine.financeType')"
|
||||
prop="typeCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -593,7 +593,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="药品版本"
|
||||
:label="$t('catalog.medicine.version')"
|
||||
prop="version"
|
||||
>
|
||||
<el-input
|
||||
@@ -604,7 +604,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="批准文号"
|
||||
:label="$t('catalog.medicine.approvalNumber')"
|
||||
prop="approvalNumber"
|
||||
>
|
||||
<el-input
|
||||
@@ -638,12 +638,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="医保类别"
|
||||
:label="$t('catalog.medicine.ybCategory')"
|
||||
prop="ybType"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.ybType"
|
||||
placeholder="医保类别"
|
||||
:placeholder="$t('catalog.medicine.ybCategory')"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
@@ -672,7 +672,7 @@
|
||||
</el-col> -->
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="基药标识"
|
||||
:label="$t('catalog.medicine.essentialDrug')"
|
||||
prop="basicFlag"
|
||||
>
|
||||
<el-checkbox
|
||||
@@ -683,7 +683,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="皮试判别"
|
||||
:label="$t('catalog.medicine.skinTest')"
|
||||
prop="skinTestFlag"
|
||||
>
|
||||
<el-checkbox
|
||||
@@ -696,7 +696,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="注射药品"
|
||||
:label="$t('catalog.medicine.injectable')"
|
||||
prop="injectFlag"
|
||||
>
|
||||
<el-checkbox
|
||||
@@ -707,7 +707,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="儿童用药标志"
|
||||
:label="$t('catalog.medicine.childrenDrug')"
|
||||
prop="childrenFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.childrenFlag" />
|
||||
@@ -715,7 +715,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="自制药标识"
|
||||
:label="$t('catalog.medicine.selfMade')"
|
||||
prop="selfFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.selfFlag" />
|
||||
@@ -723,7 +723,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="是否活性"
|
||||
:label="$t('catalog.medicine.isActive')"
|
||||
prop="activeFlag"
|
||||
>
|
||||
<el-checkbox
|
||||
@@ -736,7 +736,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="限制使用"
|
||||
:label="$t('catalog.medicine.restricted')"
|
||||
prop="restrictedFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.restrictedFlag" />
|
||||
@@ -744,7 +744,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="限制使用范围"
|
||||
:label="$t('catalog.medicine.restrictedScope')"
|
||||
prop="restrictedScope"
|
||||
>
|
||||
<el-input
|
||||
@@ -755,7 +755,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="抗生素"
|
||||
:label="$t('catalog.medicine.antibiotic')"
|
||||
prop="antibioticFlag"
|
||||
>
|
||||
<el-checkbox v-model="form.antibioticFlag" />
|
||||
@@ -763,7 +763,7 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="处方标志"
|
||||
:label="$t('catalog.medicine.rxFlag')"
|
||||
prop="rxFlag"
|
||||
>
|
||||
<el-radio-group
|
||||
@@ -787,7 +787,7 @@
|
||||
<!-- <el-tab-pane label="抗生素信息" v-if="form.id != undefined && form.antibioticFlag"> -->
|
||||
<el-tab-pane
|
||||
v-if="form.antibioticFlag"
|
||||
label="抗生素信息"
|
||||
:label="$t('catalog.medicine.antibioticInfo')"
|
||||
name="antibiotic"
|
||||
>
|
||||
<el-form
|
||||
@@ -800,7 +800,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="20">
|
||||
<el-form-item
|
||||
label="抗生素分类"
|
||||
:label="$t('catalog.medicine.antibioticCategory')"
|
||||
prop="antibioticCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -820,7 +820,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="权限级别"
|
||||
:label="$t('catalog.medicine.permissionLevel')"
|
||||
prop="conditionCode"
|
||||
class="custom-label-spacing"
|
||||
>
|
||||
@@ -841,12 +841,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="单次剂量"
|
||||
:label="$t('catalog.medicine.singleDose')"
|
||||
prop="dose"
|
||||
>
|
||||
<el-input
|
||||
v-model="antibioticForm.dose"
|
||||
placeholder="输入剂量"
|
||||
:placeholder="$t('catalog.medicine.enterDose')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -867,7 +867,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="频次范围"
|
||||
:label="$t('catalog.medicine.frequencyRange')"
|
||||
prop="minRateCode"
|
||||
>
|
||||
<el-input
|
||||
@@ -890,13 +890,13 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
(小时一次)
|
||||
({{ $t('catalog.medicine.hoursPerTime') }})
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="DDD值"
|
||||
:label="$t('catalog.medicine.dddValue')"
|
||||
prop="dddCode"
|
||||
>
|
||||
<!-- <el-select v-model="antibioticForm.dddCode" clearable>
|
||||
@@ -915,7 +915,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="DDD单位"
|
||||
:label="$t('catalog.medicine.dddUnit')"
|
||||
prop="dddUnitCode"
|
||||
>
|
||||
<el-select
|
||||
@@ -941,10 +941,10 @@
|
||||
type="primary"
|
||||
@click="submitForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="cancel">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -954,9 +954,12 @@
|
||||
|
||||
<script setup name="MedicineDialog">
|
||||
import {deptTreeSelect, locationTreeSelect, medicineDictMap} from './medicine';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { computed } from 'vue';
|
||||
|
||||
const router = useRouter();
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
const {
|
||||
med_category_code,
|
||||
system_categories,
|
||||
@@ -1025,47 +1028,41 @@ const statusRestrictedOptions = ref(undefined);
|
||||
const partAttributeEnumOptions = ref(undefined);
|
||||
const tempOrderSplitPropertyOptions = ref(undefined);
|
||||
const activeName = ref('basic');
|
||||
const rules = computed(() => ({
|
||||
locationId: [{ required: true, message: t('catalog.medicine.locationRequired'), trigger: 'blur' }],
|
||||
doseFormCode: [{ required: true, message: t('catalog.medicine.doseFormRequired'), trigger: 'blur' }],
|
||||
totalVolume: [{ required: true, message: t('catalog.medicine.specRequired'), trigger: 'blur' }],
|
||||
doseUnitCode: [{ required: true, message: t('catalog.medicine.doseUnitRequired'), trigger: 'blur' }],
|
||||
manufacturerText: [{ required: true, message: t('catalog.medicine.manufacturerRequired'), trigger: 'blur' }],
|
||||
busNo: [{ required: true, message: t('catalog.medicine.busNoRequired'), trigger: 'blur' }],
|
||||
name: [{ required: true, message: t('catalog.medicine.nameRequired'), trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: t('catalog.medicine.categoryRequired'), trigger: 'blur' }],
|
||||
unitConversionRatio: [{ required: true, message: t('catalog.medicine.conversionRequired'), trigger: 'blur' }],
|
||||
merchandiseName: [{ required: true, message: t('catalog.medicine.merchNameRequired'), trigger: 'blur' }],
|
||||
unitCode: [{ required: true, message: t('catalog.medicine.unitRequired'), trigger: 'blur' }],
|
||||
minUnitCode: [{ required: true, message: t('catalog.medicine.minUnitRequired'), trigger: 'blur' }],
|
||||
ingredient: [{ required: true, message: t('catalog.medicine.ingredientRequired'), trigger: 'blur' }],
|
||||
partPercent: [{ required: true, message: t('catalog.medicine.partPercentRequired'), trigger: 'blur' }],
|
||||
doseFrom: [{ required: true, message: t('catalog.medicine.doseFormTypeRequired'), trigger: 'blur' }],
|
||||
ybNo: [{ required: false, message: t('catalog.medicine.ybCodeRequired'), trigger: 'blur' }],
|
||||
pharmacologyCategoryCode: [{ required: true, message: t('catalog.medicine.pharmaRequired'), trigger: 'blur' }],
|
||||
supplyId: [{ required: true, message: t('catalog.medicine.supplierRequired'), trigger: 'blur' }],
|
||||
nationalDrugCode: [{ required: false, message: t('catalog.medicine.nationalCodeRequired'), trigger: 'blur' }],
|
||||
partAttributeEnum: [{ required: true, message: t('catalog.medicine.splitAttrRequired'), trigger: 'blur' }],
|
||||
thoPartAttributeEnum: [{ required: true, message: t('catalog.medicine.tempSplitRequired'), trigger: 'blur' }],
|
||||
purchasePrice: [{ required: true, message: t('catalog.medicine.purchasePriceRequired'), trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: t('catalog.medicine.retailPriceRequired'), trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: t('catalog.medicine.ybTypeRequired'), trigger: 'blur' }],
|
||||
rxFlag: [{ required: true, message: t('catalog.medicine.rxFlagRequired'), trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: t('catalog.medicine.ybLevelRequired'), trigger: 'blur' }],
|
||||
typeCode: [{ required: true, message: t('catalog.medicine.financeTypeRequired'), trigger: 'blur' }],
|
||||
}));
|
||||
const data = reactive({
|
||||
form: {},
|
||||
antibioticForm: {},
|
||||
rules: {
|
||||
locationId: [{ required: true, message: '所在位置不能为空', trigger: 'blur' }],
|
||||
doseFormCode: [{ required: true, message: '剂型不能为空', trigger: 'blur' }],
|
||||
totalVolume: [{ required: true, message: '规格不能为空', trigger: 'blur' }],
|
||||
doseUnitCode: [{ required: true, message: '剂量单位不能为空', trigger: 'blur' }],
|
||||
manufacturerText: [{ required: true, message: '生产厂家不能为空', trigger: 'blur' }],
|
||||
busNo: [{ required: true, message: '药品编号不能为空', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '药品名称不能为空', trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: '药品分类不能为空', trigger: 'blur' }],
|
||||
unitConversionRatio: [{ required: true, message: '计量换算不能为空', trigger: 'blur' }],
|
||||
merchandiseName: [{ required: true, message: '商品名称不能为空', trigger: 'blur' }],
|
||||
unitCode: [{ required: true, message: '药品单位不能为空', trigger: 'blur' }],
|
||||
minUnitCode: [{ required: true, message: '最小单位不能为空', trigger: 'blur' }],
|
||||
ingredient: [{ required: true, message: '成分不能为空', trigger: 'blur' }],
|
||||
partPercent: [{ required: true, message: '拆零比不能为空', trigger: 'blur' }],
|
||||
doseFrom: [{ required: true, message: '剂量形式不能为空', trigger: 'blur' }],
|
||||
ybNo: [{ required: false, message: '医保编码不能为空', trigger: 'blur' }],
|
||||
pharmacologyCategoryCode: [{ required: true, message: '药品性质不能为空', trigger: 'blur' }],
|
||||
supplyId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
|
||||
nationalDrugCode: [{ required: false, message: '贯标国家编码不能为空', trigger: 'blur' }],
|
||||
partAttributeEnum: [{ required: true, message: '拆分属性不能为空', trigger: 'blur' }],
|
||||
thoPartAttributeEnum: [
|
||||
{
|
||||
required: true,
|
||||
message: '住院临时医嘱拆分属性不能为空',
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
purchasePrice: [{ required: true, message: '购入价不能为空', trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: '医保类型不能为空', trigger: 'blur' }],
|
||||
rxFlag: [{ required: true, message: '处方标志不能为空', trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: '医保等级不能为空', trigger: 'blur' }],
|
||||
typeCode: [{ required: true, message: '财务类型不能为空', trigger: 'blur' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { form, antibioticForm, rules } = toRefs(data);
|
||||
const { form, antibioticForm } = toRefs(data);
|
||||
|
||||
const props = defineProps({
|
||||
item: {
|
||||
@@ -1105,7 +1102,7 @@ const props = defineProps({
|
||||
function validateMaxUnit(rule, value, callback) {
|
||||
const numberRegex = /^[0-9]+$/; // 正则表达式,确保输入为数字
|
||||
if (!numberRegex.test(value)) {
|
||||
callback(new Error('请输入有效的数字'));
|
||||
callback(new Error(t('catalog.medicine.validNumber')));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
@@ -1124,7 +1121,7 @@ function getLocationTree() {
|
||||
}
|
||||
// 显示弹框
|
||||
function show(row) {
|
||||
title.value = '新增药品';
|
||||
title.value = t('catalog.medicine.addTitle');
|
||||
activeName.value = 'basic';
|
||||
getLocationTree();
|
||||
getDeptTree();
|
||||
@@ -1184,7 +1181,7 @@ function formatValue(str) {
|
||||
|
||||
// 显示弹框
|
||||
function edit() {
|
||||
title.value = '编辑药品';
|
||||
title.value = t('catalog.medicine.editTitle');
|
||||
reset();
|
||||
activeName.value = 'basic';
|
||||
getLocationTree();
|
||||
@@ -1363,10 +1360,10 @@ function submitForm() {
|
||||
function handleLvChange(value) {
|
||||
if (value != 3) {
|
||||
setTimeout(() => {
|
||||
data.rules.ybNo = [{ required: true, message: '医保编码不能为空', trigger: 'blur' }];
|
||||
data.rules.ybNo = [{ required: true, message: t('catalog.medicine.ybCodeRequired'), trigger: 'blur' }];
|
||||
|
||||
data.rules.nationalDrugCode = [
|
||||
{ required: true, message: '贯标国家编码不能为空', trigger: 'blur' },
|
||||
{ required: true, message: t('catalog.medicine.nationalCodeRequired'), trigger: 'blur' },
|
||||
];
|
||||
}, 0);
|
||||
setTimeout(() => {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
>
|
||||
<div class="head-container">
|
||||
<div class="head-title">
|
||||
药品目录
|
||||
{{ $t('catalog.medicine.title') }}
|
||||
</div>
|
||||
<el-tree
|
||||
ref="medicationTreeRef"
|
||||
@@ -38,13 +38,13 @@
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="5"> -->
|
||||
<el-form-item
|
||||
label="药品"
|
||||
:label="$t('catalog.medicine.drugLabel')"
|
||||
prop="searchKey"
|
||||
label-width="40"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="品名/商品名/英文品名/编码/拼音"
|
||||
:placeholder="$t('catalog.medicine.searchPlaceholder')"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -53,7 +53,7 @@
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="5"> -->
|
||||
<el-form-item
|
||||
label="状态"
|
||||
:label="$t('common.status')"
|
||||
prop="statusEnum"
|
||||
label-width="100"
|
||||
>
|
||||
@@ -72,7 +72,7 @@
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="4"> -->
|
||||
<el-form-item
|
||||
label="医保对码"
|
||||
:label="$t('catalog.medicine.ybMatch')"
|
||||
prop="ybMatchFlag"
|
||||
label-width="100"
|
||||
>
|
||||
@@ -90,7 +90,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保接口编号"
|
||||
:label="$t('catalog.medicine.ybInterfaceNo')"
|
||||
prop="searchKey"
|
||||
label-width="120"
|
||||
>
|
||||
@@ -103,13 +103,13 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="版本号"
|
||||
:label="$t('catalog.medicine.versionNo')"
|
||||
prop="searchKey"
|
||||
label-width="120"
|
||||
>
|
||||
<el-input
|
||||
v-model="queryParams.v"
|
||||
placeholder="版本号"
|
||||
:placeholder="$t('catalog.medicine.versionNo')"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
@@ -134,7 +134,7 @@
|
||||
icon="Plus"
|
||||
@click="openAddMedicine"
|
||||
>
|
||||
添加新项目
|
||||
{{ $t('catalog.medicine.addNew') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -145,7 +145,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleClose"
|
||||
>
|
||||
停用
|
||||
{{ $t('common.disabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -156,7 +156,7 @@
|
||||
:disabled="multiple"
|
||||
@click="handleStart"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enabled') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
icon="Upload"
|
||||
@click="handleImport"
|
||||
>
|
||||
导入
|
||||
{{ $t('common.import') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -178,7 +178,7 @@
|
||||
icon="Search"
|
||||
@click="getList"
|
||||
>
|
||||
查询
|
||||
{{ $t('common.search') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
@@ -188,7 +188,7 @@
|
||||
icon="Search"
|
||||
@click="getYbCatalog"
|
||||
>
|
||||
查询目录
|
||||
{{ $t('catalog.medicine.queryCatalog') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
@@ -216,7 +216,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="busNo"
|
||||
title="药品编号"
|
||||
:title="$t('catalog.medicine.drugNo')"
|
||||
align="center"
|
||||
field="busNo"
|
||||
show-overflow="title"
|
||||
@@ -225,7 +225,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="name"
|
||||
title="药品名称"
|
||||
:title="$t('catalog.medicine.drugName')"
|
||||
align="center"
|
||||
field="name"
|
||||
show-overflow="title"
|
||||
@@ -236,7 +236,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="totalVolume"
|
||||
title="规格"
|
||||
:title="$t('catalog.medicine.specification')"
|
||||
align="center"
|
||||
field="totalVolume"
|
||||
show-overflow="title"
|
||||
@@ -245,7 +245,7 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="statusEnum_enumText"
|
||||
title="药品状态"
|
||||
:title="$t('catalog.medicine.drugStatus')"
|
||||
align="center"
|
||||
field="statusEnum_enumText"
|
||||
show-overflow="title"
|
||||
@@ -269,7 +269,7 @@
|
||||
</vxe-column>
|
||||
<vxe-column
|
||||
key="categoryCode_dictText"
|
||||
title="药品分类"
|
||||
:title="$t('catalog.medicine.drugCategory')"
|
||||
align="center"
|
||||
field="categoryCode_dictText"
|
||||
show-overflow="title"
|
||||
@@ -292,7 +292,7 @@
|
||||
|
||||
<vxe-column
|
||||
key="ybNo"
|
||||
title="医保编码"
|
||||
:title="$t('catalog.medicine.ybCode')"
|
||||
align="center"
|
||||
field="ybNo"
|
||||
show-overflow="title"
|
||||
@@ -300,14 +300,14 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="ybMatchFlag_enumText"
|
||||
title="医保是否对码"
|
||||
:title="$t('catalog.medicine.ybMatchStatus')"
|
||||
align="center"
|
||||
field="ybMatchFlag_enumText"
|
||||
show-overflow="title"
|
||||
/>
|
||||
<vxe-column
|
||||
key="drug69Code"
|
||||
title="69码"
|
||||
:title="$t('catalog.medicine.code69')"
|
||||
align="center"
|
||||
field="drug69Code"
|
||||
show-overflow="title"
|
||||
@@ -322,7 +322,7 @@
|
||||
/> -->
|
||||
<vxe-column
|
||||
key="purchasePrice"
|
||||
title="采购价"
|
||||
:title="$t('catalog.medicine.purchasePrice')"
|
||||
align="center"
|
||||
field="purchasePrice"
|
||||
show-overflow="title"
|
||||
@@ -330,14 +330,14 @@
|
||||
/>
|
||||
<vxe-column
|
||||
key="retailPrice"
|
||||
title="售价"
|
||||
:title="$t('catalog.medicine.price')"
|
||||
align="center"
|
||||
field="retailPrice"
|
||||
show-overflow="title"
|
||||
width="90"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
@@ -350,7 +350,7 @@
|
||||
icon="Edit"
|
||||
@click="openEditMedicine(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -414,18 +414,18 @@
|
||||
<upload-filled />
|
||||
</el-icon>
|
||||
<div class="el-upload__text">
|
||||
将文件拖到此处,或<em>点击上传</em>
|
||||
{{ $t('catalog.medicine.dragOrClick') }}<em>{{ $t('catalog.medicine.clickUpload') }}</em>
|
||||
</div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip text-center">
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<span>{{ $t('catalog.medicine.uploadTip') }}</span>
|
||||
<el-link
|
||||
type="primary"
|
||||
:underline="false"
|
||||
style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate"
|
||||
>
|
||||
下载模板
|
||||
{{ $t('catalog.medicine.downloadTemplate') }}
|
||||
</el-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -436,10 +436,10 @@
|
||||
type="primary"
|
||||
@click="submitFileForm"
|
||||
>
|
||||
确 定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
<el-button @click="upload.open = false">
|
||||
取 消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
@@ -463,8 +463,10 @@ import {
|
||||
import medicineDialog from './components/medicineDialog';
|
||||
import MedicineYbDialog from './components/medicineYbDialog';
|
||||
import {nextTick} from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { t } = useI18n();
|
||||
|
||||
const medicationList = ref([]);
|
||||
const open = ref(false);
|
||||
@@ -534,7 +536,7 @@ const filterNode = (value, data) => {
|
||||
function getMedicationCategoryList() {
|
||||
getMedicationCategory().then((response) => {
|
||||
medicationOptions.value = response.data.medicationCategoryCodeOptions;
|
||||
medicationOptions.value.unshift({ info: '全部', value: '' });
|
||||
medicationOptions.value.unshift({ info: t('catalog.medicine.all'), value: '' });
|
||||
statusFlagOptions.value = response.data.statusFlagOptions;
|
||||
domainEnumOptions.value = response.data.domainFlagOptions;
|
||||
supplierListOptions.value = response.data.supplierListOptions;
|
||||
@@ -577,13 +579,13 @@ function handleQuery() {
|
||||
function handleStart() {
|
||||
const startIds = ids.value;
|
||||
proxy.$modal
|
||||
.confirm('是否确定启用数据!')
|
||||
.confirm(t('catalog.medicine.confirmEnable'))
|
||||
.then(function () {
|
||||
return startMedication(startIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.medicine.enableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -591,13 +593,13 @@ function handleStart() {
|
||||
function handleClose() {
|
||||
const stopIds = ids.value;
|
||||
proxy.$modal
|
||||
.confirm('是否确认停用数据!')
|
||||
.confirm(t('catalog.medicine.confirmDisable'))
|
||||
.then(function () {
|
||||
return stopMedication(stopIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.medicine.disableSuccess'));
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
@@ -614,7 +616,7 @@ function handleExport() {
|
||||
|
||||
/** 导入按钮操作 */
|
||||
function handleImport() {
|
||||
upload.title = '药品目录导入';
|
||||
upload.title = t('catalog.medicine.importTitle');
|
||||
upload.open = true;
|
||||
}
|
||||
/** 下载模板操作 */
|
||||
@@ -638,7 +640,7 @@ const handleFileSuccess = (response, file, fileList) => {
|
||||
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||
response.msg +
|
||||
'</div>',
|
||||
'导入结果',
|
||||
t('catalog.medicine.importResult'),
|
||||
{ dangerouslyUseHTMLString: true }
|
||||
);
|
||||
getList();
|
||||
@@ -687,7 +689,7 @@ function getMedicationInfo(row) {
|
||||
function submitForm(formData) {
|
||||
if (formData.id != undefined) {
|
||||
editMedication(formData).then((response) => {
|
||||
proxy.$modal.msgSuccess('修改成功');
|
||||
proxy.$modal.msgSuccess(t('common.message'));
|
||||
proxy.$refs['medicineRef'].cancel();
|
||||
open.value = false;
|
||||
getList();
|
||||
@@ -697,7 +699,7 @@ function submitForm(formData) {
|
||||
} else {
|
||||
addMedication(formData).then((response) => {
|
||||
if (response.code == 200) {
|
||||
proxy.$modal.msgSuccess('新增成功');
|
||||
proxy.$modal.msgSuccess(t('catalog.medicine.addSuccess'));
|
||||
proxy.$refs['medicineRef'].cancel();
|
||||
open.value = false;
|
||||
getList();
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
:inline="true"
|
||||
size="small"
|
||||
>
|
||||
<el-form-item label="项目名">
|
||||
<el-form-item :label="$t('catalog.national.itemName')">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="国临编码/国临名称/医保编码/医保名称"
|
||||
:placeholder="$t('catalog.national.searchPlaceholder')"
|
||||
clearable
|
||||
style="width: 280px"
|
||||
/>
|
||||
@@ -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>
|
||||
@@ -46,26 +46,26 @@
|
||||
icon="Plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
添加新项目
|
||||
{{ $t('catalog.national.addNew') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
icon="Stop"
|
||||
@click="handleDelete"
|
||||
>
|
||||
删除
|
||||
{{ $t('common.delete') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
icon="Check"
|
||||
>
|
||||
启用
|
||||
{{ $t('common.enabled') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="info"
|
||||
icon="Download"
|
||||
>
|
||||
导入
|
||||
{{ $t('common.import') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
<vxe-column
|
||||
key="glNo"
|
||||
field="glNo"
|
||||
title="国临版疾病编码"
|
||||
:title="$t('catalog.national.glCode')"
|
||||
show-overflow="title"
|
||||
align="center"
|
||||
width="180"
|
||||
@@ -94,7 +94,7 @@
|
||||
<vxe-column
|
||||
key="glName"
|
||||
field="glName"
|
||||
title="国临版疾病名称"
|
||||
:title="$t('catalog.national.glName')"
|
||||
show-overflow="title"
|
||||
align="center"
|
||||
min-width="200"
|
||||
@@ -103,7 +103,7 @@
|
||||
<vxe-column
|
||||
key="icd10No"
|
||||
field="icd10No"
|
||||
title="医保版疾病编码"
|
||||
:title="$t('catalog.national.icd10Code')"
|
||||
show-overflow="title"
|
||||
align="center"
|
||||
width="180"
|
||||
@@ -112,13 +112,13 @@
|
||||
<vxe-column
|
||||
key="icd10Name"
|
||||
field="icd10Name"
|
||||
title="医保版疾病名称"
|
||||
:title="$t('catalog.national.icd10Name')"
|
||||
show-overflow="title"
|
||||
align="center"
|
||||
min-width="200"
|
||||
/>
|
||||
<vxe-column
|
||||
title="操作"
|
||||
:title="$t('common.operation')"
|
||||
width="120"
|
||||
align="center"
|
||||
>
|
||||
@@ -129,7 +129,7 @@
|
||||
size="small"
|
||||
@click="handleEdit(scope.row)"
|
||||
>
|
||||
编辑
|
||||
{{ $t('common.edit') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
@@ -151,7 +151,7 @@
|
||||
<!-- 添加对话框 -->
|
||||
<el-dialog
|
||||
v-model="addDialogVisible"
|
||||
title="添加国临编码"
|
||||
:title="$t('catalog.national.addTitle')"
|
||||
width="600px"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
@@ -163,62 +163,62 @@
|
||||
size="small"
|
||||
>
|
||||
<el-form-item
|
||||
label="国临版疾病编码"
|
||||
:label="$t('catalog.national.glCode')"
|
||||
prop="glNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="addFormData.glNo"
|
||||
placeholder="请输入国临版疾病编码"
|
||||
:placeholder="$t('catalog.national.enterGlNo')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="国临版疾病名称"
|
||||
:label="$t('catalog.national.glName')"
|
||||
prop="glName"
|
||||
>
|
||||
<el-input
|
||||
v-model="addFormData.glName"
|
||||
placeholder="请输入国临版疾病名称"
|
||||
:placeholder="$t('catalog.national.enterGlName')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保版疾病编码"
|
||||
:label="$t('catalog.national.icd10Code')"
|
||||
prop="icd10No"
|
||||
>
|
||||
<el-input
|
||||
v-model="addFormData.icd10No"
|
||||
placeholder="请输入医保版疾病编码"
|
||||
:placeholder="$t('catalog.national.enterIcd10No')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保版疾病名称"
|
||||
:label="$t('catalog.national.icd10Name')"
|
||||
prop="icd10Name"
|
||||
>
|
||||
<el-input
|
||||
v-model="addFormData.icd10Name"
|
||||
placeholder="请输入医保版疾病名称"
|
||||
:placeholder="$t('catalog.national.enterIcd10Name')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="handleClose">
|
||||
取消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSubmit"
|
||||
>
|
||||
确定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 编辑对话框 -->
|
||||
<el-dialog
|
||||
v-model="editDialogVisible"
|
||||
title="编辑国临编码"
|
||||
:title="$t('catalog.national.editTitle')"
|
||||
width="600px"
|
||||
:before-close="handleEditClose"
|
||||
>
|
||||
@@ -230,55 +230,55 @@
|
||||
size="small"
|
||||
>
|
||||
<el-form-item
|
||||
label="国临版疾病编码"
|
||||
:label="$t('catalog.national.glCode')"
|
||||
prop="glNo"
|
||||
>
|
||||
<el-input
|
||||
v-model="editFormData.glNo"
|
||||
placeholder="请输入国临版疾病编码"
|
||||
:placeholder="$t('catalog.national.enterGlNo')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="国临版疾病名称"
|
||||
:label="$t('catalog.national.glName')"
|
||||
prop="glName"
|
||||
>
|
||||
<el-input
|
||||
v-model="editFormData.glName"
|
||||
placeholder="请输入国临版疾病名称"
|
||||
:placeholder="$t('catalog.national.enterGlName')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保版疾病编码"
|
||||
:label="$t('catalog.national.icd10Code')"
|
||||
prop="icd10No"
|
||||
>
|
||||
<el-input
|
||||
v-model="editFormData.icd10No"
|
||||
placeholder="请输入医保版疾病编码"
|
||||
:placeholder="$t('catalog.national.enterIcd10No')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="医保版疾病名称"
|
||||
:label="$t('catalog.national.icd10Name')"
|
||||
prop="icd10Name"
|
||||
>
|
||||
<el-input
|
||||
v-model="editFormData.icd10Name"
|
||||
placeholder="请输入医保版疾病名称"
|
||||
:placeholder="$t('catalog.national.enterIcd10Name')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditClose">
|
||||
取消
|
||||
{{ $t('common.cancel') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleEditSubmit"
|
||||
>
|
||||
确定
|
||||
{{ $t('common.confirm') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@@ -286,13 +286,15 @@
|
||||
</template>
|
||||
|
||||
<script setup name="NationalCode">
|
||||
import {onMounted, reactive, ref} from 'vue';
|
||||
import {computed, onMounted, reactive, ref} from 'vue';
|
||||
import {useRoute, useRouter} from 'vue-router';
|
||||
import {ElMessage, ElMessageBox} from 'element-plus';
|
||||
import request from '@/utils/request';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const { t } = useI18n();
|
||||
|
||||
// 页面数据
|
||||
const loading = ref(true);
|
||||
@@ -323,20 +325,20 @@ const editFormData = reactive({
|
||||
});
|
||||
|
||||
// 表单验证规则
|
||||
const rules = {
|
||||
const rules = computed(() => ({
|
||||
glNo: [
|
||||
{ required: true, message: '请输入国临版疾病编码', trigger: 'blur' }
|
||||
{ required: true, message: t('catalog.national.enterGlNo'), trigger: 'blur' }
|
||||
],
|
||||
glName: [
|
||||
{ required: true, message: '请输入国临版疾病名称', trigger: 'blur' }
|
||||
{ required: true, message: t('catalog.national.enterGlName'), trigger: 'blur' }
|
||||
],
|
||||
icd10No: [
|
||||
{ required: true, message: '请输入医保版疾病编码', trigger: 'blur' }
|
||||
{ required: true, message: t('catalog.national.enterIcd10No'), trigger: 'blur' }
|
||||
],
|
||||
icd10Name: [
|
||||
{ required: true, message: '请输入医保版疾病名称', trigger: 'blur' }
|
||||
{ required: true, message: t('catalog.national.enterIcd10Name'), trigger: 'blur' }
|
||||
]
|
||||
};
|
||||
}));
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive({
|
||||
@@ -375,14 +377,14 @@ function handleCurrentChange(current) {
|
||||
function handleDelete() {
|
||||
// 安全检查ids.value是否存在且为数组
|
||||
if (!ids.value || ids.value.length === 0) {
|
||||
ElMessage.warning('请先选择要删除的数据');
|
||||
ElMessage.warning(t('catalog.national.selectToDelete'));
|
||||
return;
|
||||
}
|
||||
|
||||
// 显示确认对话框
|
||||
ElMessageBox.confirm('确定要删除选中的数据吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
ElMessageBox.confirm(t('catalog.national.confirmDeleteSelected'), t('common.tip'), {
|
||||
confirmButtonText: t('common.confirm'),
|
||||
cancelButtonText: t('common.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
loading.value = true;
|
||||
@@ -392,7 +394,7 @@ function handleDelete() {
|
||||
|
||||
if (validIds.length === 0) {
|
||||
loading.value = false;
|
||||
ElMessage.warning('没有有效的数据可删除');
|
||||
ElMessage.warning(t('catalog.national.noValidData'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -407,18 +409,18 @@ function handleDelete() {
|
||||
}).then(res => {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('删除成功');
|
||||
ElMessage.success(t('catalog.national.deleteSuccess'));
|
||||
// 刷新列表
|
||||
getList();
|
||||
// 清空选中状态
|
||||
ids.value = [];
|
||||
} else {
|
||||
ElMessage.error(res.msg || '删除失败');
|
||||
ElMessage.error(res.msg || t('catalog.national.deleteFailed'));
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('删除数据失败:', error);
|
||||
ElMessage.error('删除失败,请稍后重试');
|
||||
ElMessage.error(t('catalog.national.deleteFailedRetry'));
|
||||
});
|
||||
}).catch(() => {
|
||||
// 用户取消删除操作
|
||||
@@ -492,16 +494,16 @@ function handleEditSubmit() {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
console.log('编辑国临编码成功');
|
||||
ElMessage.success('编辑成功');
|
||||
ElMessage.success(t('catalog.national.editSuccess'));
|
||||
editDialogVisible.value = false;
|
||||
getList();
|
||||
} else {
|
||||
ElMessage.error(res.msg || '编辑失败');
|
||||
ElMessage.error(res.msg || t('catalog.national.editFailed'));
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('编辑国临编码失败:', error);
|
||||
ElMessage.error('编辑失败,请稍后重试');
|
||||
ElMessage.error(t('catalog.national.editFailedRetry'));
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -514,7 +516,7 @@ function handleSubmit() {
|
||||
// 先进行查重校验
|
||||
checkAddDuplicate().then(isDuplicate => {
|
||||
if (isDuplicate) {
|
||||
ElMessage.warning('该项目已存在,请检查国临编码或医保编码是否重复');
|
||||
ElMessage.warning(t('catalog.national.duplicateWarning'));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -528,23 +530,23 @@ function handleSubmit() {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
// 成功提示
|
||||
ElMessage.success('添加成功');
|
||||
ElMessage.success(t('catalog.national.addSuccess'));
|
||||
// 关闭对话框
|
||||
addDialogVisible.value = false;
|
||||
// 刷新列表
|
||||
getList();
|
||||
} else {
|
||||
// 失败提示
|
||||
ElMessage.error(res.msg || '添加失败');
|
||||
ElMessage.error(res.msg || t('catalog.national.addFailed'));
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('添加国临编码失败:', error);
|
||||
ElMessage.error('添加失败,请稍后重试');
|
||||
ElMessage.error(t('catalog.national.addFailedRetry'));
|
||||
});
|
||||
}).catch(error => {
|
||||
console.error('查重校验失败:', error);
|
||||
ElMessage.error('校验失败,请稍后重试');
|
||||
ElMessage.error(t('catalog.national.checkFailedRetry'));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<span class="card-title">服务目录</span>
|
||||
<span class="card-title">{{ $t('catalog.service.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('catalog.service.searchPlaceholder')"
|
||||
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,41 +40,41 @@
|
||||
>
|
||||
<vxe-column
|
||||
type="seq"
|
||||
title="序号"
|
||||
:title="$t('catalog.service.seq')"
|
||||
width="60"
|
||||
/>
|
||||
<vxe-column
|
||||
field="itemCode"
|
||||
title="服务编码"
|
||||
:title="$t('catalog.service.code')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="itemName"
|
||||
title="服务名称"
|
||||
:title="$t('catalog.service.name')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="itemSpec"
|
||||
title="规格"
|
||||
:title="$t('catalog.service.spec')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="unit"
|
||||
title="单位"
|
||||
:title="$t('catalog.service.unit')"
|
||||
/>
|
||||
<vxe-column
|
||||
field="price"
|
||||
title="价格"
|
||||
:title="$t('catalog.service.price')"
|
||||
/>
|
||||
<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.operation')"
|
||||
width="150"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
@@ -83,14 +83,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>
|
||||
@@ -102,6 +102,9 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { getList, remove } from './components/api'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
const { t } = useI18n()
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 10 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = async () => {
|
||||
@@ -110,12 +113,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('catalog.service.developing')) }
|
||||
const handleEdit = (row) => { ElMessage.info(t('catalog.service.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('catalog.service.deleteSuccess'))
|
||||
handleQuery()
|
||||
}
|
||||
onMounted(() => handleQuery())
|
||||
|
||||
@@ -148,8 +148,8 @@ const priorityTagType = (priority) => {
|
||||
}
|
||||
|
||||
const priorityLabel = (priority) => {
|
||||
const map = { 2: '最高', 1: '紧急', 0: '普通' }
|
||||
return map[priority] || '普通'
|
||||
const map = { 2: t('cdss.rules.priorityHighest'), 1: t('cdss.rules.priorityUrgent'), 0: t('cdss.rules.priorityNormal') }
|
||||
return map[priority] || t('cdss.rules.priorityNormal')
|
||||
}
|
||||
|
||||
const getList = async () => {
|
||||
|
||||
Reference in New Issue
Block a user