Просмотр исходного кода

Merge branch 'hotfix/20250223-01'

cc12458 1 год назад
Родитель
Сommit
dadea4413a

+ 26 - 1
src/api/city.js

@@ -67,4 +67,29 @@ export function getPatAddress(data) {
         method: 'get',
         data
     })
-};
+};
+
+let _hospitalCategoryAndDepartment_ = null;
+async function getHospitalCategoryAndDepartment() {
+    if (_hospitalCategoryAndDepartment_) { return _hospitalCategoryAndDepartment_; }
+    try {
+        const res = await request({
+            url: '/basis/prescriptionMgr/getPreSectInfo',
+            method: 'get',
+            data: {},
+        });
+        _hospitalCategoryAndDepartment_ = res && res.ResultCode === 0 ? res.Data : {};
+    } catch (error) { _hospitalCategoryAndDepartment_ = {}; }
+    return _hospitalCategoryAndDepartment_;
+}
+
+export async function getHospitalCategory() {
+    _hospitalCategoryAndDepartment_ = null;
+    const data = await getHospitalCategoryAndDepartment();
+    return Object.keys(data).filter(Boolean).map(name => ({id: name, name}));
+}
+
+export async function getHospitalDepartment(params) {
+    const data = (await getHospitalCategoryAndDepartment())[params.hospital || ''] || []
+    return data.filter(Boolean).map(name => ({id: name, name}));
+}

+ 30 - 1
src/api/diagnosis.js

@@ -48,7 +48,36 @@ export function getPatiensBasisM(data) {
 };
 
 // 获取表格 药品列表
