소스 검색

审核处方药品添加判断无效,可替换药品

cc12458 11 달 전
부모
커밋
84a2abf221
2개의 변경된 파일42개의 추가작업 그리고 8개의 파일을 삭제
  1. 2 0
      src/api/prescription/prescriptionCore.js
  2. 40 8
      src/views/rescription/prescriptionCore/edit.vue

+ 2 - 0
src/api/prescription/prescriptionCore.js

@@ -186,6 +186,8 @@ export function getPrescriptionCore2(id) {
       medicines: oralPreItemList.map(item => {
         return Object.assign(item, {
           drugsSpecsName: item.drugsSpecsName || item.ypggCenter || item.ypggHis,
+          drugMark: +item.drugMark !== 0 ? item.drugMark.toString() : void 0,
+          invalid: !item.matCode,
         });
       }),
     };

+ 40 - 8
src/views/rescription/prescriptionCore/edit.vue

@@ -100,6 +100,9 @@ export default {
       showRS: false,
       rsLoading: false,
       rs: [],
+
+      /* 药品编辑替换 id */
+      replaceId: '',
     };
   },
   computed: {
@@ -330,6 +333,13 @@ export default {
         else delete model[`decoct_${key}`];
       }
     },
+    delayClick(id) {
+      const f = () => requestAnimationFrame(() => {
+        const dom = document.querySelector(`#s-${id}`);
+        if (!dom) f();
+      });
+      // f()
+    },
     searchMedicinesFormat(res) {
       try {
         if (res.rows) return {totalRow: res.total, list: res.rows};
@@ -338,6 +348,7 @@ export default {
     },
     selectMedicine([value], row, index) {
       if (value) {
+        row.invalid = !value.drugsId;
         row.matCode = value.drugsId;
         row.matName = value.drugsName;
         row.drugsSpecsName = value.drugsSpecsName;
@@ -348,6 +359,7 @@ export default {
         row.matPfj = value.matPfj;
         row.subtotalMoney = this.calculationMedicinePrice(row);
       } else {
+        delete row.invalid;
         delete row.matCode;
         delete row.matName;
         delete row.drugsSpecsName;
@@ -357,10 +369,12 @@ export default {
         delete row.matXsj;
         delete row.matPfj;
         delete row.drugMark;
+        delete row.subtotalMoney;
         this.medicines.splice(index, 1, row);
       }
       if (this.getEmptyMedicineRowIndex === -1) this.appendMedicine({}, index + 1);
       if (this.showRS) this.loadRS();
+      this.replaceId = void 0;
     },
     appendMedicine(model, index = this.medicines.length) {
       this.medicines.splice(index, 0, model || {});
@@ -378,7 +392,7 @@ export default {
       return price.multiply(bignumber(medicine.matDose || 0)).value.valueOf();
     },
     medicinesCellSpan({row, column, rowIndex, columnIndex}) {
-      if (columnIndex >= 2 && !(row && row.matCode)) return {
+      if (columnIndex >= 2 && !(row && (row.invalid || row.matCode))) return {
         rowspan: 1,
         colspan: 8,
       };
@@ -829,7 +843,21 @@ export default {
               <el-table-column label="序号" type="index" width="55" align="center" fixed></el-table-column>
               <el-table-column label="药品名称" prop="matName" min-width="120px" align="center">
                 <template slot-scope="scope">
-                  <template v-if="!scope.row.matCode">
+                  <el-popover v-if="scope.row.invalid"  width="326" trigger="click" @after-enter="delayClick(scope.row.id)">
+                    <v-selectpage ref="selectPage" v-if="scope.row.id === replaceId" :id="'s-' + scope.row.id" :tb-columns="searchTableForSystemColumns"
+                                  key-field="drugsId" :show="true"
+                                  placeholder="请点击输入药品名称" title="替换药品"
+                                  data="drugsSearchForSystem" :params="{name: scope.row.matName}" :pagination="false"
+                                  :result-format="searchMedicinesFormat"
+                                  @values="selectMedicine($event, scope.row, scope.$index)"
+                    ></v-selectpage>
+                    <a slot="reference" class="replaceable" @click="(replaceId = scope.row.id);">
+                      {{ scope.row.matName }}
+                      <i class="icon el-icon-circle-close"
+                         @click.self="selectMedicine([], scope.row, scope.$index)"></i>
+                    </a>
+                  </el-popover>
+                  <template v-else-if="!scope.row.matCode">
                     <v-selectpage :tb-columns="searchTableForSystemColumns"
                                   key-field="drugsId" v-model="scope.row.matCode"
                                   placeholder="请输入药品名称" title="药品"
@@ -838,15 +866,15 @@ export default {
                                   @values="selectMedicine($event, scope.row, scope.$index)"
                     ></v-selectpage>
                   </template>
-                  <a v-else>
+                  <span v-else>
                     {{ scope.row.matName }}
-                    <i class="icon el-icon-circle-close" @click="selectMedicine([], scope.row, scope.$index)"></i>
-                  </a>
+                    <i class="icon el-icon-circle-close" style="cursor: pointer;" @click="selectMedicine([], scope.row, scope.$index)"></i>
+                  </span>
                 </template>
               </el-table-column>
               <el-table-column label="规格" prop="drugsSpecsName" min-width="110px" align="center"></el-table-column>
               <el-table-column label="剂量" prop="matDose" width="110px" align="center">
-                <template slot-scope="scope" v-if="scope.row.matCode">
+                <template slot-scope="scope" v-if="scope.row.matCode || scope.row.invalid">
                   <el-input-number style="width: 100%;" v-model="scope.row.matDose" :min="0" :precision="2"
                                    :controls="false"
                                    :disabled="saving" size="mini"
@@ -855,13 +883,13 @@ export default {
               </el-table-column>
               <el-table-column label="单位" prop="matUnitName" align="center"></el-table-column>
               <el-table-column label="用法" prop="matUsageName" width="110px" align="center">
-                <template slot-scope="scope" v-if="scope.row.matCode">
+                <template slot-scope="scope" v-if="scope.row.matCode || scope.row.invalid">
                   <el-input v-model="scope.row.matUsageName" :disabled="saving"
                             @input="updateMedicine(scope.row, scope.$index)"></el-input>
                 </template>
               </el-table-column>
               <el-table-column label="标记" prop="drugMark" width="110px" align="center">
-                <template slot-scope="scope" v-if="scope.row.matCode">
+                <template slot-scope="scope" v-if="scope.row.matCode || scope.row.invalid">
                   <el-select v-model="scope.row.drugMark" placeholder="" clearable :disabled="saving">
                     <el-option v-for="item in drugMarkOptions" :key="item.dictValue"
                                :label="item.dictLabel" :value="item.dictValue"
@@ -1025,6 +1053,10 @@ export default {
       }
     }
   }
+
+  .replaceable {
+    color: #ff4949;
+  }
 }
 
 .el-input-number--medium {