Kaynağa Gözat

merge from 'test'

zhangxc 6 yıl önce
ebeveyn
işleme
e3b2b164ad
39 değiştirilmiş dosya ile 524 ekleme ve 230 silme
  1. 1 0
      src/api/config.js
  2. 4 1
      src/api/icss.js
  3. 6 2
      src/api/utils.js
  4. 1 1
      src/components/icss/AddAssaySon.vue
  5. 5 4
      src/components/icss/AddChronicAndIndexRelation.vue
  6. 13 4
      src/components/icss/AddConceptRelation.vue
  7. 3 2
      src/components/icss/AddIndeptLabel.vue
  8. 4 2
      src/components/icss/AddMedicalMultRelation.vue
  9. 24 9
      src/components/icss/AddMedicalName.vue
  10. 3 1
      src/components/icss/AddMedicinePrompt.vue
  11. 1 1
      src/components/icss/AddPhysicalExamTemp.vue
  12. 16 8
      src/components/icss/AssaySon.vue
  13. 16 9
      src/components/icss/ChemicalAndCommonMapping.vue
  14. 18 9
      src/components/icss/ChronicAndIndexRelation.vue
  15. 24 9
      src/components/icss/ChronicDiseaseStructureList.vue
  16. 10 4
      src/components/icss/ConceptRelation.vue
  17. 1 1
      src/components/icss/DiagnosisTemplate.vue
  18. 13 8
      src/components/icss/DisclaimerInformation.vue
  19. 17 10
      src/components/icss/IndeptLabel.vue
  20. 16 9
      src/components/icss/LabelGroup.vue
  21. 15 8
      src/components/icss/MedicalMultRelation.vue
  22. 68 36
      src/components/icss/MedicalName.vue
  23. 29 13
      src/components/icss/MedicalRelation.vue
  24. 13 1
      src/components/icss/MedicineInfoPg.vue
  25. 21 12
      src/components/icss/MedicinePrompt.vue
  26. 8 4
      src/components/icss/PhysicalExamTemplate.vue
  27. 19 1
      src/components/icss/PubIndeptTag.vue
  28. 1 2
      src/components/icss/SingleSelect.vue
  29. 34 28
      src/components/icss/TemplateMaintenance.vue
  30. 8 4
      src/components/icss/VersionInfo.vue
  31. 2 1
      src/components/preTreat/AddCombinQuestion.vue
  32. 5 3
      src/components/preTreat/AddSimpleQuestion.vue
  33. 13 5
      src/components/preTreat/CombinQuestion.vue
  34. 26 1
      src/components/preTreat/PubIndeptQa.vue
  35. 20 4
      src/components/preTreat/PubSelect.vue
  36. 13 4
      src/components/preTreat/QuestionModules.vue
  37. 18 4
      src/components/preTreat/QuestionTagGroup.vue
  38. 13 4
      src/components/preTreat/SimpleQuestion.vue
  39. 2 1
      vue.config.js

+ 1 - 0
src/api/config.js

@@ -213,6 +213,7 @@ export default {
     'removeRelationContact': 'api/knowledgeman/multContact/removeRelationContact', //知识库标准化-医学术语多层关联维护-删除或者恢复
     'relationContactDetail': 'api/knowledgeman/multContact/relationContactDetail', //知识库标准化-医学术语多层关联维护-详情
     'addMultRelation': 'api/knowledgeman/multContact/addRelation', //知识库标准化-医学术语多层关联维护-添加或者编辑
+    'reloadLib': 'api/knowledgeman/reload/createFile', //术语命名-加载词库
 	  /*********预问诊相关接口**********/
 	  'questionList':'/api/precman/questionInfo_prec/page',     //预问诊-填写单列表
     'questionAdd':'/api/precman/questionInfo_prec/saveOrUpdate',      //预问诊-填写单添加

+ 4 - 1
src/api/icss.js

@@ -417,5 +417,8 @@ export default {
     },
     addMultRelation(param) {    //知识库标准化-医学术语多层关联维护-添加或者编辑
         return axios.post(urls.addMultRelation, param)
-    }
+    },
+    reloadLib() {    //医学术语命名维护-加载词库
+        return axios.post(urls.reloadLib)
+    },
 }

+ 6 - 2
src/api/utils.js

