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

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

View File

@@ -567,6 +567,7 @@ import { deptTreeSelect, locationTreeSelect } from './medicine';
import moment from 'moment'; import moment from 'moment';
const router = useRouter(); const router = useRouter();
import { medicineDictMap } from './medicine'
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { const {
med_category_code, med_category_code,
@@ -600,6 +601,28 @@ const {
'chrgitm_lv' '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 title = ref('');
const visible = ref(false); const visible = ref(false);
const emits = defineEmits(['submit']); // 声明自定义事件 const emits = defineEmits(['submit']); // 声明自定义事件
@@ -809,13 +832,13 @@ function setValue(row) {
manufacturerText: formatValue(row.manufacturerName), // 生产厂家 manufacturerText: formatValue(row.manufacturerName), // 生产厂家
// supplyId: row., // 供应商 // supplyId: row., // 供应商
basicFlag: formatValue(row.essentialDrugFlag), // 基药标识 basicFlag: formatValue(row.essentialDrugFlag), // 基药标识
// injectFlag: row., // 注射药 // injectFlag: row., // 注射药
// childrenFlag: row.pediatricUse, // 儿童用药标志 // childrenFlag: row.pediatricUse, // 儿童用药标志
// selfFlag: row., // 自制药标识 // selfFlag: row., // 自制药标识
// activeFlag: row., // 是否活性 // activeFlag: row., // 是否活性
restrictedFlag: formatValue(row.restrictedFlag), // 限制使用 restrictedFlag: formatValue(row.restrictedFlag), // 限制使用
restrictedScope: formatValue(row.restrictedScope), // 限制使用范围 restrictedScope: formatValue(row.restrictedScope), // 限制使用范围
rxFlag: formatValue(row.otcFlag), // 处方标志 rxFlag: formatValue(row.rxFlag), // 处方标志
chrgitmLv: formatValue( chrgitmLv: formatValue(
row.insuranceClass == '甲' ? '1' : row.insuranceClass == '乙' ? '2' : '3' row.insuranceClass == '甲' ? '1' : row.insuranceClass == '乙' ? '2' : '3'
), // 医保等级 ), // 医保等级
@@ -879,16 +902,30 @@ function setFlag(data) {
data.antibioticFlag == 1 ? (data.antibioticFlag = true) : (data.antibioticFlag = false); //抗生素 data.antibioticFlag == 1 ? (data.antibioticFlag = true) : (data.antibioticFlag = false); //抗生素
data.selfFlag == 1 ? (data.selfFlag = true) : (data.selfFlag = false); //自制 data.selfFlag == 1 ? (data.selfFlag = true) : (data.selfFlag = false); //自制
data.basicFlag == 1 ? (data.basicFlag = true) : (data.basicFlag = 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() { function reset() {
form.value = { form.value = {
id: undefined, id: undefined,
medicationDefId: undefined, medicineCode: '',
// orgId: undefined, medicineName: '',
locationId: undefined, tradeName: '',
activeFlag: undefined, spec: '',
doseFrom: undefined, manufacturer: '',
rxFlag: '0', // 默认设置为非处方
dose: undefined,
rateCode: undefined, rateCode: undefined,
approvalNumber: undefined, approvalNumber: undefined,
name: undefined, name: undefined,
@@ -937,24 +974,22 @@ function reset() {
thoPartAttributeEnum: undefined, thoPartAttributeEnum: undefined,
usageLimit: undefined, usageLimit: undefined,
basicFlag: undefined, basicFlag: undefined,
rxFlag: undefined, rxFlag: '0', // 默认非处方药品
chrgitmLv: undefined, chrgitmLv: undefined,
}; };
proxy.resetForm('medicationRef');
antibioticForm.value = { antibioticForm.value = {
antibioticCode: undefined, antibioticCode: undefined,
restrictedEnum: undefined, restrictedEnum: undefined,
dose: undefined,
maxUnit: undefined,
minRateCode: undefined,
maxRateCode: undefined,
dddUnitCode: undefined, dddUnitCode: undefined,
dddCode: undefined, dddCode: undefined,
minRateCode: undefined,
maxRateCode: undefined,
}; };
proxy.resetForm('antibioticRef'); proxy.resetForm('antibioticRef');
} }
/** 提交按钮 */ // 提交按钮
function submitForm() { function submitForm() {
// 布尔值标志转换为数字
form.value.activeFlag == true ? (form.value.activeFlag = 1) : (form.value.activeFlag = 0); //是否为活性 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.ybMatchFlag == true ? (form.value.ybMatchFlag = 1) : (form.value.ybMatchFlag = 0); //医保是否对码
form.value.skinTestFlag == true ? (form.value.skinTestFlag = 1) : (form.value.skinTestFlag = 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.childrenFlag == true ? (form.value.childrenFlag = 1) : (form.value.childrenFlag = 0); //儿童用药标志
form.value.antibioticFlag == true form.value.antibioticFlag == true
? (form.value.antibioticFlag = 1) ? (form.value.antibioticFlag = 1)
: (form.value.antibioticFlag = 0); //抗生素标志v : (form.value.antibioticFlag = 0); //抗生素标志
form.value.basicFlag == true ? (form.value.basicFlag = 1) : (form.value.basicFlag = 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.selfFlag == true ? (form.value.selfFlag = 1) : (form.value.selfFlag = 0); //自制标志
form.value.status == true ? (form.value.status = 1) : (form.value.status = 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) => { proxy.$refs['medicationRef'].validate((valid) => {
if (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.antibioticCode = antibioticForm.value.antibioticCode === undefined ? '3' : antibioticForm.value.antibioticCode;
form.value.restrictedEnum = antibioticForm.value.restrictedEnum === undefined ? '4' : antibioticForm.value.restrictedEnum; 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.minRateCode = antibioticForm.value.minRateCode;
form.value.maxRateCode = antibioticForm.value.maxRateCode; form.value.maxRateCode = antibioticForm.value.maxRateCode;
form.value.dddUnitCode = antibioticForm.value.dddUnitCode; form.value.dddUnitCode = antibioticForm.value.dddUnitCode;
form.value.dddCode = antibioticForm.value.dddCode; 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); emits('submit', form.value);
// visible.value = false;
} }
}); });
} }