浏览代码

化验大小项与公表项对应关系维护

zhangxc 6 年之前
父节点
当前提交
7291a187cd

+ 3 - 0
src/api/config.js

@@ -174,8 +174,11 @@ export default {
     'delLisMappingById': '/api/icssman/lisMapping/delLisMappingById',  //医学数据-化验大小项与公表项维护-单个删除
     'delLisMappingByIds': '/api/icssman/lisMapping/delLisMappingByIds', //医学数据-化验大小项与公表项维护-批量删除
     'modifyLisMapping': '/api/icssman/lisMapping/modifyLisMapping',  //医学数据-化验大小项与公表项维护-修改
+    'hasLisMapping': '/api/icssman/lisMapping/hasLisMapping',  //医学数据-化验大小项与公表项维护-化验公表项映射是否已存在
     'getTypeList': 'api/knowledgeman/lexicon/getLexiconList', //术语类型-列表
     'addType': 'api/knowledgeman/lexicon/addLexicon', //术语类型-添加
+    'getAllLisConcept':'api/knowledgeman/concept/getAllLisConcept'  //医学数据-化验大小项与公表项维护-获取所有化验公表项
+    
 	},
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 6 - 0
src/api/icss.js

@@ -294,6 +294,9 @@ export default {
     },
     modifyLisMapping(param) {  //医学数据-化验大小项与公表项维护-修改
         return axios.post(urls.modifyLisMapping, param)
+    },
+    hasLisMapping(param) {  //医学数据-化验大小项与公表项维护-化验公表项映射是否已存在
+        return axios.post(urls.hasLisMapping, param)
     },
 	getTypeList(param) {//术语类型-列表
         return axios.post(urls.getTypeList, param)
@@ -301,5 +304,8 @@ export default {
     addType(param) {//术语类型-添加
         return axios.post(urls.addType, param)
     },
+    getAllLisConcept(param) {   //医学数据-化验大小项与公表项维护-获取所有化验公表项
+        return axios.post(urls.getAllLisConcept, param)
+    },
 
 }

+ 158 - 18
src/components/icss/AddChemicalAndCommonMapping.vue

@@ -28,12 +28,12 @@
                     
                 </div>
                 <div class="itemLabel clearfix">
-                    <label  class="itemLabelName">已选择化验大项:</label>
-                    <span>{{form.mealName}}</span>
+                    <label  class="itemLabelName isRequired">已选择化验大项:</label>
+                    <span class="selectItemName">{{form.mealName}}</span>
                 </div>
                 <div class="itemLabel clearfix">
                     <label  class="itemLabelName">选择化验小项:</label>
-                    <input class="searchInput" type="text" v-model = "itemText"> 
+                    <input class="searchInput"  @focus="focuInput" type="text" v-model = "itemText"> 
                     <span class="searchName" @click="searchMealItem(2)">搜索</span>
                     <ul class="itemList itemNameList" ref="itemNameList">
                       <li 
@@ -48,7 +48,7 @@
                 </div>
                 <div class="itemLabel">
                     <label  class="itemLabelName">已选择化验小项:</label>
-                    <span>{{form.itemName}}</span>
+                    <span class="selectItemName">{{form.itemName}}</span>
                 </div>
             </div>
             <div class="midBox">
@@ -57,26 +57,32 @@
             <div class="rightBox">
                 <div class="itemLabel">
                     <label  class="itemLabelName">选择公表项:</label>
-                    <input class="searchInput" type="text" v-model = "uniqueText"> 
-                    <span class="searchName" @click="searchMealItem">搜索</span>
+                    <input class="searchInput"  @focus="focuInput" type="text" v-model = "uniqueText"> 
+                    <span class="searchName" @click="searchMealItem(3)">搜索</span>
                     <ul class="itemList uniqueNameList" ref="uniqueNameList">
                       <li 
                         v-for="item in uniqueNameList" 
                         class="mealNameItem ellipsis"
-                        :title="item.tagName"
+                        :title="item.conceptName"
                         @click="selectUniqueName(item)"
-                        :key="item.id">
-                        {{item.tagName}}
+                        :key="item.conceptName">
+                        {{item.conceptName}}
                       </li>
                     </ul>
                 </div>
                 <div class="itemLabel">
-                    <label  class="itemLabelName">已选择公表项:</label>
-                    <span>{{form.uniqueName}}</span>
+                    <label  class="itemLabelName isRequired">已选择公表项:</label>
+                    <span class="selectItemName">{{form.uniqueName}}</span>
                 </div>
             </div>
         </div>
-       <div class="sumbitBox"><span class="sumbit">建立关联</span></div> 
+       <div class="sumbitBox">
+           <!-- <span class="sumbit" @click="submitForm">建立关联</span> -->
+           <el-button
+                type="primary"
+                @click="submitForm"
+            >建立关联</el-button>
+        </div> 
     </div>
     
 </template>
@@ -90,6 +96,7 @@ export default {
             mealText: '', //化验大项搜索文字内容
             itemText: '',   //化验小项搜索文字内容
             uniqueText: '',     //公表项搜索文字内容
+            isEdit: false,
             mealNameList:[],
             itemNameList: [],
             uniqueNameList:[],
@@ -101,12 +108,27 @@ export default {
             
         }
     },
+    created() {
+        //修改(不需要)
+        // const { isEdit, data } = this.$route.params
+        // if(isEdit) {
+        //     this.isEdit = isEdit;
+        //     this.form.mealName = data.mealName
+        //     this.form.itemName = data.itemName
+        //     this.form.uniqueName = data.uniqueName
+        // }
+    },
     methods: {
         back() {
             this.$router.go(-1)
         },
         searchMealItem(type) {
-            this.getTagList(type)
+            if( type == '1' || type == '2') {
+                this.getTagList(type)
+            } else if ( type == '3') {
+                this.getAllLisConcept()
+            }
+            
         },
         getTagList(type) {
             let param = {}
@@ -130,6 +152,17 @@ export default {
             })
             
         },
+        getAllLisConcept() {
+            const param = {
+                conceptName: this.uniqueText
+            }
+            api.getAllLisConcept(param).then((res) => {
+                if(res.data.code === '0') {
+                    this.$refs['uniqueNameList'].style.display='block'
+                    this.uniqueNameList = res.data.data
+                }
+            })
+        },
         focuInput() {
             this.$refs['mealNameList'].style.display='none'
             this.$refs['itemNameList'].style.display='none'
@@ -148,17 +181,88 @@ export default {
             this.itemNameList = []
         },
         selectUniqueName(item) {
-             this.form.uniqueName = item.tagName
+             this.form.uniqueName = item.conceptName
             this.$refs['uniqueNameList'].style.display='none'
             this.uniqueText = ''
             this.uniqueNameList = []
+        },
+        initForm() {
+            this.form.mealName = ''
+            this.form.itemName = ''
+            this.form.uniqueName = ''
+        },
+        submitForm() {
+        const { mealName, itemName, uniqueName } = this.form
+        if (!mealName || !uniqueName) {
+            this.warning('请填写相关数据')
+            return
         }
+        //通过必填验证,提交保存
+        const param = {
+            "itemName": itemName,
+            "mealName": mealName,
+            "uniqueName": uniqueName
+        }
+        console.log(param);
+        this.showSaveDialog(param);
+      },
+      addLisMapping(param, msg, type) {
+        api.addLisMapping(param).then((res) => {
+            if (res.data.code === '0') {
+            this.warning(res.data.msg || msg, type);
+            // this.$router.push({name: 'ChemicalAndCommonMapping'});
+            this.initForm();
+            } else {
+                this.warning(res.data.msg)
+            }
+        })
+      },
+      showSaveDialog(param) {
+        //  修改(不需要)
+        //   if(this.isEdit) {
+        //       this.addLisMapping(param)
+        //   } else {
+            api.hasLisMapping(param).then((res) => {
+                if (!res.data.data) {
+                    this.addLisMapping(param, '关联建立成功', 'success' )
+                } else {
+                    this.showConfirmDialog('该关联已存在是否替换旧的关系信息', () => {
+                        this.addLisMapping(param, '关联建立成功', 'success' )
+                    });
+                }
+            }).catch((err) => {
+                this.warning(err);
+            })
+
+        //   }
+      },
+      showConfirmDialog(msg, resolve) {
+        this.$confirm(msg, '提示', {
+          customClass: 'confirmRealation',
+          confirmButtonText: '是',
+          cancelButtonText: '否',
+          cancelButtonClass: 'cancelButton',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {
+            this.warning('建立失败','error')
+        });
+      },
+      warning(msg, type) {
+        this.$message({
+          showClose: true,
+          message: msg,
+          type: type || 'warning'
+        })
+      },
 
     }
 }
 </script>
 <style lang="less">
 .AddChemicalAndCommonMappingWrapper {
+    min-width: 980px;
     background: #fff;
     .groupTitle {
         width: calc(100% - 50px);
@@ -203,6 +307,10 @@ export default {
     .itemLabelName {
         width: 150px;
     }
+    .isRequired::before {
+        content: '*';
+        color: red;
+    }
     .searchInput, .mealNameItem {
         padding: 0 5px;
     }
@@ -237,10 +345,20 @@ export default {
     .mealNameItem:hover {
         border: 1px solid #22ccc8;
     }
+    .selectItemName {
+        display: inline-block;
+        width: calc(100% - 160px);
+    }
     .sumbitBox {
-        position: relative;
-        width: 100%;
-        height: 80px;
+         position: relative;
+            background-color: #fff;
+            margin: 0px 20px;
+            padding: 20px;
+            .el-button {
+                position: absolute;
+                right: 80px;
+                top: -20px;
+            }
     }
     .sumbit {
         position: absolute;
@@ -250,7 +368,29 @@ export default {
         line-height: 30px;  
         border: 1px solid #000;
         text-align: center;
-        right: 30px;
+        right: 100px;
     }
+    .confirmRealation {
+            .cancelButton{
+                span {
+                    border: 1px solid #000;
+                    color: #000 !important;
+                }
+                
+            }  
+         
+       
+    }
+    .el-message-box__btns .el-button--default {
+        color: #000;
+    }
+}
+.confirmRealation {
+    .cancelButton{
+        border-color: #000;
+        color: #000 !important;
+    }  
+    
+
 }
 </style>

+ 4 - 19
src/components/icss/ChemicalAndCommonMapping.vue

@@ -63,7 +63,8 @@
                     prop="operate"
                     label="操作">
                     <template slot-scope="scope">
-                        <el-button  @click="modifyRelation(scope.row)" type="text" size="small">修改</el-button>
+                        <!-- 没有修改 -->
+                        <!-- <el-button  @click="modifyRelation(scope.row)" type="text" size="small">修改</el-button> -->
                         <el-button @click="showDelDialog(scope.row.id)" class="delete" type="text" size="small">删除</el-button>
                     </template>
                 </el-table-column>
@@ -135,24 +136,8 @@ export default {
         },
         modifyRelation(row) {
             console.log(row,'row')
-            const param = {
-                mealName:row.mealName,
-                itemName:row.itemName,
-                uniqueName:row.uniqueName
-            }
-            api.modifyLisMapping(param).then((res)=>{
-                const {code,data,msg} = res.data;
-                if(code=='0'){
-                    const item = Object.assign({},row,data);
-                    // console.log('item', item)
-                    this.$router.push({name:'AddChemicalAndCommonMapping',params:{isEdit:true,data:item}});
-                }else{
-                    this.$message({
-                    message: msg,
-                    type: 'warning'
-                    });
-                }
-            });
+            const item = Object.assign({},row);
+            this.$router.push({name:'AddChemicalAndCommonMapping',params:{isEdit:true,data:item}});
         },
         currentChange(next) {
             this.currentPage = next;