فهرست منبع

Merge branch 'depart' into dev

Luolei 6 سال پیش
والد
کامیت
9a61e23ce8

+ 5 - 0
src/api/config.js

@@ -150,6 +150,11 @@ export default {
     'knowledgeName': 'api/knowledgeman/concept/getAllInformation', //医学术语--命名维护
     'knowledgeUpload': 'api/knowledgeman/concept/importTermExcel', //医学术语--命名维护-导入
     'allKnowledgeType': 'api/knowledgeman/type/getAllType', //医学术语--类型列表
+    'deletMedicalName': 'api/knowledgeman/concept/removeConceptInfo', //医学术语--命名维护-删除
+    'getMedicalDetail': 'api/knowledgeman/medical/getMedicalInfo', //医学术语--命名维护-修改获取同义词
+    'knowledgeRelation': 'api/knowledgeman/relation/getAllRelation', //医学术语--关系维护
+    'delKnowledgeRelation': 'api/knowledgeman/relation/removeRelation', //医学术语--关系维护-删除
+    'getAllConcept': 'api/knowledgeman/concept/getAllConcept', //查询所有术语名称
 	},
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 15 - 0
src/api/icss.js

@@ -226,4 +226,19 @@ export default {
     knowledgeUpload(param) {//命名维护--导入
         return axios.post(urls.knowledgeUpload, param)
     },
+    deletMedicalName(param) {//命名维护--删除
+        return axios.post(urls.deletMedicalName, param)
+    },
+    getMedicalDetail(param) {//命名维护--修改
+        return axios.post(urls.getMedicalDetail, param)
+    },
+    knowledgeRelation(param) {//关系维护
+        return axios.post(urls.knowledgeRelation, param)
+    },
+    delKnowledgeRelation(param) {//关系维护-删除
+        return axios.post(urls.delKnowledgeRelation, param)
+    },
+    getAllConcept(param) {//查询所有术语名称
+        return axios.post(urls.getAllConcept, param)
+    },
 }

+ 59 - 16
src/components/icss/AddMedicalName.vue

@@ -14,7 +14,7 @@
           </tr>
           <tr>
             <td class="ind">1</td>
-            <td>
+            <td :title="data.name&&data.name.length>9?data.name:''">
               <el-input v-model="data.name" placeholder="请输入术语" maxlength="30" size="small"></el-input>
             </td>
             <td>
@@ -44,8 +44,8 @@
           </tr>
           <tr v-for="(item,index) in synonymous">
             <td class="ind">{{index+1}}</td>
-            <td>
-              <el-input v-model="item.term" placeholder="请输入术语" maxlength="30" size="small"></el-input>
+            <td :title="item.name&&item.name.length>9?item.name:''">
+              <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small"></el-input>
             </td>
             <td>
               <!-- <el-select v-model="item.type" clearable placeholder="请选择">
@@ -59,7 +59,7 @@
               {{data.type}}
             </td>
             <td class="desc">
-              <el-input v-model="item.mark" placeholder="请输入术语说明" maxlength="120" size="small"></el-input>
+              <el-input v-model="item.note" placeholder="请输入术语说明" maxlength="120" size="small"></el-input>
             </td>
             <td v-if="id">
               <span @click="deleLine(index)" class="delete">删除</span>
@@ -96,22 +96,19 @@ import api from '@api/icss.js';
         id:null,
         synonymous:[//同义词
             {
-              term:'',
+              name:'',
               id:1,
-              type:'',
-              mark:''
+              note:''
             },
             {
-              term:'',
+              name:'',
               id:2,
-              type:'',
-              mark:''
+              note:''
             },
             {
-              term:'',
+              name:'',
               id:3,
-              type:'',
-              mark:''
+              note:''
             },
           ],
         colspan:4,
@@ -129,9 +126,24 @@ import api from '@api/icss.js';
         this.data.type = info.type;
         this.data.remark = info.remark;
         this.colspan = 5;
