diff --git a/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js b/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js index 11e4ddde..c29a5b28 100644 --- a/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js +++ b/openhis-ui-vue3/src/views/catalog/medicine/components/medicine.js @@ -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', }) } + +// 药品字典配置已在文件开头声明 diff --git a/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue b/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue index e99fb660..200d289b 100644 --- a/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue +++ b/openhis-ui-vue3/src/views/catalog/medicine/components/medicineDialog.vue @@ -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,18 +832,18 @@ 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' ), // 医保等级 // antibioticFlag: row., // 抗生素 - }; + }; setFlag(form.value); } @@ -830,7 +853,7 @@ function handleImportYb() { function formatValue(str) { if (str === null || str === undefined || str === '' || str === 'null') { - return undefined; + return undefined; } return str; } @@ -838,10 +861,10 @@ function formatValue(str) { // 显示弹框 function edit() { // getList(); - console.log(props, '22222'); + console.log(props, '22222'); title.value = '编辑药品'; reset(); - activeName.value = 'basic'; + activeName.value = 'basic'; getLocationTree(); getDeptTree(); form.value = props.item; @@ -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; } }); }