@@ -203,7 +203,8 @@ export default {
       "labelPrefix":'prefix',                                 //前缀
       "labelSuffix":'suffix',                                 //后缀
       "maxValue":'maxNormalVal',                                 //前缀
-      "minValue":'minNormalVal'                                 //后缀
+      "minValue":'minNormalVal',                                 //后缀
+      "specFlag": 'specFlag' //标记状态(0:没有标记,1:主诉高亮,2:诱因记录)
     };
     if (tagFlag == 2) {
       maps["tagType"] = 'region2'
@@ -272,12 +273,15 @@ export default {
       //controlType:isDpt?'region2':'',
       type:'region1',
       url:'region13',
+      specFlag:'specFlag',
+      required: 'required',
+      explains:'explains',
     };
     isDpt?maps.controlType = 'region2':maps.tagType = 'region2';
     let obj = {};
     for(let i in org){
       if(maps[i]){
-        obj[maps[i]] = org[i]+'';
+        obj[maps[i]] = org[i]+''==='null'?'':org[i]+'';
       }
     }
     return obj;

+ 1 - 1
src/components/icss/AddAssaySon.vue

@@ -195,7 +195,7 @@
                   setTimeout(() => {
                     //返回带搜索条件的首页
                   this.$router.push({
-                      path:'AssaySon',
+                      name:'AssaySon',
                     params: Object.assign({}, this.$route.params, {currentPage: 1})
                   })
                   }, 1000);

+ 5 - 4
src/components/icss/AddChronicAndIndexRelation.vue

@@ -149,9 +149,10 @@
             this.diagList=[]
         },
         focuInput() {
-            this.$refs['diagList'].style.display='none'
-             this.$refs['indexList'].style.display='none'
-            
+          if(this.$refs){
+            this.$refs['diagList'].style.display='none';
+            this.$refs['indexList'].style.display='none';
+          }
         },
         searchIndex() {
              const param = {
@@ -219,7 +220,7 @@
                     setTimeout(() => {
                       //返回带搜索条件的首页
                     this.$router.push({
-                        path:'ChronicAndIndexRelation',
+                        name:'ChronicAndIndexRelation',
                       params: Object.assign({}, this.$route.params, {currentPage: 1})
                     })
                     }, 1000);

+ 13 - 4
src/components/icss/AddConceptRelation.vue

@@ -124,7 +124,7 @@ export default {
       styles:{
         background:'#eae7e7'
       },
-      type:'',
+      type:null,
       typeList:[],
       nodeList:[],
       saveDisable: false  //保存按钮禁止点击
@@ -187,8 +187,17 @@ export default {
         },
         getTagList(flag) {
           const notIds = this.selectedTags();
-          let param;
-          if(flag){
+          //2019-8-15 需求修改:搜索结果与类型关联bug2045
+          let param = {
+              "name": this.searchTagVal,
+              "relationId": 17,
+              "relationPosition": 2,
+              "typeId": this.type, //选中类型的id
+              "relationConceptId":this.form.conceptId,
+              "excludedConceptIds":notIds
+            }
+          // let param;
+          /*if(flag){
             param = {
               "name": this.searchTagVal,
               "relationId": 17,
@@ -205,7 +214,7 @@ export default {
               "relationConceptId":this.form.conceptId,
               "excludedConceptIds":notIds
             }
-          }
+          }*/
           api.getConceptInfoAssay(param).then((res)=>{
            if(res.data.code === '0') {
              this.leftTagsList = res.data.data

+ 3 - 2
src/components/icss/AddIndeptLabel.vue

@@ -65,11 +65,11 @@
       const {isEdit,isCopy,data} = this.$route.params;
      
       if(isEdit){
-      this.txt = '标签维护-修改独立标签';
+      this.txt = '独立标签维护-修改独立标签';
       this.isEditOrCopy = true
       this.editData = data;
       } else if(isCopy) {
-        this.txt = '标签组维护-添加独立标签';
+        this.txt = '独立标签维护-复制独立标签';
         this.isEditOrCopy = true
         const copyData = JSON.parse(JSON.stringify(data))
         copyData.id = ""
@@ -173,6 +173,7 @@
             "labelSuffix":this.dataPub.suffix,                                 //后缀
             "minValue": this.dataPub.minNormalVal,        //化验最小正常值
             "maxValue": this.dataPub.maxNormalVal,         //化验最大正常值
+            "specFlag": this.dataPub.specFlag,  //标记状态(0:没有标记,1:主诉高亮,2:诱因记录)
             "questionDetails": this.options,
             "questionMappings": [],      //映射关系,
             "formulaCode": isEdit?data.formulaCode : ''

+ 4 - 2
src/components/icss/AddMedicalMultRelation.vue

@@ -33,7 +33,7 @@
             default-expand-all
             :expand-on-click-node="false">
             <span class="custom-tree-node" slot-scope="{ node, data }">
-                <span class="custom-tree-node-name ellipsis" :title="node.label">{{ node.label }}</span>
+                <span class="custom-tree-node-name ellipsis" :class="{colorGray: data.isDeletedConcept == 'Y'}" :title="node.label">{{ node.label }}</span>
                 <span class="btn-box">
                   <el-button
                       class="btn-add fl"
@@ -376,5 +376,7 @@ import api from '@api/icss.js';
   display: inline-block;
   width: 270px;
 }
-  
+.colorGray {
+  color: #c1c1c1;
+} 
 </style>

+ 24 - 9
src/components/icss/AddMedicalName.vue

@@ -24,7 +24,7 @@
               <input v-else type="text" v-model="data.name" placeholder="请输入术语" maxlength="50" @blur="handleBlur(1)">
             </td>
             <td>
-              <input type="text" v-model="data.spell" placeholder="请输入拼音" maxlength="50"  @input="handlePinyin">
+              <input type="text" v-model="data.spell" placeholder="请输入拼音" maxlength="50"  @input="handlePinyin($event,1)">
             </td>
             <td>
               <!-- <el-select v-if="!id" v-model="data.type" filterable placeholder="请选择" size="small" @change="selectType">
@@ -79,7 +79,7 @@
               </td>
               <td v-else> -->
               <td>
-                <input type="text" v-model="item.spell" placeholder="请输入拼音" maxlength="50"  @input="handlePinyin" class="spell">
+                <input type="text" v-model="item.spell" placeholder="请输入拼音" maxlength="50"  @input="handlePinyin($event,2,index)" class="spell">
               </td>
               <td>
                 <!-- {{data.type}} -->
@@ -145,7 +145,7 @@
               <input type="text" v-model="item.name" placeholder="请输入术语" maxlength="50" @blur="handleBlur(2,index)">
             </td>
             <td>
-              <input type="text" v-model="item.spell" placeholder="请输入拼音" maxlength="50"  @input="handlePinyin">
+              <input type="text" v-model="item.spell" placeholder="请输入拼音" maxlength="50"  @input="handlePinyin($event,3,index)">
             </td>
             <td>
               {{data.type}}
@@ -325,12 +325,18 @@ import pinyin from '../../js/Convert_Pinyin.js';
             if(data.data.length>0){
               const total = data.data.length;
               const average = parseInt(total/3);
+              const mod = total%3; //余数
               const firstGroup = data.data.slice(0,average);
-              this.options.push({label:1,options:firstGroup});
-              const secGroup = data.data.slice(average,average*2);
-              this.options.push({label:2,options:secGroup});
-              const thirdGroup = data.data.slice(average*2,total-1);
-              this.options.push({label:3,options:thirdGroup});
+              let secGroup = [];
+              let thirdGroup = [];
+              if(mod == 2){
+                secGroup = data.data.slice(average,average*2+1);
+                thirdGroup = data.data.slice(average*2+1,total);
+              }else{
+                secGroup = data.data.slice(average,average*2);
+                thirdGroup = data.data.slice(average*2,total);
+              }
+              this.options.push({label:1,options:firstGroup},{label:2,options:secGroup},{label:3,options:thirdGroup});
             }
           }else{
             this.$message({
@@ -404,8 +410,17 @@ import pinyin from '../../js/Convert_Pinyin.js';
           }
         }
       },
-      handlePinyin(e){//只能输入英文
+      handlePinyin(e,flag,index){//只能输入英文
         e.target.value = e.target.value.replace(/[^a-zA-Z]/g,'');
+        // 解决输入数字不触发更新
+        if(flag==1){//标准词
+          this.data.spell = e.target.value;
+        }else if(flag==2){//同义词-修改
+          this.allwords[index].spell = e.target.value;
+        }else if(flag==3){//同义词-新增
+          this.synonymous[index].spell = e.target.value;
+        }
+        // e.target.value = e.target.value.replace(/[^a-zA-Z]/g,'');
       },
       addSpan(type){
         let singleSpan = {

+ 3 - 1
src/components/icss/AddMedicinePrompt.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="NoiseTemplateWrapper TemplateWrapper">
         <crumbs
-          :title=" isEdit? '医学术语静态知识维护-修改':'医学术语静态知识维护-添加'"
+          :title="'医学术语静态知识维护-'+title"
           class="topBack"
           :param="$route.params"
           linkTo="MedicinePrompt"
@@ -67,6 +67,7 @@
       return {
         isEdit:false,
         isCopy:false,
+        title:'添加',
         termTypes:[],
         terms:[],              //术语列表
         editData:{
@@ -109,6 +110,7 @@
       if(isEdit||isCopy){
         this.isEdit = isEdit;
         this.isCopy = isCopy;
+        this.title = isEdit?'编辑':(isCopy?'复制':'添加');
         this.changeWord(data);
         //this.form.selectedTerm = data;
         //this.form.selectedTermName = data.libName;

+ 1 - 1
src/components/icss/AddPhysicalExamTemp.vue

@@ -2,7 +2,7 @@
 <template>
     <div class="AddPhysicalExamTempWrapper">
         <crumbs
-                :title="'查体模板维护系统-'+titleText"
+                :title="'查体模板维护-'+titleText"
                 class="topBack"
                 :param="$route.params"
                 linkTo="PhysicalExamTemplate"

+ 16 - 8
src/components/icss/AssaySon.vue

@@ -81,9 +81,9 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
+  import api from '@api/icss.js';
 
-export default {
+  export default {
     name: 'AssaySon',   //慢病指标值关联维护
     data: function() {
         return {
@@ -119,8 +119,8 @@ export default {
     })
   },
     methods: {
-        getDataList() {
-            const param = this.getFilterItems();
+        getDataList(isTurnPage) {
+            const param = this.getFilterItems(isTurnPage);
             this.searched = true;
             api.getAssaySon(param).then((res) => {
                 if(res.data.code == '0') {
@@ -159,9 +159,13 @@ export default {
         },
         currentChange(next) {
             this.currentPage = next;
-            this.getDataList();
+            this.getDataList(true);
         },
-        getFilterItems() {
+        getFilterItems(isTurnPage) {
+          //翻页时筛选条件没点确定则清空
+          if(isTurnPage&&!this.searched){
+            this.filter.conceptName='';
+          };
             const param = {
                 current: this.currentPage,
                 size: this.pageSize,
@@ -195,8 +199,9 @@ export default {
             "conceptId": row.conceptId,
             "isDeleted": row.isDeleted=== 'N'?'Y':'N',
             "relationId": 18
-          }
-          this.showConfirmDialog('是否删除该关联?',()=>{
+          };
+          const txt = row.isDeleted=== 'N'?'是否删除该关联?':'是否重新启用该关联?';
+          this.showConfirmDialog(txt,()=>{
             api.delAssaySon(param).then((res)=>{
               if(res.data.code=='0'){
                 if(!this.searched){
@@ -205,6 +210,9 @@ export default {
                     conceptName:'',
                   };
                 }
+                if(row.isDeleted !== 'N'){       //恢复成功后跳转到筛选条件的首页
+                  this.currentPage = 1;
+                }
                 this.getDataList();
                 this.warning(res.data.msg || '操作成功','success');
               }else{

+ 16 - 9
src/components/icss/ChemicalAndCommonMapping.vue

@@ -133,8 +133,8 @@ export default {
     })
   },
     methods: {
-        getDataList() {
-            const param = this.getFilterItems();
+        getDataList(isTurnPage) {
+            const param = this.getFilterItems(isTurnPage);
           this.searched = true;
             api.getLisMappingPage(param).then((res) => {
                 if(res.data.code == '0') {
@@ -167,14 +167,25 @@ export default {
         },
         currentChange(next) {
             this.currentPage = next;
-            this.getDataList();
+            this.getDataList(true);
             // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
             //     this.list = this.cacheData[next];
             // } else {
             //     this.getDataList();
             // }
         },
-        getFilterItems() {
+      clearFilter(){
+        this.filter={
+          mealName:'',
+          itemName:'',
+          uniqueName:''
+        };
+      },
+        getFilterItems(isTurnPage) {
+          //翻页时筛选条件没点确定则清空
+          if(isTurnPage&&!this.searched){
+            this.clearFilter();
+          };
             const param = {
                 current: this.currentPage,
                 size: this.pageSize,
@@ -211,11 +222,7 @@ export default {
               if(res.data.code=='0'){
                 if(!this.searched){
                   //未点确认时清空搜索条件
-                  this.filter={
-                    mealName:'',
-                    itemName:'',
-                    uniqueName:''
-                  };
+                  this.clearFilter();
                 }
                 if(this.list.length==1){
                   //当前在最后一页且只有一条数据时,删除后跳到前一页

+ 18 - 9
src/components/icss/ChronicAndIndexRelation.vue

@@ -88,9 +88,9 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
+  import api from '@api/icss.js';
 
-export default {
+  export default {
     name: 'ChronicAndIndexRelation',   //慢病指标值关联维护
     data: function() {
         return {
@@ -105,8 +105,10 @@ export default {
         }
     },
     created() {
-        this.getDataList()
-        
+      const that = this;
+      setTimeout(function(){
+        that.getDataList();
+      });
     },
   watch: {
     'filter': {
@@ -123,8 +125,8 @@ export default {
     })
   },
     methods: {
-        getDataList() {
-            const param = this.getFilterItems();
+        getDataList(isTurnPage) {
+            const param = this.getFilterItems(isTurnPage);
             this.searched = true;
             api.queryIndexConfigPages(param).then((res) => {
                 if(res.data.code == '0') {
@@ -161,14 +163,18 @@ export default {
         },
         currentChange(next) {
             this.currentPage = next;
-            this.getDataList();
+            this.getDataList(true);
             // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
             //     this.list = this.cacheData[next];
             // } else {
             //     this.getDataList();
             // }
         },
-        getFilterItems() {
+        getFilterItems(isTurnPage) {
+          //翻页时筛选条件没点确定则清空
+          if(isTurnPage&&!this.searched){
+            this.filter.diseaseName='';
+          };
             const param = {
                 current: this.currentPage,
                 size: this.pageSize,
@@ -202,7 +208,7 @@ export default {
               diseaseId:row.diseaseId,
               state:row.state === 'N'?'Y':'N',
           }
-          let warntTxt = row.state === 'N' ? '是否删除该关联?': '是否恢复该关联?'
+          let warntTxt = row.state === 'N' ? '是否删除该关联?': '是否恢复该关联?';
           this.showConfirmDialog(warntTxt,()=>{
             api.cancelIndexConfigAlls(param).then((res)=>{
               if(res.data.code=='0'){
@@ -212,6 +218,9 @@ export default {
                     diseaseName: ''
                   };
                 }
+                if(row.state !== 'N'){       //恢复成功后跳转到筛选条件的首页
+                  this.currentPage = 1;
+                }
                 this.getDataList();
                 this.warning(res.data.msg || '操作成功','success');
               }else{

+ 24 - 9
src/components/icss/ChronicDiseaseStructureList.vue

@@ -144,8 +144,8 @@
           }
         })
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.scaleContentStructure(param).then((res) => {
           const list = res.data.data.records;
@@ -190,9 +190,13 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        this.getDataList();
+        this.getDataList(true);
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
         const param = {
           current: this.currentPage,
           size: this.pageSize,
@@ -219,6 +223,13 @@
           resolve();
         }).catch(() => {});
       },
+      clearFilter(){
+        this.filter={
+          isState:'',
+          tagType: [], //标签类型
+          tagSysName: '', //标签系统名称
+        };
+      },
       showDelDialog(item){
         let tmpArr = []
         tmpArr.push(item.conceptId)
@@ -232,11 +243,15 @@
             if(res.data.code=='0'){
               if(!this.searched){
                 //未点确认时清空搜索条件
-                this.filter={
-                  isState:'',
-                  tagType: [], //标签类型
-                  tagSysName: '', //标签系统名称
-                };
+                this.clearFilter();
+              }
+              if(item.isDeleted !== 'N'){       //恢复成功后跳转到筛选条件的首页
+                this.currentPage = 1;
+              } else {
+                if (this.filter.isState!==''&&this.list.length === 1){
+                  //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
+                  this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                }
               }
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();

+ 10 - 4
src/components/icss/ConceptRelation.vue

@@ -118,8 +118,8 @@ export default {
     })
   },
     methods: {
-        getDataList() {
-            const param = this.getFilterItems();
+        getDataList(isTurnPage) {
+            const param = this.getFilterItems(isTurnPage);
             this.searched = true;
             api.getConceptRelation(param).then((res) => {
               if(res.data.code == '0') {
@@ -162,9 +162,15 @@ export default {
         },
         currentChange(next) {
             this.currentPage = next;
-            this.getDataList();
+            this.getDataList(true);
         },
-        getFilterItems() {
+        getFilterItems(isTurnPage) {
+          //翻页时筛选条件没点确定则清空
+          if(isTurnPage&&!this.searched){
+            this.filter={
+              conceptName:''
+            };
+          };
             const param = {
                 current: this.currentPage,
                 size: this.pageSize,

+ 1 - 1
src/components/icss/DiagnosisTemplate.vue

@@ -201,7 +201,7 @@ export default {
         color: #f56c6c;
       }
       span {
-        color:#22ccc8;
+        color:@adminBase;
         font-size: 12px;
       }
     }

+ 13 - 8
src/components/icss/DisclaimerInformation.vue

@@ -77,7 +77,6 @@
 
 <script>
   import api from '@api/icss.js';
-  import utils from '@api/utils.js';
 
   export default {
     name: 'DisclaimerInformation',
@@ -139,8 +138,8 @@
         this.currentPage = 1;
         this.getDataList();
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.discInformation(param).then((res) => {
           if (res.data.code == '0') {
@@ -156,7 +155,11 @@
       getDetail(item) {
         this.$router.push({name:'DiscInfoDetail', params:{info: item}})
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter.title='';
+        };
         const param = {
           title: this.filter.title,
           current: this.currentPage,
@@ -169,11 +172,11 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+        /*if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
           this.list = this.cacheData[next];
-        } else {
-          this.getDataList();
-        }
+        } else {*/
+          this.getDataList(true);
+        //}
       },
       warning(msg,type){
         this.$message({
@@ -218,6 +221,8 @@
           this.showConfirmDialog('是否启用该免责声明?',()=>{
             api.openInformation({id:item.id}).then((res)=>{
               if(res.data.code==0){
+                //恢复成功后跳转到筛选条件的首页
+                this.currentPage = 1;
                 this.$message({
                   type:'success',
                   message:res.data.msg ||"启用成功"

+ 17 - 10
src/components/icss/IndeptLabel.vue

@@ -165,8 +165,8 @@
 
         })
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getTagList(param).then((res) => {
           const list = [...res.data.data.records];
@@ -228,14 +228,26 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        this.getDataList();
+        this.getDataList(true);
         // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
         //     this.list = this.cacheData[next];
         // } else {
         //     this.getDataList();
         // }
       },
-      getFilterItems() {
+      clearFilter(){
+        this.filter={
+          tagType: [], //标签类型
+          controlType: [],
+          tagAdscription: '', //标签归属
+          tagSysName: '', //标签系统名称
+        };
+      },
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
         const param = {
           tagTypeList: [1],
           current: this.currentPage,
@@ -277,12 +289,7 @@
             if(res.data.code=='0'){
               if(!this.searched){
                 //未点确认时清空搜索条件
-                this.filter={
-                  tagType: [], //标签类型
-                  controlType: [],
-                  tagAdscription: '', //标签归属
-                  tagSysName: '', //标签系统名称
-                };
+                this.clearFilter();
               }
               if(this.list.length==1){
                 //当前在最后一页且只有一条数据时,删除后跳到前一页

+ 16 - 9
src/components/icss/LabelGroup.vue

@@ -170,8 +170,8 @@ export default {
                  
             })
         },
-        getDataList() {
-            const param = this.getFilterItems();
+        getDataList(isTurnPage) {
+            const param = this.getFilterItems(isTurnPage);
           this.searched = true;
             api.getTagList(param).then((res) => {
                 const list = res.data.data.records
@@ -236,14 +236,18 @@ export default {
         },
         currentChange(next) {
             this.currentPage = next;
-            this.getDataList();
+            this.getDataList(true);
             // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
             //     this.list = this.cacheData[next];
             // } else {
             //     this.getDataList();
             // }
         },
-        getFilterItems() {
+        getFilterItems(isTurnPage) {
+          //翻页时筛选条件没点确定则清空
+          if(isTurnPage&&!this.searched){
+            this.clearFilter();
+          };
             const param = {
                 tagTypeList: this.filter.tagType[0] && this.filter.tagType|| this.tagTypesList,
                 current: this.currentPage,
@@ -275,17 +279,20 @@ export default {
             resolve();
           }).catch(() => {});
         },
+      clearFilter(){
+        this.filter={
+          tagType: [], //标签类型
+          tagAdscription: '', //标签归属
+          tagSysName: '', //标签系统名称
+        };
+      },
         showDelDialog(id,type){
           this.showConfirmDialog('是否删除该标签组?',()=>{
             api.deleteTagGroup({ids:id,type:type}).then((res)=>{
               if(res.data.code=='0'){
                 if(!this.searched){
                   //未点确认时清空搜索条件
-                  this.filter={
-                    tagType: [], //标签类型
-                    tagAdscription: '', //标签归属
-                    tagSysName: '', //标签系统名称
-                  };
+                  this.clearFilter();
                 }
                 if(this.list.length==1){
                   //当前在最后一页且只有一条数据时,删除后跳到前一页

+ 15 - 8
src/components/icss/MedicalMultRelation.vue

@@ -152,8 +152,8 @@
         this.currentPage = 1;
         this.getDataList();
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.multContactList(param).then((res) => {
           if (res.data.code == '0') {
@@ -181,7 +181,11 @@
       /*getDetailList(id) {
         this.$router.push({name:'DeptInfoDetail', params:{id: id}})
       },*/
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
         const param = {
           name: this.filter.term,
           current: this.currentPage,
@@ -199,7 +203,7 @@
         if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
           this.list = this.cacheData[next];
         } else {
-          this.getDataList();
+          this.getDataList(true);
         }
       },
       warning(msg,type){
@@ -234,10 +238,7 @@
             if(res.data.code=='0'){
               if(!this.searched){
                 //未点确认时清空搜索条件
-                this.filter={
-                  term:'',
-                  type:''
-                };
+                this.clearFilter();
               }
               if(this.list.length==1){
                 //当前在最后一页且只有一条数据时,删除后跳到前一页
@@ -253,6 +254,12 @@
           })
         });
       },
+      clearFilter(){
+        this.filter={
+          term:'',
+          type:''
+        };
+      },
       uploadClick(){
         let inp = document.getElementById("upFile");
         inp.click();

+ 68 - 36
src/components/icss/MedicalName.vue

@@ -2,28 +2,31 @@
     <div>
         <crumbs title="医学术语命名维护" minWidth="995px" class="knowledgeTitle">
             <el-form :inline="true" class="demo-form-inline">
-                <el-form-item label="医学标准术语:">
-                    <el-input size="mini" v-model="filter.term" placeholder="输入术语"></el-input>
-                </el-form-item>
-                <el-form-item label="术语类型:">
-                  <el-select v-model="filter.type"
-                  clearable 
-                  filterable 
-                  placeholder="请选择" 
-                  size="mini">
-                    <el-option
-                      v-for="item in typeList"
-                      :key="item.id"
-                      :label="item.name"
-                      :value="item.name">
-                    </el-option>
-                  </el-select>
-                </el-form-item>
-                <el-form-item label="同义词:">
-                    <el-input size="mini" v-model="filter.libName" placeholder="输入同义词"></el-input>
-                </el-form-item>
+              <el-form-item>
+                <el-button size="mini" :type="reloadFlag?'danger':'info'"  @click="reloadLib" style="margin:0 10px">加载词库</el-button>
+              </el-form-item>
+              <el-form-item label="医学标准术语:">
+                  <el-input size="mini" v-model="filter.term" placeholder="输入术语"></el-input>
+              </el-form-item>
+              <el-form-item label="术语类型:">
+                <el-select v-model="filter.type"
+                clearable 
+                filterable 
+                placeholder="请选择" 
+                size="mini">
+                  <el-option
+                    v-for="item in typeList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.name">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item label="同义词:">
+                  <el-input size="mini" v-model="filter.libName" placeholder="输入同义词"></el-input>
+              </el-form-item>
               <el-form-item label="状态:">
-                <el-select v-model="isState" clearable placeholder="请选择" size="mini">
+                <el-select v-model="filter.isState" clearable placeholder="请选择" size="mini">
                   <el-option
                     v-for="item in stateSelect"
                     :key="item.id"
@@ -115,6 +118,7 @@
 
 <script>
   import api from '@api/icss.js';
+
   export default {
     name: 'MedicalName',
     data: function () {
@@ -124,7 +128,7 @@
           {id:'N',name:'启用中'},
           {id:'Y',name:'已删除'},
         ],
-        isState:'',
+        // isState:'',
         cacheData: {}, //因为删除和恢复要及时更新,所以不做缓存
         currentPage: 1,
         pageSize: 10,
@@ -133,9 +137,11 @@
         filter: {
           term:'',
           type:'',
-          libName:''
+          libName:'',
+          isState:'',
         },
-        typeList:[]
+        typeList:[],
+        reloadFlag:true
       }
     },
     created() {
@@ -162,6 +168,16 @@
       })
     },
     methods: {
+      reloadLib(){
+        if(this.reloadFlag){
+          this.reloadFlag = false;
+          api.reloadLib().then((res)=>{
+            if (res.data.code == 0) {
+              this.reloadFlag = true;
+            }
+          })
+        }  
+      },
       addMedicalName(){
         const pam = this.searched?{currentPage:this.currentPage,
           filter:this.filter}:{currentPage:this.currentPage};
@@ -181,8 +197,8 @@
         this.currentPage = 1;
         this.getDataList();
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.knowledgeName(param).then((res) => {
           if (res.data.code == '0') {
@@ -210,14 +226,18 @@
       /*getDetailList(id) {
         this.$router.push({name:'DeptInfoDetail', params:{id: id}})
       },*/
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
         const param = {
           name: this.filter.term,
           current: this.currentPage,
           size: this.pageSize,
           type:this.filter.type,
           libName:this.filter.libName,
-          isDeleted:this.isState
+          isDeleted:this.filter.isState
         };
         return param;
       },
@@ -229,7 +249,7 @@
         // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
         //   this.list = this.cacheData[next];
         // } else {
-          this.getDataList();
+          this.getDataList(true);
         // }
       },
       warning(msg,type){
@@ -260,15 +280,19 @@
         let waringTxt = (item.isDeleted === 'N'?'是否删除该标准术语?':'是否重新启用该条数据?')
         this.showConfirmDialog(waringTxt,()=>{
           api.deletMedicalName(param).then((res)=>{
-            if(res.data.code=='0'){
-              if(!this.searched){
+            if(res.data.code=='0') {
+              if (!this.searched) {
                 //未点确认时清空搜索条件
-                this.filter={
-                  term:'',
-                  type:'',
-                  libName:''
-                };
+                this.clearFilter();
               }
+              if (item.isDeleted !== 'N') {       //恢复成功后跳转到筛选条件的首页
+                this.currentPage = 1;
+              } else {
+                if (this.filter.isState!==''&&this.list.length === 1){
+                  //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
+                  this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                  }
+                }
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();
             }else{
@@ -279,6 +303,14 @@
           })
         });
       },
+      clearFilter(){
+        this.filter = {
+          term:'',
+          type:'',
+          libName:'',
+          isState:'',
+        };
+      },
       uploadClick(){
         let inp = document.getElementById("upFile");
         inp.click();

+ 29 - 13
src/components/icss/MedicalRelation.vue

@@ -119,6 +119,7 @@
 
 <script>
   import api from '@api/icss.js';
+
   export default {
     name: 'MedicalRelation',
     data: function () {
@@ -181,8 +182,8 @@
         this.currentPage = 1;
         this.getDataList(1);
       },
-      getDataList(flag) {
-        const params = this.getFilterItems();
+      getDataList(flag,isTurnPage) {
+        const params = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.knowledgeRelation(params).then((res) => {
           if (res.data.code == '0') {
@@ -219,7 +220,11 @@
           }
         })
       },*/
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
         const param = {
           current: this.currentPage,
           size: this.pageSize,
@@ -235,11 +240,11 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+        /*if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
           this.list = this.cacheData[next];
-        } else {
-          this.getDataList();
-        }
+        } else {*/
+          this.getDataList(1,true);
+        //}
       },
       warning(msg,type){
         this.$message({
@@ -267,12 +272,15 @@
             if(res.data.code=='0'){
               if(!this.searched){
                 //未点确认时清空搜索条件
-                this.filter={
-                  isState:'',
-                  startName:'',
-                  endName:'',
-                  type:'',
-                };
+                this.clearFilter();
+              }
+              if(item.isDeleted !== 'N'){       //恢复成功后跳转到筛选条件的首页
+                this.currentPage = 1;
+              } else {
+                if (this.filter.isState!==''&&this.list.length === 1){
+                  //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
+                  this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                }
               }
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();
@@ -284,6 +292,14 @@
           })
         });
       },
+      clearFilter(){
+        this.filter={
+          isState:'',
+          startName:'',
+          endName:'',
+          type:'',
+        };
+      },
       uploadClick(){
         let inp = document.getElementById("upFile");
         inp.click();

+ 13 - 1
src/components/icss/MedicineInfoPg.vue

@@ -48,6 +48,15 @@
     },
     data(){
       return {
+        toolbars: [[
+          ['bold','underline', 'strike'],
+          [{'list': 'ordered'}, {'list': 'bullet'}],
+          [{'script': 'sub'}, {'script': 'super'}],
+          [{'color': []}, {'background': []}],
+          [{'align': []}],
+          ['image']
+        ]],
+        toolbarMode:0,
         editorOption: {
           modules: {
             ImageExtend: {
@@ -80,7 +89,7 @@
                 'image': function () {
                   QuillWatch.emit(this.quill.id)
                 }
-              }
+              },
             }
           }
         },
@@ -116,6 +125,9 @@
         this.data.text = this.$refs.quillEditor.quill.root.innerText;
       }
     },
+    created(){
+      this.editorOption.modules.toolbar.container = this.toolbars[this.toolbarMode]
+    },
     mounted(){
       //显示位置枚举列表
       const pos = localStorage.getItem("knowledgeEnumsData");

+ 21 - 12
src/components/icss/MedicinePrompt.vue

@@ -54,7 +54,8 @@
                         <el-button v-if="scope.row.isDeleted=='Y'" type="text" size="small" class="is-disabled">修改</el-button>
                         <el-button v-if="scope.row.isDeleted=='N'" type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
                         <span style="margin:0 3px;">|</span>
-                        <el-button type="text" size="small" @click="toCopyProduct(scope.row)">复制</el-button>
+                        <el-button v-if="scope.row.isDeleted=='Y'" type="text" size="small" class="is-disabled">复制</el-button>
+                        <el-button v-if="scope.row.isDeleted=='N'" type="text" size="small" @click="toCopyProduct(scope.row)">复制</el-button>
                         <span style="margin:0 3px;">|</span>
                         <el-button v-if="scope.row.isDeleted=='Y'" type="text" size="small" @click="showReuseDialog(scope.row)">恢复</el-button>
                         <el-button v-if="scope.row.isDeleted=='N'" type="text" size="small" class="delete" @click="showDelDialog(scope.row)">删除</el-button>
@@ -145,8 +146,8 @@
         this.currentPage = 1;
         this.getDataList();
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getConceptKnowledgeList(param).then((res) => {
           if (res.data.code == '0') {
@@ -159,7 +160,17 @@
           console.log(error);
         });
       },
-      getFilterItems() {
+      clearFilter(){
+        this.filter={
+          term: '',
+          title:''
+        };
+      },
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.clearFilter();
+        };
         const param = {
           conceptName:this.filter.term,
           title:this.filter.title,
@@ -173,11 +184,11 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+        /*if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
           this.list = this.cacheData[next];
-        } else {
-          this.getDataList();
-        }
+        } else {*/
+          this.getDataList(true);
+        //}
       },
       warning(msg,type){
         this.$message({
@@ -202,10 +213,7 @@
             if(res.data.code=='0'){
               if(!this.searched){
                 //未点确认时清空搜索条件
-                this.filter={
-                  term: '',
-                  title:''
-                };
+                this.clearFilter();
               }
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();
@@ -221,6 +229,7 @@
         this.showConfirmDialog('是否重新启用该条数据?',()=>{
           api.delConceptInfo({conceptId:[row.conceptId],status:"N"}).then((res)=>{
             if(res.data.code=='0'){
+              this.currentPage = 1;         //恢复数据跳转到筛选条件下首页
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();
             }else{

+ 8 - 4
src/components/icss/PhysicalExamTemplate.vue

@@ -163,8 +163,8 @@
           }
         })
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getPhysicalExamTempList(param).then((res) => {
           if (res.data.code == '0') {
@@ -179,7 +179,11 @@
       getDetailList(row) {
          this.getPhysicalExamTempByDepId('isDetail', row)
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter.deptId='';
+        };
         const param = {
           deptId: this.filter.deptId,
           current: this.currentPage,
@@ -195,7 +199,7 @@
         if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
           this.list = this.cacheData[next];
         } else {
-          this.getDataList();
+          this.getDataList(true);
         }
       },
       warning(msg,type){

+ 19 - 1
src/components/icss/PubIndeptTag.vue

@@ -150,6 +150,19 @@
                   v-if="form.region1 == 5"
                   class="changeTips changeTipsName"
                 >标签界面名称需要与医学标准术语内容相对应,如果没有可以先在医学标准术语中建立相关信息!未建立相关信息可能会影响系统使用!当为化验推送项时标签界面名称应当检索医学术语库内容;</span>
+                <!-- 诱因记录暂时不做 -->
+                <!-- <span
+                  v-if="form.region1 == '1'&&form.region2 == '1'"
+                  class="changeTips changeTipsName checkSpecFlag"
+                >
+                   <el-checkbox v-model="form.specFlag"  label="诱因记录" true-label="2" false-label="0"  @change="sendData"></el-checkbox>
+                </span> -->
+                <span
+                  v-if="form.region1=='1'&&form.region2=='5'"
+                  class="changeTips changeTipsName checkSpecFlag"
+                >
+                   <el-checkbox v-model="form.specFlag" label="是否高亮" true-label="1" false-label="0"  @change="sendData"></el-checkbox>
+                </span>
             </el-form-item>
             <el-form-item
                     label="标签前后缀:"
@@ -213,7 +226,7 @@
                 <span class="changeTips">改变性别后,标签明细将会恢复到默认状态</span>
                 <el-select
                         v-model="form.region7"
-                        :disabled="!!editData.id || !form.region1 || form.region2 == '99'"
+                        :disabled="isEditOrCopy || !form.region1 || form.region2 == '99'"
                         @change="(e)=>readyChangeSelect(e,3)"
                 >
                     <el-option
@@ -347,6 +360,7 @@
           maxNormalVal: '',       //化验正常值最大值
           region12: '0',        //是否为查体推送   
           region13:'',
+          specFlag :'0',        //标记状态(0:没有标记,1:主诉高亮,2:诱因记录)
           prefix:'',            //前缀
           suffix:'',            //后缀
           tipLis:[],           //提示列表
@@ -642,6 +656,7 @@
         this.form.maxNormalVal = ''
         this.form.region5 = ''
         this.form.region12 = '0'
+        this.form.specFlag = '0'
         this.systemNameShow = false
         this.interfaceNameShow = false
       },
@@ -715,6 +730,9 @@
     .changeTips {
         width: 200%;
     }
+    .checkSpecFlag {
+      top: 5px;
+    }
     }
 </style>
 

+ 1 - 2
src/components/icss/SingleSelect.vue

@@ -11,7 +11,7 @@
                 <el-checkbox-group size="small" v-for="(it,i) in rows" v-if="type!=1&&(focusOn==i||(focusOn==-1&&i==0))" :key="3+i" v-model="rows[i].isBan" @change="emitValues(i,'hasBan',rows[i].isBan)">
                     <el-checkbox-button v-if=" !(ascription == 5 && type == 1 || type == 11)" :label="i" :disabled="rows[i].isNone || hasError==i||focusOn==-1">同“伴”类型</el-checkbox-button>
                 </el-checkbox-group>
-                <el-checkbox-group size="small" v-for="(it,i) in rows" v-if="focusOn==i||(focusOn==-1&&i==0)" :key="4+i" v-model="rows[i].isError" @change="emitValues(i,'hasError',rows[i].isError)">
+                <el-checkbox-group size="small" v-for="(it,i) in rows" v-if="ascription==5&&(focusOn==i||(focusOn==-1&&i==0))" :key="4+i" v-model="rows[i].isError" @change="emitValues(i,'hasError',rows[i].isError)">
                     <el-checkbox-button v-if="ascription==5 && (type == 1 || type != 11)" :label="i" :disabled="hasDefault==i||hasBan==i ||hasNone==i ||focusOn==-1">标记异常选项</el-checkbox-button>
                 </el-checkbox-group>
                  <span v-if="type == 11" class="tip">可输入中文全角括号"()", 当作可输入内容的占位符</span>
@@ -223,7 +223,6 @@
         },
         selectRow(index){
           this.focusOn = index;
-
         },
         emitValues(i,type,flag){
           if(typeof i =='number'&&this.focusOn == -1){

+ 34 - 28
src/components/icss/TemplateMaintenance.vue

@@ -106,19 +106,15 @@
     data: function() {
       return {
         list: [],
-        tagTypes: [],
         Adscriptions: [],
         tmpAdscriptions: [],
         AdscriptionsType:[],
         AdscriptionsOwnTo:[],
-        tagTypesList: [],
         searched: false,
         filter: {
-          tagType: [], //标签类型
           templateType: '', //模板类型
           ownTo: '', //属于科室、慢病
           tagAdscription: '', //标签归属
-          tagSysName: '', //标签系统名称
         },
         currentPage: 1,
         pageSize: 10,
@@ -163,11 +159,12 @@
           this.Adscriptions = this.tmpAdscriptions
         }
         if((newVal+'') != preVal){
+
           if(newVal == 1){
-            this.AdscriptionsOwnTo = this.deptAndDisInfo.deptDTOS
+            this.AdscriptionsOwnTo = this.deptAndDisInfo.deptDTOS;
             this.filter.ownTo = ''
           }else if(newVal == 2){
-            this.AdscriptionsOwnTo = this.deptAndDisInfo.disDTOS
+            this.AdscriptionsOwnTo = this.deptAndDisInfo.disDTOS;
             this.filter.ownTo = ''
           }else{
             this.AdscriptionsOwnTo = []
@@ -179,7 +176,16 @@
     beforeRouteEnter(to, from, next) {
       next(vm => {
         //const pm = to.param;
-        Object.assign(vm, to.params);
+        const flt = to.params.filter;
+        vm.currentPage = to.params.currentPage;
+        vm.deptAndDisInfo = JSON.parse(localStorage.getItem('deptDis')||null);
+        if(flt){
+          vm.filter.templateType = flt.templateType;
+          setTimeout(function(){
+            vm.filter.tagAdscription = flt.tagAdscription;
+              vm.filter.ownTo = flt.ownTo;
+            });
+        }
       })
     },
     methods: {
@@ -197,28 +203,19 @@
         this.AdscriptionsType = templateType
         return api.getDropList().then((res) =>{
           if(res.data.code === '0') {
-            this.tagTypes =  res.data.data[6];
             this.Adscriptions = res.data.data[4];
             this.tmpAdscriptions = res.data.data[4];
             localStorage.setItem('typeLis',JSON.stringify(res.data.data[4]))
-            for (var i = 0; i < this.tagTypes.length; i++) {
-              this.tagTypesList.push(this.tagTypes[i].val)
-            }
           }
         })
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getModuleInfoList(param).then((res) => {
           if(res.data.code == 0){
-            const list = res.data.data.records
+            const list = res.data.data.records;
             for (var i = 0; i < list.length; i++) {
-              for (var j =  0; j < this.tagTypes.length; j++) {
-                if(list[i].tagType === this.tagTypes[j].val) {
-                  list[i].tagTypeCn = this.tagTypes[j].name;
-                }
-              }
               for (var z =  0; z < this.Adscriptions.length; z++) {
                 if(list[i].type === this.Adscriptions[z].val) {
                   list[i].typeCn = this.Adscriptions[z].name
@@ -274,9 +271,17 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        this.getDataList();
+        this.getDataList(true);
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter={
+            templateType: '', //模板类型
+            ownTo: '', //属于科室、慢病
+            tagAdscription: '', //标签归属
+          };
+        };
         const param = {
           current: this.currentPage,
           size: this.pageSize,
@@ -304,19 +309,20 @@
           resolve();
         }).catch(() => {});
       },
+      clearfilter(){
+        this.filter={
+          templateType: '', //模板类型
+          ownTo: '', //属于科室、慢病
+          tagAdscription: '', //标签归属
+        };
+      },
       showDelDialog(id,type){
         this.showConfirmDialog('是否删除该标签?',()=>{
           api.delTemplate({ids:id,type:type}).then((res)=>{
             if(res.data.code=='0'){
               if(!this.searched){
                 //未点确认时清空搜索条件
-                this.filter={
-                  tagType: [], //标签类型
-                  templateType: '', //模板类型
-                  ownTo: '', //属于科室、慢病
-                  tagAdscription: '', //标签归属
-                  tagSysName: '', //标签系统名称
-                };
+                this.clearfilter();
               }
               if(this.list.length==1){
                 //当前在最后一页且只有一条数据时,删除后跳到前一页

+ 8 - 4
src/components/icss/VersionInfo.vue

@@ -133,8 +133,8 @@
         this.currentPage = 1;
         this.getDataList();
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.versionInfo(param).then((res) => {
           if (res.data.code == '0') {
@@ -156,7 +156,11 @@
         let isFirst = false;
         this.$router.push({name:'VersionDetail', params:{info:item,isFirst}});
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter.name='';
+        };
         const param = {
           name: this.filter.name,
           current: this.currentPage,
@@ -172,7 +176,7 @@
         if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
           this.list = this.cacheData[next];
         } else {
-          this.getDataList();
+          this.getDataList(true);
         }
       }
     }

+ 2 - 1
src/components/preTreat/AddCombinQuestion.vue

@@ -17,7 +17,7 @@
         ></PubIndeptQa>
         <div class="main">
             <p class="title" v-if="dataPub.region2">
-                填写单明细:<span>(互斥项与其他明细内容互斥,互斥项同时只可选择一个)</span>
+                填写单明细:<span v-if="dataPub.region2!='4'">(互斥项与其他明细内容互斥,互斥项同时只可选择一个)</span>
             </p>
             <QuestionTagGroup v-if="dataPub.region2" qaType="2" :ascription="dataPub.region1" :sexType="dataPub.region7" :type="dataPub.region2" @changeActionData="pushValues" :options="editData.questionMapping"></QuestionTagGroup>
             <div class="btn">
@@ -107,6 +107,7 @@
             "ageEnd": this.dataPub.region9,              //最大年龄
             "itemType" :this.dataPub.region12,           //是否为主要内容
             "url":this.dataPub.region13,                  //上传图片
+            'explains':this.dataPub.explains,           //症状解释
             //"questionDetails": this.options,                //明细项
             "questionMappings": this.options,      //映射关系,
           }

+ 5 - 3
src/components/preTreat/AddSimpleQuestion.vue

@@ -14,11 +14,11 @@
                 ref="submitForm"
         ></PubIndeptQa>
         <div class="main">
-            <p class="title" v-if="dataPub.region2==1||dataPub.region2==2|| dataPub.region2==3|| dataPub.region2==11">
+            <p class="title" v-if="dataPub.region2==1||dataPub.region2==2|| dataPub.region2==3|| dataPub.region2==11|| dataPub.region2==8">
                 填写单明细:<span v-if="dataPub.region2==2">(互斥项与其他明细内容互斥,互斥项同时只可选择一个)</span>
             </p>
             <PubSelect
-                    v-if="dataPub.region2==1 || dataPub.region2==2 || dataPub.region2==3 || dataPub.region2==11"
+                    v-if="dataPub.region2==1 || dataPub.region2==2 || dataPub.region2==3 || dataPub.region2==11|| dataPub.region2==8"
                     :ascription="dataPub.region1"
                     :sexType="dataPub.region7"
                     :type="dataPub.region2"
@@ -50,7 +50,7 @@
         param:this.$route.params,
         imgList:[],
         dataPub: {},      //公用组件传的值都在这
-        itemsTypes:[1,2],            //有明细的类型
+        itemsTypes:[1,2,8],            //有明细的类型
         editData:{},                    //编辑数据
         options: [],           //标签明细右侧操作数据
       }
@@ -139,6 +139,8 @@
             "ageEnd": this.dataPub.region9,              //最大年龄
             "itemType" :this.dataPub.region12,           //是否为主要内容
             "url":this.dataPub.region13,                  //上传图片
+            "specFlag": this.dataPub.specFlag,            //是否拼接到主诉
+            "required": this.dataPub.required,             //必填
             "questionDetails": this.options,                //明细项
             //"questionMappings": [],      //映射关系,
           }

+ 13 - 5
src/components/preTreat/CombinQuestion.vue

@@ -139,8 +139,8 @@
 
         })
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getQuestionList(param).then((res) => {
           const list = [...res.data.data.records];
@@ -189,10 +189,18 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        this.getDataList();
+        this.getDataList(true);
       },
-      getFilterItems() {
-        const param = {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter = {
+            tagType: [], //标签类型
+            tagAdscription: '', //标签归属
+            tagSysName: '', //标签系统名称
+          }
+        };
+        let param = {
           tagTypeList: this.filter.tagType[0] ? this.filter.tagType: [4,6],
           current: this.currentPage,
           size: this.pageSize,

+ 26 - 1
src/components/preTreat/PubIndeptQa.vue

@@ -100,6 +100,19 @@
                         @change="sendData"
                 ></el-input>
             </el-form-item>
+          <el-form-item  v-if="qaType =='1'&& form.region1 == '1' && form.region2 != '4'">
+            <span
+                  v-if="qaType =='1' && form.region1 == '1'  && form.region2 != '4'"
+                >
+                   <el-checkbox v-model="form.required"  label="必填" true-label="1" false-label="0"  @change="sendData"></el-checkbox>
+                </span>
+                <span
+                 class = "flagBox"
+                  v-if="qaType =='1' &&form.region1=='1'&&form.region2=='1'"
+                >
+                   <el-checkbox v-model="form.specFlag" label="拼接到主诉" true-label="1" false-label="0"  @change="sendData"></el-checkbox>
+                </span>
+          </el-form-item>
             <el-form-item
                     v-if="qaType==2"
                     label="填写单患者界面展示通俗内容:"
@@ -179,6 +192,13 @@
                     <el-button slot="trigger" size="small" type="primary">上传图片</el-button>
                 </el-upload>
             </el-form-item>
+            <el-form-item
+                    v-if="qaType==2&&form.region1=='1'&&form.region2=='4'"
+                    label="医学教育说明:"
+                    prop="explains"
+            >
+                <el-input type="textarea" @input="sendData" v-model="form.explains" style="width: 500px;"></el-input>
+            </el-form-item>
         </el-form>
     </div>
 </template>
@@ -276,13 +296,15 @@
           region9: '200',         //最大年龄
           region12: '0',        //是否为主要内容
           region13:'',          //上传图片
+          specFlag:'0',         //拼接到主诉
+          required: '0',        //必填
         },
         //isNeedSearch: false, //是否需要查询(系统名称)
         imgList:[],
         showFileList:false,
         uploadUrl:config.urls.uploadImg,        //图片上传地址
         labelTypesMaps: {       // 归属和填写单类型限制
-          '1':['1','2','3','5','6','7'], //症状情况
+          '1':['1','2','3','5','6','7','8'], //症状情况
           '51':['1','2','3','4','5','6','7'],    //诊疗情况
           '3':['1','2','3','5','6','7'],         //其他史
           '52':['1','2','3','5','6','7']            //补充内容
@@ -577,5 +599,8 @@
     .upload-hide .el-upload--picture{
         display: none;
     }
+    .flagBox {
+      margin-left: 20px;
+    }
 </style>
 

+ 20 - 4
src/components/preTreat/PubSelect.vue

@@ -3,10 +3,10 @@
         <el-form>
             <div class="operation-row">
                 <el-checkbox-group size="small">
-                    <el-checkbox-button :label="0" :disabled="disableBtn" @change="handlePlaceholder(0)">文字输入框占位符</el-checkbox-button>
+                    <el-checkbox-button :label="0" v-if="type!=8" :disabled="disableBtn" @change="handlePlaceholder(0)">文字输入框占位符</el-checkbox-button>
                 </el-checkbox-group>
                 <el-checkbox-group size="small">
-                    <el-checkbox-button :label="0" :disabled="disableBtn" @change="handlePlaceholder(1)">数字输入框占位符</el-checkbox-button>
+                    <el-checkbox-button :label="0" v-if="type!=8" :disabled="disableBtn" @change="handlePlaceholder(1)">数字输入框占位符</el-checkbox-button>
                 </el-checkbox-group>
                 <el-checkbox-group size="small" v-if="type==2" v-model="checkedExc">
                     <el-checkbox-button :label="0" @change="handleExclu">互斥项</el-checkbox-button>
@@ -19,6 +19,7 @@
                     <span><i>*</i>填写单医生界面展示标准内容</span>
                     <span>填写单患者界面展示通俗内容</span>
                 </el-col>
+                <p class="static-tip" v-if="type==8">默认展示有/无</p>
                 <el-col v-for="(it,i) in rows" :key="i">
                     <div class="inps">
                         <el-input v-model="rows[i].name"
@@ -57,6 +58,19 @@
 </template>
 <style lang="less">
     @import "../../less/common.less";
+    .main-area{
+        position: relative;
+    }
+    .main-area .static-tip{
+        border:1px solid #dcdfe6;
+        height: 38px;
+        width: 150px;
+        position: absolute;
+        top:29px;
+        left: -150px;
+        line-height: 38px;
+        text-align: center;
+    }
     .main-area .el-col .el-input.red .el-input__inner{
         border-color: red;
     }
@@ -89,7 +103,7 @@
         margin-left: 150px;
     }
     .tip {
-        color: #22ccc8;
+        color: #48C5D7;
     }
     }
     .main-area{
@@ -215,7 +229,9 @@
         const key = this.focusName;
         this.noHolder = this.noHolder.replace(','+i,'');
         this.rows[i].name = this.rows[i].name+maps[type];
-        this.rows[i].description = this.rows[i].description+maps[type];
+        if(this.type!='3'){
+          this.rows[i].description = this.rows[i].description+maps[type];
+        }
         this.disableBtn = true;
       },
       handleExclu(){

+ 13 - 4
src/components/preTreat/QuestionModules.vue

@@ -160,8 +160,8 @@
           }
         });
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getModuleList(param).then((res) => {
           if (res.data.code === '0') {
@@ -218,9 +218,18 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        this.getDataList();
+        this.getDataList(true);
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter = {
+            name: '', //模板名称
+            type: '', //模板归属
+            moduleType: '', //模板类型
+            relationId:'',  //归属科室
+          }
+        };
         const param = {
           name: this.filter.name,
           type:this.filter.type,

+ 18 - 4
src/components/preTreat/QuestionTagGroup.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="symptomTagGroupWrapper commomSymptom clearfix">
         <div class="operation-row">
-            <el-checkbox-group size="small" v-if="qaType==2" v-model="checkedExc">
+            <el-checkbox-group size="small" v-if="qaType==2&&type!='4'" v-model="checkedExc">
                 <el-checkbox-button :label="0" @change="handleExclu">互斥项</el-checkbox-button>
             </el-checkbox-group>
         </div>
@@ -21,11 +21,14 @@
             <li v-for="(item, index) in leftTagsList"
                 class = "tagItem"
                 :key='item.id'
-                :title="'[ '+item.tagName+' ]'"
+                :title="'[ '+item.tagName+' ]('+sex[item.sexType]+(item.required?'、必':'')+(item.specFlag?'、跟主':'')+')'"
                 :style="getStyle(item)?styles:null"
                 @click='selectLeftTag(item, index, $event)'
             >
-                <p class="tagName ellipsis" >{{item.tagName}} </p>
+                <p class="ellipsis" >
+                    <span class="tagName">{{item.tagName}}</span>
+                    <span>({{sex[item.sexType]}}{{item.required?'、必':''}}{{item.specFlag?'、跟主':''}})</span>
+                </p>
             </li>
         </ul>
       </div>
@@ -43,7 +46,10 @@
                 :style="getStyle2(item)?styles:null"
                 @click='selectRightTag(item)'
             >
-                <p class="tagName  ellipsis" :title="'[ '+item.tagName+' ]'">{{item.tagName}} </p>
+                <p class="ellipsis" :title="'[ '+item.tagName+' ]('+sex[item.sexType]+(item.required?'、必':'')+(item.specFlag?'、跟主':'')+')'">
+                    <span class="tagName">{{item.tagName}}</span>
+                    <span>({{sex[item.sexType]}}{{item.required?'、必':''}}{{item.specFlag?'、跟主':''}})</span>
+                </p>
                 <el-tag class="exclu" v-if="item.exclusionType==1" type="info" size="mini">互斥项</el-tag>
             </li>
         </ul>
@@ -70,6 +76,11 @@ export default {
             rightTagsList: [],
             selectRightTagsList: [],
             searchVal: '',
+            sex:{
+              1:'男',
+              2:'女',
+              3:'通'
+            },
             styles:{
                 background:'#eae7e7'
             },
@@ -374,6 +385,9 @@ export default {
         min-height: 300px;
         padding: 10px 0;
     }
+    .tagName{
+        margin-right: 10px;
+    }
     .tagName:before {
         content: '['
     }

+ 13 - 4
src/components/preTreat/SimpleQuestion.vue

@@ -140,8 +140,8 @@
 
         })
       },
-      getDataList() {
-        const param = this.getFilterItems();
+      getDataList(isTurnPage) {
+        const param = this.getFilterItems(isTurnPage);
         this.searched = true;
         api.getQuestionList(param).then((res) => {
           const list = [...res.data.data.records];
@@ -207,14 +207,23 @@
       },
       currentChange(next) {
         this.currentPage = next;
-        this.getDataList();
+        this.getDataList(true);
         // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
         //     this.list = this.cacheData[next];
         // } else {
         //     this.getDataList();
         // }
       },
-      getFilterItems() {
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter = {
+            tagType: [], //标签类型
+            controlType: [],
+            tagAdscription: '', //标签归属
+            tagSysName: '', //标签系统名称
+          }
+        };
         const param = {
           tagTypeList: [1],
           current: this.currentPage,

+ 2 - 1
vue.config.js

@@ -1,6 +1,7 @@
 const path = require('path');
-const proxy_path = 'http://192.168.2.236:88';
+// const proxy_path = 'http://192.168.2.236:80';
 // const proxy_path = 'http://192.168.2.241:88';
+const proxy_path = 'http://192.168.2.236:88';
 // const proxy_path = 'http://192.168.3.101:5050';
 // const proxy_path = 'http://192.168.3.117:5050';//周铁刚
 // const proxy_path = 'http://192.168.3.115:5050';