소스 검색

标签组功能添加

Luolei 6 년 전
부모
커밋
5dbc3dae59
3개의 변경된 파일291개의 추가작업 그리고 167개의 파일을 삭제
  1. 1 0
      src/api/config.js
  2. 3 0
      src/api/icss.js
  3. 287 167
      src/components/icss/PubTagGroup.vue

+ 1 - 0
src/api/config.js

@@ -195,6 +195,7 @@ export default {
     'searchKnowledgeLis': 'api/knowledgeman/scaleContent/index', //量表结构检索
     'getknowledgeList': 'api/knowledgeman/dictionaryInfo/getList', //量表结构字典信息
     'getModuleType': 'api/icssman/moduleInfo/getModuleType',  //模板维护 -- 类型筛选
+    'indexByLexicon': 'api/knowledgeman/commonconcept/indexByLexicon',  //知识库标准化-根据名称和术语库词性类型搜索
 	},
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 3 - 0
src/api/icss.js

@@ -94,6 +94,9 @@ export default {
     deleteTagGroup(param) {
         return axios.post(urls.deleteTagGroup, param)
     },
+    indexByLexicon(param) {
+        return axios.post(urls.indexByLexicon, param)
+    },
     getGroupParams(val){
       if(val == 2){
         return groupParams[0]

+ 287 - 167
src/components/icss/PubTagGroup.vue

@@ -1,5 +1,8 @@
 <template>
-  <div class="PubTagGroupWrapper">
+  <div
+    class="PubTagGroupWrapper"
+    @click="closeNameLis(1)"
+  >
     <el-form
       class="groups"
       :rules="rules"
@@ -46,11 +49,22 @@
         </el-select>
       </el-form-item>
       <el-form-item
-        v-if="form.region1 == 1 && form.region2 ==4"
-        label="是否为症状"
+        v-show="(form.region1 == 1 && form.region2 ==4) || (form.region1 == 4) || (form.region1 == 5)"
+        :label="(form.region1 == 5)?'是否当化验推送项':(form.region1 == 4)?'是否当查体推送项':'是否为症状'"
         prop="region12"
       >
-        <span class="changeTips changeTipsName">当为症状时,标签系统名称需要与医学标准术语内容相对应;不为症状时可以不用相互对应;</span>
+        <span
+          v-if="form.region1 == 4"
+          class="changeTips changeTipsName"
+        >当为查体推送项时,标签系统名称需要检索医学标准术语内容并与之相对应,才可保证系统正常使用,如果未对应上可能造成系统显示异常!如果在搜索中没有可以先在医学标准术语中建立相关信息!</span>
+        <span
+          v-else-if="form.region1 == 5"
+          class="changeTips changeTipsName"
+        >当为化验推送项时,标签系统名称需要检索医学标准术语内容并与之相对应,才可保证系统正常使用,如果未对应上可能造成系统显示异常!如果在搜索中没有可以先在医学标准术语中建立相关信息!</span>
+        <span
+          v-else
+          class="changeTips changeTipsName"
+        >当为症状时,标签系统名称需要与医学标准术语内容相对应;不为症状时可以不用相互对应;</span>
         <el-select
           v-model="form.region12"
           @change="sendData"
@@ -66,24 +80,61 @@
         </el-select>
       </el-form-item>
       <el-form-item
-        v-if="form.region1 == 4"
-        label="是否当查体推送项"
-        prop="region14"
+        label="标签系统名称:"
+        prop="region3"
       >
-        <span class="changeTips changeTipsName">当为查体推送项时,标签系统名称需要检索医学标准术语内容并与之相对应,才可保证系统正常使用,如果未对应上可能造成系统显示异常!如果在搜索中没有可以先在医学标准术语中建立相关信息!</span>
-        <el-select
-          v-model="form.region14"
+        <div @click.stop style="display:inline-block;">
+          <el-input
+            v-model="form.region3"
+            :disabled="!form.region1"
+            maxLength="30"
+            placeholder="请输入标签系统名称"
+            @change="sendData"
+            @focus="focusSystemName"
+          ></el-input>
+          <ul
+            class="systemNames"
+            v-if="systemNameShow"
+          >
+            <li
+              v-for="item in systemNameLis"
+              class="ellipsis"
+              :key="item.conceptId"
+              @click="pushSystemName(item.name)"
+            >{{item.name}}</li>
+          </ul>
+        </div>
+        <!-- <el-autocomplete
+          v-model="form.region3"
+          maxLength="30"
+          :fetch-suggestions="querySearchAsync"
+          placeholder="请输入标签系统名称"
+          @select="handleSelect"
+        ></el-autocomplete> -->
+        <span
+          v-if="form.region1 == 5 || form.region1 == 4"
+          class="changeTips changeTipsName"
+        >标签系统名称需要与医学标准术语内容相对应,如果没有可以先在医学标准术语中建立相关信息!未建立相关信息可能会影响系统使用!</span>
+        <span
+          v-if="form.region2 == 4"
+          class="changeTips changeTipsName"
+        >当为症状时,标签系统名称需要与医学标准术语内容相对应,如果没有可以先在医学标准术语中建立相关信息!未建立相关信息可能会影响系统使用!</span>
+      </el-form-item>
+      <el-form-item
+        label="标签界面名称:"
+        prop="region4"
+      >
+        <span
+          v-if="form.region1 == 5 || form.region2 == 4 || form.region1 == 4"
+          class="changeTips changeTipsName"
+        >为在界面上检索不受影响,标签界面名称应与标签系统名称和医学标准术语内容相对应,未建立相关信息可能会影响系统使用!</span>
+        <el-input
+          v-model="form.region4"
+          :disabled="!form.region1"
+          maxLength="30"
+          placeholder="请输入标签界面名称"
           @change="sendData"
-        >
-          <el-option
-            label="是"
-            value="0"
-          ></el-option>
-          <el-option
-            label="不是"
-            value="1"
-          ></el-option>
-        </el-select>
+        ></el-input>
       </el-form-item>
       <el-form-item
         label="性别:"
@@ -109,33 +160,6 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item
-        label="标签系统名称:"
-        prop="region3"
-      >
-        <el-input
-          v-model="form.region3"
-          :disabled="!form.region1"
-          maxLength="30"
-          placeholder="请输入标签系统名称"
-          @change="sendData"
-        ></el-input>
-        <span v-if="form.region1 == 5 || form.region1 == 4" class="changeTips changeTipsName">标签系统名称需要与医学标准术语内容相对应,如果没有可以先在医学标准术语中建立相关信息!未建立相关信息可能会影响系统使用!</span>
-        <span v-if="form.region2 == 4" class="changeTips changeTipsName">当为症状时,标签系统名称需要与医学标准术语内容相对应,如果没有可以先在医学标准术语中建立相关信息!未建立相关信息可能会影响系统使用!</span>
-      </el-form-item>
-      <el-form-item
-        label="标签界面名称:"
-        prop="region4"
-      >
-        <span v-if="form.region1 == 5 || form.region2 == 4 || form.region1 == 4" class="changeTips changeTipsName">为在界面上检索不受影响,标签界面名称应与标签系统名称和医学标准术语内容相对应,未建立相关信息可能会影响系统使用!</span>
-        <el-input
-          v-model="form.region4"
-          :disabled="!form.region1"
-          maxLength="30"
-          placeholder="请输入标签界面名称"
-          @change="sendData"
-        ></el-input>
-      </el-form-item>
       <!-- <el-form-item
         label="选择项之间链接:"
         prop="region5"
@@ -182,7 +206,7 @@
       <el-form-item
         prop="region9"
         class="ages maxAges"
-      > 
+      >
         <el-input
           v-model.number="form.region9"
           :disabled="!form.region1 || form.region2 == 11"
@@ -191,16 +215,43 @@
           @input="sendData"
         ></el-input>
       </el-form-item>
-      <el-form-item class="verticalMiddle" label="选择子项时是否复制主项标签:" prop="region10" v-if="form.region2 == 6">
-        <el-select v-model="form.region10" :disabled="!form.region1 || form.region2 == 11">
-          <el-option label="不可以" value="0"></el-option>
-          <el-option label="可以" value="1"></el-option>
+      <el-form-item
+        class="verticalMiddle"
+        label="选择子项时是否复制主项标签:"
+        prop="region10"
+        v-if="form.region2 == 6"
+      >
+        <el-select
+          v-model="form.region10"
+          :disabled="!form.region1 || form.region2 == 11"
+        >
+          <el-option
+            label="不可以"
+            value="0"
+          ></el-option>
+          <el-option
+            label="可以"
+            value="1"
+          ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="是否显示加号:" prop="region11" v-if="form.region2 == 2 || form.region2 == 3">
-        <el-select v-model="form.region11" :disabled="!form.region1 || form.region2 == 11">
-          <el-option label="显示" value="1"></el-option>
-          <el-option label="不显示" value="0"></el-option>
+      <el-form-item
+        label="是否显示加号:"
+        prop="region11"
+        v-if="form.region2 == 2 || form.region2 == 3"
+      >
+        <el-select
+          v-model="form.region11"
+          :disabled="!form.region1 || form.region2 == 11"
+        >
+          <el-option
+            label="显示"
+            value="1"
+          ></el-option>
+          <el-option
+            label="不显示"
+            value="0"
+          ></el-option>
         </el-select>
       </el-form-item>
     </el-form>
@@ -232,18 +283,18 @@ import utils from '@api/utils.js';
 
 
 export default {
-  props:['editData'],
+  props: ['editData'],
   data() {
     var validatePass1 = (rule, value, callback) => {
-        this.validateSystomName(value,callback,1)
+      this.validateSystomName(value, callback, 1)
     };
     var validatePass2 = (rule, value, callback) => {
-        const editData = this.$props.editData;
-        if(editData.id && value == editData.tagName){ //修改系统名称没变就不再校验
-          callback();
-        }else{
-          this.validateSystomName(value,callback,2)
-        }
+      const editData = this.$props.editData;
+      if (editData.id && value == editData.tagName) { //修改系统名称没变就不再校验
+        callback();
+      } else {
+        this.validateSystomName(value, callback, 2)
+      }
     };
     return {
       form: {
@@ -258,24 +309,23 @@ export default {
         region9: '200',         //最大年龄
         region10: '1',        //是否复制主标签
         region11: '0',       //是否复制当前模块
-        region12:'1',        //是否为症状
-        region14:'1',        //是否为查体推送
-        tagPool:[],          //标签池数据
-        order:[],            //排序方式
-        tipLis:[],           //提示列表
+        region12: '1',        //是否为症状//是否为化验推送//是否为查体推送    
+        tagPool: [],          //标签池数据
+        order: [],            //排序方式
+        tipLis: [],           //提示列表
       },
       labelTypesMaps: {       //// 归属和填写单类型限制
-        '1':['2','3','4'],  //推送类型暂时不用
-        '3':['2','4','6'],
-        '4':['2','3'],
-        '5':['7'],
-        '6':['9'],
+        '1': ['2', '3', '4'],  //推送类型暂时不用
+        '3': ['2', '4', '6'],
+        '4': ['2', '3'],
+        '5': ['7'],
+        '6': ['9'],
         // '7':['9'],
-        '8':['9'],
-        '9':['9'],
-        '21':['9'],
-        '22':['9'],
-        '10':['9']
+        '8': ['9'],
+        '9': ['9'],
+        '21': ['9'],
+        '22': ['9'],
+        '10': ['9']
       },
       rules: {
         region1: [
@@ -311,10 +361,7 @@ export default {
           { required: true, message: '是否复制当前模块', trigger: 'change' }
         ],
         region12: [
-          { required: true, message: '是否为症状', trigger: 'change' }
-        ],
-        region14: [
-          { required: true, message: '是否当查体推送项', trigger: 'change' }
+          { required: true, message: '请选择', trigger: 'change' }
         ],
       },
       tmpSex: '通用',
@@ -324,8 +371,10 @@ export default {
       labelTypes: [],
       labelTypesList: [],
       tagTypes: [],        //标签池数据
-      type:'',
-      systom:null,      //标签系统名称存在与否
+      type: '',
+      systom: null,      //标签系统名称存在与否
+      systemNameShow: false,//系统名称列表显示
+      systemNameLis: [],//系统名称列表
     }
   },
   computed: {
@@ -338,13 +387,16 @@ export default {
     newSign() {
       return this.form.region2;
     },
+    newName() {
+      return this.form.region3;
+    },
   },
   mounted() {
     const editData = this.$props.editData;
-    if(editData.id){
-      const trans = utils.transformKeys(editData,2); //(2是标签组类型)
+    if (editData.id) {
+      const trans = utils.transformKeys(editData, 2); //(2是标签组类型)
       // console.log('editData1', editData)
-      this.form = Object.assign({},this.form,trans);
+      this.form = Object.assign({}, this.form, trans);
     }
     this.$emit('submitForm', 'groups', false);
     this.getDropList();
@@ -366,8 +418,62 @@ export default {
         this.searchTagList()
       }
     },
+    newName(nextVal, prevVal) {
+      if (nextVal != prevVal && (this.form.region12 == 0)) {
+        this.focusSystemName()
+      }
+    },
   },
   methods: {
+    sendData() {
+      this.$emit('changeVal', this.form, false)
+    },
+    closeNameLis(flg) {
+      if (flg == 1) {
+        this.systemNameShow = false
+      } else if (flg == 2) {
+        if (this.systemNameLis.length > 0) {
+          this.systemNameShow = true
+        } else {
+          this.systemNameShow = false
+        }
+      }
+    },
+    focusSystemName() {
+      if (this.form.region3.trim() == '') {
+        this.systemNameShow = false
+        this.systemNameLis = []
+        return
+      }
+      if (this.form.region12 == 0) {
+        let tmpArr = [];
+        if (this.form.region1 == 1 && this.form.region2 == 4) {//症状
+          tmpArr = [1]
+        } else if (this.form.region1 == 4) {//查体
+          tmpArr = [33]
+        } else if (this.form.region1 == 5) {//化验
+          tmpArr = [12]
+        }
+        let params = {
+          "libType": tmpArr,
+          "name": this.form.region3
+        }
+        api.indexByLexicon(params).then((res) => {
+          if (res.data.code === '0') {
+            this.systemNameLis = res.data.data
+            if (res.data.data.length > 0) {
+              this.systemNameShow = true
+            } else {
+              this.systemNameShow = false
+            }
+          }
+        })
+      }
+    },
+    pushSystemName(val) {
+      this.form.region3 = val
+      this.systemNameShow = false
+    },
     getDropList() {
       return api.getDropList().then((res) => {
         if (res.data.code === '0') {
@@ -383,48 +489,45 @@ export default {
     },
     searchTagList() {
       const editData = this.$props.editData;
-      if(editData.id){
+      if (editData.id) {
         return;
       }
       let region1 = this.form.region1, region2 = this.form.region2;
-      let paramFst = !!region2 ? api.getGroupParams(region2): {};
+      let paramFst = !!region2 ? api.getGroupParams(region2) : {};
       let paramSec = {
         "type": region1,
         "sexType": this.form.region7,
-        "tagName":'',
+        "tagName": '',
         "notIds": [],
       }
       // console.log(paramFst,paramSec,7787)
-      let params = Object.assign({},paramFst,paramSec)
+      let params = Object.assign({}, paramFst, paramSec)
       api.searchTagList(params).then((res) => {
         if (res.data.code === '0') {
           this.form.tagPool = res.data.data
         }
       })
     },
-    validateSystomName(name,callback,flg) {
-      if(flg == 1){
+    validateSystomName(name, callback, flg) {
+      if (flg == 1) {
         let tmpVal = this.form.region4
-        if(tmpVal.trim() == ''){
+        if (tmpVal.trim() == '') {
           callback(new Error('标签界面名称不能为空'));
-        }else{
+        } else {
           this.form.region4 = tmpVal.trim()
           callback();
         }
-      }else if(flg == 2){
+      } else if (flg == 2) {
         let tmpVal = this.form.region3
-        if(tmpVal.trim() == ''){
+        if (tmpVal.trim() == '') {
           callback(new Error('标签系统名称不能为空'));
-        }else{
+        } else {
           this.form.region3 = tmpVal.trim()
           callback();
         }
       }
     },
-    sendData() {
-      this.$emit('changeVal', this.form, false)
-    },
-    changeType(type){
+    changeType(type) {
       this.$emit('changeVal', this.form, false)
       this.$emit('changeType', type, false)
     },
@@ -432,12 +535,12 @@ export default {
       this.$emit('changeVal', this.form, false)
       this.$emit('changeSex', data, false)
     },
-    readyChangeSelect(tmpData,type) {
-      if(type === 1) {
+    readyChangeSelect(tmpData, type) {
+      if (type === 1) {
         this.form.region2 = '';
         this.labelTypes = this.labelTypesList.filter(item => this.labelTypesMaps[tmpData].indexOf(item.val) > -1)
       }
-      if(type === 2) {
+      if (type === 2) {
         this.initForm()
       }
       this.changeSex(tmpData);
@@ -499,6 +602,7 @@ export default {
     initForm() {
       this.form.region12 = '1'
       this.form.region14 = '1'
+      this.form.region15 = '1'
       this.form.region10 = '1'
       this.form.region11 = '0'
     }
@@ -509,77 +613,93 @@ export default {
 .PubTagGroupWrapper {
   margin-top: 60px;
   .groups {
-  background-color: #fff;
-  padding: 20px;
-  margin: 20px 20px -20px 20px;
-  .el-form-item__content,
-  .el-input__inner {
-    height: 30px;
-    line-height: 30px;
-    width: 200px;
-  }
-  .el-form-item {
-    margin-bottom: 20px;
-  }
-  .el-form-item__error {
-    top: 28px;
-  }
-  .el-form-item__label {
-    line-height: 30px;
-    text-align: left;
-  }
-  .el-input__icon {
-    line-height: 30px;
-  }
-  .verticalMiddle .el-form-item__content {
-    position: relative;
-    top: 16px;
-  }
-  .maxAges {
-    margin-left: -125px;
-  }
-  .ages {
-    display: inline-block;
-    .el-form-item__content {
-      width: auto;
+    background-color: #fff;
+    padding: 20px;
+    margin: 20px 20px -20px 20px;
+    .el-form-item__content,
+    .el-input__inner {
+      height: 30px;
+      line-height: 30px;
+      width: 200px;
+    }
+    .el-form-item {
+      margin-bottom: 20px;
+    }
+    .el-form-item__error {
+      top: 28px;
+    }
+    .el-form-item__label {
+      line-height: 30px;
+      text-align: left;
+    }
+    .el-input__icon {
+      line-height: 30px;
     }
-    .el-input {
+    .verticalMiddle .el-form-item__content {
+      position: relative;
+      top: 16px;
+    }
+    .maxAges {
+      margin-left: -125px;
+    }
+    .ages {
       display: inline-block;
-      width: auto;
-      .el-input__inner {
-        width: 60px;
-        padding: 0 5px;
-        margin-right: 25px;
-        text-align: center;
+      .el-form-item__content {
+        width: auto;
       }
+      .el-input {
+        display: inline-block;
+        width: auto;
+        .el-input__inner {
+          width: 60px;
+          padding: 0 5px;
+          margin-right: 25px;
+          text-align: center;
+        }
 
-      .el-input__inner::-webkit-outer-spin-button,
-      .el-input__inner::-webkit-inner-spin-button {
-        -webkit-appearance: none;
-      }
+        .el-input__inner::-webkit-outer-spin-button,
+        .el-input__inner::-webkit-inner-spin-button {
+          -webkit-appearance: none;
+        }
 
-      .el-input__inner[type="number"] {
-        -moz-appearance: textfield;
+        .el-input__inner[type="number"] {
+          -moz-appearance: textfield;
+        }
       }
     }
+    .el-message-box__btns .el-button--default {
+      color: #606266 !important;
+    }
+    .cancelColor {
+      color: #22ccc8 !important;
+    }
+    .changeTips {
+      position: absolute;
+      left: 220px;
+      // min-width: 300px;
+      color: #22ccc8;
+      font-size: 12px;
+    }
+    .changeTipsName {
+      line-height: 15px;
+    }
   }
-  .el-message-box__btns .el-button--default {
-    color: #606266 !important;
-  }
-  .cancelColor {
-    color: #22ccc8 !important;
-  }
-  .changeTips {
+  .systemNames {
+    background-color: #fff;
     position: absolute;
-    left: 220px;
-    // min-width: 300px;
-    color: #22ccc8;
-    font-size: 12px;
-  }
-  .changeTipsName {
-    line-height: 15px;
+    z-index: 999;
+    width: 100%;
+    border: 1px solid #c0c4cc;
+    box-sizing: border-box;
+    max-height: 185px;
+    overflow: auto;
+    li {
+      padding: 0 15px;
+    }
+    li:hover {
+      background-color: #f5f7fa;
+    }
   }
 }
-}
 </style>