-export function getTableDrug(data) {
+export function getTableDrug(data, isPurposeType = false) {
+    if (isPurposeType) {
+        data.name = data.key;
+        return request({
+            url: '/basis/stitutionsdrugMgr/materialQuery',
+            method: 'post',
+            data
+        }).then(res => {
+            const data = Array.isArray(res.Data) ? res.Data : [];
+            res.Data = {
+                TotalRecordCount: data.length,
+                TotalPageCount: 1,
+                PageSize: data.length,
+                ButtonRight: "",
+                CurrentPageSize: data.length,
+                PageIndex: 1,
+                Items: data.map(item => {
+                    return {
+                        pid: item.drugId,
+                        matid: item.drugId,
+                        ypmc: item.name,
+                        gg: item.gg,
+                        dw: item.dw,
+                        price: item.price || '',
+                    }
+                })
+            };
+            return res;
+        })
+    }
     return request({
         url: '/test/outpatient/selectDrug?page=' + data.page + '&limit=' + data.limit,
         method: 'post',

+ 1 - 1
src/components/ChineseMedicine.vue

@@ -2488,7 +2488,7 @@ export default {
                   };
                   /* 修正 */ item1.usage = item1.useage = getUsage(item1.usage);
 
-                  item1.color = "#000";
+                  item1.color = item.kc > 0 ? "#000" : 'red';
                 }
 
                 this.$set(

+ 9 - 2
src/components/MedicineAccord.vue

@@ -21,7 +21,7 @@
           </div>
         </div>
         <!-- @change="getPharmacyID" -->
-        <div class="t-con-radio flex-vertical-center-l">
+        <div class="t-con-radio flex-vertical-center-l" v-if="!isPurposeType">
           <div class="t-radio-group">
             <el-radio-group
               v-model="recipe_tabs[recipe_tabs_c].radio"
@@ -554,6 +554,10 @@ export default {
     accompanied
   },
   props: {
+    isPurposeType: {
+      type: Boolean,
+      default: false
+    },
     isShrink: {
       type: Boolean,
       default: false
@@ -703,6 +707,8 @@ export default {
           return item.id % 2 === 0;
         }
       ).map(forceUpdate);
+
+      this.$emit('length', totalData.filter(item => item && item.name).length);
     },
     // 打开父级安全合理用药监测
     openSafeDrug() {
@@ -1304,6 +1310,7 @@ export default {
         key: "",
         search_i: index,
         medid: item.pid, // 药品id
+        matid: item.matid, // 知识库id
         originname: item.cdmc, // 产地名称
         showSearch: false,
         showDoseSection: false // 展示剂量区间
@@ -2005,7 +2012,7 @@ export default {
         type: type,
         pharmacyid: this.recipe_tabs[this.recipe_tabs_c].pharmacyID
       };
-      let res = await getTableDrug(params);
+      let res = await getTableDrug(params, this.isPurposeType);
       if (this.index !== index) return;
 
       if (res.ResultCode == 0) {

+ 60 - 9
src/views/business/AccordEdit.vue

@@ -61,17 +61,37 @@
           <el-input size="mini" v-model="form.provenance" placeholder="请输入" :disabled="type=='find'"></el-input>
         </div>
       </div>
-      <div class="item flex-vertical-center-l" v-if="showPurposeType">
-        <span></span>
-        <div class="name"></div>
-        <div class="input">
-          <el-checkbox size="mini" :value="form.purposeType === '1'" @change="form.purposeType = $event ? '1' : '0'">统建处方</el-checkbox>
+      <template v-if="showPurposeType">
+        <div class="item flex-vertical-center-l">
+          <span></span>
+          <div class="name"></div>
+          <div class="input">
+            <el-checkbox size="mini" :value="isPurposeType" :disabled="!!medicineLength"
+                         @change="form.purposeType = $event ? '1' : '0';isPurposeType && getHospitalCategory();"
+            >统建处方</el-checkbox>
+          </div>
         </div>
-      </div>
+        <template v-if="isPurposeType">
+          <div class="item flex-vertical-center-l">
+            <span></span>
+            <div class="name">医派:</div>
+            <div class="input">
+              <el-input v-model="form.sectCategory" placeholder="请输入"></el-input>
+            </div>
+          </div>
+          <div class="item flex-vertical-center-l">
+            <span></span>
+            <div class="name">科室:</div>
+            <div class="input">
+              <el-input v-model="form.sectDept" placeholder="请输入"></el-input>
+            </div>
+          </div>
+        </template>
+      </template>
     </div>
 
     <div class="bottom">
-      <MedicineAccord></MedicineAccord>
+      <MedicineAccord :isPurposeType="isPurposeType" @length="medicineLength = $event"></MedicineAccord>
     </div>
     <div class="topForm flex-vertical-center-l">
       <div class="item flex-vertical-center-l">
@@ -198,7 +218,7 @@ import {
   customerQuery
 } from "@/api/diagnosis.js";
 import MedicineAccord from "../../components/MedicineAccord.vue";
-import { getSelectType } from "@/api/city.js";
+import {getHospitalCategory, getHospitalDepartment, getSelectType} from "@/api/city.js";
 export default {
   props: {
     showBtn: {
@@ -211,12 +231,20 @@ export default {
     TCMDiagnosis
   },
   computed: {
+    isPurposeType() {
+      return this.form.purposeType === '1';
+    },
     showPurposeType() {
       return this.showBtn
     }
   },
   data() {
     return {
+      hospitalCategory: [],
+      hospitalDepartment: [],
+
+      medicineLength: 0,
+
       shareSelect: [], // 共享至选择器
       doseTypeList: [], // 剂型选择器
       recipeUseList: [], // 处方用法
@@ -242,6 +270,8 @@ export default {
         efficacy: "", // 功效
         provenance: "", // 处方出处
         purposeType: "0", // 用途类型 1 八病九方
+        sectCategory: '', // 医派
+        sectDept: '', // 科室
 
         times: "", // 频次
         recipeUse: "", // 处方用法
@@ -299,10 +329,20 @@ export default {
   },
   mounted() {
     if (this.$route.query.pid) {
-      this.getAccordDetail();
+      this.getAccordDetail().then(() => {
+        if (this.isPurposeType) this.getHospitalCategory()
+      });
     }
   },
   methods: {
+    async getHospitalCategory() {
+      this.hospitalCategory = await getHospitalCategory();
+      await this.getHospitalDepartment();
+    },
+    async getHospitalDepartment() {
+      this.hospitalDepartment = await getHospitalDepartment({hospital: this.form.sectCategory || ''});
+      if (!this.hospitalDepartment.find(item => item.id === this.form.sectDept)) this.form.sectDept = '';
+    },
     // 保存按钮点击
     save() {
       if (this.form.name == "") {
@@ -415,6 +455,7 @@ export default {
             dose: Number(item1.dose),
             drugname: item1.name,
             drugid: item1.medid,
+            matid: item1.matid, // 知识库id
             origin: item1.originname,
             seqn: item1.id,
             specification: item1.spec,
@@ -451,6 +492,7 @@ export default {
           inventory: item1.instock || item1.inventory, // 库存
           key: "",
           search_i: index1,
+          matid: item1.matid, // 药品id
           medid: item1.drugid || item1.medid, // 药品id
           originname: item1.origin || item1.originname // 产地名称
         };
@@ -630,6 +672,8 @@ export default {
         effect: this.form.efficacy,
         provenance: this.showPurposeType ? this.form.provenance : '0',
         purposeType: this.form.purposeType,
+        sectCategory: this.form.sectCategory,
+        sectDept: this.form.sectDept,
         frequency: this.form.times,
         name: this.form.name,
         pinyincode: this.form.pinyin,
@@ -653,6 +697,11 @@ export default {
         symptomname: tcmdParams.syndrometypes,
         treatment: tcmdParams.treatment
       };
+      if (this.isPurposeType) {
+        params.prescriptionDetailVos = params.prescriptionDetailVos.map(item => (item.drugid = null, item));
+        params.pharmacyid = null;
+        params.drugtype = null;
+      }
       const loading = this.$loading({
         lock: true,
         text: "正在提交",
@@ -701,6 +750,8 @@ export default {
           efficacy: res.Data.effect, // 功效
           provenance: res.Data.provenance, // 处方出处
           purposeType: res.Data.purposeType, // 用途类型 1 八病九方
+          sectCategory: res.Data.sectCategory,
+          sectDept: res.Data.sectDept,
           // wubi: res.Data.wubicode, // 五笔
           // pinyin: res.Data.pinyincode, // 拼音
           times: res.Data.frequency, // 频次

+ 9 - 3
src/views/diagnosis/Prescribing.vue

@@ -1404,6 +1404,8 @@ export default {
 
       // 名医名方 —> 方剂查询
       if (query.recipeID && query.kjType === "kj-fj") await this.getPreDetal(query.recipeID);
+      // 就诊记录转方
+      else if (query.recipeID) await this.getRecipeDataByid(this.$route.query.recipeID);
       // 名医名方 —> 名医医案
       else if (query.doctorCase) await this.changeAndJoin();
       // 中医诊疗 -> 智能辩证
@@ -2536,7 +2538,7 @@ export default {
           inventory: item.kc, // 库存
           key: "",
           search_i: index,
-          medid: item.ypmc ? item.pid : drugid, // 药品id
+          medid: item.ypmc ? item.pid || item.matid : drugid, // 药品id
           originname: item.cdmc, // 产地名称
           showSearch: false
         };
@@ -3359,7 +3361,7 @@ export default {
           this.assignRecipe3(res.Data, loading);
         }
 
-        this._recipeIsPay(id, 1);
+        await this._recipeIsPay(id, 1);
       }
     },
     //获取右侧协定方列表
@@ -4089,7 +4091,11 @@ export default {
               }
 
               if (item instanceof Object && item.oldYpid == item1.matid) {
-                hasDrugs.push(item);
+                if (item.kc > 0) hasDrugs.push(item);
+                else {
+                  item.color = 'red';
+                  noDrugs.push(item);
+                }
               }
             });
           });

+ 46 - 8
src/views/diagnosis/components/prescription-unify.vue

@@ -3,7 +3,7 @@
   <div class="prescription">
     <!-- 搜索条件 -->
     <div class="top-filter">
-      <el-form label-position="left" label-width="70px" :model="form" inline>
+      <el-form label-position="right" label-width="70px" :model="form" inline>
         <el-form-item label="方名">
           <el-input v-model="form.name" size="small" placeholder="请输入"></el-input>
         </el-form-item>
@@ -21,6 +21,18 @@
             <el-option label="本院" :value="3"></el-option>
           </el-select>
         </el-form-item>-->
+        <el-form-item label="医派">
+          <el-select v-model="form.sectCategory" @change="getHospitalDepartment(form.sectCategory)"
+                     placeholder="请选择" size="small" clearable>
+            <el-option v-for="item in hospitalCategory" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="科室">
+          <el-select v-model="form.sectDept"
+                     placeholder="请选择" size="small" clearable>
+            <el-option v-for="item in hospitalDepartment" :key="item.id" :label="item.name" :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
       <el-button size="small" type="primary" @click="searchDis">搜索</el-button>
       <el-button size="small" type="warning" @click="clearDis">清空</el-button>
@@ -29,20 +41,22 @@
     <div class="table">
       <!-- 统建处方(协定方)表格 -->
       <el-table :data="tableData1" border style="width: 100%" v-if="activeName === '2'">
-        <el-table-column prop="name" label="方名" align="center"></el-table-column>
-        <el-table-column prop="chinesesymptom" label="是否可修改" align="center" width="95">
+        <el-table-column prop="sectCategory" label="医派" align="center" width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="sectDept" label="科室" align="center" width="120" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="name" label="方名" align="center" show-overflow-tooltip></el-table-column>
+        <!--<el-table-column prop="chinesesymptom" label="是否可修改" align="center" width="95">
           <template slot-scope="scope">
             <div>{{ scope.row.type==0?'是':'否' }}</div>
           </template>
-        </el-table-column>
-        <el-table-column prop="effect" label="功效与适用症" align="center" width="150"></el-table-column>
-        <el-table-column prop="drugInformation" label="中药信息" align="center"></el-table-column>
+        </el-table-column>-->
+        <el-table-column prop="effect" label="功效与适用症" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="drugInformation" label="中药信息" align="center" show-overflow-tooltip></el-table-column>
         <!--<el-table-column prop="book" label="共享状态" align="center" width="100">
           <template slot-scope="scope">
             <div>{{ scope.row.showType |filterShowType}}</div>
           </template>
         </el-table-column>-->
-        <el-table-column prop="provenance" label="处方出处" align="center" width="150"></el-table-column>
+        <el-table-column prop="provenance" label="处方出处" align="center" width="150" show-overflow-tooltip></el-table-column>
         <el-table-column prop="address" label="操作" width="80" align="center">
           <template slot-scope="scope">
             <el-button size="mini" type="primary" @click="handleAgree(scope)">转方</el-button>
@@ -68,15 +82,23 @@
 import { getAccordShareList } from "@/api/business.js";
 import { getEffectQuery, getPrescriptionsList } from "@/api/knowledge.js";
 import { getAgreeRecipe, getAccordDetail } from "@/api/diagnosis.js";
+import { getHospitalCategory, getHospitalDepartment } from "@/api/city";
+
 export default {
   data() {
     return {
+      hospitalCategory: [],
+      hospitalDepartment: [],
+
       activeName: "2",
       form: {
         name: "", // 方名
         type: "", // 类型
         share: "", // 共享状态
         purposeType: "1", // 用途类型 1 八病九方
+
+        sectCategory: '', // 医派
+        sectDept: '', // 科室
       },
       shareSelect: [],
       types: [],
@@ -90,7 +112,8 @@ export default {
     this.getAccordShareList();
     this.getEffectQuery();
     // this.getPrescriptionsList();
-    this.getAgreeRecipe();
+    // this.getAgreeRecipe();
+    this.clearDis();
   },
   filters: {
     filterShowType(val) {
@@ -101,14 +124,27 @@ export default {
     }
   },
   methods: {
+    async getHospitalCategory() {
+      this.hospitalCategory = await getHospitalCategory();
+    },
+    async getHospitalDepartment() {
+      this.hospitalDepartment = await getHospitalDepartment({hospital: this.form.sectCategory || ''});
+
+      if (!this.hospitalDepartment.find(item => item.id === this.form.sectDept)) this.form.sectDept = '';
+    },
     clearDis() {
       this.currentPage = 1;
 
       this.form = {
+        sectCategory: '', // 医派
+        sectDept: '', // 科室
+        purposeType: "1", // 用途类型 1 八 病九方
         name: "", // 方名
         type: "", // 类型
         share: "" // 共享状态
       };
+
+      this.getHospitalCategory().then(() => this.getHospitalDepartment());
       if (this.activeName === '2') {
         this.getAgreeRecipe();
       }
@@ -191,6 +227,8 @@ export default {
       let params = {
         type: this.form.share,
         purposeType: this.form.purposeType,
+        sectCategory: this.form.sectCategory,
+        sectDept: this.form.sectDept,
 
         name: this.form.name,
         pageId: this.currentPage,

+ 8 - 8
src/views/diagnosis/components/prescription.vue

@@ -10,7 +10,7 @@
     </div>
     <!-- 搜索条件 -->
     <div class="top-filter">
-      <el-form label-position="left" label-width="70px" :model="form" inline>
+      <el-form label-position="right" label-width="70px" :model="form" inline>
         <el-form-item label="方名">
           <el-input v-model="form.name" size="small" placeholder="请输入"></el-input>
         </el-form-item>
@@ -47,11 +47,11 @@
     <div class="table">
       <!-- 方剂表格 -->
       <el-table :data="tableData" border style="width: 100%" v-if="activeName==1">
-        <el-table-column prop="prename" label="方名" align="center"></el-table-column>
+        <el-table-column prop="prename" label="方名" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="efficacyName" label="类型" align="center"></el-table-column>
-        <el-table-column prop="efficacy" label="功效与适用症" align="center" width="150"></el-table-column>
-        <el-table-column prop="matnames" label="中药信息" align="center"></el-table-column>
-        <el-table-column prop="book" label="来源" align="center"></el-table-column>
+        <el-table-column prop="efficacy" label="功效与适用症" align="center" width="150" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="matnames" label="中药信息" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="book" label="来源" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="address" label="操作" width="150" align="center">
           <template slot-scope="scope">
             <el-button size="mini" type="primary" @click="handleFj(scope,1)">换方</el-button>
@@ -67,9 +67,9 @@
             <div>{{ scope.row.type==0?'是':'否' }}</div>
           </template>
         </el-table-column>
-        <el-table-column prop="effect" label="功效与适用症" align="center" width="150"></el-table-column>
-        <el-table-column prop="drugInformation" label="中药信息" align="center"></el-table-column>
-        <el-table-column prop="provenance" label="处方出处" align="center" width="150"></el-table-column>
+        <el-table-column prop="effect" label="功效与适用症" align="center" width="150" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="drugInformation" label="中药信息" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="provenance" label="处方出处" align="center" width="150" show-overflow-tooltip></el-table-column>
         <el-table-column prop="book" label="共享状态" align="center" width="100">
           <template slot-scope="scope">
             <div>{{ scope.row.showType |filterShowType}}</div>