diff --git a/admin/src/components/tcm-prescription/index.vue b/admin/src/components/tcm-prescription/index.vue index 7d850863..ef923bbe 100644 --- a/admin/src/components/tcm-prescription/index.vue +++ b/admin/src/components/tcm-prescription/index.vue @@ -190,6 +190,18 @@ {{ formData.dosage_unit }} + + + + + + + + + + + + @@ -676,6 +688,7 @@ interface PrescriptionForm { prescription_type: string dosage_amount: number | undefined // 用量数值 dosage_unit: string // 用量单位 (g 或 ml) + dosage_bag_count: number // 用量袋数(浓缩水丸,1-5袋) need_decoction: boolean // 是否代煎(仅饮片) bags_per_dose: number // 每贴出包数(仅饮片,1-9包) patient_name: string @@ -764,6 +777,7 @@ const formData = reactive({ prescription_type: '浓缩水丸', dosage_amount: 10, dosage_unit: 'g', + dosage_bag_count: 1, need_decoction: false, bags_per_dose: 1, patient_name: '', @@ -954,6 +968,7 @@ const open = async (data: any, options?: { templateId?: number; stationName?: st formData.prescription_type = '浓缩水丸' formData.dosage_unit = 'g' formData.dosage_amount = 10 + formData.dosage_bag_count = 1 formData.patient_name = data.patient_name || diagnosis.patient_name || '' formData.gender = data.patient_gender ?? diagnosis.gender ?? 0 formData.gender_desc = formData.gender === 1 ? '男' : '女' @@ -980,6 +995,8 @@ const open = async (data: any, options?: { templateId?: number; stationName?: st formData.doctor_name = userStore.userInfo?.name || '' formData.doctor_signature = '' formData.is_shared = 0 + formData.need_decoction = false + formData.bags_per_dose = 1 savedPrescription.value = null visible.value = true @@ -1206,16 +1223,19 @@ watch(() => formData.prescription_type, (newType) => { if (newType === '浓缩水丸') { formData.dosage_unit = 'g' formData.dosage_amount = 10 + formData.dosage_bag_count = 1 formData.need_decoction = false formData.bags_per_dose = 1 } else if (newType === '饮片') { formData.dosage_unit = 'ml' formData.dosage_amount = 50 + formData.dosage_bag_count = 1 formData.bags_per_dose = 1 // need_decoction 保持用户选择 } else { formData.dosage_unit = 'g' formData.dosage_amount = undefined + formData.dosage_bag_count = 1 formData.need_decoction = false formData.bags_per_dose = 1 } @@ -1275,6 +1295,7 @@ const handleSave = async () => { dose_unit: formData.dose_unit, dosage_amount: formData.dosage_amount, dosage_unit: formData.dosage_unit, + dosage_bag_count: formData.dosage_bag_count, need_decoction: formData.need_decoction, bags_per_dose: formData.bags_per_dose, usage_days: formData.usage_days, @@ -1354,12 +1375,15 @@ const handleNewPrescription = async () => { if (formData.prescription_type === '浓缩水丸') { formData.dosage_unit = 'g' formData.dosage_amount = 10 + formData.dosage_bag_count = 1 } else if (formData.prescription_type === '饮片') { formData.dosage_unit = 'ml' formData.dosage_amount = 50 + formData.dosage_bag_count = 1 } else { formData.dosage_unit = 'g' formData.dosage_amount = undefined + formData.dosage_bag_count = 1 } formData.patient_name = saved.patient_name || '' formData.gender = saved.gender ?? 0 diff --git a/admin/src/views/consumer/prescription/index.vue b/admin/src/views/consumer/prescription/index.vue index 2d8b9898..8900af65 100644 --- a/admin/src/views/consumer/prescription/index.vue +++ b/admin/src/views/consumer/prescription/index.vue @@ -798,6 +798,17 @@ /> + + + + + + + + + + + @@ -2077,15 +2088,19 @@ const rxUsageText = computed(() => { if (!v) return '—' if (v.usage_text) return v.usage_text const times = Number(v.times_per_day) > 0 ? Number(v.times_per_day) : 3 - const bags = Number(v.bags_per_dose) > 0 ? Number(v.bags_per_dose) : 1 const amount = v.dosage_amount != null ? Number(v.dosage_amount) : 10 const unit = v.dosage_unit || 'g' const usageWay = v.usage_way || '温水送服' const usageTime = v.usage_time || '' const seg: string[] = [] seg.push(`每天${times}次`) - seg.push(`一次${bags}包(约${amount}${unit})`) - seg.push(`每包${amount}${unit}`) + if ((v.prescription_type || '浓缩水丸') === '浓缩水丸') { + const bags = Number(v.dosage_bag_count) > 0 ? Number(v.dosage_bag_count) : 1 + seg.push(`一次${bags}袋`) + seg.push(`每袋${amount}${unit}`) + } else { + seg.push(`一次${amount}${unit}`) + } seg.push(usageWay) if (usageTime) seg.push(usageTime) return seg.join(', ') @@ -2254,6 +2269,7 @@ const editForm = reactive({ prescription_type: '浓缩水丸', dosage_amount: 1 as number | undefined, dosage_unit: 'g', + dosage_bag_count: 1, need_decoction: false, bags_per_dose: 1, patient_name: '', @@ -2367,16 +2383,19 @@ watch(() => editForm.prescription_type, (newType) => { if (newType === '浓缩水丸') { editForm.dosage_unit = 'g' editForm.dosage_amount = 1 + editForm.dosage_bag_count = 1 editForm.need_decoction = false editForm.bags_per_dose = 1 } else if (newType === '饮片') { editForm.dosage_unit = 'ml' editForm.dosage_amount = 50 + editForm.dosage_bag_count = 1 editForm.bags_per_dose = 1 // need_decoction 保持用户选择 } else { editForm.dosage_unit = 'g' editForm.dosage_amount = undefined + editForm.dosage_bag_count = 1 editForm.need_decoction = false editForm.bags_per_dose = 1 } @@ -2953,6 +2972,11 @@ const removeHerb = (index: number) => { const resetForm = () => { editForm.id = 0 editForm.prescription_type = '浓缩水丸' + editForm.dosage_amount = 1 + editForm.dosage_unit = 'g' + editForm.dosage_bag_count = 1 + editForm.need_decoction = false + editForm.bags_per_dose = 1 editForm.patient_name = '' editForm.gender = 1 editForm.age = 0 @@ -3070,6 +3094,7 @@ const handleEdit = async (row: any) => { } } + editForm.dosage_bag_count = src.dosage_bag_count ? Number(src.dosage_bag_count) : 1 editForm.need_decoction = src.need_decoction === 1 || src.need_decoction === true editForm.bags_per_dose = src.bags_per_dose ? Number(src.bags_per_dose) : 1 editForm.patient_name = src.patient_name || '' diff --git a/admin/src/views/consumer/prescription/order_list.vue b/admin/src/views/consumer/prescription/order_list.vue index 806c9ec5..158f177c 100644 --- a/admin/src/views/consumer/prescription/order_list.vue +++ b/admin/src/views/consumer/prescription/order_list.vue @@ -801,6 +801,9 @@