Преглед изворни кода

修改医生开具组合处方的逻辑

cgp пре 2 дана
родитељ
комит
6501dcefe7

BIN
public/ysy_prescribe_cn.jpg


BIN
public/ysy_prescribe_en.jpg


+ 57 - 38
src/views/his/scrmPrescribe/DoctorPrescribeDialog.vue

@@ -11,9 +11,9 @@
     <!-- 步骤导航(仅编辑模式显示) -->
     <el-steps v-if="!readonly" :active="activeStep" finish-status="success" align-center style="margin-bottom: 30px;">
       <el-step title="选择处方类型" />
-      <el-step title="填写处方内容">
-        <template slot="title" v-if="isCombined && activeStep === 1">
-          <span>填写处方内容(<span style="color: #409EFF;">西药处方</span>)</span>
+      <el-step>
+        <template slot="title" v-if="activeStep === 1">
+          <span>填写处方内容(<span :style="{ color: stepOneTypeColor }">{{ stepOneTypeName }}</span>)</span>
         </template>
       </el-step>
       <el-step v-if="isCombined && secondPartActive" title="填写中药处方">
@@ -40,7 +40,6 @@
     </div>
 
     <!-- 步骤2:处方内容(基本信息 + 药品信息) -->
-    <!-- 编辑模式:按步骤显示;只读模式:直接显示所有内容(无步骤按钮) -->
     <div v-if="!readonly && activeStep === 1">
       <el-tabs v-model="activeTab" type="border-card">
         <!-- 基本信息 -->
@@ -82,7 +81,7 @@
           </el-form>
         </el-tab-pane>
 
-        <!-- 处方药品信息 -->
+        <!-- 处方药品信息(西药) -->
         <el-tab-pane label="处方药品信息" name="drug">
           <div class="drug-split-layout">
             <div class="drug-left-panel">
@@ -116,16 +115,11 @@
               <pagination v-show="drugTotal > 0" :total="drugTotal" :page.sync="drugQuery.pageNum" :limit.sync="drugQuery.pageSize" @pagination="getDrugList" />
             </div>
 
-            <!-- 右侧处方图片渲染 -->
+            <!-- 右侧西药处方预览(使用西药模板) -->
             <div class="drug-right-panel">
               <div class="prescription-scroll-wrapper">
-                <!-- 真实处方图片优先 -->
-                <div v-if="prescribeForm.prescribeImgUrl" class="real-prescription-wrapper">
-                  <img :src="prescribeForm.prescribeImgUrl" class="prescription-image" alt="处方图片" />
-                </div>
-                <!-- 无真实图片时显示背景预览 -->
-                <div v-else class="prescription-preview-container">
-                  <img src="/ysy_prescribe.jpg" class="prescription-bg-image" alt="处方背景" />
+                <div class="prescription-preview-container">
+                  <img src="/ysy_prescribe_en.jpg" class="prescription-bg-image" alt="西药处方模板" />
                   <div class="prescription-overlay">
                     <div class="prescribe-code">{{ prescribeForm.prescribeCode }}</div>
                     <div class="patient-info">
@@ -158,10 +152,10 @@
             <div class="drug-left-panel">
               <el-form label-width="80px">
                 <el-form-item label="诊断">
-                  <el-input v-model="prescribeForm.diagnose" type="textarea" :rows="2" disabled />
+                  <el-input v-model="prescribeForm.diagnoseChinese" type="textarea" :rows="2"/>
                 </el-form-item>
                 <el-form-item label="医嘱">
-                  <el-input v-model="prescribeForm.remark" type="textarea" :rows="2" disabled />
+                  <el-input v-model="prescribeForm.remarkChinese" type="textarea" :rows="2"/>
                 </el-form-item>
               </el-form>
               <div class="drug-actions">
@@ -186,7 +180,8 @@
             <div class="drug-right-panel">
               <div class="prescription-scroll-wrapper">
                 <div class="prescription-preview-container">
-                  <img :src="prescribeForm.prescribeImgStoreUrl || '/ysy_prescribe.jpg'" class="prescription-bg-image" alt="处方背景" />
+                  <!-- 中药模板 -->
+                  <img src="/ysy_prescribe_cn.jpg" class="prescription-bg-image" alt="中药处方模板" />
                   <div class="prescription-overlay">
                     <div class="prescribe-code">{{ prescribeForm.prescribeCode }}</div>
                     <div class="patient-info">
@@ -194,14 +189,14 @@
                       <div class="prescribe-patientGender">{{ patientGenderText }}</div>
                       <div class="prescribe-patientAge">{{ prescribeForm.patientAge }}岁</div>
                     </div>
