实现药品目录处方标志保存

This commit is contained in:
叶锦涛
2025-11-19 16:47:35 +08:00
parent c84fc3c236
commit 3ad3f21362
2 changed files with 93 additions and 25 deletions

View File

@@ -1,5 +1,14 @@
import request from '@/utils/request'
// 药品字典映射,包含支持'否'、'是'和'双跨'的处方标志选项
export const medicineDictMap = {
rx_flag: [
{ label: '否', value: '0' }, // 非处方药
{ label: '是', value: '1' }, // 处方药
{ label: '双跨', value: '2' } // 双跨药品
]
};
// 查询药品目录列表
export function getMedicationList(query) {
return request({
@@ -106,3 +115,5 @@ export function queryYbCatalogue(queryParams) {
method: 'post',
})
}
// 药品字典配置已在文件开头声明

View File

@@ -567,6 +567,7 @@ import { deptTreeSelect, locationTreeSelect } from './medicine';
import moment from 'moment';
const router = useRouter();
import { medicineDictMap } from './medicine'
const { proxy } = getCurrentInstance();
const {
med_category_code,
@@ -600,6 +601,28 @@ const {
'chrgitm_lv'
);
const { dict, loading } = reactive({
dict: {
medicineCategory: [],
medicineAttr: [],
unit: [],
inputUnit: [],
outputUnit: [],
drugForm: [],
frequency: [],
way: [],
storagePosition: [],
rx_flag: medicineDictMap.rx_flag,
manageType: [],
feeType: [],
chargeType: [],
isUse: [],
isMatch: []
},
loading: false
})
console.log('rx_flag字典内容:', dict.rx_flag)
const title = ref('');
const visible = ref(false);
const emits = defineEmits(['submit']); // 声明自定义事件
@@ -809,13 +832,13 @@ function setValue(row) {
manufacturerText: formatValue(row.manufacturerName), // 生产厂家
// supplyId: row., // 供应商
basicFlag: formatValue(row.essentialDrugFlag), // 基药标识
// injectFlag: row., // 注射药
// injectFlag: row., // 注射药
// childrenFlag: row.pediatricUse, // 儿童用药标志
// selfFlag: row., // 自制药标识
// activeFlag: row., // 是否活性
restrictedFlag: formatValue(row.restrictedFlag), // 限制使用
restrictedScope: formatValue(row.restrictedScope), // 限制使用范围
rxFlag: formatValue(row.otcFlag), // 处方标志
rxFlag: formatValue(row.rxFlag), // 处方标志
chrgitmLv: formatValue(
row.insuranceClass == '甲' ? '1' : row.insuranceClass == '乙' ? '2' : '3'
), // 医保等级
@@ -879,16 +902,30 @@ function setFlag(data) {
data.antibioticFlag == 1 ? (data.antibioticFlag = true) : (data.antibioticFlag = false); //抗生素
data.selfFlag == 1 ? (data.selfFlag = true) : (data.selfFlag = false); //自制
data.basicFlag == 1 ? (data.basicFlag = true) : (data.basicFlag = false); //自制
// 确保rxFlag有值防止undefined
if (!data.rxFlag) {
data.rxFlag = '0'; // 默认非处方
} else {
// 确保rxFlag始终是字符串类型支持"0"(非处方)、"1"(处方)、"2"(双跨)
data.rxFlag = String(data.rxFlag);
// 验证rxFlag值是否有效确保只接受'0'、'1'或'2'
if (!['0', '1', '2'].includes(data.rxFlag)) {
data.rxFlag = '0'; // 如果值无效,设置为默认值
}
}
}
/** 重置操作表单 */
function reset() {
form.value = {
id: undefined,
medicationDefId: undefined,
// orgId: undefined,
locationId: undefined,
activeFlag: undefined,
doseFrom: undefined,
medicineCode: '',
medicineName: '',
tradeName: '',
spec: '',
manufacturer: '',
rxFlag: '0', // 默认设置为非处方
dose: undefined,
rateCode: undefined,
approvalNumber: undefined,
name: undefined,
@@ -937,24 +974,22 @@ function reset() {
thoPartAttributeEnum: undefined,
usageLimit: undefined,
basicFlag: undefined,
rxFlag: undefined,
rxFlag: '0', // 默认非处方药品
chrgitmLv: undefined,
};
proxy.resetForm('medicationRef');
antibioticForm.value = {
antibioticCode: undefined,
restrictedEnum: undefined,
dose: undefined,
maxUnit: undefined,
minRateCode: undefined,
maxRateCode: undefined,
dddUnitCode: undefined,
dddCode: undefined,
minRateCode: undefined,
maxRateCode: undefined,
};
proxy.resetForm('antibioticRef');
}
/** 提交按钮 */
// 提交按钮
function submitForm() {
// 布尔值标志转换为数字
form.value.activeFlag == true ? (form.value.activeFlag = 1) : (form.value.activeFlag = 0); //是否为活性
form.value.ybMatchFlag == true ? (form.value.ybMatchFlag = 1) : (form.value.ybMatchFlag = 0); //医保是否对码
form.value.skinTestFlag == true ? (form.value.skinTestFlag = 1) : (form.value.skinTestFlag = 0); //是否皮试
@@ -965,26 +1000,48 @@ function submitForm() {
form.value.childrenFlag == true ? (form.value.childrenFlag = 1) : (form.value.childrenFlag = 0); //儿童用药标志
form.value.antibioticFlag == true
? (form.value.antibioticFlag = 1)
: (form.value.antibioticFlag = 0); //抗生素标志v
form.value.basicFlag == true ? (form.value.basicFlag = 1) : (form.value.basicFlag = 0); //抗生素标志
: (form.value.antibioticFlag = 0); //抗生素标志
form.value.basicFlag == true ? (form.value.basicFlag = 1) : (form.value.basicFlag = 0); //基药标志
form.value.selfFlag == true ? (form.value.selfFlag = 1) : (form.value.selfFlag = 0); //自制标志
form.value.status == true ? (form.value.status = 1) : (form.value.status = 0); //启用状态
// 强化处方标志rxFlag的处理确保其为字符串类型并支持"是"和"双跨"值
console.log('rxFlag before processing:', form.value.rxFlag);
// 确保rxFlag始终是字符串类型支持"0"(非处方)、"1"(处方)、"2"(双跨)
if (form.value.rxFlag === undefined || form.value.rxFlag === null || form.value.rxFlag === '') {
form.value.rxFlag = '0'; // 默认设置为非处方药品
} else {
// 确保rxFlag始终是字符串类型
form.value.rxFlag = String(form.value.rxFlag);
// 验证rxFlag值是否有效确保只接受'0'、'1'或'2'
if (!['0', '1', '2'].includes(form.value.rxFlag)) {
form.value.rxFlag = '0'; // 如果值无效,设置为默认值
}
}
console.log('rxFlag after processing:', form.value.rxFlag);
proxy.$refs['medicationRef'].validate((valid) => {
if (valid) {
if (form.value.activeFlag == true) {
// 当用户清空选择时,抗生素分类设置为'3',权限级别设置为'4'
// 处理抗生素相关字段
if (form.value.activeFlag == 1) {
form.value.antibioticCode = antibioticForm.value.antibioticCode === undefined ? '3' : antibioticForm.value.antibioticCode;
form.value.restrictedEnum = antibioticForm.value.restrictedEnum === undefined ? '4' : antibioticForm.value.restrictedEnum;
// form.value.dose = antibioticForm.value.dose;
// form.value.maxUnit = antibioticForm.value.maxUnit;
form.value.minRateCode = antibioticForm.value.minRateCode;
form.value.maxRateCode = antibioticForm.value.maxRateCode;
form.value.dddUnitCode = antibioticForm.value.dddUnitCode;
form.value.dddCode = antibioticForm.value.dddCode;
}
// 最终确认rxFlag值确保提交时绝对不为空且为字符串类型
if (!form.value.rxFlag) {
form.value.rxFlag = '0';
} else {
form.value.rxFlag = String(form.value.rxFlag);
}
console.log('Final rxFlag before submit:', form.value.rxFlag, 'Type:', typeof form.value.rxFlag);
// 将表单数据发送给父组件
emits('submit', form.value);
// visible.value = false;
}
});
}