+        this.getDetail();
       }
     },
     methods:{
+      getDetail(){
+        const params = {
+          term:this.data.name,
+          type:this.data.type
+        }
+        api.getMedicalDetail(params).then((res)=>{
+          const result = res.data;console.log(999,result);
+          if(result.code == 0){
+            this.synonymous = result.data.medicalInfo;
+          }else{
+            this.$message.error(result.msg);
+          }
+        })
+      },
       getTypeList(){
         const param = {
           current: this.currentPage,
@@ -164,12 +176,43 @@ import api from '@api/icss.js';
         this.synonymous.push(singleSpan);
         // this.synIndex = index;
       },
+      warning(msg,type){
+        this.$message({
+          showClose: true,
+          message:msg,
+          type:type||'warning'
+        })
+      },
+      showConfirmDialog(msg,resolve){
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
       deleLine(index){
-        this.synonymous.splice(index,1);
-        // console.log(123,index,this.synonymous);
+        const item = this.synonymous[index];
+        const param = {
+          term:item.term,
+          type:item.type,
+          id:item.id
+        }
+        this.showConfirmDialog('是否删除该同义词?',()=>{
+          api.deletMedicalName(param).then((res)=>{
+            if(res.data.code=='0'){
+              this.warning(res.data.msg||'操作成功','success');
+              this.getDetail();
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
       },
       comfirn(){
-
+        console.log("修改数据:",this.synonymous);
       }
     }
   }

+ 104 - 44
src/components/icss/AddMedicalRelation.vue

@@ -2,15 +2,23 @@
   <div>
     <crumbs title="医学术语关系-添加" linkTo="/admin/LT-YXSYKWH-YXSYGXWH"></crumbs>
     <div class="contents">
-      <div class="content">
+      <div class="content" @click="closeSearch">
         <p>明细</p>
         <div class="search">
           <span>起始术语搜索:</span>
-          <el-input size="small" v-model="firstInput" placeholder="输入术语"></el-input>
+          <el-input size="small" v-model="firstInput" placeholder="输入术语" @input="search(1)"></el-input>
+          <ul v-if="showFlag==1">
+            <li>测试</li>
+            <li v-for="it in searchDatas" :key="it.id" @click.stop="chooseFirst(it)" :title="it.name.length>10?it.name:''">{{it.name}}</li>
+          </ul>
         </div>
         <div class="search">
           <span>终点术语搜索:</span>
-          <el-input size="small" v-model="endInput" placeholder="输入术语"></el-input>
+          <el-input size="small" v-model="endInput" placeholder="输入术语" @input="search(2)"></el-input>
+          <ul v-if="showFlag==2">
+            <li>测试2</li>
+            <li v-for="it in searchDatas" :key="it.id" @click.stop="chooseEnd(it)" :title="it.name.length>10?it.name:''">{{it.name}}</li>
+          </ul>
         </div>
         <table class="deptbox">
           <tr>
@@ -22,22 +30,15 @@
           </tr>
           <tr>
             <td>
-              <span>起始术语</span>
+              <span>{{data.start_name}}</span>
             </td>
             <td>
-              <el-select v-model="data.firstType" clearable placeholder="请选择" size="mini">
-                <el-option
-                  v-for="item in data.typeList"
-                  :key="item.key"
-                  :label="item.name"
-                  :value="item.key">
-                </el-option>
-              </el-select>
+              <span>{{data.start_type}}</span>
             </td>
             <td>
               <el-select v-model="data.relation" clearable placeholder="请选择" size="mini">
                 <el-option
-                  v-for="item in data.typeList"
+                  v-for="item in relationList"
                   :key="item.key"
                   :label="item.name"
                   :value="item.key">
@@ -45,17 +46,10 @@
               </el-select>
             </td>
             <td>
-              <span>终点术语</span>
+              <span>{{data.end_name}}</span>
             </td>
             <td>
-              <el-select v-model="data.endType" clearable placeholder="请选择" size="mini">
-                <el-option
-                  v-for="item in data.typeList"
-                  :key="item.key"
-                  :label="item.name"
-                  :value="item.key">
-                </el-option>
-              </el-select>
+              <span>{{data.end_type}}</span>
             </td>
           </tr>
         </table>
@@ -75,35 +69,79 @@
     data(){
       return{
         data:{
-          type:'',
-          typeList:[
-            {
-              name:'类型1',
-              id:1,
-              key:1
-            },
-            {
-              name:'类型2',
-              id:2,
-              key:2
-            },
-            {
-              name:'类型3',
-              id:3,
-              key:3
-            },
-          ]
+          start_name:'',
+          start_type:'',
+          relation:'',
+          end_name:'',
+          end_type:''
         },
+        relationList:[
+          {
+            name:"测试1",
+            key:1
+          },{
+            name:"测试2",
+            key:2
+          },{
+            name:"测试3",
+            key:3
+          }
+        ],
         firstInput:'',
         endInput:'',
-        relation:'',
-        firstType:'',
-        endType:''
+        showFlag:0,
+        searchDatas:[
+          {
+            name:"测试1",
+            id:1,
+            type:'药品'
+          },{
+            name:"测试2",
+            id:2,
+            type:'药品'
+          },{
+            name:"测试3",
+            id:3,
+            type:'药品小类'
+          }
+        ],
       }
     },
     methods:{
       comfirn(){
-
+        console.log(444,this.data);
+      },
+      search(type){
+        let item = type==1?this.firstInput:this.endInput;
+        if(item){
+          this.showFlag = type;
+          /*api.getAllConcept(item).then((res)=>{
+            const result = res.data;
+            if(result.code==0){
+              this.searchDatas = result.data;
+              this.showFlag = type;
+            }else{
+              this.$message({
+                type:'warning',
+                message:result.msg
+              })
+            }
+          })*/
+        }
+      },
+      chooseFirst(item){
+        this.data.start_name = item.name;
+        this.data.start_type = item.type;
+        this.closeSearch();
+      },
+      chooseEnd(item){
+        this.data.end_name = item.name;
+        this.data.end_type = item.type;
+        this.closeSearch();
+      },
+      closeSearch(){
+        this.showFlag = 0;
+        // this.searchDatas = [];
       }
     }
   }
@@ -121,6 +159,28 @@
       .el-input--small{
         margin-top: 8px;
       }
+      position: relative;
+      ul{
+        width: 183px;
+        position: absolute;
+        top: 63px;
+        border:1px solid #ccc;
+        background: #fff;
+        max-height: 291px;
+        overflow-y: auto;
+        li{
+          border:1px solid #fff;
+          padding-left: 7px;
+          height: 27px;
+          line-height: 27px;
+          overflow: hidden;
+          white-space: nowrap;
+          text-overflow: ellipsis;
+        }
+        li:hover{
+          border-color:#22ccc8;
+        }
+      }
     }
   }
   .deptbox{

+ 39 - 10
src/components/icss/AddSimilarName.vue

@@ -161,7 +161,11 @@
               }
             }
           }else{
-            console.log(result.msg);
+            // console.log(result.msg);
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
           }
         })
       },