-                    <div class="diagnose">{{ prescribeForm.diagnose }}</div>
+                    <div class="diagnose">{{ prescribeForm.diagnoseChinese }}</div>
                     <div class="drugs">
                       <div v-for="(drug, idx) in secondDrugList" :key="drug.drugId || idx" class="drug-item">
                         {{ drug.drugName }} {{ drug.drugSpec }}
                         <span class="usage">用法:{{ drug.usageMethod }} {{ drug.usageFrequencyUnit }} {{ drug.usagePerUseCount }}{{ drug.usagePerUseUnit || '' }}</span>
                       </div>
                     </div>
-                    <div class="remark">{{ prescribeForm.remark }}</div>
+                    <div class="remark">{{ prescribeForm.remarkChinese }}</div>
                   </div>
                 </div>
               </div>
@@ -229,7 +224,7 @@
             </el-form-item>
           </el-form>
         </el-tab-pane>
-        <el-tab-pane label="处方药品信息" name="drug">
+        <el-tab-pane label="西药处方" name="drug">
           <div class="drug-split-layout">
             <div class="drug-left-panel">
               <el-form label-width="80px">
@@ -245,13 +240,9 @@
               </el-table>
             </div>
             <div class="drug-right-panel">
-              <!-- 处方图片展示 -->
               <div class="prescription-scroll-wrapper">
-                <div v-if="prescribeForm.prescribeImgUrl" class="real-prescription-wrapper">
-                  <img :src="prescribeForm.prescribeImgUrl" class="prescription-image" alt="处方图片" />
-                </div>
-                <div v-else class="prescription-preview-container">
-                  <img src="/ysy_prescribe.jpg" class="prescription-bg-image" alt="处方背景" />
+                <div class="prescription-preview-container">
+                  <img src="/ysy_prescribe_en.jpg" class="prescription-bg-image" alt="西药处方模板" />
                   <div class="prescription-overlay">
                     <div class="prescribe-code">{{ prescribeForm.prescribeCode }}</div>
                     <div class="patient-info">
@@ -278,8 +269,8 @@
           <div class="drug-split-layout">
             <div class="drug-left-panel">
               <el-form label-width="80px">
-                <el-form-item label="诊断">{{ prescribeForm.diagnose }}</el-form-item>
-                <el-form-item label="医嘱">{{ prescribeForm.remark }}</el-form-item>
+                <el-form-item label="诊断">{{ prescribeForm.diagnoseChinese }}</el-form-item>
+                <el-form-item label="医嘱">{{ prescribeForm.remarkChinese }}</el-form-item>
               </el-form>
               <el-table :data="secondDrugList" border stripe max-height="400">
                 <el-table-column label="药品名称" prop="drugName" />
@@ -292,7 +283,7 @@
             <div class="drug-right-panel">
               <div class="prescription-scroll-wrapper">
                 <div class="prescription-preview-container">
-                  <img :src="prescribeForm.prescribeImgStoreUrl || '/ysy_prescribe.jpg'" class="prescription-bg-image" alt="处方背景" />
+                  <img src="/ysy_prescribe_cn.jpg" class="prescription-bg-image" alt="中药处方模板" />
                   <div class="prescription-overlay">
                     <div class="prescribe-code">{{ prescribeForm.prescribeCode }}</div>
                     <div class="patient-info">
@@ -300,14 +291,14 @@
                       <div class="prescribe-patientGender">{{ patientGenderText }}</div>
                       <div class="prescribe-patientAge">{{ prescribeForm.patientAge }}岁</div>
                     </div>
-                    <div class="diagnose">{{ prescribeForm.diagnose }}</div>
+                    <div class="diagnose">{{ prescribeForm.diagnoseChinese }}</div>
                     <div class="drugs">
                       <div v-for="(drug, idx) in secondDrugList" :key="drug.drugId || idx" class="drug-item">
                         {{ drug.drugName }} {{ drug.drugSpec }}
                         <span class="usage">用法:{{ drug.usageMethod }} {{ drug.usageFrequencyUnit }} {{ drug.usagePerUseCount }}{{ drug.usagePerUseUnit || '' }}</span>
                       </div>
                     </div>
-                    <div class="remark">{{ prescribeForm.remark }}</div>
+                    <div class="remark">{{ prescribeForm.remarkChinese }}</div>
                   </div>
                 </div>
               </div>
