Explorar el Código

统建处方添加 医派 / 科室字段

cc12458 hace 1 año
padre
commit
a6b7b45c55

+ 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.map(name => ({id: name, name}));
+}

+ 2 - 0
src/components/MedicineAccord.vue

@@ -703,6 +703,8 @@ export default {
           return item.id % 2 === 0;
         }
       ).map(forceUpdate);
+
+      this.$emit('length', totalData.filter(item => item && item.name).length);
     },
     // 打开父级安全合理用药监测
     openSafeDrug() {

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

@@ -61,17 +61,43 @@
           <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-select v-model="form.sectCategory" @change="getHospitalDepartment(form.sectCategory)"
+                         placeholder="请选择" size="mini" clearable>
+                <el-option v-for="item in hospitalCategory" :key="item.id" :label="item.name" :value="item.id"></el-option>
+              </el-select>
+            </div>
+          </div>
+          <div class="item flex-vertical-center-l">
+            <span></span>
+            <div class="name">科室:</div>
+            <div class="input">
+              <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>
+            </div>
+          </div>
+        </template>
+      </template>
     </div>
 
     <div class="bottom">
-      <MedicineAccord></MedicineAccord>
+      <MedicineAccord @length="medicineLength = $event"></MedicineAccord>
     </div>
     <div class="topForm flex-vertical-center-l">
       <div class="item flex-vertical-center-l">
@@ -198,7 +224,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 +237,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 +276,8 @@ export default {
         efficacy: "", // 功效
         provenance: "", // 处方出处
         purposeType: "0", // 用途类型 1 八病九方
+        sectCategory: '', // 医派
+        sectDept: '', // 科室
 
         times: "", // 频次
         recipeUse: "", // 处方用法
@@ -299,10 +335,20 @@ export default {
   },
   mounted() {
     if (this.$route.query.pid) {
-      this.getAccordDetail();
+      this.getAccordDetail().then(() => {
+        if (this.isPurposeType) this.getHospitalCategory().then(() => this.getHospitalDepartment());
+      });
     }
   },
   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 = '';
+    },
     // 保存按钮点击
     save() {
       if (this.form.name == "") {
@@ -630,6 +676,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,
@@ -701,6 +749,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, // 频次

+ 42 - 4
src/views/diagnosis/components/prescription-unify.vue

@@ -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,13 +41,15 @@
     <div class="table">
       <!-- 统建处方(协定方)表格 -->
       <el-table :data="tableData1" border style="width: 100%" v-if="activeName === '2'">
+        <el-table-column prop="sectCategory" label="医派" align="center" width="120"></el-table-column>
+        <el-table-column prop="sectDept" label="科室" align="center" width="120"></el-table-column>
         <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="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>-->
+        <el-table-column prop="effect" label="功效与适用症" align="center"></el-table-column>
         <el-table-column prop="drugInformation" label="中药信息" align="center"></el-table-column>
         <!--<el-table-column prop="book" label="共享状态" align="center" width="100">
           <template slot-scope="scope">
@@ -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,