@@ -184,14 +188,22 @@
         let dataList = [];
         if(this.flag){ //修改
           if(!selfName[0].retrievalSpell){
-            this.$message.error("本体拼音不能为空");
+            // this.$message.error("本体拼音不能为空");
+            this.$message({
+              message:"本体拼音不能为空",
+              type:'warning'
+            });
             return
           }
           dataList = selfName.concat(retrievalNames,retrievalEmpty,retrievalSonNames,sonEmpty);
           this.toast = "修改成功";
         }else{
           if(!selfEmpty[0].retrievalSpell){
-            this.$message.error("本体拼音不能为空");
+            // this.$message.error("本体拼音不能为空");
+            this.$message({
+              message:"本体拼音不能为空",
+              type:'warning'
+            });
             return
           }
           dataList = selfEmpty.concat(retrievalNames,retrievalEmpty,retrievalSonNames,sonEmpty);
@@ -199,9 +211,19 @@
         }
         // 过滤掉空数据
         let filterData = dataList.filter((item)=>{
-          return item.retrievalName;
+          return item.retrievalName||item.retrievalSpell;
         })
-        console.log(111,dataList,filterData);
+        // console.log(111,dataList,filterData);
+        let emptyData = filterData.filter((item)=>{
+          return !item.retrievalName|| !item.retrievalSpell;
+        })
+        if(emptyData&&emptyData.length>0){//判断是否有未填项
+          this.$message({
+            message:'标签名和拼音不能为空',
+            type:'warning'
+          });
+          return
+        }
         const params = {
           'itemList':filterData,
           'questionId':this.id,
@@ -217,25 +239,32 @@
             this.$router.push({path:'LT-YXSJWH-BMWH'});
           }else{
             // console.log(result.msg);
-            this.$message.error("标签和拼音不能为空");
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
           }
         })
       },
       search(){
         const param = {
           'tagName':this.searchStr,
-          'notTagType':[8,10,11]
+          'notTagType':[8,10,11],
+          'notControlType':[99]
         }
         api.searchLable(param).then((res)=>{
           const result = res.data;
-          // console.log(123,result);
           if(result.code==0){
             this.searchDatas = result.data;
             if(result.data.length>0){
               this.showFlag = true;
             }
           }else{
-            console.log(result.msg);
+            // console.log(result.msg);
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
           }
         })
       },
