This commit is contained in:
Your Name
2026-04-15 16:31:25 +08:00
parent 906684c1ed
commit 3d9c5dd8f5
47 changed files with 7963 additions and 10 deletions
@@ -135,11 +135,72 @@
</el-select>
</el-form-item>
</el-col>
<!-- 用量字段 -->
<el-col :span="12">
<el-form-item label="用量" prop="dosage_amount">
<!-- 浓缩水丸1-10g 下拉选择 -->
<el-select
v-if="formData.prescription_type === '浓缩水丸'"
v-model="formData.dosage_amount"
placeholder="请选择用量"
class="!w-32"
>
<el-option :label="1 + 'g'" :value="1" />
<el-option :label="2 + 'g'" :value="2" />
<el-option :label="3 + 'g'" :value="3" />
<el-option :label="4 + 'g'" :value="4" />
<el-option :label="5 + 'g'" :value="5" />
<el-option :label="6 + 'g'" :value="6" />
<el-option :label="7 + 'g'" :value="7" />
<el-option :label="8 + 'g'" :value="8" />
<el-option :label="9 + 'g'" :value="9" />
<el-option :label="10 + 'g'" :value="10" />
</el-select>
<!-- 饮片50-250ml 下拉选择步进50 -->
<el-select
v-else-if="formData.prescription_type === '饮片'"
v-model="formData.dosage_amount"
placeholder="请选择用量"
class="!w-32"
>
<el-option label="50ml" :value="50" />
<el-option label="100ml" :value="100" />
<el-option label="150ml" :value="150" />
<el-option label="200ml" :value="200" />
<el-option label="250ml" :value="250" />
</el-select>
<!-- 其他类型自由输入 -->
<el-input-number
v-else
v-model="formData.dosage_amount"
:min="0"
:precision="2"
class="!w-32"
/>
<span v-if="formData.prescription_type !== '浓缩水丸' && formData.prescription_type !== '饮片'" class="ml-2">{{ formData.dosage_unit }}</span>
</el-form-item>
</el-col>
<!-- 饮片代煎选项 -->
<el-col v-if="formData.prescription_type === '饮片'" :span="12">
<el-form-item label="是否代煎" prop="need_decoction">
<el-radio-group v-model="formData.need_decoction">
<el-radio :label="true">代煎</el-radio>
<el-radio :label="false">不代煎</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="服用天数" prop="usage_days">
<el-input-number v-model="formData.usage_days" :min="1" :max="365" class="!w-full" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="每天几次" prop="times_per_day">
<el-input-number v-model="formData.times_per_day" :min="1" :max="10" class="!w-full" placeholder="每天服用次数" />
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="剂数" prop="dose_count">
<el-input-number v-model="formData.dose_count" :min="1" :max="999" class="!w-full" />
@@ -319,7 +380,7 @@
<div class="prescription-footer">
<div class="footer-left">
<div class="footer-dosage">
服用{{ savedPrescription.usage_days || savedPrescription.dose_count }}, {{ savedPrescription.prescription_type }}
服用{{ savedPrescription.usage_days || savedPrescription.dose_count }}{{ savedPrescription.times_per_day ? ',每天' + savedPrescription.times_per_day + '次' : '' }}, {{ savedPrescription.prescription_type }}
{{ savedPrescription.usage_instruction }}
</div>
@@ -577,6 +638,9 @@ interface PrescriptionForm {
appointment_id: number
prescription_name: string
prescription_type: string
dosage_amount: number | undefined // 用量数值
dosage_unit: string // 用量单位 (g 或 ml)
need_decoction: boolean // 是否代煎(仅饮片)
patient_name: string
gender: number
gender_desc: string
@@ -594,6 +658,7 @@ interface PrescriptionForm {
dose_count: number
dose_unit: string
usage_days: number
times_per_day: number
usage_instruction: string
usage_time: string
usage_way: string
@@ -653,6 +718,9 @@ const formData = reactive<PrescriptionForm>({
appointment_id: 0,
prescription_name: '',
prescription_type: '浓缩水丸',
dosage_amount: 1,
dosage_unit: 'g',
need_decoction: false,
patient_name: '',
gender: 0,
gender_desc: '女',
@@ -670,6 +738,7 @@ const formData = reactive<PrescriptionForm>({
dose_count: 1,
dose_unit: '剂',
usage_days: 7,
times_per_day: 2,
usage_instruction: '水煎服,一日二次',
usage_time: '饭前',
usage_way: '温水送服',
@@ -1054,6 +1123,23 @@ watch(showLibraryDialog, (newVal) => {
}
})
// 监听处方类型变化,自动调整用量单位和默认值
watch(() => formData.prescription_type, (newType) => {
if (newType === '浓缩水丸') {
formData.dosage_unit = 'g'
formData.dosage_amount = 1
formData.need_decoction = false
} else if (newType === '饮片') {
formData.dosage_unit = 'ml'
formData.dosage_amount = 50
// need_decoction 保持用户选择
} else {
formData.dosage_unit = 'g'
formData.dosage_amount = undefined
formData.need_decoction = false
}
})
const handleSave = async () => {
if (!formData.clinical_diagnosis?.trim()) {
feedback.msgWarning('请输入临床诊断')
@@ -1101,7 +1187,11 @@ const handleSave = async () => {
herbs: formData.herbs,
dose_count: formData.dose_count,
dose_unit: formData.dose_unit,
dosage_amount: formData.dosage_amount,
dosage_unit: formData.dosage_unit,
need_decoction: formData.need_decoction,
usage_days: formData.usage_days,
times_per_day: formData.times_per_day,
usage_instruction: formData.usage_instruction,
usage_time: formData.usage_time,
usage_way: formData.usage_way,