解决合并冲突
This commit is contained in:
@@ -1,40 +1,47 @@
|
||||
import request from '@/utils/request'
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 查询器材目录列表
|
||||
export function getDeviceList(query) {
|
||||
console.log(query,'aaaaa')
|
||||
return request({
|
||||
export function getDeviceList (query) {
|
||||
return request ({
|
||||
url: '/data-dictionary/device/information-page',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询器材目录详细
|
||||
export function getDeviceOne(id) {
|
||||
return request({
|
||||
export function getDeviceOne (id) {
|
||||
return request ({
|
||||
url: '/data-dictionary/device/information-one',
|
||||
method: 'get',
|
||||
params: { id } // 确保参数正确传递
|
||||
})
|
||||
params: {id}, // 确保参数正确传递
|
||||
});
|
||||
}
|
||||
// 校验器材是否可以编辑
|
||||
export function validateEditDevice (deviceId) {
|
||||
return request ({
|
||||
url: '/data-dictionary/device/validate-edit',
|
||||
method: 'get',
|
||||
params: {deviceId}, // 确保参数正确传递
|
||||
});
|
||||
}
|
||||
|
||||
// 新增器材目录
|
||||
export function addDevice(data) {
|
||||
return request({
|
||||
export function addDevice (data) {
|
||||
return request ({
|
||||
url: '/data-dictionary/device/information',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 修改器材目录
|
||||
export function editDevice(data) {
|
||||
return request({
|
||||
export function editDevice (data) {
|
||||
return request ({
|
||||
url: '/data-dictionary/device/information',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// // 删除器材目录
|
||||
@@ -46,56 +53,56 @@ export function editDevice(data) {
|
||||
// }
|
||||
|
||||
// 器材目录分类查询
|
||||
export function getDiseaseTreatmentInit() {
|
||||
return request({
|
||||
export function getDiseaseTreatmentInit () {
|
||||
return request ({
|
||||
url: '/data-dictionary/device/init',
|
||||
method: 'get'
|
||||
})
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
// 停用病种目录
|
||||
export function stopDevice(ids) {
|
||||
console.log(ids)
|
||||
return request({
|
||||
export function stopDevice (ids) {
|
||||
console.log (ids);
|
||||
return request ({
|
||||
url: '/data-dictionary/device/information-stop',
|
||||
method: 'put',
|
||||
data: ids
|
||||
})
|
||||
data: ids,
|
||||
});
|
||||
}
|
||||
|
||||
// 启用病种目录
|
||||
export function startDevice(ids) {
|
||||
console.log(ids)
|
||||
return request({
|
||||
export function startDevice (ids) {
|
||||
console.log (ids);
|
||||
return request ({
|
||||
url: '/data-dictionary/device/information-start',
|
||||
method: 'put',
|
||||
data: ids
|
||||
})
|
||||
data: ids,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询部门树形数据
|
||||
export function deptTreeSelect(queryParams) {
|
||||
return request({
|
||||
export function deptTreeSelect (queryParams) {
|
||||
return request ({
|
||||
url: '/base-data-manage/organization/organization',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询地点树形数据
|
||||
export function locationTreeSelect(queryParams) {
|
||||
return request({
|
||||
export function locationTreeSelect (queryParams) {
|
||||
return request ({
|
||||
url: '/base-data-manage/location/location-page-tree',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取医疗服务项目目录
|
||||
export function getYbDeviceList(queryParams) {
|
||||
return request({
|
||||
export function getYbDeviceList (queryParams) {
|
||||
return request ({
|
||||
url: '/catalog/page',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8" v-if="form.id != undefined">
|
||||
<el-form-item label="编号" prop="busNo">
|
||||
<el-input v-model="form.busNo" placeholder="请输入编码" disabled />
|
||||
<el-input v-model="form.busNo" clearable placeholder="请输入编码" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="器材名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入器材名称" />
|
||||
<el-input v-model="form.name" clearable placeholder="请输入器材名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@@ -35,10 +35,10 @@
|
||||
<el-tree-select
|
||||
v-model="form.categoryCode"
|
||||
:data="deviceCategories"
|
||||
filterable
|
||||
:props="{ value: 'value', label: 'info', children: 'children' }"
|
||||
:disabled="false"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
value-key="value"
|
||||
placeholder=""
|
||||
check-strictly
|
||||
clearable
|
||||
/>
|
||||
@@ -48,7 +48,7 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="器材种类" prop="typeCode">
|
||||
<el-select v-model="form.typeCode" placeholder="请选择" clearable>
|
||||
<el-select v-model="form.typeCode" clearable filterable>
|
||||
<el-option
|
||||
v-for="dict in device_type_code"
|
||||
:key="dict.value"
|
||||
@@ -68,6 +68,7 @@
|
||||
placeholder="请选择提供部门"
|
||||
check-strictly
|
||||
clearable
|
||||
filterable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -81,6 +82,7 @@
|
||||
placeholder="请选择地点"
|
||||
check-strictly
|
||||
clearable
|
||||
filterable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -90,9 +92,10 @@
|
||||
<el-form-item label="包装单位" prop="unitCode">
|
||||
<el-select
|
||||
v-model="form.unitCode"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
filterable
|
||||
@change="handleUnitCodeChange"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in unit_code"
|
||||
@@ -105,7 +108,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="销售单位" prop="salesUnitCode">
|
||||
<el-select v-model="form.salesUnitCode" placeholder="请选择" clearable>
|
||||
<el-select v-model="form.salesUnitCode" clearable filterable>
|
||||
<el-option
|
||||
v-for="dict in unit_code"
|
||||
:key="dict.value"
|
||||
@@ -117,7 +120,12 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="最小单位" prop="minUnitCode">
|
||||
<el-select v-model="form.minUnitCode" placeholder="请选择" clearable>
|
||||
<el-select
|
||||
v-model="form.minUnitCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in unit_code"
|
||||
:key="dict.value"
|
||||
@@ -131,95 +139,70 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="包装规格" prop="size">
|
||||
<el-input v-model="form.size" placeholder="" />
|
||||
<el-input
|
||||
v-model="form.size"
|
||||
clearable
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="拆零比" prop="partPercent">
|
||||
<el-input-number v-model="form.partPercent" controls-position="right" placeholder="" :min="1"/>
|
||||
<el-input-number
|
||||
v-model="form.partPercent"
|
||||
controls-position="right"
|
||||
:min="1"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="产品型号" prop="modelNumber">
|
||||
<el-input v-model="form.modelNumber" placeholder="" />
|
||||
<el-input v-model="form.modelNumber" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="批准文号" prop="approvalNumber">
|
||||
<el-input v-model="form.approvalNumber" placeholder="" />
|
||||
<el-input v-model="form.approvalNumber" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="医保编码" prop="ybNo">
|
||||
<el-input v-model="form.ybNo" placeholder="" />
|
||||
<el-input v-model="form.ybNo" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="医药机构目录编码" prop="ybOrgNo" label-width="125px">
|
||||
<el-input v-model="form.ybOrgNo" placeholder="" />
|
||||
<el-input v-model="form.ybOrgNo" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="主要成分" prop="substanceText">
|
||||
<el-input v-model="form.substanceText" placeholder="" />
|
||||
<el-input v-model="form.substanceText" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="警戒线最低值(常规单位)" prop="itemMinQuantity" label-width="180px">
|
||||
<el-input-number
|
||||
v-model="form.itemMinQuantity"
|
||||
placeholder=""
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
/>
|
||||
<el-input-number v-model="form.itemMinQuantity" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="警戒线最高值(常规单位)" prop="itemMaxQuantity" label-width="180px">
|
||||
<el-input-number
|
||||
v-model="form.itemMaxQuantity"
|
||||
placeholder=""
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
/>
|
||||
<el-input-number v-model="form.itemMaxQuantity" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="器材版本" prop="version">
|
||||
<el-input v-model="form.version" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="状态" prop="statusEnum">
|
||||
<el-select
|
||||
v-model="form.statusEnum"
|
||||
placeholder="请选择"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in statusFlagOptions"
|
||||
:key="dict.value"
|
||||
:label="dict.info"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="生产厂家" prop="manufacturerText">
|
||||
<el-input v-model="form.manufacturerText" placeholder="" />
|
||||
<el-input v-model="form.manufacturerText" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商" prop="supplyId">
|
||||
<el-select v-model="form.supplyId" placeholder="" clearable style="width: 150px">
|
||||
<el-select v-model="form.supplyId" filterable clearable style="width: 150px">
|
||||
<el-option
|
||||
v-for="supplier in supplierListOptions"
|
||||
:key="supplier.value"
|
||||
@@ -255,7 +238,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="财务类型" prop="itemTypeCode">
|
||||
<el-select v-model="form.itemTypeCode" clearable>
|
||||
<el-select
|
||||
v-model="form.itemTypeCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in fin_type_code"
|
||||
:key="category.value"
|
||||
@@ -271,7 +259,9 @@
|
||||
v-model="form.ybType"
|
||||
placeholder="医保类别"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in med_chrgitm_type"
|
||||
@@ -284,7 +274,7 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="适用范围" prop="jurisdiction">
|
||||
<el-input v-model="form.jurisdiction" placeholder="" />
|
||||
<el-input v-model="form.jurisdiction" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -293,20 +283,23 @@
|
||||
<el-form-item label="购入价" prop="purchasePrice">
|
||||
<el-input
|
||||
v-model="form.purchasePrice"
|
||||
placeholder=""
|
||||
:disabled="false"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
@input="updatePrices"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="零售价" prop="retailPrice">
|
||||
<el-input v-model="form.retailPrice" placeholder="" :disabled="false" />
|
||||
<el-input
|
||||
v-model="form.retailPrice"
|
||||
clearable
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="最高零售价" prop="maximumRetailPrice">
|
||||
<el-input v-model="form.maximumRetailPrice" placeholder="" :disabled="false" />
|
||||
<el-input v-model="form.maximumRetailPrice" clearable :disabled="false" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -317,7 +310,9 @@
|
||||
v-model="form.chrgitmLv"
|
||||
placeholder="医保等级"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in chrgitm_lv"
|
||||
@@ -336,7 +331,7 @@
|
||||
v-model="form.description"
|
||||
:autosize="{ minRows: 4, maxRows: 10 }"
|
||||
type="textarea"
|
||||
placeholder=""
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -376,52 +371,27 @@ const supplierListOptions = ref([]); // 供应商列表
|
||||
const data = reactive({
|
||||
form: {},
|
||||
rules: {
|
||||
// busNo: [{ required: true, message: "编码不能为空", trigger: "blur" }],
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
// pyStr: [{ required: true, message: "拼音不能为空", trigger: "blur" }],
|
||||
// wbStr: [{ required: true, message: "五笔拼音不能为空", trigger: "blur" }],
|
||||
categoryCode: [{ required: true, message: '器材分类不能为空', trigger: 'blur' }],
|
||||
//typeCode: [{ 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' }],
|
||||
// modelNumber: [{ required: true, message: '产品型号不能为空', trigger: 'blur' }],
|
||||
// hvcmFlag: [
|
||||
// { required: true, message: "高值器材标志不能为空", trigger: "blur" },
|
||||
// ],
|
||||
itemMinQuantity: [{ required: true, message: '警戒线最低值不能为空', trigger: 'blur' }],
|
||||
itemMaxQuantity: [{ required: true, message: '警戒线最高值不能为空', trigger: 'blur' }],
|
||||
salesUnitCode: [{ required: true, message: '销售单位不能为空', trigger: 'blur' }],
|
||||
//approvalNumber: [{ required: true, message: '批准文号不能为空', trigger: 'blur' }],
|
||||
// ybFlag: [{ required: true, message: "医保标记不能为空", trigger: "blur" }],
|
||||
// // ybNo: [{ required: true, message: "医保编码不能为空", trigger: "blur" }],
|
||||
// ybMatchFlag: [
|
||||
// { required: true, message: "医保对码标记不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// statusEnum: [{ required: true, message: "状态不能为空", trigger: "blur" }],
|
||||
manufacturerId: [{ required: true, message: '生产厂家不能为空', trigger: 'blur' }],
|
||||
// supplyId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
|
||||
// description: [{ required: true, message: "说明不能为空", trigger: "blur" }],
|
||||
//jurisdiction: [{ required: true, message: '适用范围不能为空', trigger: 'blur' }],
|
||||
ruleId: [{ required: true, message: '执行科室不能为空', trigger: 'blur' }],
|
||||
// version: [{ required: true, message: "器材版本不能为空", trigger: "blur" }],
|
||||
// substanceText: [{ required: true, message: "主要成分不能为空", trigger: "blur" }],
|
||||
// allergenFlag: [
|
||||
// { required: true, message: "过敏标记不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// orgId: [{ required: true, message: '提供部门不能为空', trigger: 'blur' }],
|
||||
locationId: [{ required: true, message: '地点不能为空', trigger: 'blur' }],
|
||||
purchasePrice: [{ required: true, message: '购入价不能为空', trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
|
||||
//maximumRetailPrice: [{ required: true, message: '最高零售价不能为空', trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: '医保类型不能为空', trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: '医保等级不能为空', trigger: 'blur' }],
|
||||
itemTypeCode: [{ required: true, message: '财务类型不能为空', trigger: 'blur' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const { form, rules } = toRefs(data);
|
||||
|
||||
const props = defineProps({
|
||||
item: {
|
||||
@@ -465,8 +435,8 @@ function show() {
|
||||
supplierListOptions.value = props.supplierListOptions;
|
||||
form.value.partPercent = 1;
|
||||
form.value.itemTypeCode = '2005';
|
||||
form.value.ybType = '8';
|
||||
console.log(props, '22222', title.value, props.deviceCategories);
|
||||
form.value.ybType = '08';
|
||||
form.value.size = '-';
|
||||
getDeptTree();
|
||||
getLocationTree();
|
||||
visible.value = true;
|
||||
@@ -476,21 +446,16 @@ function setValue(row) {
|
||||
form.value = {
|
||||
name: formatValue(row.consumableName), //医疗服务项目名称
|
||||
ybNo: formatValue(row.medicalCatalogCode), // 医保编码
|
||||
// modelNumber: formatValue(row.productModel), // 产品型号
|
||||
modelNumber: formatValue(row.specification), // 规格
|
||||
manufacturerText: formatValue(row.manufacturerName), // 厂家名称
|
||||
partPercent: 1,
|
||||
itemMinQuantity: formatValue(row.itemMinQuantity), // 警戒线最低值
|
||||
itemMaxQuantity: formatValue(row.itemMaxQuantity), // 警戒线最高值
|
||||
// chrgitmLv: formatValue(
|
||||
// row.insuranceClass == '甲' ? '1' : row.insuranceClass == '乙' ? '2' : '3'
|
||||
// ), // 医保等级
|
||||
};
|
||||
}
|
||||
/** 查询部门下拉树结构 */
|
||||
function getDeptTree() {
|
||||
deptTreeSelect().then((response) => {
|
||||
console.log(response, 'response查询部门下拉树结构');
|
||||
deptOptions.value = response.data.records;
|
||||
});
|
||||
}
|
||||
@@ -538,13 +503,11 @@ function reset() {
|
||||
ybNo: undefined, // 医保编码
|
||||
ybOrgNo: undefined, //医药机构目录编码
|
||||
ybMatchFlag: undefined, // 医保对码标记
|
||||
// statusEnum: undefined, // 状态(包括 1:预置,2:启用,3:停用)
|
||||
manufacturerId: undefined, // 厂家编码
|
||||
supplyId: undefined, // 供应商编码
|
||||
description: undefined, // 说明
|
||||
jurisdiction: undefined, // 适用范围
|
||||
ruleId: undefined, // 执行科室
|
||||
// version: undefined, // 器材版本
|
||||
substanceText: undefined, // 主要成分
|
||||
allergenFlag: undefined, // 过敏标记
|
||||
orgId: undefined, // 科室ID
|
||||
@@ -567,7 +530,6 @@ function submitForm() {
|
||||
form.value.ybFlag ? (form.value.ybFlag = 1) : (form.value.ybFlag = 0);
|
||||
form.value.ybMatchFlag ? (form.value.ybMatchFlag = 1) : (form.value.ybMatchFlag = 0);
|
||||
form.value.allergenFlag ? (form.value.allergenFlag = 1) : (form.value.allergenFlag = 0);
|
||||
console.log(form.value, 'form.value');
|
||||
if (form.value.id != undefined) {
|
||||
editDevice(form.value).then((response) => {
|
||||
// 触发自定义事件,并传递数据给父组件
|
||||
|
||||
@@ -5,49 +5,81 @@
|
||||
<el-col :span="4" :xs="24">
|
||||
<div class="head-title">器材目录</div>
|
||||
<div class="head-container">
|
||||
<el-tree :data="deviceCategories" :props="{ label: 'info', children: 'children' }"
|
||||
:expand-on-click-node="false" :filter-node-method="filterNode" ref="treeRef" node-key="id" highlight-current
|
||||
default-expand-all @node-click="handleNodeClick" />
|
||||
<el-tree
|
||||
:data="deviceCategories"
|
||||
:props="{ label: 'info', children: 'children' }"
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterNode"
|
||||
ref="treeRef"
|
||||
node-key="id"
|
||||
highlight-current
|
||||
default-expand-all
|
||||
@node-click="handleNodeClick"
|
||||
/>
|
||||
</div>
|
||||
</el-col>
|
||||
<!--器材目录-->
|
||||
<el-col :span="20" :xs="24">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryRef"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="6"> -->
|
||||
<el-form-item label="项目名" prop="searchKey" label-width="55">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="品名/商品名/英文品名/编码/拼音" clearable style="width: 220px"
|
||||
@keyup.enter="handleQuery" />
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
placeholder="品名/商品名/英文品名/编码/拼音"
|
||||
clearable
|
||||
style="width: 220px"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="5"> -->
|
||||
<el-form-item label="状态" prop="statusEnum" label-width="50">
|
||||
<el-select v-model="queryParams.statusEnum" clearable>
|
||||
<el-option v-for="status in statusFlagOptions" :key="status.value" :label="status.info"
|
||||
:value="status.value" />
|
||||
<el-option
|
||||
v-for="status in statusFlagOptions"
|
||||
:key="status.value"
|
||||
:label="status.info"
|
||||
:value="status.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="5"> -->
|
||||
<el-form-item label="医保是否对码" prop="ybMatchFlag" label-width="100">
|
||||
<el-select v-model="queryParams.ybMatchFlag" placeholder="" clearable>
|
||||
<el-option v-for="item in statusYBWeatherOptions" :key="item.value" :label="item.info"
|
||||
:value="item.value" />
|
||||
<el-option
|
||||
v-for="item in statusYBWeatherOptions"
|
||||
:key="item.value"
|
||||
:label="item.info"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="openAddDevice">添加新项目</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="openAddDevice"
|
||||
>添加新项目</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Remove" :disabled="multiple" @click="handleClose">停用</el-button>
|
||||
<el-button type="danger" plain icon="Remove" :disabled="multiple" @click="handleClose"
|
||||
>停用</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="CirclePlus" :disabled="multiple" @click="handleStart">启用</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="CirclePlus"
|
||||
:disabled="multiple"
|
||||
@click="handleStart"
|
||||
>启用</el-button
|
||||
>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="Upload" @click="handleImport">导入</el-button>
|
||||
@@ -66,50 +98,170 @@
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="deviceList"
|
||||
@selection-change="handleSelectionChange"
|
||||
width="90%"
|
||||
>
|
||||
<el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange" width="90%" border resizable-column>
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column label="编码" align="center" key="busNo" prop="busNo" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="器材名称" align="center" key="name" prop="name" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="拼音" align="center" key="pyStr" prop="pyStr" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="器材分类" align="center" key="categoryCode_dictText" prop="categoryCode_dictText"
|
||||
:show-overflow-tooltip="true" width="100" />
|
||||
<el-table-column label="器材种类" align="center" key="typeCode_dictText" prop="typeCode_dictText"
|
||||
:show-overflow-tooltip="true" width="50" />
|
||||
<el-table-column label="包装单位" align="center" key="unitCode_dictText" prop="unitCode_dictText"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="包装规格" align="center" key="size" prop="size" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="拆零比" align="center" key="partPercent" prop="partPercent"
|
||||
:show-overflow-tooltip="true">
|
||||
<el-table-column
|
||||
label="编码"
|
||||
align="center"
|
||||
key="busNo"
|
||||
prop="busNo"
|
||||
:show-overflow-tooltip="true"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
label="器材名称"
|
||||
align="center"
|
||||
key="name"
|
||||
prop="name"
|
||||
:show-overflow-tooltip="true"
|
||||
width="200"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="拼音"
|
||||
align="center"
|
||||
key="pyStr"
|
||||
prop="pyStr"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="器材分类"
|
||||
align="center"
|
||||
key="categoryCode_dictText"
|
||||
prop="categoryCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="器材种类"
|
||||
align="center"
|
||||
key="typeCode_dictText"
|
||||
prop="typeCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="50"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="包装单位"
|
||||
align="center"
|
||||
key="unitCode_dictText"
|
||||
prop="unitCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="包装规格"
|
||||
align="center"
|
||||
key="size"
|
||||
prop="size"
|
||||
width="200"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="拆零比"
|
||||
align="center"
|
||||
key="partPercent"
|
||||
prop="partPercent"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scope.row.partPercent !== null && scope.row.partPercent !== undefined ? scope.row.partPercent : 1 }}
|
||||
{{
|
||||
scope.row.partPercent !== null && scope.row.partPercent !== undefined
|
||||
? scope.row.partPercent
|
||||
: 1
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="最小使用单位" align="center" key="minUnitCode_dictText" prop="minUnitCode_dictText"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="所属科室" align="center" key="orgId_dictText" prop="orgId_dictText"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="所在位置" align="center" key="locationId_dictText" prop="locationId_dictText"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="产品型号" align="center" key="modelNumber" prop="modelNumber"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="高值器材标志" align="center" key="hvcmFlag_enumText" prop="hvcmFlag_enumText"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column
|
||||
label="最小使用单位"
|
||||
align="center"
|
||||
key="minUnitCode_dictText"
|
||||
prop="minUnitCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="120"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="所属科室"
|
||||
align="center"
|
||||
key="orgId_dictText"
|
||||
prop="orgId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="所在位置"
|
||||
align="center"
|
||||
key="locationId_dictText"
|
||||
prop="locationId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<!-- <el-table-column
|
||||
label="产品型号"
|
||||
align="center"
|
||||
key="modelNumber"
|
||||
prop="modelNumber"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
|
||||
<el-table-column label="销售单位" align="center" key="salesUnitCode_dictText" prop="salesUnitCode_dictText"
|
||||
:show-overflow-tooltip="true" width="100" />
|
||||
<el-table-column label="批准文号" align="center" key="approvalNumber" prop="approvalNumber"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="医保标记" align="center" key="ybFlag_enumText" prop="ybFlag_enumText"
|
||||
:show-overflow-tooltip="true" width="110" />
|
||||
<el-table-column label="医保编码" align="center" key="ybNo" prop="ybNo" :show-overflow-tooltip="true"
|
||||
width="110" />
|
||||
<el-table-column label="医药机构目录编码" align="center" key="ybOrgNo" prop="ybOrgNo" :show-overflow-tooltip="true"
|
||||
width="130" />
|
||||
<el-table-column label="医保对码标记" align="center" key="ybMatchFlag_enumText" prop="ybMatchFlag_enumText"
|
||||
:show-overflow-tooltip="true" width="105" />
|
||||
<el-table-column label="状态" align="center" key="statusEnum_enumText" prop="statusEnum_enumText"
|
||||
:show-overflow-tooltip="true" width="90" />
|
||||
<el-table-column
|
||||
label="销售单位"
|
||||
align="center"
|
||||
key="salesUnitCode_dictText"
|
||||
prop="salesUnitCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="批准文号"
|
||||
align="center"
|
||||
key="approvalNumber"
|
||||
prop="approvalNumber"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<!-- <el-table-column
|
||||
label="医保标记"
|
||||
align="center"
|
||||
key="ybFlag_enumText"
|
||||
prop="ybFlag_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="110"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="医保编码"
|
||||
align="center"
|
||||
key="ybNo"
|
||||
prop="ybNo"
|
||||
:show-overflow-tooltip="true"
|
||||
width="110"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医药机构目录编码"
|
||||
align="center"
|
||||
key="ybOrgNo"
|
||||
prop="ybOrgNo"
|
||||
:show-overflow-tooltip="true"
|
||||
width="130"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="医保对码标记"
|
||||
align="center"
|
||||
key="ybMatchFlag_enumText"
|
||||
prop="ybMatchFlag_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="105"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
key="statusEnum_enumText"
|
||||
prop="statusEnum_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="生产厂家"
|
||||
align="center"
|
||||
@@ -118,59 +270,165 @@
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/> -->
|
||||
<el-table-column label="生产厂家" align="center" key="manufacturerText" prop="manufacturerText"
|
||||
:show-overflow-tooltip="true" width="90" />
|
||||
<el-table-column label="供应商" align="center" key="supplyId_dictText" prop="supplyId_dictText"
|
||||
:show-overflow-tooltip="true" width="110" />
|
||||
<el-table-column label="说明" align="center" key="description" prop="description"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="适用范围" align="center" key="jurisdiction" prop="jurisdiction"
|
||||
:show-overflow-tooltip="true" width="120" />
|
||||
<el-table-column label="器材版本" align="center" key="version" prop="version" :show-overflow-tooltip="true"
|
||||
width="120" />
|
||||
<el-table-column label="主要成分" align="center" key="substanceText" prop="substanceText"
|
||||
:show-overflow-tooltip="true" />
|
||||
<el-table-column label="过敏标记" align="center" key="allergenFlag_enumText" prop="allergenFlag_enumText"
|
||||
:show-overflow-tooltip="true" width="90" />
|
||||
<el-table-column label="售价" align="center" key="retailPrice" prop="retailPrice" :show-overflow-tooltip="true"
|
||||
width="90" />
|
||||
<el-table-column label="财务类别" align="center" key="itemTypeCode_dictText" prop="itemTypeCode_dictText"
|
||||
:show-overflow-tooltip="true" width="90" />
|
||||
<el-table-column label="医保类别" align="center" key="ybType_dictText" prop="ybType_dictText"
|
||||
:show-overflow-tooltip="true" width="90" />
|
||||
<el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width" fixed="right">
|
||||
<el-table-column
|
||||
label="生产厂家"
|
||||
align="center"
|
||||
key="manufacturerText"
|
||||
prop="manufacturerText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="200"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="供应商"
|
||||
align="center"
|
||||
key="supplyId_dictText"
|
||||
prop="supplyId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="110"
|
||||
/>
|
||||
<el-table-column
|
||||
label="说明"
|
||||
align="center"
|
||||
key="description"
|
||||
prop="description"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="适用范围"
|
||||
align="center"
|
||||
key="jurisdiction"
|
||||
prop="jurisdiction"
|
||||
:show-overflow-tooltip="true"
|
||||
width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="器材版本"
|
||||
align="center"
|
||||
key="version"
|
||||
prop="version"
|
||||
:show-overflow-tooltip="true"
|
||||
width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
label="主要成分"
|
||||
align="center"
|
||||
key="substanceText"
|
||||
prop="substanceText"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<!-- <el-table-column
|
||||
label="过敏标记"
|
||||
align="center"
|
||||
key="allergenFlag_enumText"
|
||||
prop="allergenFlag_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="售价"
|
||||
align="center"
|
||||
key="retailPrice"
|
||||
prop="retailPrice"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/>
|
||||
<el-table-column
|
||||
label="财务类别"
|
||||
align="center"
|
||||
key="itemTypeCode_dictText"
|
||||
prop="itemTypeCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/>
|
||||
<el-table-column
|
||||
label="高值器材标志"
|
||||
align="center"
|
||||
key="hvcmFlag_enumText"
|
||||
prop="hvcmFlag_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="120"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="医保类别"
|
||||
align="center"
|
||||
key="ybType_dictText"
|
||||
prop="ybType_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
fixed="right"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="openEditDevice(scope.row)">编辑</el-button>
|
||||
<el-button link type="primary" icon="Edit" @click="openEditDevice(scope.row)">
|
||||
编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<device-dialog ref="deviceRef" :title="title" :item="currentData" :currentCategoryEnum="currentCategoryEnum"
|
||||
:deviceCategories="deviceCategorieList" :statusFlagOptions="statusFlagOptions"
|
||||
:supplierListOptions="supplierListOptions" @submit="getList()" @ybDialog="() => {
|
||||
proxy.$refs['deviceYbRef'].show()
|
||||
}" />
|
||||
<DeviceYbDialog ref="deviceYbRef" @selectDevice="
|
||||
(row) => {
|
||||
proxy.$refs['deviceRef'].setValue(row);
|
||||
}
|
||||
" />
|
||||
<device-dialog
|
||||
ref="deviceRef"
|
||||
:title="title"
|
||||
:item="currentData"
|
||||
:currentCategoryEnum="currentCategoryEnum"
|
||||
:deviceCategories="deviceCategorieList"
|
||||
:statusFlagOptions="statusFlagOptions"
|
||||
:supplierListOptions="supplierListOptions"
|
||||
@submit="getList()"
|
||||
@ybDialog="
|
||||
() => {
|
||||
proxy.$refs['deviceYbRef'].show();
|
||||
}
|
||||
"
|
||||
/>
|
||||
<DeviceYbDialog
|
||||
ref="deviceYbRef"
|
||||
@selectDevice="
|
||||
(row) => {
|
||||
proxy.$refs['deviceRef'].setValue(row);
|
||||
}
|
||||
"
|
||||
/>
|
||||
|
||||
<!-- 器材目录导入对话框 -->
|
||||
<el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
|
||||
<el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
accept=".xlsx, .xls"
|
||||
:headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport"
|
||||
:disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress"
|
||||
:on-success="handleFileSuccess"
|
||||
:auto-upload="false"
|
||||
drag
|
||||
>
|
||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip text-center">
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate">下载模板</el-link>
|
||||
<el-link
|
||||
type="primary"
|
||||
:underline="false"
|
||||
style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate"
|
||||
>下载模板</el-link
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
@@ -185,17 +443,18 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Device">
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { getToken } from '@/utils/auth';
|
||||
import {
|
||||
getDeviceList,
|
||||
stopDevice,
|
||||
startDevice,
|
||||
getDiseaseTreatmentInit,
|
||||
getDeviceOne,
|
||||
} from "./components/device";
|
||||
import deviceDialog from "./components/deviceDialog";
|
||||
import DeviceYbDialog from "./components/deviceYbDialog";
|
||||
import { nextTick } from "vue";
|
||||
validateEditDevice,
|
||||
} from './components/device';
|
||||
import deviceDialog from './components/deviceDialog';
|
||||
import DeviceYbDialog from './components/deviceYbDialog';
|
||||
import { nextTick } from 'vue';
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
@@ -206,7 +465,7 @@ const ids = ref([]); // 存储选择的行数据
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
const title = ref("");
|
||||
const title = ref('');
|
||||
const deviceCategories = ref(undefined);
|
||||
const deviceCategorieList = ref(undefined);
|
||||
const statusFlagOptions = ref(undefined);
|
||||
@@ -216,22 +475,22 @@ const supplierListOptions = ref(undefined);
|
||||
const currentData = ref({});
|
||||
// 使用 ref 定义当前查看器材数据
|
||||
const viewData = ref({});
|
||||
const currentCategoryEnum = ref("");
|
||||
const currentCategoryEnum = ref('');
|
||||
|
||||
/*** 器材目录导入参数 */
|
||||
const upload = reactive({
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
title: '',
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 是否更新已经存在的数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: import.meta.env.VITE_APP_BASE_API + "/data-dictionary/device/import-data"
|
||||
url: import.meta.env.VITE_APP_BASE_API + '/data-dictionary/device/import-data',
|
||||
});
|
||||
|
||||
const data = reactive({
|
||||
@@ -260,15 +519,15 @@ const filterNode = (value, data) => {
|
||||
/** 器材目录分类查询下拉树结构 */
|
||||
function getDiseaseTreatmentList() {
|
||||
getDiseaseTreatmentInit().then((response) => {
|
||||
console.log(response, "response器材目录分类查询下拉树结构");
|
||||
deviceCategories.value = JSON.parse(JSON.stringify(response.data.deviceCategories)).sort((a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
});
|
||||
deviceCategories.value.push({ info: "全部", value: "" });
|
||||
deviceCategories.value = JSON.parse(JSON.stringify(response.data.deviceCategories)).sort(
|
||||
(a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
}
|
||||
);
|
||||
deviceCategories.value.push({ info: '全部', value: '' });
|
||||
deviceCategorieList.value = response.data.deviceCategories.sort((a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
});
|
||||
console.log(deviceCategorieList.value, "deviceCategorieList");
|
||||
statusFlagOptions.value = response.data.statusFlagOptions;
|
||||
statusYBWeatherOptions.value = response.data.statusYBWeatherOptions;
|
||||
supplierListOptions.value = response.data.supplierListOptions;
|
||||
@@ -281,7 +540,6 @@ function getList() {
|
||||
loading.value = false;
|
||||
deviceList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
console.log(deviceList.value, "getList", total.value);
|
||||
});
|
||||
}
|
||||
/** 节点单击事件 */
|
||||
@@ -301,34 +559,34 @@ function handleStart() {
|
||||
const stardIds = ids.value;
|
||||
// selectedData
|
||||
proxy.$modal
|
||||
.confirm("是否确定启用数据!")
|
||||
.confirm('是否确定启用数据!')
|
||||
.then(function () {
|
||||
return startDevice(stardIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess("启用成功");
|
||||
proxy.$modal.msgSuccess('启用成功');
|
||||
})
|
||||
.catch(() => { });
|
||||
.catch(() => {});
|
||||
}
|
||||
/** 停用按钮操作 */
|
||||
function handleClose() {
|
||||
const stopIds = ids.value;
|
||||
proxy.$modal
|
||||
.confirm("是否确认停用数据!")
|
||||
.confirm('是否确认停用数据!')
|
||||
.then(function () {
|
||||
return stopDevice(stopIds);
|
||||
})
|
||||
.then(() => {
|
||||
getList();
|
||||
proxy.$modal.msgSuccess("停用成功");
|
||||
proxy.$modal.msgSuccess('停用成功');
|
||||
})
|
||||
.catch(() => { });
|
||||
.catch(() => {});
|
||||
}
|
||||
/** 导出按钮操作 */
|
||||
function handleExport() {
|
||||
proxy.download(
|
||||
"system/user/export",
|
||||
'system/user/export',
|
||||
{
|
||||
...queryParams.value,
|
||||
},
|
||||
@@ -343,7 +601,11 @@ function handleImport() {
|
||||
}
|
||||
/** 下载模板操作 */
|
||||
function importTemplate() {
|
||||
proxy.download('/data-dictionary/device/import-template', {}, `device_template_${new Date().getTime()}.xlsx`);
|
||||
proxy.download(
|
||||
'/data-dictionary/device/import-template',
|
||||
{},
|
||||
`device_template_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
}
|
||||
/**文件上传中处理 */
|
||||
const handleFileUploadProgress = (event, file, fileList) => {
|
||||
@@ -356,8 +618,8 @@ const handleFileSuccess = (response, file, fileList) => {
|
||||
proxy.$refs['uploadRef'].handleRemove(file);
|
||||
proxy.$alert(
|
||||
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||
response.msg +
|
||||
'</div>',
|
||||
response.msg +
|
||||
'</div>',
|
||||
'导入结果',
|
||||
{ dangerouslyUseHTMLString: true }
|
||||
);
|
||||
@@ -370,7 +632,6 @@ function submitFileForm() {
|
||||
|
||||
/** 选择条数 */
|
||||
function handleSelectionChange(selection) {
|
||||
console.log(selection, "selection");
|
||||
// selectedData.value = selection.map((item) => ({ ...item })); // 存储选择的行数据
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
@@ -379,22 +640,29 @@ function handleSelectionChange(selection) {
|
||||
|
||||
/** 打开新增弹窗 */
|
||||
function openAddDevice() {
|
||||
// if (!currentCategoryEnum.value) {
|
||||
// return proxy.$modal.msgError("请选择器材目录分类");
|
||||
// }
|
||||
console.log("打开新增弹窗");
|
||||
title.value = "新增";
|
||||
title.value = '新增';
|
||||
nextTick(() => {
|
||||
proxy.$refs.deviceRef.show();
|
||||
});
|
||||
}
|
||||
const isEditInfoDisable = ref(0);
|
||||
/** 打开编辑弹窗 */
|
||||
function openEditDevice(row) {
|
||||
currentData.value = {};
|
||||
console.log("打开编辑弹窗");
|
||||
validateEditDevice(row.id).then((res) => {
|
||||
// res.data == 1 医生开过该耗材,不可编辑
|
||||
// res.data == 2 该耗材已经入库过,不可编辑
|
||||
isEditInfoDisable.value = res.data;
|
||||
getDeviceInfo(row);
|
||||
});
|
||||
}
|
||||
// 根据耗材id 查询耗材信息
|
||||
function getDeviceInfo(row) {
|
||||
getDeviceOne(row.id).then((response) => {
|
||||
console.log(response, "currentDataform");
|
||||
currentData.value = response.data;
|
||||
currentData.value = {
|
||||
...response.data,
|
||||
// 禁用编辑
|
||||
isEditInfoDisable: isEditInfoDisable.value,
|
||||
};
|
||||
if (currentData.value) {
|
||||
currentData.value.hvcmFlag == 1
|
||||
? (currentData.value.hvcmFlag = true)
|
||||
@@ -409,9 +677,9 @@ function openEditDevice(row) {
|
||||
? (currentData.value.allergenFlag = true)
|
||||
: (currentData.value.allergenFlag = false);
|
||||
}
|
||||
title.value = "编辑";
|
||||
title.value = '编辑';
|
||||
nextTick(() => {
|
||||
proxy.$refs["deviceRef"].edit();
|
||||
proxy.$refs['deviceRef'].edit();
|
||||
});
|
||||
getList();
|
||||
});
|
||||
|
||||
@@ -74,7 +74,12 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="目录分类" prop="categoryCode">
|
||||
<el-select v-model="form.categoryCode" clearable filterable :disabled="false">
|
||||
<el-select
|
||||
v-model="form.categoryCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in activity_category_code"
|
||||
:key="category.value"
|
||||
@@ -96,18 +101,6 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="状态" prop="statusEnum">
|
||||
<el-select v-model="form.statusEnum" clearable>
|
||||
<el-option
|
||||
v-for="status in statusFlagOptions"
|
||||
:key="status.value"
|
||||
:label="status.info"
|
||||
:value="status.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
@@ -136,6 +129,7 @@
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in med_chrgitm_type"
|
||||
@@ -164,7 +158,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="所需标本" prop="specimenCode">
|
||||
<el-select v-model="form.specimenCode" clearable filterable>
|
||||
@@ -181,7 +175,13 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="医保等级" prop="chrgitmLv">
|
||||
<el-select v-model="form.chrgitmLv" placeholder="" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.chrgitmLv"
|
||||
placeholder=""
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in chrgitm_lv"
|
||||
:key="item.value"
|
||||
@@ -191,18 +191,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="执行科室" prop="ruleId">
|
||||
<el-select v-model="form.ruleId" placeholder="" clearable>
|
||||
<el-option
|
||||
v-for="item in exeOrganizations"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="使用单位" prop="permittedUnitCode">
|
||||
<el-select v-model="form.permittedUnitCode" clearable filterable>
|
||||
@@ -217,7 +206,12 @@
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="财务类型" prop="itemTypeCode">
|
||||
<el-select v-model="form.itemTypeCode" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.itemTypeCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in fin_type_code"
|
||||
:key="category.value"
|
||||
@@ -229,22 +223,13 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="8">
|
||||
<el-form-item label="购入价" prop="purchasePrice">
|
||||
<el-input
|
||||
v-model="form.purchasePrice"
|
||||
placeholder=""
|
||||
:disabled="form.id != undefined"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="零售价" prop="retailPrice">
|
||||
<el-input
|
||||
v-model="form.retailPrice"
|
||||
placeholder=""
|
||||
:disabled="false"
|
||||
@input="updatePrices"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -268,14 +253,34 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="诊疗子项">
|
||||
<el-select v-model="item.adviceDefinitionId" placeholder="诊疗子项" filterable>
|
||||
<el-option
|
||||
v-for="item in diagnosisTreatmentList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
<div v-if="form.isEditInfoDisable === 0" style="position: relative">
|
||||
<PopoverList @search="handleSearch" :width="1000" :modelValue="item.name">
|
||||
<template #popover-content="{}">
|
||||
<medicineList
|
||||
@selectRow="(row) => selectRow(row, index)"
|
||||
:searchKey="medicineSearchKey"
|
||||
:shouldLoadData="isFirstOpen"
|
||||
:preloadedData="diagnosisTreatmentList"
|
||||
/>
|
||||
</template>
|
||||
</PopoverList>
|
||||
<!-- 清空按钮 -->
|
||||
<el-button
|
||||
v-if="item.name && item.name !== ''"
|
||||
type="text"
|
||||
icon="Delete"
|
||||
size="small"
|
||||
@click.stop="clearItem(index)"
|
||||
style="
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: #909399;
|
||||
"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<span v-else>{{ item.name || '' }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
@@ -285,11 +290,22 @@
|
||||
controls-position="right"
|
||||
:min="1"
|
||||
:max="999"
|
||||
@change="calculateTotalPrice"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" style="display: flex; align-items: center; padding-bottom: 15px">
|
||||
<el-button @click="addItem" circle type="priamry" size="small" plain icon="Plus" />
|
||||
<!-- <div style="margin-right: 20px; font-weight: bold; color: #333">
|
||||
小计: ¥{{
|
||||
item.retailPrice && item.childrenRequestNum
|
||||
? (parseFloat(item.retailPrice) * parseInt(item.childrenRequestNum)).toFixed(
|
||||
2
|
||||
)
|
||||
: '0.00'
|
||||
}}
|
||||
</div> -->
|
||||
<el-button @click="addItem" circle type="primary" size="small" plain icon="Plus" />
|
||||
<el-button
|
||||
@click="removeItem(index)"
|
||||
circle
|
||||
@@ -313,6 +329,11 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8" style="display: flex; align-items: center; justify-content: flex-start">
|
||||
<div style="font-size: 18px; font-weight: bold; color: #276ef1">
|
||||
总价: ¥{{ totalPrice }}
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer v-if="title != '查看'">
|
||||
@@ -334,7 +355,10 @@ import {
|
||||
bodyTreeSelect,
|
||||
locationTreeSelect,
|
||||
} from './diagnosistreatment';
|
||||
|
||||
import PopoverList from '@/components/OpenHis/popoverList/index.vue';
|
||||
import medicineList from './medicineList.vue';
|
||||
import MedicineList from '../components/medicineList.vue';
|
||||
import { getCurrentInstance, nextTick, watch } from 'vue';
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { unit_code, med_chrgitm_type, fin_type_code, activity_category_code, chrgitm_lv } =
|
||||
proxy.useDict(
|
||||
@@ -348,7 +372,6 @@ const { unit_code, med_chrgitm_type, fin_type_code, activity_category_code, chrg
|
||||
const title = ref('');
|
||||
const visible = ref(false);
|
||||
const emits = defineEmits(['submit']); // 声明自定义事件
|
||||
const categoryCode = ref('');
|
||||
const deptOptions = ref(undefined); // 部门树选项
|
||||
const bodyOptions = ref(undefined); // 身体部位树选项
|
||||
const locationOptions = ref(undefined); // 地点树选项
|
||||
@@ -363,26 +386,16 @@ const data = reactive({
|
||||
rules: {
|
||||
busNo: [{ required: true, message: "编码不能为空", trigger: "blur" }],
|
||||
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||
// statusEnum: [{ required: true, message: "状态不能为空", trigger: "blur" }],
|
||||
categoryCode: [{ required: true, message: '诊疗目录不能为空', trigger: 'blur' }],
|
||||
// typeEnum: [{ required: true, message: '器材种类不能为空', trigger: 'blur' }],
|
||||
permittedUnitCode: [{ required: true, message: '使用单位不能为空', trigger: 'blur' }],
|
||||
// ybFlag: [{ required: true, message: "医保标记不能为空", trigger: "blur" }],
|
||||
// ybMatchFlag: [
|
||||
// { required: true, message: "医保对码标记不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// purchasePrice: [
|
||||
// { required: true, message: "购入价不能为空", trigger: "blur" },
|
||||
// ],
|
||||
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
|
||||
// maximumRetailPrice: [{ required: true, message: '最高零售价不能为空', trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: '医保类型不能为空', trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: '医保等级不能为空', trigger: 'blur' }],
|
||||
itemTypeCode: [{ required: true, message: '财务类型不能为空', trigger: 'blur' }],
|
||||
},
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
const { form, rules } = toRefs(data);
|
||||
|
||||
const props = defineProps({
|
||||
item: {
|
||||
@@ -416,17 +429,45 @@ const props = defineProps({
|
||||
});
|
||||
|
||||
// 表单数组,初始一条记录
|
||||
const treatmentItems = ref([{ adviceDefinitionId: '', childrenRequestNum: 1 }]);
|
||||
const treatmentItems = ref([
|
||||
{ adviceDefinitionId: '', childrenRequestNum: 1, name: '', retailPrice: 0 },
|
||||
]);
|
||||
const medicineSearchKey = ref('');
|
||||
const isFirstOpen = ref(true); // 标记是否首次打开弹窗
|
||||
const totalPrice = ref('0.00'); // 总价
|
||||
|
||||
// 计算总价
|
||||
function calculateTotalPrice() {
|
||||
try {
|
||||
let sum = 0;
|
||||
treatmentItems.value.forEach((item) => {
|
||||
if (item.adviceDefinitionId && item.retailPrice && item.childrenRequestNum) {
|
||||
const price = parseFloat(item.retailPrice) || 0;
|
||||
const count = parseInt(item.childrenRequestNum) || 0;
|
||||
sum += price * count;
|
||||
}
|
||||
});
|
||||
totalPrice.value = sum.toFixed(2);
|
||||
} catch (error) {
|
||||
totalPrice.value = '0.00';
|
||||
proxy.$modal.msgWarning('价格计算过程中遇到错误,请检查输入数据');
|
||||
}
|
||||
}
|
||||
|
||||
// 添加表单项
|
||||
function addItem() {
|
||||
treatmentItems.value.push({ adviceDefinitionId: '', childrenRequestNum: 1 });
|
||||
treatmentItems.value.push({ adviceDefinitionId: '', childrenRequestNum: 1, retailPrice: 0 });
|
||||
// 使用nextTick确保DOM更新后再计算
|
||||
nextTick(() => {
|
||||
calculateTotalPrice();
|
||||
});
|
||||
}
|
||||
|
||||
// 删除表单项
|
||||
function removeItem(index) {
|
||||
if (treatmentItems.value.length > 1) {
|
||||
treatmentItems.value.splice(index, 1);
|
||||
calculateTotalPrice();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -438,9 +479,10 @@ function handleImportYb() {
|
||||
function show() {
|
||||
reset();
|
||||
getLocationTree();
|
||||
getItemList();
|
||||
getBodyTree();
|
||||
getDeptTree();
|
||||
getItemList();
|
||||
|
||||
title.value = '';
|
||||
title.value = props.title;
|
||||
diagnosisCategoryOptions.value = props.diagnosisCategoryOptions;
|
||||
@@ -457,9 +499,6 @@ function setValue(row) {
|
||||
ybNo: formatValue(row.medicalCatalogCode), // 医保编码
|
||||
busNo: formatValue(row.medicalCatalogCode), // 项目编码使用医保编码
|
||||
categoryCode: props.currentCategoryEnum,
|
||||
// chrgitmLv: formatValue(
|
||||
// row.insuranceClass == '甲' ? '1' : row.insuranceClass == '乙' ? '2' : '3'
|
||||
// ), // 医保等级
|
||||
};
|
||||
}
|
||||
|
||||
@@ -467,16 +506,24 @@ function setValue(row) {
|
||||
function edit() {
|
||||
reset();
|
||||
getLocationTree();
|
||||
getItemList();
|
||||
getBodyTree();
|
||||
getDeptTree();
|
||||
getItemList();
|
||||
title.value = '';
|
||||
title.value = props.title;
|
||||
form.value = props.item;
|
||||
form.value.chrgitmLv = form.value.chrgitmLv ? form.value.chrgitmLv.toString() : undefined;
|
||||
treatmentItems.value = props.item.childrenJson
|
||||
? JSON.parse(props.item.childrenJson)
|
||||
: [{ adviceDefinitionId: '', childrenRequestNum: 1 }];
|
||||
|
||||
// 处理子项数据,确保包含retailPrice字段
|
||||
if (props.item.childrenJson) {
|
||||
const parsedItems = JSON.parse(props.item.childrenJson);
|
||||
treatmentItems.value = parsedItems.map((item) => ({
|
||||
...item,
|
||||
retailPrice: item.retailPrice || 0,
|
||||
}));
|
||||
} else {
|
||||
treatmentItems.value = [{ adviceDefinitionId: '', childrenRequestNum: 1, retailPrice: 0 }];
|
||||
}
|
||||
form.value.permittedUnitCode = form.value.permittedUnitCode
|
||||
? form.value.permittedUnitCode.toString()
|
||||
: undefined;
|
||||
@@ -485,6 +532,11 @@ function edit() {
|
||||
exeOrganizations.value = props.exeOrganizations;
|
||||
typeEnumOptions.value = props.typeEnumOptions;
|
||||
visible.value = true;
|
||||
|
||||
// 编辑时计算初始总价
|
||||
nextTick(() => {
|
||||
calculateTotalPrice();
|
||||
});
|
||||
}
|
||||
/** 重置操作表单 */
|
||||
function reset() {
|
||||
@@ -514,7 +566,8 @@ function reset() {
|
||||
descriptionText: undefined, // 说明
|
||||
chrgitmLv: undefined, //医保等级
|
||||
};
|
||||
treatmentItems.value = [{ adviceDefinitionId: '', childrenRequestNum: 1 }];
|
||||
treatmentItems.value = [{ adviceDefinitionId: '', childrenRequestNum: 1, retailPrice: 0 }];
|
||||
totalPrice.value = '0.00';
|
||||
proxy.resetForm('diagnosisTreatmentRef');
|
||||
}
|
||||
|
||||
@@ -552,51 +605,74 @@ function submitForm() {
|
||||
/** 查询部门下拉树结构 */
|
||||
function getDeptTree() {
|
||||
deptTreeSelect().then((response) => {
|
||||
console.log(response, 'response查询部门下拉树结构');
|
||||
deptOptions.value = response.data.records;
|
||||
});
|
||||
}
|
||||
/** 查询身体部位拉树结构 */
|
||||
function getBodyTree() {
|
||||
bodyTreeSelect().then((response) => {
|
||||
console.log(response, 'response查询身体部位下拉树结构');
|
||||
bodyOptions.value = response.data.records;
|
||||
});
|
||||
}
|
||||
/** 查询地点下拉树结构 */
|
||||
function getLocationTree() {
|
||||
locationTreeSelect({ formList: '8,4,10' }).then((response) => {
|
||||
console.log(response, 'response查询部门下拉树结构');
|
||||
locationOptions.value = response.data.records;
|
||||
});
|
||||
}
|
||||
|
||||
// 获取诊疗子项列表,只筛出无子项的数据
|
||||
function getItemList() {
|
||||
getDiagnosisTreatmentList({ statusEnum: 2, pageSize: 1000, pageNo: 1 }).then((response) => {
|
||||
diagnosisTreatmentList.value = response.data.records.filter((item) => {
|
||||
return item.childrenJson == null;
|
||||
});
|
||||
});
|
||||
}
|
||||
/** 取消按钮 */
|
||||
function cancel() {
|
||||
visible.value = false;
|
||||
reset();
|
||||
}
|
||||
|
||||
// 获取诊疗子项列表,只筛出无子项的数据
|
||||
function getItemList() {
|
||||
getDiagnosisTreatmentList({ statusEnum: 2, pageSize: 1000, pageNo: 1 }).then((res) => {
|
||||
diagnosisTreatmentList.value = res.data.records.filter((item) => {
|
||||
return item.childrenJson == null;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function formatValue(str) {
|
||||
if (str === null || str === undefined || str === '' || str === 'null') {
|
||||
return undefined;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
function handleSearch(value) {
|
||||
medicineSearchKey.value = value;
|
||||
}
|
||||
|
||||
function selectRow(row, index) {
|
||||
treatmentItems.value[index].name = row.name;
|
||||
treatmentItems.value[index].adviceDefinitionId = row.id;
|
||||
treatmentItems.value[index].retailPrice = row.retailPrice || 0;
|
||||
calculateTotalPrice();
|
||||
}
|
||||
|
||||
// 清空诊疗子项
|
||||
function clearItem(index) {
|
||||
treatmentItems.value[index].name = '';
|
||||
treatmentItems.value[index].adviceDefinitionId = '';
|
||||
treatmentItems.value[index].retailPrice = 0;
|
||||
calculateTotalPrice();
|
||||
}
|
||||
// 在这里可以根据购入价来更新零售价
|
||||
function updatePrices(value) {
|
||||
form.value.maximumRetailPrice = form.value.retailPrice;
|
||||
}
|
||||
|
||||
// 监听treatmentItems变化,实时更新总价
|
||||
watch(
|
||||
() => treatmentItems.value,
|
||||
() => {
|
||||
calculateTotalPrice();
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
defineExpose({
|
||||
show,
|
||||
edit,
|
||||
|
||||
@@ -1,99 +1,106 @@
|
||||
import request from '@/utils/request'
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 查询诊疗目录列表
|
||||
export function getDiagnosisTreatmentList(query) {
|
||||
return request({
|
||||
export function getDiagnosisTreatmentList (query) {
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/information-page',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询诊疗目录详细
|
||||
export function getDiagnosisTreatmentOne(id) {
|
||||
return request({
|
||||
export function getDiagnosisTreatmentOne (id) {
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/information-one/',
|
||||
method: 'get',
|
||||
params: { id } // 确保参数正确传递
|
||||
})
|
||||
params: {id}, // 确保参数正确传递
|
||||
});
|
||||
}
|
||||
// 查询诊疗目录详细
|
||||
export function validateActivityEdit (activityId) {
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/validate-edit',
|
||||
method: 'get',
|
||||
params: {activityId}, // 确保参数正确传递
|
||||
});
|
||||
}
|
||||
|
||||
// 新增诊疗目录
|
||||
export function addDiagnosisTreatment(data) {
|
||||
return request({
|
||||
export function addDiagnosisTreatment (data) {
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/information',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 修改诊疗目录
|
||||
export function editDiagnosisTreatment(data) {
|
||||
return request({
|
||||
export function editDiagnosisTreatment (data) {
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/information',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 诊疗目录分类查询
|
||||
export function getDiseaseTreatmentInit() {
|
||||
return request({
|
||||
export function getDiseaseTreatmentInit () {
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/init',
|
||||
method: 'get'
|
||||
})
|
||||
method: 'get',
|
||||
});
|
||||
}
|
||||
|
||||
// 停用诊疗目录
|
||||
export function stopDiseaseTreatment(ids) {
|
||||
console.log(ids)
|
||||
return request({
|
||||
export function stopDiseaseTreatment (ids) {
|
||||
console.log (ids);
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/information-stop',
|
||||
method: 'put',
|
||||
data: ids
|
||||
})
|
||||
data: ids,
|
||||
});
|
||||
}
|
||||
|
||||
// 启用诊疗目录
|
||||
export function startDiseaseTreatment(ids) {
|
||||
console.log(ids)
|
||||
return request({
|
||||
export function startDiseaseTreatment (ids) {
|
||||
console.log (ids);
|
||||
return request ({
|
||||
url: '/data-dictionary/diagnosis-treatment/information-start',
|
||||
method: 'put',
|
||||
data: ids
|
||||
})
|
||||
data: ids,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询部门树形数据
|
||||
export function deptTreeSelect(queryParams) {
|
||||
return request({
|
||||
export function deptTreeSelect (queryParams) {
|
||||
return request ({
|
||||
url: '/base-data-manage/organization/organization',
|
||||
method: 'get',
|
||||
param: queryParams
|
||||
})
|
||||
param: queryParams,
|
||||
});
|
||||
}
|
||||
// 查询身体部位树形数据
|
||||
export function bodyTreeSelect(queryParams) {
|
||||
return request({
|
||||
export function bodyTreeSelect (queryParams) {
|
||||
return request ({
|
||||
url: '/base-data-manage/body-structure/body',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
// 查询地点树形数据
|
||||
export function locationTreeSelect(queryParams) {
|
||||
return request({
|
||||
export function locationTreeSelect (queryParams) {
|
||||
return request ({
|
||||
url: '/base-data-manage/location/location-page-tree',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取医用耗材目录
|
||||
export function getYbDiagnosisTreatmentList(queryParams) {
|
||||
return request({
|
||||
export function getYbDiagnosisTreatmentList (queryParams) {
|
||||
return request ({
|
||||
url: '/catalog/page',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
})
|
||||
params: queryParams,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-table ref="medicineRef" height="300" :data="filteredList" @cell-click="clickRow">
|
||||
<el-table-column label="项目名称" align="center" prop="name" width="300" />
|
||||
<el-table-column label="零售价" align="center" prop="retailPrice" />
|
||||
<el-table-column label="最高零售价" align="center" prop="maximumRetailPrice" />
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { getDiagnosisTreatmentList } from './diagnosistreatment';
|
||||
import { ref, watch } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
itemType: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
searchKey: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
shouldLoadData: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
// 新增:从父组件接收预加载的数据
|
||||
preloadedData: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
});
|
||||
const emit = defineEmits(['selectRow']);
|
||||
|
||||
const diagnosisTreatmentList = ref([]); // 原始数据列表
|
||||
const filteredList = ref([]); // 过滤后的数据列表
|
||||
const hasLoaded = ref(false); // 标记是否已加载数据
|
||||
|
||||
// 获取诊疗项目列表
|
||||
function getList() {
|
||||
if (hasLoaded.value) return; // 如果已经加载过数据,则不再重复请求
|
||||
|
||||
// 优先使用父组件传递的数据
|
||||
if (props.preloadedData && props.preloadedData.length > 0) {
|
||||
diagnosisTreatmentList.value = props.preloadedData;
|
||||
filterList(); // 初始化过滤
|
||||
hasLoaded.value = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// 如果父组件没有传递数据或数据为空,则自己请求
|
||||
getDiagnosisTreatmentList({ statusEnum: 2, pageSize: 1000, pageNo: 1 })
|
||||
.then((res) => {
|
||||
diagnosisTreatmentList.value =
|
||||
res.data?.records?.filter((item) => item.childrenJson == null) || [];
|
||||
filterList(); // 初始化过滤
|
||||
hasLoaded.value = true; // 标记为已加载
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error('获取诊疗项目数据失败:', err);
|
||||
});
|
||||
}
|
||||
|
||||
// 监听shouldLoadData属性变化,仅在首次为true时加载数据
|
||||
watch(
|
||||
() => props.shouldLoadData,
|
||||
(newValue) => {
|
||||
if (newValue && !hasLoaded.value) {
|
||||
getList();
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
// 监听preloadedData变化,当父组件数据更新时同步更新列表
|
||||
watch(
|
||||
() => props.preloadedData,
|
||||
(newData) => {
|
||||
if (newData && newData.length > 0) {
|
||||
diagnosisTreatmentList.value = newData;
|
||||
filterList(); // 更新过滤
|
||||
hasLoaded.value = true;
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
// 监听搜索关键词变化,实时过滤数据
|
||||
watch(
|
||||
() => props.searchKey,
|
||||
() => {
|
||||
filterList();
|
||||
}
|
||||
);
|
||||
|
||||
// 根据搜索关键词过滤列表
|
||||
function filterList() {
|
||||
if (!props.searchKey || props.searchKey.trim() === '') {
|
||||
filteredList.value = diagnosisTreatmentList.value;
|
||||
} else {
|
||||
const searchTerm = props.searchKey.toLowerCase().trim();
|
||||
filteredList.value = diagnosisTreatmentList.value.filter(
|
||||
(item) => item.name && item.name.toLowerCase().includes(searchTerm)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function clickRow(row) {
|
||||
emit('selectRow', row);
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
@@ -28,7 +28,6 @@
|
||||
label-width="68px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<!-- <el-col :span="5"> -->
|
||||
<el-form-item label="项目名" prop="searchKey" label-width="55">
|
||||
<el-input
|
||||
v-model="queryParams.searchKey"
|
||||
@@ -38,8 +37,7 @@
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="5"> -->
|
||||
|
||||
<el-form-item label="状态" prop="statusEnum" label-width="80">
|
||||
<el-select v-model="queryParams.statusEnum" clearable>
|
||||
<el-option
|
||||
@@ -50,8 +48,6 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="5"> -->
|
||||
<el-form-item label="医保是否对码" prop="ybMatchFlag" label-width="120">
|
||||
<el-select v-model="queryParams.ybMatchFlag" placeholder="" clearable>
|
||||
<el-option
|
||||
@@ -62,24 +58,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
<!-- <el-col :span="4">
|
||||
<el-form-item label="执行科室" prop="ruleId" label-width="100">
|
||||
<el-select
|
||||
v-model="queryParams.ruleId"
|
||||
placeholder=""
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in exeOrganizations"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col> -->
|
||||
<!-- <el-col :span="4"> -->
|
||||
|
||||
<el-form-item label="类型" prop="typeEnum" label-width="100">
|
||||
<el-select v-model="queryParams.typeEnum" placeholder="" clearable>
|
||||
<el-option
|
||||
@@ -116,9 +95,9 @@
|
||||
>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="Upload" @click="handleImport">导入</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain icon="Upload" @click="handleImport">导入</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Search" @click="getList">查询</el-button>
|
||||
@@ -148,7 +127,7 @@
|
||||
key="busNo"
|
||||
prop="busNo"
|
||||
:show-overflow-tooltip="true"
|
||||
width="150"
|
||||
width="200"
|
||||
/>
|
||||
<el-table-column
|
||||
label="项目名称"
|
||||
@@ -156,22 +135,9 @@
|
||||
key="name"
|
||||
prop="name"
|
||||
:show-overflow-tooltip="true"
|
||||
width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
label="拼音"
|
||||
align="center"
|
||||
key="pyStr"
|
||||
prop="pyStr"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="五笔码"
|
||||
align="center"
|
||||
key="wbStr"
|
||||
prop="wbStr"
|
||||
:show-overflow-tooltip="true"
|
||||
width="200"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
label="目录类别"
|
||||
align="center"
|
||||
@@ -180,94 +146,6 @@
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="业务类型"
|
||||
align="center"
|
||||
key="typeEnum_enumText"
|
||||
prop="typeEnum_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/>
|
||||
<el-table-column
|
||||
label="使用单位"
|
||||
align="center"
|
||||
key="permittedUnitCode_dictText"
|
||||
prop="permittedUnitCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保标记"
|
||||
align="center"
|
||||
key="ybFlag_enumText"
|
||||
prop="ybFlag_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保编码"
|
||||
align="center"
|
||||
key="ybNo"
|
||||
prop="ybNo"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保对码标记"
|
||||
align="center"
|
||||
key="ybMatchFlag_enumText"
|
||||
prop="ybMatchFlag_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
key="statusEnum_enumText"
|
||||
prop="statusEnum_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="归属科室"
|
||||
align="center"
|
||||
key="orgId_dictText"
|
||||
prop="orgId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="所在位置"
|
||||
align="center"
|
||||
key="locationId_dictText"
|
||||
prop="locationId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="身体部位"
|
||||
align="center"
|
||||
key="bodySiteCode_dictText"
|
||||
prop="bodySiteCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="所需标本"
|
||||
align="center"
|
||||
key="specimenCode_dictText"
|
||||
prop="specimenCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="财务类别"
|
||||
align="center"
|
||||
key="itemTypeCode_dictText"
|
||||
prop="itemTypeCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保类别"
|
||||
align="center"
|
||||
key="ybType_dictText"
|
||||
prop="ybType_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="售价"
|
||||
align="center"
|
||||
@@ -277,20 +155,34 @@
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="说明"
|
||||
label="财务类别"
|
||||
align="center"
|
||||
key="descriptionText"
|
||||
prop="descriptionText"
|
||||
key="itemTypeCode_dictText"
|
||||
prop="itemTypeCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column
|
||||
label="使用单位"
|
||||
align="center"
|
||||
key="permittedUnitCode_dictText"
|
||||
prop="permittedUnitCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="执行科室"
|
||||
<el-table-column
|
||||
label="医保编码"
|
||||
align="center"
|
||||
key="ruleId"
|
||||
prop="ruleId"
|
||||
key="ybNo"
|
||||
prop="ybNo"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
/> -->
|
||||
/>
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
key="statusEnum_enumText"
|
||||
prop="statusEnum_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
@@ -345,16 +237,30 @@
|
||||
|
||||
<!-- 诊疗目录导入对话框 -->
|
||||
<el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
|
||||
<el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
|
||||
<el-upload
|
||||
ref="uploadRef"
|
||||
:limit="1"
|
||||
accept=".xlsx, .xls"
|
||||
:headers="upload.headers"
|
||||
:action="upload.url + '?updateSupport=' + upload.updateSupport"
|
||||
:disabled="upload.isUploading"
|
||||
:on-progress="handleFileUploadProgress"
|
||||
:on-success="handleFileSuccess"
|
||||
:auto-upload="false"
|
||||
drag
|
||||
>
|
||||
<el-icon class="el-icon--upload"><upload-filled /></el-icon>
|
||||
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip text-center">
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate">下载模板</el-link>
|
||||
<el-link
|
||||
type="primary"
|
||||
:underline="false"
|
||||
style="font-size: 12px; vertical-align: baseline"
|
||||
@click="importTemplate"
|
||||
>下载模板</el-link
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</el-upload>
|
||||
@@ -369,13 +275,14 @@
|
||||
</template>
|
||||
|
||||
<script setup name="DiagnosisTreatment">
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { getToken } from '@/utils/auth';
|
||||
import {
|
||||
getDiagnosisTreatmentList,
|
||||
stopDiseaseTreatment,
|
||||
startDiseaseTreatment,
|
||||
getDiseaseTreatmentInit,
|
||||
getDiagnosisTreatmentOne,
|
||||
validateActivityEdit,
|
||||
} from './components/diagnosistreatment';
|
||||
import diagnosisTreatmentDialog from './components/diagnosisTreatmentDialog';
|
||||
import DiagTreYbDialog from './components/diagTreYbDialog';
|
||||
@@ -407,18 +314,17 @@ const upload = reactive({
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
title: '',
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 是否更新已经存在的数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: import.meta.env.VITE_APP_BASE_API + "/data-dictionary/diagnosis-treatment/import-data"
|
||||
url: import.meta.env.VITE_APP_BASE_API + '/data-dictionary/diagnosis-treatment/import-data',
|
||||
});
|
||||
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
queryParams: {
|
||||
@@ -445,7 +351,6 @@ const filterNode = (value, data) => {
|
||||
/** 诊断目录分类查询下拉树结构 */
|
||||
function getDiseaseTreatmentList() {
|
||||
getDiseaseTreatmentInit().then((response) => {
|
||||
console.log(response, 'response诊疗目录分类查询下拉树结构');
|
||||
diagnosisCategoryOptions.value = response.data.diagnosisCategoryOptions.sort((a, b) => {
|
||||
return parseInt(a.value) - parseInt(b.value);
|
||||
});
|
||||
@@ -458,18 +363,15 @@ function getDiseaseTreatmentList() {
|
||||
}
|
||||
/** 查询诊断目录列表 */
|
||||
function getList() {
|
||||
console.log(queryParams.value, 'queryParams***********************');
|
||||
loading.value = true;
|
||||
getDiagnosisTreatmentList(queryParams.value).then((res) => {
|
||||
loading.value = false;
|
||||
diagnosisTreatmentList.value = res.data.records;
|
||||
console.log(diagnosisTreatmentList, 'res.data');
|
||||
total.value = res.data.total;
|
||||
});
|
||||
}
|
||||
/** 节点单击事件 */
|
||||
function handleNodeClick(data) {
|
||||
console.log(data, '节点单击事件');
|
||||
queryParams.value.categoryCode = data.value;
|
||||
currentCategoryEnum.value = data.value;
|
||||
handleQuery();
|
||||
@@ -477,7 +379,6 @@ function handleNodeClick(data) {
|
||||
/** 搜索按钮操作 */
|
||||
function handleQuery() {
|
||||
queryParams.value.pageNo = 1;
|
||||
console.log(queryParams, 'queryParams搜索');
|
||||
getList();
|
||||
}
|
||||
|
||||
@@ -528,7 +429,11 @@ function handleImport() {
|
||||
}
|
||||
/** 下载模板操作 */
|
||||
function importTemplate() {
|
||||
proxy.download('/data-dictionary/diagnosis-treatment/import-template', {}, `diagnosis_treatment_template_${new Date().getTime()}.xlsx`);
|
||||
proxy.download(
|
||||
'/data-dictionary/diagnosis-treatment/import-template',
|
||||
{},
|
||||
`diagnosis_treatment_template_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
}
|
||||
/**文件上传中处理 */
|
||||
const handleFileUploadProgress = (event, file, fileList) => {
|
||||
@@ -541,8 +446,8 @@ const handleFileSuccess = (response, file, fileList) => {
|
||||
proxy.$refs['uploadRef'].handleRemove(file);
|
||||
proxy.$alert(
|
||||
"<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
|
||||
response.msg +
|
||||
'</div>',
|
||||
response.msg +
|
||||
'</div>',
|
||||
'导入结果',
|
||||
{ dangerouslyUseHTMLString: true }
|
||||
);
|
||||
@@ -555,7 +460,6 @@ function submitFileForm() {
|
||||
|
||||
/** 选择条数 */
|
||||
function handleSelectionChange(selection) {
|
||||
console.log(selection, 'selection');
|
||||
// selectedData.value = selection.map((item) => ({ ...item })); // 存储选择的行数据
|
||||
ids.value = selection.map((item) => item.id);
|
||||
single.value = selection.length != 1;
|
||||
@@ -564,22 +468,28 @@ function handleSelectionChange(selection) {
|
||||
|
||||
/** 打开新增弹窗 */
|
||||
function openAddDiagnosisTreatment() {
|
||||
// if (currentCategoryEnum.value) {
|
||||
console.log('打开新增弹窗');
|
||||
title.value = '新增';
|
||||
nextTick(() => {
|
||||
proxy.$refs.diagnosisTreatmentRef.show();
|
||||
});
|
||||
// } else {
|
||||
// proxy.$modal.msgError("请先选择目录分类!");
|
||||
// }
|
||||
}
|
||||
const isEditInfoDisable = ref(0);
|
||||
/** 打开编辑弹窗 */
|
||||
function openEditDiagnosisTreatment(row) {
|
||||
validateActivityEdit(row.id).then((res) => {
|
||||
// res.data == 1 医生开过该诊疗项目,不可编辑
|
||||
isEditInfoDisable.value = res.data;
|
||||
getDiagnosisTreatmentInfo(row);
|
||||
});
|
||||
}
|
||||
// 根据诊疗id 查询诊疗信息
|
||||
function getDiagnosisTreatmentInfo(row) {
|
||||
getDiagnosisTreatmentOne(row.id).then((response) => {
|
||||
console.log(response, 'response88888');
|
||||
|
||||
currentData.value = response.data;
|
||||
currentData.value = {
|
||||
...response.data,
|
||||
// 禁用编辑
|
||||
isEditInfoDisable: isEditInfoDisable.value,
|
||||
};
|
||||
currentData.value.ybFlag == 1
|
||||
? (currentData.value.ybFlag = true)
|
||||
: (currentData.value.ybFlag = false);
|
||||
|
||||
@@ -46,6 +46,21 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="诊断类型" prop="typeCode">
|
||||
<el-select
|
||||
v-model="queryParams.typeCode"
|
||||
placeholder="请选择"
|
||||
style="width: 240px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in condition_type_code"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
@@ -86,6 +101,84 @@
|
||||
</el-col> -->
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="diseaseList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column label="编码" align="center" key="conditionCode" prop="conditionCode" />
|
||||
<el-table-column
|
||||
label="名称"
|
||||
align="center"
|
||||
key="name"
|
||||
prop="name"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="疾病分类"
|
||||
align="center"
|
||||
key="sourceEnum_enumText"
|
||||
prop="sourceEnum_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="拼音助记码"
|
||||
align="center"
|
||||
key="pyStr"
|
||||
prop="pyStr"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="类型"
|
||||
align="center"
|
||||
key="typeCode_dictText"
|
||||
prop="typeCode_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保编码 "
|
||||
align="center"
|
||||
key="ybNo"
|
||||
prop="ybNo"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<!-- <el-table-column
|
||||
label="医保标记"
|
||||
align="center"
|
||||
key="ybMatchFlag"
|
||||
prop="ybMatchFlag_enumText"
|
||||
/>
|
||||
<el-table-column
|
||||
label="医保对码标志"
|
||||
align="center"
|
||||
key="ybMatchFlag"
|
||||
prop="ybMatchFlag_enumText"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
key="statusEnum_enumText"
|
||||
prop="statusEnum_enumText"
|
||||
width="160"
|
||||
/>
|
||||
<el-table-column
|
||||
label="描述"
|
||||
align="center"
|
||||
key="description"
|
||||
prop="description"
|
||||
width="160"
|
||||
/>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
align="center"
|
||||
width="150"
|
||||
class-name="small-padding fixed-width"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
>编辑</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
<!-- 添加外层滚动容器,确保表格可以水平滚动 -->
|
||||
<div class="table-scroll-container">
|
||||
<!-- 移除style="width: 100%",让Element UI表格根据内容自动调整 -->
|
||||
@@ -211,7 +304,7 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="类型" prop="typeCode">
|
||||
<el-form-item label="诊断类型" prop="typeCode">
|
||||
<el-select v-model="form.typeCode" placeholder="请选择" clearable>
|
||||
<el-option
|
||||
v-for="dict in condition_type_code"
|
||||
|
||||
@@ -18,6 +18,13 @@ export function getMedicationList(query) {
|
||||
})
|
||||
}
|
||||
|
||||
export function getYbCatalogResult(address,v) {
|
||||
return request({
|
||||
url: '/yb-request/query-catalog?address=1301&v=1',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 查询药品目录详细
|
||||
export function getMedicationOne(id) {
|
||||
return request({
|
||||
@@ -26,6 +33,14 @@ export function getMedicationOne(id) {
|
||||
params: { id } // 确保参数正确传递
|
||||
})
|
||||
}
|
||||
// 校验药品是否可以编辑
|
||||
export function validateEditMedictaion(medicationId) {
|
||||
return request({
|
||||
url: '/data-dictionary/medication/validate-edit',
|
||||
method: 'get',
|
||||
params: { medicationId } // 确保参数正确传递
|
||||
})
|
||||
}
|
||||
|
||||
// 新增药品目录
|
||||
export function addMedication(data) {
|
||||
|
||||
@@ -46,7 +46,9 @@
|
||||
clearable
|
||||
@change="handleLvChange"
|
||||
style="width: 240px"
|
||||
:disabled="form.isEditInfoDisable === 1 || form.isEditInfoDisable === 2"
|
||||
>
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in chrgitm_lv"
|
||||
:key="dict.value"
|
||||
@@ -70,7 +72,12 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="药品分类" prop="categoryCode">
|
||||
<el-select v-model="form.categoryCode" clearable>
|
||||
<el-select
|
||||
v-model="form.categoryCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in med_category_code"
|
||||
:key="category.value"
|
||||
@@ -107,17 +114,31 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="规格" prop="totalVolume">
|
||||
<el-input v-model="form.totalVolume" placeholder="" />
|
||||
<el-input
|
||||
v-model="form.totalVolume"
|
||||
placeholder=""
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="计量换算" prop="totalVolume">
|
||||
<el-input v-model="form.unitConversionRatio" placeholder="" />
|
||||
<el-input
|
||||
v-model="form.unitConversionRatio"
|
||||
placeholder=""
|
||||
clearable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="剂量单位" prop="doseUnitCode">
|
||||
<el-select v-model="form.doseUnitCode" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.doseUnitCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in unit_code"
|
||||
:key="category.value"
|
||||
@@ -131,7 +152,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="剂型" prop="doseFormCode">
|
||||
<el-select v-model="form.doseFormCode" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.doseFormCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in dose_form_code"
|
||||
:key="category.value"
|
||||
@@ -182,6 +208,18 @@
|
||||
<el-input v-model="form.maxUnit" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="用法说明" prop="dosageInstruction">
|
||||
<el-select v-model="form.dosageInstruction" clearable filterable>
|
||||
<el-option
|
||||
v-for="category in dosage_instruction"
|
||||
:key="category.value"
|
||||
:label="category.label"
|
||||
:value="category.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="title">库存信息</div>
|
||||
<el-row :gutter="24">
|
||||
@@ -222,7 +260,12 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="包装单位" prop="unitCode">
|
||||
<el-select v-model="form.unitCode" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.unitCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in unit_code"
|
||||
:key="category.value"
|
||||
@@ -234,7 +277,12 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="最小单位" prop="minUnitCode">
|
||||
<el-select v-model="form.minUnitCode" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.minUnitCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in unit_code"
|
||||
:key="category.value"
|
||||
@@ -245,8 +293,12 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="警戒线最低值(常规单位)" prop="itemMinQuantity" label-width="180px">
|
||||
<el-input-number
|
||||
<el-form-item
|
||||
label="警戒线最低值(常规单位)"
|
||||
prop="itemMinQuantity"
|
||||
label-width="180px"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.itemMinQuantity"
|
||||
placeholder=""
|
||||
controls-position="right"
|
||||
@@ -287,12 +339,23 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="拆零比" prop="partPercent">
|
||||
<el-input-number v-model="form.partPercent" controls-position="right" placeholder="" :min="1"/>
|
||||
<el-input-number
|
||||
v-model="form.partPercent"
|
||||
controls-position="right"
|
||||
placeholder=""
|
||||
:min="1"
|
||||
clearable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label="警戒线最高值(常规单位)" prop="itemMaxQuantity" label-width="180px">
|
||||
<el-form-item
|
||||
label="警戒线最高值(常规单位)"
|
||||
prop="itemMaxQuantity"
|
||||
label-width="180px"
|
||||
>
|
||||
<el-input-number
|
||||
v-model="form.itemMaxQuantity"
|
||||
placeholder=""
|
||||
@@ -306,12 +369,22 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="购入价" prop="purchasePrice">
|
||||
<el-input v-model="form.purchasePrice" placeholder="" :disabled="false" />
|
||||
<el-input
|
||||
v-model="form.purchasePrice"
|
||||
placeholder=""
|
||||
clearable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="零售价" prop="retailPrice">
|
||||
<el-input v-model="form.retailPrice" placeholder="" :disabled="false" />
|
||||
<el-input
|
||||
v-model="form.retailPrice"
|
||||
placeholder=""
|
||||
clearable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
@@ -324,7 +397,12 @@
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="财务类型" prop="typeCode">
|
||||
<el-select v-model="form.typeCode" clearable filterable>
|
||||
<el-select
|
||||
v-model="form.typeCode"
|
||||
clearable
|
||||
filterable
|
||||
:disabled="form.isEditInfoDisable === 2 || form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="category in fin_type_code"
|
||||
:key="category.value"
|
||||
@@ -375,6 +453,7 @@
|
||||
clearable
|
||||
filterable
|
||||
style="width: 240px"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in med_chrgitm_type"
|
||||
@@ -399,19 +478,28 @@
|
||||
</el-col> -->
|
||||
<el-col :span="6">
|
||||
<el-form-item label="基药标识" prop="basicFlag">
|
||||
<el-checkbox v-model="form.basicFlag"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="form.basicFlag"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
></el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="皮试判别" prop="skinTestFlag">
|
||||
<el-checkbox v-model="form.skinTestFlag"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="form.skinTestFlag"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
></el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="注射药品" prop="injectFlag">
|
||||
<el-checkbox v-model="form.injectFlag"></el-checkbox>
|
||||
<el-checkbox
|
||||
v-model="form.injectFlag"
|
||||
:disabled="form.isEditInfoDisable === 1"
|
||||
></el-checkbox>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
@@ -448,8 +536,8 @@
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="处方标志" prop="rxFlag">
|
||||
<el-radio-group v-model="form.rxFlag">
|
||||
<el-radio v-for="item in rx_flag" :key="item.value" :label="item.value">
|
||||
<el-radio-group v-model="form.rxFlag" :disabled="form.isEditInfoDisable === 1">
|
||||
<el-radio v-for="item in rx_flag" :key="item.value" :value="item.value">
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
@@ -583,6 +671,7 @@ const {
|
||||
ddd_code,
|
||||
dose_from_code,
|
||||
rx_flag,
|
||||
dosage_instruction,
|
||||
chrgitm_lv,
|
||||
} = proxy.useDict(
|
||||
'med_category_code',
|
||||
@@ -598,6 +687,7 @@ const {
|
||||
'ddd_code',
|
||||
'dose_from_code',
|
||||
'rx_flag',
|
||||
'dosage_instruction',
|
||||
'chrgitm_lv'
|
||||
);
|
||||
|
||||
@@ -639,23 +729,11 @@ const data = reactive({
|
||||
form: {},
|
||||
antibioticForm: {},
|
||||
rules: {
|
||||
// statusEnum: [
|
||||
// { required: true, message: "药品状态不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// orgId: [{ required: true, message: "所属科室不能为空", trigger: "blur" }],
|
||||
locationId: [{ required: true, message: '所在位置不能为空', trigger: 'blur' }],
|
||||
doseFormCode: [{ required: true, message: '剂型不能为空', trigger: 'blur' }],
|
||||
totalVolume: [{ required: true, message: '规格不能为空', trigger: 'blur' }],
|
||||
// activeFlag: [{ required: true, message: "活性不能为空", trigger: "blur" }],
|
||||
// methodCode: [{ required: true, message: '用法不能为空', trigger: 'blur' }],
|
||||
// rateCode: [{ required: true, message: '用药频次不能为空', trigger: 'blur' }],
|
||||
// dose: [{ required: true, message: '单次剂量不能为空', trigger: 'blur' }],
|
||||
doseUnitCode: [{ required: true, message: '剂量单位不能为空', trigger: 'blur' }],
|
||||
manufacturerText: [{ required: true, message: '生产厂家不能为空', trigger: 'blur' }],
|
||||
// maxUnit: [
|
||||
// { required: true, message: '单次最大剂量不能为空', trigger: 'blur' },
|
||||
// { validator: validateMaxUnit, trigger: 'blur' },
|
||||
// ],
|
||||
busNo: [{ required: true, message: '药品编号不能为空', trigger: 'blur' }],
|
||||
name: [{ required: true, message: '药品名称不能为空', trigger: 'blur' }],
|
||||
categoryCode: [{ required: true, message: '药品分类不能为空', trigger: 'blur' }],
|
||||
@@ -665,29 +743,10 @@ const data = reactive({
|
||||
minUnitCode: [{ required: true, message: '最小单位不能为空', trigger: 'blur' }],
|
||||
ingredient: [{ required: true, message: '成分不能为空', trigger: 'blur' }],
|
||||
partPercent: [{ required: true, message: '拆零比不能为空', trigger: 'blur' }],
|
||||
// itemMinQuantity: [{ required: true, message: '警戒线最低值不能为空', trigger: 'blur' }],
|
||||
// itemMaxQuantity: [{ required: true, message: '警戒线最高值不能为空', trigger: 'blur' }],
|
||||
doseFrom: [{ required: true, message: '剂量形式不能为空', trigger: 'blur' }],
|
||||
// approvalNumber: [{ required: true, message: '批准文号不能为空', trigger: 'blur' }],
|
||||
// ybMatchFlag: [
|
||||
// { required: true, message: "医保对码不能为空", trigger: "blur" },
|
||||
// ],
|
||||
ybNo: [{ required: false, message: '医保编码不能为空', trigger: 'blur' }],
|
||||
pharmacologyCategoryCode: [{ required: true, message: '药品性质不能为空', trigger: 'blur' }],
|
||||
// skinTestFlag: [
|
||||
// { required: true, message: "皮试不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// injectFlag: [{ required: true, message: "注射不能为空", trigger: "blur" }],
|
||||
supplyId: [{ required: true, message: '供应商不能为空', trigger: 'blur' }],
|
||||
// restrictedFlag: [
|
||||
// { required: true, message: "限制使用不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// childrenFlag: [
|
||||
// { required: true, message: "儿童用药不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// restrictedScope: [
|
||||
// { required: true, message: "限制使用范围不能为空", trigger: "blur" },
|
||||
// ],
|
||||
nationalDrugCode: [{ required: false, message: '贯标国家编码不能为空', trigger: 'blur' }],
|
||||
partAttributeEnum: [{ required: true, message: '拆分属性不能为空', trigger: 'blur' }],
|
||||
thoPartAttributeEnum: [
|
||||
@@ -697,16 +756,8 @@ const data = reactive({
|
||||
trigger: 'blur',
|
||||
},
|
||||
],
|
||||
// basicFlag: [
|
||||
// { required: true, message: "基药标识不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// antibioticFlag: [
|
||||
// { required: true, message: "抗生素不能为空", trigger: "blur" },
|
||||
// ],
|
||||
// selfFlag: [{ required: true, message: "自制不能为空", trigger: "blur" }],
|
||||
purchasePrice: [{ required: true, message: '购入价不能为空', trigger: 'blur' }],
|
||||
retailPrice: [{ required: true, message: '零售价不能为空', trigger: 'blur' }],
|
||||
// maximumRetailPrice: [{ required: true, message: '最高零售价不能为空', trigger: 'blur' }],
|
||||
ybType: [{ required: true, message: '医保类型不能为空', trigger: 'blur' }],
|
||||
rxFlag: [{ required: true, message: '处方标志不能为空', trigger: 'blur' }],
|
||||
chrgitmLv: [{ required: true, message: '医保等级不能为空', trigger: 'blur' }],
|
||||
@@ -762,15 +813,12 @@ function validateMaxUnit(rule, value, callback) {
|
||||
/** 查询部门下拉树结构 */
|
||||
function getDeptTree() {
|
||||
deptTreeSelect().then((response) => {
|
||||
console.log(response, 'response查询部门下拉树结构');
|
||||
deptOptions.value = response.data.records;
|
||||
console.log(deptOptions.value, '部门下拉树结构');
|
||||
});
|
||||
}
|
||||
/** 查询地点下拉树结构 */
|
||||
function getLocationTree() {
|
||||
locationTreeSelect({ formList: '11,16' }).then((response) => {
|
||||
console.log(response, 'response查询部门下拉树结构');
|
||||
locationOptions.value = response.data.records;
|
||||
});
|
||||
}
|
||||
@@ -787,10 +835,7 @@ function show(row) {
|
||||
statusRestrictedOptions.value = props.statusRestrictedOptions;
|
||||
partAttributeEnumOptions.value = props.partAttributeEnumOptions;
|
||||
tempOrderSplitPropertyOptions.value = props.tempOrderSplitPropertyOptions;
|
||||
console.log(form.value.categoryCode, 'form.value.categoryCode');
|
||||
// setValue(row);
|
||||
form.value.categoryCode = props.currentCategoryEnum;
|
||||
console.log(form.value, 1234567890);
|
||||
visible.value = true;
|
||||
}
|
||||
|
||||
@@ -799,38 +844,22 @@ function setValue(row) {
|
||||
name: formatValue(props.currentCategoryEnum == '4' ? row.singleDrugName : row.registeredName), // 通用名称
|
||||
merchandiseName: formatValue(row.registeredName), // 商品名称
|
||||
ybNo: formatValue(row.medicalCatalogCode), // 医保编码
|
||||
// categoryCode: row.drugCategory, // 药品分类
|
||||
// ybMatchFlag: row., // 医保对码
|
||||
// pharmacologyCategoryCode: row., // 药品性质
|
||||
totalVolume: formatValue(
|
||||
props.currentCategoryEnum == '4' ? row.conventionalUsage : row.drugSpecification
|
||||
), // 规格
|
||||
doseode: formatValue(row.drugForm), // 剂型
|
||||
doseUnitCode: formatValue(row.minMeasurementUnit), // 剂量单位
|
||||
// usageLimit: row.dosage, // 用量限定
|
||||
methodCode: formatValue(row.usage), // 用法
|
||||
rateCode: formatValue(row.frequency), // 用药频次
|
||||
// maxUnit: row., // 单次最大剂量
|
||||
// skinTestFlag: row., // 皮试判别
|
||||
// locationId: row., // 采购入库位置
|
||||
unitCode: formatValue(row.packagingUnit), // 包装单位
|
||||
minUnitCode: formatValue(row.minUseUnit), // 最小单位
|
||||
// partAttributeEnum: row., // 门诊拆分属性
|
||||
// thoPartAttributeEnum: row., // 住院临时医嘱拆分属性
|
||||
partPercent: formatValue(row.conversionRatio), // 拆零比
|
||||
itemMinQuantity: formatValue(row.itemMinQuantity), // 警戒线最低值
|
||||
itemMaxQuantity: formatValue(row.itemMaxQuantity), // 警戒线最高值
|
||||
|
||||
// purchasePrice: row., // 购入价
|
||||
// retailPrice: row., // 零售价
|
||||
// maximumRetailPrice: row., // 最高零售价
|
||||
// typeCode: row., // 财务类型
|
||||
nationalDrugCode: formatValue(row.nationalDrugCode), // 贯标国家编码
|
||||
version: formatValue(row.version), // 药品版本
|
||||
approvalNumber: formatValue(row.approvalNo), // 批准文号
|
||||
// ybType: formatValue(row.insuranceClass), // 医保类别
|
||||
manufacturerText: formatValue(row.manufacturerName), // 生产厂家
|
||||
// supplyId: row., // 供应商
|
||||
basicFlag: formatValue(row.essentialDrugFlag), // 基药标识
|
||||
// injectFlag: row., // 注射药物
|
||||
// childrenFlag: row.pediatricUse, // 儿童用药标志
|
||||
@@ -887,7 +916,6 @@ function edit() {
|
||||
antibioticForm.value.maxRateCode = form.value.maxRateCode;
|
||||
antibioticForm.value.dddUnitCode = form.value.dddUnitCode;
|
||||
antibioticForm.value.dddCode = form.value.dddCode;
|
||||
//antibioticForm.value.chrgitmLv = form.value.chrgitmLv ? form.value.chrgitmLv.toString() : undefined;
|
||||
form.value.chrgitmLv = form.value.chrgitmLv ? form.value.chrgitmLv.toString() : undefined;
|
||||
visible.value = true;
|
||||
}
|
||||
@@ -941,7 +969,6 @@ function reset() {
|
||||
minUnitCode: undefined,
|
||||
doseUnitCode: undefined,
|
||||
doseFormCode: undefined,
|
||||
// statusEnum: undefined,
|
||||
skinTestFlag: undefined,
|
||||
injectFlag: undefined,
|
||||
childrenFlag: undefined,
|
||||
@@ -968,8 +995,6 @@ function reset() {
|
||||
nationalDrugCode: undefined,
|
||||
antibioticFlag: undefined,
|
||||
selfFlag: undefined,
|
||||
// minRateCode: undefined,
|
||||
// maxRateCode: undefined,
|
||||
partAttributeEnum: undefined,
|
||||
thoPartAttributeEnum: undefined,
|
||||
usageLimit: undefined,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<el-dialog
|
||||
title="医保药品目录"
|
||||
v-model="visible"
|
||||
width="1500px"
|
||||
width="1800px"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
@close="cancel"
|
||||
@@ -29,22 +29,32 @@
|
||||
<span v-else>{{ scope.row.registeredName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="药品类别" prop="drugCategoryName">
|
||||
<el-table-column align="center" label="药品类别" prop="drugCategoryName" width="120">
|
||||
<template #default="scope">
|
||||
{{ formatStr(scope.row.drugCategoryName) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="国药准字" prop="drugCategoryName">
|
||||
<template #default="scope">
|
||||
{{ formatStr(scope.row.approvalNo) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="药品规格" prop="drugSpecification">
|
||||
<template #default="scope">
|
||||
<span v-if="props.currentCategoryEnum == '4'">{{ scope.row.conventionalUsage }}</span>
|
||||
<span v-else>{{ scope.row.drugSpecification }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="处方药" prop="otcFlagName">
|
||||
<el-table-column align="center" label="处方药" prop="otcFlagName" width="120">
|
||||
<template #default="scope">
|
||||
{{ formatStr(scope.row.otcFlagName) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="厂家" prop="manufacturerName">
|
||||
<template #default="scope">
|
||||
{{ formatStr(scope.row.manufacturerName) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="批准文号" prop="approvalNo" />
|
||||
<el-table-column align="center" label="操作" width="80">
|
||||
<template #default="scope">
|
||||
|
||||
@@ -62,6 +62,24 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="医保接口编号" prop="searchKey" label-width="120">
|
||||
<el-input
|
||||
v-model="queryParams.address"
|
||||
placeholder="1301-1321"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="版本号" prop="searchKey" label-width="120">
|
||||
<el-input
|
||||
v-model="queryParams.v"
|
||||
placeholder="版本号"
|
||||
clearable
|
||||
style="width: 240px"
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- </el-col> -->
|
||||
</el-row>
|
||||
<!-- <el-form-item>
|
||||
@@ -91,20 +109,17 @@
|
||||
>启用</el-button
|
||||
>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
icon="Upload"
|
||||
@click="handleImport"
|
||||
>导入</el-button
|
||||
>
|
||||
<el-button type="info" plain icon="Upload" @click="handleImport">导入</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Search" @click="getList">查询</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Search" @click="getYbCatalog">查询目录</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
@@ -129,7 +144,8 @@
|
||||
key="busNo"
|
||||
prop="busNo"
|
||||
:show-overflow-tooltip="true"
|
||||
width="90"
|
||||
min-width="90"
|
||||
width="200px"
|
||||
/>
|
||||
<el-table-column
|
||||
label="药品名称"
|
||||
@@ -137,7 +153,17 @@
|
||||
key="name"
|
||||
prop="name"
|
||||
:show-overflow-tooltip="true"
|
||||
width="110"
|
||||
min-width="110"
|
||||
width="200px"
|
||||
/>
|
||||
<el-table-column
|
||||
label="规格"
|
||||
align="center"
|
||||
key="totalVolume"
|
||||
prop="totalVolume"
|
||||
:show-overflow-tooltip="true"
|
||||
min-width="200px"
|
||||
width="200px"
|
||||
/>
|
||||
<el-table-column
|
||||
label="药品状态"
|
||||
@@ -146,11 +172,13 @@
|
||||
prop="statusEnum_enumText"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.statusEnum == 2" type="success" >{{ scope.row.statusEnum_enumText }}</el-tag>
|
||||
<el-tag v-else type="error">{{ scope.row.statusEnum_enumText }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.statusEnum == 2" type="success">{{
|
||||
scope.row.statusEnum_enumText
|
||||
}}</el-tag>
|
||||
<el-tag v-else type="error">{{ scope.row.statusEnum_enumText }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="药品分类"
|
||||
align="center"
|
||||
@@ -166,21 +194,14 @@
|
||||
prop="orgId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
label="采购入库位置"
|
||||
align="center"
|
||||
key="locationId_dictText"
|
||||
prop="locationId_dictText"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="规格"
|
||||
align="center"
|
||||
key="totalVolume"
|
||||
prop="totalVolume"
|
||||
:show-overflow-tooltip="true"
|
||||
width="200px"
|
||||
/>
|
||||
/> -->
|
||||
|
||||
<el-table-column
|
||||
label="医保编码"
|
||||
align="center"
|
||||
@@ -310,15 +331,17 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Medication">
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { getToken } from '@/utils/auth';
|
||||
import {
|
||||
getMedicationList,
|
||||
editMedication,
|
||||
addMedication,
|
||||
getMedicationCategory,
|
||||
validateEditMedictaion,
|
||||
getMedicationOne,
|
||||
startMedication,
|
||||
stopMedication,
|
||||
getYbCatalogResult,
|
||||
} from './components/medicine';
|
||||
import medicineDialog from './components/medicineDialog';
|
||||
import MedicineYbDialog from './components/medicineYbDialog';
|
||||
@@ -356,15 +379,15 @@ const upload = reactive({
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
title: '',
|
||||
// 是否禁用上传
|
||||
isUploading: false,
|
||||
// 是否更新已经存在的数据
|
||||
updateSupport: 0,
|
||||
// 设置上传的请求头部
|
||||
headers: { Authorization: "Bearer " + getToken() },
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
// 上传的地址
|
||||
url: import.meta.env.VITE_APP_BASE_API + "/data-dictionary/medication/import-data"
|
||||
url: import.meta.env.VITE_APP_BASE_API + '/data-dictionary/medication/import-data',
|
||||
});
|
||||
|
||||
const data = reactive({
|
||||
@@ -376,6 +399,8 @@ const data = reactive({
|
||||
statusEnum: undefined, // 状态(包括 1:预置,2:启用,3:停用)
|
||||
ybMatchFlag: undefined, // 是否医保匹配(包括 1:是,0:否)
|
||||
categoryCode: undefined, // 目录
|
||||
address: undefined, // 目录
|
||||
v: undefined, // 目录
|
||||
},
|
||||
rules: {},
|
||||
});
|
||||
@@ -391,7 +416,6 @@ const filterNode = (value, data) => {
|
||||
/** 病种目录分类查询下拉树结构 */
|
||||
function getMedicationCategoryList() {
|
||||
getMedicationCategory().then((response) => {
|
||||
console.log(response, 'response药品目录分类查询下拉树结构');
|
||||
medicationOptions.value = response.data.medicationCategoryCodeOptions;
|
||||
medicationOptions.value.unshift({ info: '全部', value: '' });
|
||||
statusFlagOptions.value = response.data.statusFlagOptions;
|
||||
@@ -406,14 +430,20 @@ function getMedicationCategoryList() {
|
||||
/** 查询病种目录列表 */
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
console.log(queryParams.value, 'queryParams***********************');
|
||||
getMedicationList(queryParams.value).then((res) => {
|
||||
loading.value = false;
|
||||
console.log(res, 'res');
|
||||
medicationList.value = res.data.records;
|
||||
total.value = res.data.total;
|
||||
});
|
||||
}
|
||||
|
||||
/** 查询病种目录列表 */
|
||||
function getYbCatalog() {
|
||||
loading.value = true;
|
||||
getYbCatalogResult(queryParams.value).then((res) => {
|
||||
loading.value = false;
|
||||
});
|
||||
}
|
||||
/** 节点单击事件 */
|
||||
function handleNodeClick(data) {
|
||||
queryParams.value.categoryCode = data.value;
|
||||
@@ -423,7 +453,6 @@ function handleNodeClick(data) {
|
||||
/** 搜索按钮操作 */
|
||||
function handleQuery() {
|
||||
queryParams.value.pageNo = 1;
|
||||
console.log(queryParams.value, 'queryParams');
|
||||
getList();
|
||||
}
|
||||
|
||||
@@ -444,7 +473,6 @@ function handleStart() {
|
||||
/** 停用按钮操作 */
|
||||
function handleClose() {
|
||||
const stopIds = ids.value;
|
||||
console.log(data, 'data');
|
||||
proxy.$modal
|
||||
.confirm('是否确认停用数据!')
|
||||
.then(function () {
|
||||
@@ -474,7 +502,11 @@ function handleImport() {
|
||||
}
|
||||
/** 下载模板操作 */
|
||||
function importTemplate() {
|
||||
proxy.download('/data-dictionary/medication/import-template', {}, `medication_template_${new Date().getTime()}.xlsx`);
|
||||
proxy.download(
|
||||
'/data-dictionary/medication/import-template',
|
||||
{},
|
||||
`medication_template_${new Date().getTime()}.xlsx`
|
||||
);
|
||||
}
|
||||
/**文件上传中处理 */
|
||||
const handleFileUploadProgress = (event, file, fileList) => {
|
||||
@@ -508,25 +540,34 @@ function handleSelectionChange(selection) {
|
||||
|
||||
/** 打开新增弹窗 */
|
||||
function openAddMedicine() {
|
||||
// if (!currentCategoryEnum.value) {
|
||||
// return proxy.$modal.msgError("请选择药品目录分类");
|
||||
// }
|
||||
// proxy.$refs['medicineYbRef'].show();
|
||||
proxy.$refs['medicineRef'].show();
|
||||
}
|
||||
const isEditInfoDisable = ref(0);
|
||||
|
||||
/** 打开编辑弹窗 */
|
||||
function openEditMedicine(row) {
|
||||
validateEditMedictaion(row.id).then((res) => {
|
||||
// res.data == 1 医生开过该药品,不可编辑
|
||||
// res.data == 2 该药品已经入库过,不可编辑
|
||||
isEditInfoDisable.value = res.data;
|
||||
getMedicationInfo(row);
|
||||
});
|
||||
}
|
||||
// 根据药品id 查询药品信息
|
||||
function getMedicationInfo(row) {
|
||||
getMedicationOne(row.id).then((response) => {
|
||||
currentData.value = response.data;
|
||||
currentData.value = {
|
||||
...response.data,
|
||||
// 禁用编辑
|
||||
isEditInfoDisable: isEditInfoDisable.value,
|
||||
};
|
||||
nextTick(() => {
|
||||
proxy.$refs['medicineRef'].edit();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/** 提交按钮 */
|
||||
function submitForm(formData) {
|
||||
console.log(formData, 'submitForm');
|
||||
if (formData.id != undefined) {
|
||||
editMedication(formData).then((response) => {
|
||||
proxy.$modal.msgSuccess('修改成功');
|
||||
|
||||
477
openhis-ui-vue3/src/views/catalog/national/index.vue
Normal file
477
openhis-ui-vue3/src/views/catalog/national/index.vue
Normal file
@@ -0,0 +1,477 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-row :gutter="20">
|
||||
<!-- 搜索条件区域 -->
|
||||
<el-col :span="24">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" size="small">
|
||||
<el-form-item label="项目名">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="国临编码/国临名称/医保编码/医保名称" clearable style="width: 280px" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">查询</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
<el-col :span="24" class="mb20">
|
||||
<el-button type="primary" icon="Plus" @click="handleAdd">添加新项目</el-button>
|
||||
<el-button type="danger" icon="Stop" @click="handleDelete">删除</el-button>
|
||||
<el-button type="success" icon="Check">启用</el-button>
|
||||
<el-button type="info" icon="Download">导入</el-button>
|
||||
</el-col>
|
||||
|
||||
<!-- 数据表格区域 -->
|
||||
<el-col :span="24">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="dataList"
|
||||
style="width: 100%"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column prop="glNo"
|
||||
label="国临版疾病编码"
|
||||
key="glNo"
|
||||
:show-overflow-tooltip="true"
|
||||
align="center"
|
||||
width="180" />
|
||||
|
||||
<el-table-column prop="glName"
|
||||
label="国临版疾病名称"
|
||||
key="glName"
|
||||
:show-overflow-tooltip="true"
|
||||
align="center"
|
||||
min-width="200" />
|
||||
|
||||
<el-table-column prop="icd10No"
|
||||
label="医保版疾病编码"
|
||||
key="icd10No"
|
||||
:show-overflow-tooltip="true"
|
||||
align="center"
|
||||
width="180" />
|
||||
|
||||
<el-table-column prop="icd10Name"
|
||||
label="医保版疾病名称"
|
||||
key="icd10Name"
|
||||
:show-overflow-tooltip="true"
|
||||
align="center"
|
||||
min-width="200" />
|
||||
<el-table-column label="操作" width="120" align="center">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link size="small" @click="handleEdit(scope.row)">编辑</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页控件 -->
|
||||
<el-pagination
|
||||
v-model:current-page="queryParams.pageNum"
|
||||
v-model:page-size="queryParams.pageSize"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
:total="total"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 添加对话框 -->
|
||||
<el-dialog
|
||||
v-model="addDialogVisible"
|
||||
title="添加国临编码"
|
||||
width="600px"
|
||||
:before-close="handleClose"
|
||||
>
|
||||
|
||||
<el-form
|
||||
ref="addFormRef"
|
||||
:model="addFormData"
|
||||
:rules="rules"
|
||||
label-width="120px"
|
||||
size="small"
|
||||
>
|
||||
<el-form-item label="国临版疾病编码" prop="glNo">
|
||||
<el-input v-model="addFormData.glNo" placeholder="请输入国临版疾病编码" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="国临版疾病名称" prop="glName">
|
||||
<el-input v-model="addFormData.glName" placeholder="请输入国临版疾病名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="医保版疾病编码" prop="icd10No">
|
||||
<el-input v-model="addFormData.icd10No" placeholder="请输入医保版疾病编码" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="医保版疾病名称" prop="icd10Name">
|
||||
<el-input v-model="addFormData.icd10Name" placeholder="请输入医保版疾病名称" clearable />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="handleClose">取消</el-button>
|
||||
<el-button type="primary" @click="handleSubmit">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 编辑对话框 -->
|
||||
<el-dialog
|
||||
v-model="editDialogVisible"
|
||||
title="编辑国临编码"
|
||||
width="600px"
|
||||
:before-close="handleEditClose"
|
||||
>
|
||||
<el-form
|
||||
ref="editFormRef"
|
||||
:model="editFormData"
|
||||
:rules="rules"
|
||||
label-width="120px"
|
||||
size="small"
|
||||
>
|
||||
<el-form-item label="国临版疾病编码" prop="glNo">
|
||||
<el-input v-model="editFormData.glNo" placeholder="请输入国临版疾病编码" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="国临版疾病名称" prop="glName">
|
||||
<el-input v-model="editFormData.glName" placeholder="请输入国临版疾病名称" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="医保版疾病编码" prop="icd10No">
|
||||
<el-input v-model="editFormData.icd10No" placeholder="请输入医保版疾病编码" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="医保版疾病名称" prop="icd10Name">
|
||||
<el-input v-model="editFormData.icd10Name" placeholder="请输入医保版疾病名称" clearable />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="handleEditClose">取消</el-button>
|
||||
<el-button type="primary" @click="handleEditSubmit">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="NationalCode">
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { useRouter, useRoute } from 'vue-router';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
import request from '@/utils/request';
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
// 页面数据
|
||||
const loading = ref(true);
|
||||
const dataList = ref([]);
|
||||
const total = ref(0);
|
||||
const ids = ref([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
|
||||
// 对话框相关
|
||||
const addDialogVisible = ref(false);
|
||||
const editDialogVisible = ref(false); // 编辑对话框可见性
|
||||
const addFormRef = ref(null);
|
||||
const editFormRef = ref(null); // 编辑表单引用
|
||||
const addFormData = reactive({
|
||||
glNo: '',
|
||||
glName: '',
|
||||
icd10No: '',
|
||||
icd10Name: ''
|
||||
});
|
||||
// 编辑表单数据
|
||||
const editFormData = reactive({
|
||||
id: '',
|
||||
glNo: '',
|
||||
glName: '',
|
||||
icd10No: '',
|
||||
icd10Name: ''
|
||||
});
|
||||
|
||||
// 表单验证规则
|
||||
const rules = {
|
||||
glNo: [
|
||||
{ required: true, message: '请输入国临版疾病编码', trigger: 'blur' }
|
||||
],
|
||||
glName: [
|
||||
{ required: true, message: '请输入国临版疾病名称', trigger: 'blur' }
|
||||
],
|
||||
icd10No: [
|
||||
{ required: true, message: '请输入医保版疾病编码', trigger: 'blur' }
|
||||
],
|
||||
icd10Name: [
|
||||
{ required: true, message: '请输入医保版疾病名称', trigger: 'blur' }
|
||||
]
|
||||
};
|
||||
|
||||
// 查询参数
|
||||
const queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
searchKey: undefined
|
||||
});
|
||||
|
||||
// 查询
|
||||
function handleQuery() {
|
||||
queryParams.pageNum = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
// 重置
|
||||
function resetQuery() {
|
||||
Object.assign(queryParams, {
|
||||
searchKey: undefined,
|
||||
status: undefined,
|
||||
ybFlag: undefined,
|
||||
type: undefined
|
||||
});
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
// 分页变化
|
||||
function handleSizeChange(size) {
|
||||
queryParams.pageSize = size;
|
||||
getList();
|
||||
}
|
||||
|
||||
function handleCurrentChange(current) {
|
||||
queryParams.pageNum = current;
|
||||
getList();
|
||||
}
|
||||
function handleDelete() {
|
||||
// 安全检查ids.value是否存在且为数组
|
||||
if (!ids.value || ids.value.length === 0) {
|
||||
ElMessage.warning('请先选择要删除的数据');
|
||||
return;
|
||||
}
|
||||
|
||||
// 显示确认对话框
|
||||
ElMessageBox.confirm('确定要删除选中的数据吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
loading.value = true;
|
||||
|
||||
// 修复:确保ids.value是数组并过滤掉无效值
|
||||
const validIds = Array.isArray(ids.value) ? ids.value.filter(id => id) : [];
|
||||
|
||||
if (validIds.length === 0) {
|
||||
loading.value = false;
|
||||
ElMessage.warning('没有有效的数据可删除');
|
||||
return;
|
||||
}
|
||||
|
||||
// 简化删除逻辑,改为单个请求,因为后端可能不支持批量删除
|
||||
// 先删除第一个,后续可以根据需要调整
|
||||
const firstId = validIds[0];
|
||||
|
||||
request({
|
||||
url: '/base-data-manage/ICD10/delete-icd-Information',
|
||||
method: 'delete',
|
||||
params: { glNo: firstId } // 传递glNo参数
|
||||
}).then(res => {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('删除成功');
|
||||
// 刷新列表
|
||||
getList();
|
||||
// 清空选中状态
|
||||
ids.value = [];
|
||||
} else {
|
||||
ElMessage.error(res.msg || '删除失败');
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('删除数据失败:', error);
|
||||
ElMessage.error('删除失败,请稍后重试');
|
||||
});
|
||||
}).catch(() => {
|
||||
// 用户取消删除操作
|
||||
});
|
||||
}
|
||||
|
||||
// 同时修复handleSelectionChange函数,确保正确设置ids
|
||||
function handleSelectionChange(selection) {
|
||||
// 确保selection是数组
|
||||
if (Array.isArray(selection)) {
|
||||
ids.value = selection.map(item => {
|
||||
// 尝试使用glNo,如果没有则使用id,确保返回有效的值
|
||||
return item.glNo || item.id || '';
|
||||
}).filter(Boolean); // 过滤掉空值
|
||||
single.value = ids.value.length <= 1;
|
||||
multiple.value = !single.value;
|
||||
} else {
|
||||
// 如果selection不是数组,重置ids
|
||||
ids.value = [];
|
||||
single.value = true;
|
||||
multiple.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
// 打开添加对话框
|
||||
function handleAdd() {
|
||||
// 重置表单
|
||||
addFormRef.value?.resetFields();
|
||||
Object.assign(addFormData, {
|
||||
glNo: '',
|
||||
glName: '',
|
||||
icd10No: '',
|
||||
icd10Name: ''
|
||||
});
|
||||
// 显示对话框
|
||||
addDialogVisible.value = true;
|
||||
}
|
||||
|
||||
// 关闭对话框
|
||||
function handleClose() {
|
||||
addDialogVisible.value = false;
|
||||
}
|
||||
function handleEdit(row) {
|
||||
// 填充编辑表单数据
|
||||
Object.assign(editFormData, {
|
||||
id: row.id || '',
|
||||
glNo: row.glNo || '',
|
||||
glName: row.glName || '',
|
||||
icd10No: row.icd10No || '',
|
||||
icd10Name: row.icd10Name || ''
|
||||
});
|
||||
// 显示编辑对话框
|
||||
editDialogVisible.value = true;
|
||||
}
|
||||
|
||||
function handleEditClose() {
|
||||
editDialogVisible.value = false;
|
||||
}
|
||||
|
||||
function handleEditSubmit() {
|
||||
editFormRef.value?.validate((valid) => {
|
||||
if (valid) {
|
||||
// 移除查重校验,直接进行编辑操作
|
||||
loading.value = true;
|
||||
// 调用后端编辑接口
|
||||
request({
|
||||
url: '/base-data-manage/ICD10/update-icd-Information',
|
||||
method: 'put',
|
||||
data: editFormData
|
||||
}).then(res => {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
console.log('编辑国临编码成功');
|
||||
ElMessage.success('编辑成功');
|
||||
editDialogVisible.value = false;
|
||||
getList();
|
||||
} else {
|
||||
ElMessage.error(res.msg || '编辑失败');
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('编辑国临编码失败:', error);
|
||||
ElMessage.error('编辑失败,请稍后重试');
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
// 提交表单
|
||||
function handleSubmit() {
|
||||
addFormRef.value?.validate((valid) => {
|
||||
if (valid) {
|
||||
|
||||
// 先进行查重校验
|
||||
checkAddDuplicate().then(isDuplicate => {
|
||||
if (isDuplicate) {
|
||||
ElMessage.warning('该项目已存在,请检查国临编码或医保编码是否重复');
|
||||
return;
|
||||
}
|
||||
|
||||
loading.value = true;
|
||||
// 调用后端添加接口
|
||||
request({
|
||||
url: '/base-data-manage/ICD10/add-icd-Information',
|
||||
method: 'post',
|
||||
data: addFormData // 直接提交表单数据
|
||||
}).then(res => {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
// 成功提示
|
||||
ElMessage.success('添加成功');
|
||||
// 关闭对话框
|
||||
addDialogVisible.value = false;
|
||||
// 刷新列表
|
||||
getList();
|
||||
} else {
|
||||
// 失败提示
|
||||
ElMessage.error(res.msg || '添加失败');
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('添加国临编码失败:', error);
|
||||
ElMessage.error('添加失败,请稍后重试');
|
||||
});
|
||||
}).catch(error => {
|
||||
console.error('查重校验失败:', error);
|
||||
ElMessage.error('校验失败,请稍后重试');
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 查重校验函数
|
||||
async function checkAddDuplicate() {
|
||||
try {
|
||||
// 查询现有数据列表
|
||||
const res = await request({
|
||||
url: '/base-data-manage/ICD10/information-page',
|
||||
method: 'get',
|
||||
params: {
|
||||
pageNum: 1,
|
||||
pageSize: 1000, // 查询足够多的数据进行校验
|
||||
searchKey: undefined
|
||||
}
|
||||
});
|
||||
|
||||
if (res.code === 200 && res.data.records) {
|
||||
// 检查是否存在相同的国临编码或医保编码
|
||||
const isExist = res.data.records.some(item =>
|
||||
item.glNo === addFormData.glNo || item.icd10No === addFormData.icd10No
|
||||
);
|
||||
return isExist;
|
||||
}
|
||||
return false;
|
||||
} catch (error) {
|
||||
console.error('查重校验请求失败:', error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 获取列表数据
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
request({
|
||||
url: '/base-data-manage/ICD10/information-page',
|
||||
method: 'get',
|
||||
params: queryParams
|
||||
}).then(res => {
|
||||
loading.value = false;
|
||||
if (res.code === 200) {
|
||||
dataList.value = res.data.records || [];
|
||||
total.value = res.data.total || 0;
|
||||
}
|
||||
}).catch(error => {
|
||||
loading.value = false;
|
||||
console.error('获取国临编码数据失败:', error);
|
||||
});
|
||||
}
|
||||
|
||||
// 页面初始化
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-container {
|
||||
padding: 20px;
|
||||
}
|
||||
.mb20 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user