@@ -349,7 +378,7 @@
       border:1px solid #ccc;
       background: #fff;
       max-height: 291px;
-      overflow-y: scroll;
+      overflow-y: auto;
       li{
         border:1px solid #fff;
         padding-left: 7px;

+ 15 - 6
src/components/icss/MedicalName.vue

@@ -6,7 +6,11 @@
                     <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-select v-model="filter.type" 
+                  clearable 
+                  filterable 
+                  placeholder="请选择" 
+                  size="mini">
                     <el-option
                       v-for="item in typeList"
                       :key="item.id"
@@ -60,7 +64,7 @@
                     <template slot-scope="scope">
                         <el-button type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
                         <span style="margin:0 3px;">|</span>
-                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row.questionId)">删除</el-button>
+                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row)">删除</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -182,9 +186,14 @@
           resolve();
         }).catch(() => {});
       },
-      showDelDialog(id){
+      showDelDialog(item){
+        const param = {
+          term:item.term,
+          type:item.type,
+          id:item.id
+        }
         this.showConfirmDialog('删除该标准词,可能造成相关联的医学信息、术语关系、医学静态知识等信息全部删除,是否删除?',()=>{
-          api.delSimilarName({questionId:id}).then((res)=>{
+          api.deletMedicalName(param).then((res)=>{
             if(res.data.code=='0'){
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();
@@ -211,7 +220,7 @@
             'Content-Type': 'multipart/form-data'
           }
         }
-        /*api.knowledgeUpload(formData,header).then((res)=>{
+        api.knowledgeUpload(formData,header).then((res)=>{
           if(res.data.code==0){
             this.$message({
               message: '上传成功',
@@ -225,7 +234,7 @@
         //解决上传相同文件不触发change
         let inp = document.getElementById("upFile");
         inp.value = "";
-        */
+        
       },
     }
   }

+ 37 - 10
src/components/icss/MedicalRelation.vue

@@ -47,8 +47,28 @@
                         :show-overflow-tooltip="true">
                 </el-table-column>
                 <el-table-column
-                        prop="questionName"
-                        label="关系明细"
+                        prop="startName"
+                        label="起始术语"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="startType"
+                        label="起始类型"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="relationName"
+                        label="关系"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="endName"
+                        label="终点术语"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="endType"
+                        label="终点类型"
                         show-overflow-tooltip>
                 </el-table-column>
                 <el-table-column
@@ -57,9 +77,9 @@
                 </el-table-column>
                 
                 <el-table-column
-                        label="操作" width="160">
+                        label="操作">
                     <template slot-scope="scope">
-                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row.questionId)">删除</el-button>
+                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row)">删除</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -108,7 +128,7 @@
             key:3
           },
         ],