@@ -410,11 +401,12 @@ export default {
         historyAllergic: '',
         diagnose: '',
         remark: '',
+        diagnoseChinese: '',
+        remarkChinese: '',
         prescribeCode: '',
         userId: null,
         thirdPartyUserId: null,
-        prescribeImgUrl: '',
-        prescribeImgStoreUrl: ''
+        prescribeType: null,
       },
       basicRules: {
         patientName: [{ required: true, message: '请输入患者姓名', trigger: 'blur' }],
@@ -423,8 +415,10 @@ export default {
         isHistoryAllergic: [{ required: true, message: '请选择是否有过敏史', trigger: 'change' }]
       },
       drugRules: {
-        diagnose: [{ required: true, message: '请输入诊断', trigger: 'blur' }],
-        remark: [{ required: true, message: '请输入医嘱', trigger: 'blur' }]
+        diagnose: [{ required: true, message: '请输入西药诊断', trigger: 'blur' }],
+        remark: [{ required: true, message: '请输入西药医嘱', trigger: 'blur' }],
+        diagnoseChinese: [{ required: true, message: '请输入中药诊断', trigger: 'blur' }],
+        remarkChinese: [{ required: true, message: '请输入中药医嘱', trigger: 'blur' }]
       },
       drugList: [],
       drugTotal: 0,
@@ -458,6 +452,16 @@ export default {
     },
     dialogTitle() {
       return this.readonly ? "查看处方" : "医生开方";
+    },
+    stepOneTypeName() {
+      if (this.selectedPrescribeType === 1 || this.selectedPrescribeType === 3) return '西药处方';
+      if (this.selectedPrescribeType === 2) return '中药处方';
+      return '';
+    },
+    stepOneTypeColor() {
+      if (this.selectedPrescribeType === 1 || this.selectedPrescribeType === 3) return '#409EFF';
+      if (this.selectedPrescribeType === 2) return '#67C23A';
+      return '';
     }
   },
   watch: {
@@ -479,6 +483,7 @@ export default {
         const data = res.data;
         this.prescribeForm = {
           prescribeId: data.prescribeId,
+          prescribeType: data.prescribeType,
           patientName: data.patientName || '',
           patientAge: data.patientAge || '',
           patientGender: data.patientGender !== undefined ? data.patientGender : null,
@@ -486,11 +491,11 @@ export default {
           historyAllergic: data.historyAllergic || '',
           diagnose: data.diagnose || '',
           remark: data.remark || '',
+          diagnoseChinese: data.diagnoseChinese || '',
+          remarkChinese: data.remarkChinese || '',
           prescribeCode: data.prescribeCode || '',
           userId: data.userId,
           thirdPartyUserId: data.thirdPartyUserId,
-          prescribeImgUrl: data.prescribeImgUrl,
-          prescribeImgStoreUrl: data.prescribeImgStoreUrl
         };
         if (data.prescribeType) {
           this.selectedPrescribeType = data.prescribeType;
@@ -610,6 +615,7 @@ export default {
       try {
         await submitBasicInfo(this.prescribeId, {
           diagnose: this.prescribeForm.diagnose,
+          prescribeType: this.prescribeForm.prescribeType,
           remark: this.prescribeForm.remark,
           isHistoryAllergic: this.prescribeForm.isHistoryAllergic,
           historyAllergic: this.prescribeForm.historyAllergic
@@ -781,8 +787,10 @@ export default {
           patientGender: this.prescribeForm.patientGender,
           isHistoryAllergic: this.prescribeForm.isHistoryAllergic,
           historyAllergic: this.prescribeForm.historyAllergic,
-          diagnose: this.prescribeForm.diagnose,
-          remark: this.prescribeForm.remark
+          diagnose: this.prescribeForm.diagnose,           // 西医
+          remark: this.prescribeForm.remark,               // 西医
+          diagnoseChinese: this.prescribeForm.diagnoseChinese, // 中医
+          remarkChinese: this.prescribeForm.remarkChinese      // 中医
         };
         if (this.isCombined) {
           params.mapDrugs = {
@@ -805,6 +813,17 @@ export default {
     handleClose() {
       this.dialogVisible = false;
       this.$emit('update:visible', false);
+    },
+    currentPrescribeTypeName() {
+      if (this.selectedPrescribeType === 1) return '西药处方';
+      if (this.selectedPrescribeType === 2) return '中药处方';
+      if (this.selectedPrescribeType === 3) return '西药处方'; // 组合处方第一步显示西药
+      return '';
+    },
+    currentPrescribeTypeColor() {
+      if (this.selectedPrescribeType === 1 || this.selectedPrescribeType === 3) return '#409EFF';
+      if (this.selectedPrescribeType === 2) return '#67C23A';
+      return '';
     }
   }
 };