Browse Source

术语维护修改和模板bug修改

Luolei 6 years ago
parent
commit
f420ff0907

+ 2 - 2
src/api/icss.js

@@ -278,8 +278,8 @@ export default {
     scaleContentStructure(param) {
         return axios.post(urls.scaleContentStructure, param)
     },
-    getAllDeptAndDisInfo() { //模板维护-获取科室和疾病所有信息
-        return axios.post(urls.getAllDeptAndDisInfo)
+    getAllDeptAndDisInfo(param) { //模板维护-获取科室和疾病所有信息
+        return axios.post(urls.getAllDeptAndDisInfo,param)
     },
     queryEvaluationModulePages(param) { 
         return axios.post(urls.queryEvaluationModulePages,param)

+ 184 - 50
src/components/icss/AddMedicalName.vue

@@ -5,7 +5,7 @@
       <div class="content">
         <h3>添加术语:</h3>
         <p class="titl">医学标准术语:</p>
-        <table class="deptbox">
+        <table class="deptbox" v-if="id == ''">
           <tr>
             <td class="ind">序号</td>
             <td>标准词<span class="necess">*</span></td>
@@ -39,8 +39,59 @@
             </td>
           </tr>
         </table>
-        <p class="titl">同义词:</p>
-        <table class="deptbox">
+        <div class="deptboxChange" v-else>
+          <table class="deptbox deptboxTable">
+            <tr>
+              <td class="ind">序号</td>
+              <td>术语</td>
+              <td>类型</td>
+              <td class="desc">说明</td>
+              <td class="descs">术语性质</td>
+              <td v-if="id">操作</td>
+            </tr>
+            <tr v-for="(item,index) in allwords">
+              <td class="ind">{{index+1}}</td>
+              <td :title="item.name&&item.name.length>9?item.name:''">
+                <!-- 使用原生input,输入限制 -->
+                <!-- <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small" @input.native="handleInput(2,index)"></el-input> -->
+                <!-- <input type="text" v-model="item.name" placeholder="请输入术语" maxlength="30" @input="handleInput(2,index)"> -->
+                <input type="text" v-model="item.name" placeholder="请输入术语" maxlength="30" @blur="handleBlur(2,index,99)">
+              </td>
+              <td>
+                {{data.type}}
+              </td>
+              <td class="desc">
+                <!-- <el-input v-model="item.remark" placeholder="请输入术语说明" maxlength="120" size="small" @input="handleRemark(index,item.name)"></el-input> -->
+                <input v-model="item.remark" placeholder="请输入术语说明" maxlength="120"></input>
+              </td>
+              <td class="desc">
+                <!-- <el-input v-model="item.remark" placeholder="请输入术语说明" maxlength="120" size="small" @input="handleRemark(index,item.name)"></el-input> -->
+                {{item.isConcept == 1?"标准词":"同义词"}}
+              </td>
+              <td v-if="id">
+                <span class="displayColor" v-if="item.isConcept == 1">删除</span>
+                <span @click="deleLine(index,55)" class="delete" v-else>删除</span>
+              </td>
+            </tr>
+            <tr @click="addSpan(55)">
+              <td colspan="6" class="addSpan">+</td>
+            </tr>
+          </table>
+          <div class="actionDo">
+            <div class="btnWrap">
+              <el-button type="primary" size="mini" v-if="show" @click="comfirn(14)">确认修改</el-button>
+              <el-button plain size="mini" v-if="show" @click="toggleShow(1)">放弃修改</el-button>
+              <el-button plain size="mini" @click="toggleShow(2)" v-if="!show">修改标准词</el-button>
+            </div>
+            <div class="radioWrap" v-if="show">
+              <el-radio-group v-model="radioVal" size="mini">
+                <el-radio v-for="(item,index) in allwords" :label="index" :disabled="index == 0">选为标准词</el-radio>
+              </el-radio-group>
+            </div>
+          </div>
+        </div>
+        <p class="titl" v-if="id == ''">同义词:</p>
+        <table class="deptbox" v-if="id == ''">
           <tr>
             <td class="ind">序号</td>
             <td>术语</td>
@@ -57,14 +108,6 @@
               <input type="text" v-model="item.name" placeholder="请输入术语" maxlength="30" @blur="handleBlur(2,index)">
             </td>
             <td>
-              <!-- <el-select v-model="item.type" clearable placeholder="请选择">
-                <el-option
-                  v-for="item in data.typeList"
-                  :key="item.key"
-                  :label="item.name"
-                  :value="item.key">
-                </el-option>
-              </el-select> -->
               {{data.type}}
             </td>
             <td class="desc">
@@ -102,48 +145,65 @@ import api from '@api/icss.js';
           remark:'',
           isConcept:1
         },
+        radioVal:'',
         typeList:[],
-        id:null,
-        synonymous:[//同义词
-            {
-              name:'',
-              remark:'',
-              isConcept:0
-            },
-            {
-              name:'',
-              remark:'',
-              isConcept:0
-            },
-            {
-              name:'',
-              remark:'',
-              isConcept:0
-            },
-          ],
+        id:'',
+        synonymous:[],//同义词
+        singleword:[],
+        allwords:[],//标准词和同义词
         colspan:4,
+        colspans:5,
         currentPage:1,
-        pageSize:10
+        pageSize:10,
+        show:false
       }
     },
     created(){
       this.getTypeList();
-      const id = this.$route.params.id;
+      const id = this.$route.params.id || '';
       if(id){
         this.minTitle = '医学术语命名维护-修改';
         this.id = id;
         this.colspan = 5;
-        this.getDetail();
+        this.getDetail(id);
+      }
+    },
+    watch:{
+      radioVal(newVal,preVal){
+        if(newVal && newVal != preVal){
+          this.changeState(newVal);
+        }
       }
     },
     methods:{
-      getDetail(){
-        if(this.id){
-          api.getMedicalDetail({'conceptId':this.id}).then((res)=>{
+      changeState(val){
+        let tmpAllwords = this.synonymous.slice(0);
+        for(let i = 0;i < tmpAllwords.length;i++){
+          if(i+1 == val){
+            tmpAllwords[i].isConcept = 1
+            tmpAllwords[i].type = this.data.type
+          }else{
+            tmpAllwords[i].isConcept = 0
+          }
+        }
+      },
+      toggleShow(num){
+        let tmpShow = this.show
+        this.show = !tmpShow
+        if(num == 1){
+          this.changeState(-1)
+          this.radioVal = ''
+        }
+      },
+      getDetail(ids){
+        if(ids){
+          api.getMedicalDetail({'conceptId':ids}).then((res)=>{
             const result = res.data;
             if(result.code == 0){
               this.data = result.data.libName[0];
+              this.singleword = result.data.libName;
               this.synonymous = result.data.otherNames;
+              this.allwords = (result.data.libName).concat(result.data.otherNames);
             }else{
               this.$message({
                 message:result.msg,
@@ -179,7 +239,7 @@ import api from '@api/icss.js';
           this.synonymous[index].name = this.synonymous[index].name.replace(/[^%0-9a-zA-Z\u4e00-\u9fa5]/g,'');
         }
       },*/
-      handleBlur(type,index){
+      handleBlur(type,index,flg){
         // 不能为纯数字、纯字符、纯数字加字符 4-18
         const pattern = /[^~@#$%^&*_\-+=,,.。::"“??”;;、!!0-9]/g;
         if(type==1){//标准词输入
@@ -191,12 +251,22 @@ import api from '@api/icss.js';
             this.data.name = '';
           }
         }else{
-          if(!pattern.test(this.synonymous[index].name)){
-            this.$message({
-              message:'无法输入纯数字或者纯字符,请输入正确数据!',
-              type:'warning'
-            });
-            this.synonymous[index].name = '';
+          if(flg == 99){
+            if(!pattern.test(this.synonymous[index-1].name)){
+              this.$message({
+                message:'无法输入纯数字或者纯字符,请输入正确数据!',
+                type:'warning'
+              });
+              this.synonymous[index-1].name = '';
+            }
+          }else{
+            if(!pattern.test(this.synonymous[index].name)){
+              this.$message({
+                message:'无法输入纯数字或者纯字符,请输入正确数据!',
+                type:'warning'
+              });
+              this.synonymous[index].name = '';
+            }
           }
         }
       },
@@ -228,13 +298,18 @@ import api from '@api/icss.js';
           }
         }
       },
-      addSpan(){
+      addSpan(type){
         let singleSpan = {
           name:'',
           remark:'',
           isConcept:0
         }
-        this.synonymous.push(singleSpan);
+        if(type == 55){
+          this.allwords.push(singleSpan);
+          this.synonymous.push(singleSpan);
+        }else{
+          this.synonymous.push(singleSpan);
+        }
       },
       warning(msg,type){
         this.$message({
@@ -251,11 +326,16 @@ import api from '@api/icss.js';
           resolve();
         }).catch(() => {});
       },
-      deleLine(index){
+      deleLine(index,type){
         // 只在界面删除数据,待点确认 后参才真正删除
-        this.synonymous.splice(index,1);
+        if(type == 55){
+          this.synonymous.splice(index-1,1);
+          this.allwords.splice(index,1);
+        }else{
+          this.synonymous.splice(index,1);
+        }
       },
-      comfirn(){  
+      comfirn(flg){  
         if(!this.data.name){
           this.warning('请输入标准词');
           return
@@ -268,6 +348,19 @@ import api from '@api/icss.js';
         let realData = this.synonymous.filter((item)=>{
           return item.name;
         })
+        if(this.id){
+          let tmpArr = []
+          for(let k = 0;k < realData.length;k++){
+            if(realData[k].isConcept == 1){
+              let tmpdata = JSON.parse(JSON.stringify(this.data))
+              tmpArr.push(realData[k])
+              realData.splice(k,1)
+              tmpdata.isConcept = 0
+              realData.push(tmpdata)
+              this.data = tmpArr[0]
+            }
+          }
+        }
         let detailList = [];
         detailList[0] = this.data;
         for(let i=0; i<realData.length; i++){
@@ -277,13 +370,20 @@ import api from '@api/icss.js';
         const params = {
           'name':this.data.name,
           'type':this.data.type,
-          'detailList':detailList
+          'detailList':detailList,
+          'conceptId':this.id
         }
         api.addMedicalName(params).then((res)=>{
           const result = res.data;
           if(result.code==0){
             this.warning(res.data.msg||'操作成功','success');
-            this.$router.push({name:'MedicalName'});
+            if(flg == 14){
+              this.getDetail(this.id)
+              this.radioVal = ''
+              this.show = false
+            }else{
+              this.$router.push({name:'MedicalName'});
+            }
           }else{
             this.warning(res.data.msg);
           }
@@ -294,6 +394,20 @@ import api from '@api/icss.js';
 </script>
 <style lang="less" scoped>
    @import "../../less/admin.less";
+   /deep/ .radioWrap .el-radio {
+     display: block;
+     height: 41px;
+     line-height: 41px;
+     text-align: right;
+     margin-left: 0;
+   }
+   .displayColor {
+     color: #ccc;
+     cursor:not-allowed;
+   }
+   .delete {
+     cursor: pointer;
+   }
   .content{
     background: #fff;
     padding: 20px 20px 30px;
@@ -320,9 +434,10 @@ import api from '@api/icss.js';
       input{
         border:none;
         border: 1px solid #ccc;
-        width: 89%;
+        width: 100%;
         height: 30px;
         padding: 0 7px;
+        box-sizing: border-box;
         border-radius: 4px;
       }
       .ind{
@@ -331,12 +446,31 @@ import api from '@api/icss.js';
       .desc{
         width: 280px;
       }
+      .descs{
+        width: 50px;
+      }
     }
     .addSpan{
       text-align: center;
       cursor: pointer;
     } 
   }
+  .deptboxTable {
+    width: 100%;
+  }
+  .deptboxChange {
+    padding-right: 210px;
+    position: relative;
+  }
+  .actionDo {
+    width: 200px;
+    position: absolute;
+    top: 1px;
+    right: 0;
+    .btnWrap {
+      height: 30px;
+    }
+  }
   .btn {
     text-align: right;
     margin-top: 20px;

+ 3 - 3
src/components/icss/ChronicDiseaseAdd.vue

@@ -101,7 +101,7 @@ export default {
       selectId:'',
       AdscriptionsType: [],
       editData: {},
-      minTitle:'量表维护-添加量表',
+      minTitle:'量表维护-添加量表结构',
       showLis:false,
       parts:[],
       selectLeftPart:{},//左侧选中
@@ -117,7 +117,7 @@ export default {
     let tmpEditData = this.$route.params
     if (tmpEditData.isEdit) {      //修改
       this.editData = tmpEditData
-      this.minTitle='量表维护-修改量表'
+      this.minTitle='量表维护-修改量表结构'
       this.selectName = tmpEditData.data.name
       this.selectId = tmpEditData.data.id
       let tmpScale = tmpEditData.data.scale
@@ -268,7 +268,7 @@ export default {
         });
         return
       }
-      this.showConfirmDialog('是否保存该标签组?', () => {
+      this.showConfirmDialog('是否保存该量表结构?', () => {
         api.insertOrUpdate(param).then((res) => {
           if (res.data.code === '0') {
             this.warning(res.data.msg || '保存成功', 'success');

+ 2 - 2
src/components/icss/CommonTemplate.vue

@@ -278,7 +278,7 @@ export default {
     rela:{
       handler(newVal, preVal){
         if(newVal && newVal != preVal && this.copyed){ //复制情况下,改变归属不清空
-          let lis =  this.rightTagsList.splice(0);
+          let lis =  this.rightTagsList.slice(0);
           for(let i = 0;i < lis.length;i++){
             let tmpLi = lis[i];
             if(tmpLi.flag == 3){//去掉子模板
@@ -532,7 +532,7 @@ export default {
         "tagName": this.searchVal,
         "type": this.getTextType(this.type),
         "notIds": notIds,
-        "notTagType": this.type == 3?[3,8,10]:[3,4,8,10]
+        "notTagType": this.type == 3?[3,8,10]:this.type==4?[4,8,10]:[3,4,8,10]//查体没有症状尾巴有血压,其他史有症状尾巴无血压
       }
       api.searchTagList(param).then((res) => {
         if (res.data.code === '0') {

+ 33 - 5
src/components/icss/MedicalName.vue

@@ -1,6 +1,6 @@
 <template>
     <div>
-        <crumbs title="医学术语命名维护">
+        <crumbs title="医学术语命名维护" minWidth="995px">
             <el-form :inline="true" class="demo-form-inline">
                 <el-form-item label="医学标准术语:">
                     <el-input size="mini" v-model="filter.term" placeholder="输入术语"></el-input>
@@ -19,6 +19,16 @@
                     </el-option>
                   </el-select>
                 </el-form-item>
+              <el-form-item label="状态:">
+                <el-select v-model="isState" clearable placeholder="请选择" size="mini">
+                  <el-option
+                    v-for="item in stateSelect"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id">
+                  </el-option>
+                </el-select>
+              </el-form-item>
                 <el-form-item>
                     <el-button size="mini" @click="filterDatas">确认</el-button>
                     <el-button size="mini" @click="uploadClick">导入</el-button>
@@ -58,6 +68,14 @@
                         label="同义词"
                         show-overflow-tooltip>
                 </el-table-column>
+                <el-table-column
+                        label="状态">
+                        <template slot-scope="scope">
+                          <span :class="scope.row.isDeleted == 'N'?'':'delete'">
+                            {{scope.row.isDeleted == 'N'?'启用中':'已删除'}}
+                          </span>
+                        </template>
+                </el-table-column>
                 <el-table-column
                         prop="operName"
                         label="操作人">
@@ -66,9 +84,9 @@
                 <el-table-column
                         label="操作" width="160">
                     <template slot-scope="scope">
-                        <el-button type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
+                        <el-button type="text" size="small" :disabled="scope.row.isDeleted != 'N'" @click="toEditProduct(scope.row)">修改</el-button>
                         <span style="margin:0 3px;">|</span>
-                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row)">删除</el-button>
+                        <el-button type="text" size="small" :class="scope.row.isDeleted == 'N'?'delete':'review'" @click="showDelDialog(scope.row)">{{scope.row.isDeleted == 'N'?'删除':'恢复'}}</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -92,6 +110,11 @@
     data: function () {
       return {
         list: [],
+        stateSelect:[
+          {id:'N',name:'启用中'},
+          {id:'Y',name:'已删除'},
+        ],
+        isState:'',
         cacheData: {},
         currentPage: 1,
         pageSize: 10,
@@ -152,7 +175,8 @@
           name: this.filter.term,
           current: this.currentPage,
           size: this.pageSize,
-          type:this.filter.type
+          type:this.filter.type,
+          isDeleted:this.isState
         };
         return param;
       },
@@ -189,7 +213,8 @@
           id:item.id
         }*/
         const param = {
-          conceptId:item.conceptId
+          conceptId:item.conceptId,
+          isDeleted:item.isDeleted === 'N'?'Y':'N'
         }
         
         this.showConfirmDialog('删除该标准术语,需要将所关联的医学属性、术语关系、医学静态知识等信息全部解除关联才可正常删除该信息,是否删除?',()=>{
@@ -248,6 +273,9 @@
     .delete{
         color: red;
     }
+    .review{
+      color: #22ccc8;
+    }
     .el-table .cell{
       overflow: hidden;
       white-space: nowrap;

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

@@ -208,7 +208,7 @@
           size: this.pageSize,
           startName: this.startName,
           endName: this.endName,
-          "isDeleted":this.isState
+          isDeleted:this.isState
         };
         return param;
       },

+ 13 - 0
src/components/icss/PubTemplateGroup.vue

@@ -210,7 +210,20 @@ export default {
       this.form.isCopy = true
       this.$emit('staticOwn', this.form.region4, false)
       this.$emit('changeVal', this.form, false)
+      this.getSubTemplate()
     },
+    getSubTemplate() {
+        let param = {
+          type:this.form.region1,
+          moduleType:this.form.region3
+        }
+        api.getAllDeptAndDisInfo(param).then((res) => {
+          if (res.data.code === '0') {//获取科室和疾病所有信息
+            let result = res.data.data
+            this.deptDis = result
+          }
+        })
+      },
     getTypes(type){
       let param = {
           "moduleType": this.form.region3,

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

@@ -148,7 +148,7 @@
     },
     methods: {
       getSubTemplate() {
-        api.getAllDeptAndDisInfo().then((res) => {
+        api.getAllDeptAndDisInfo({}).then((res) => {
           if (res.data.code === '0') {//获取科室和疾病所有信息
             let result = res.data.data
             this.deptAndDisInfo = result