-        titleWidth:'1060px' //头部最小宽度
+        titleWidth:'1070px' //头部最小宽度
       }
     },
     created() {
@@ -127,7 +147,7 @@
       },
       getDataList() {
         const param = this.getFilterItems();
-        /*api.similarName(param).then((res) => {
+        api.knowledgeRelation(param).then((res) => {
           if (res.data.code == '0') {
             const data = res.data.data;
             this.list = data.records;
@@ -136,7 +156,7 @@
           }
         }).catch((error) => {
           console.log(error);
-        });*/
+        });
       },
       getDetailList(id) {
         const param = {'id': id,};
@@ -144,7 +164,7 @@
       },
       getFilterItems() {
         const param = {
-          questionName: this.filter.proName,
+          // questionName: this.filter.proName,
           current: this.currentPage,
           size: this.pageSize
         };
@@ -176,9 +196,16 @@
           resolve();
         }).catch(() => {});
       },
-      showDelDialog(id){
+      showDelDialog(item){
+        const params = {
+          start_term:item.startName,
+          start_type:item.startType,
+          end_term:item.endName,
+          end_type:item.endType,
+          relation_name:item.relationName
+        }
         this.showConfirmDialog('是否删除该关系?可能对现有系统造成影响',()=>{
-          api.delSimilarName({questionId:id}).then((res)=>{
+          api.delKnowledgeRelation(params).then((res)=>{
             if(res.data.code=='0'){
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();

+ 3 - 7
src/components/icss/PubTagPartDetail.vue

@@ -37,7 +37,7 @@
           v-if="choose == 'single'"
         >
           <template v-for="item in poolDetailList[0]">
-            <span class="hzx ellipsis" v-for="part in item.questionDetailList" :title="'[ '+item.name+' ]'" :key="part.id">{{part.name}}</span>
+            <!-- <span class="hzx ellipsis" v-for="part in item.questionDetailList" :title="'[ '+item.name+' ]'" :key="part.id">{{part.name}}</span> -->
           </template>
         </div>
         <div
@@ -46,7 +46,7 @@
           @click="selectPart(0)"
           v-else
         >
-          <span class="hzx ellipsis" v-for="item in poolDetailList[0][0].questionDetailList" :title="'[ '+item.name+' ]'" v-show="choose == 'multiple'" :key="item.id">{{item.name}}</span>
+          <!-- <span class="hzx ellipsis" v-for="item in poolDetailList[0][0].questionDetailList" :title="'[ '+item.name+' ]'" v-show="choose == 'multiple'" :key="item.id">{{item.name}}</span> -->
         </div>
         <div class="onlyBottom pubList">
           <ul class="clearfix">
@@ -134,10 +134,6 @@ export default {
         type: Array
     }
   },
-
-  destroyed:function(){
-    this.searchVal = ''
-  },
   data() {
     return {
       poolDetailList: [[{questionDetailList:[]}],[{questionDetailList:[]}],[],[],[],[]],     //默认6个部分
@@ -517,7 +513,7 @@ export default {
             this.currentLis.map((id)=>{
               tmpArr.push(res.data.data[id]);
             })
-            // console.log(tmpArr,'多选既往史')
+            console.log(tmpArr,'多选既往史')
             this.selectArr.map((flg,idx)=>{         //判断右侧有没有选中
               if(flg){    //有选中
                 if(idx == 0 || idx == 1){

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

@@ -229,7 +229,7 @@
             this.$message({
               dangerouslyUseHTMLString: true,
               message:res.data.msg,
-              type:'waring'
+              type:'warning'
             });
           }
         })