浏览代码

Merge branch 'ChronicMag_zxc' into ChronicMag2

Luolei 6 年之前
父节点
当前提交
7c18f78c44

+ 1 - 0
package.json

@@ -9,6 +9,7 @@
   },
   "dependencies": {
     "js-md5": "^0.7.3",
+    "quill-image-extend-module": "^1.1.2",
     "vue": "^2.5.17",
     "vue-quill-editor": "^3.0.6"
   },

+ 36 - 19
src/api/config.js

@@ -136,7 +136,6 @@ export default {
     'getConceptKnowledgeList':'/api/knowledgeman/libraryDetail/getLibraryDetailList', //  术语静态知识列表
     'getConceptKnowledge':'/api/knowledgeman/Knowledge/getConceptKnowledge',//术语静态知识查询
     'getConceptInfo':'/api/knowledgeman/concept/getConceptInfo', //  搜索术语
-    'getAllConcept':'/api/knowledgeman/concept/getAllConcept', //  术语列表
     'versionInfo': 'api/icssman/versionInfo/getVersionInfoAlls', //版本信息
     'addVersInfo': 'api/icssman/versionInfo/saveVersionInfoAlls', //版本信息-添加
     'updateVersInfo': 'api/icssman/versionInfo/updateVersionInfoAlls', //版本信息-修改
@@ -146,28 +145,46 @@ export default {
     'getVersionDetlInfo': 'api/icssman/versionDetail/getDetailById', //版本信息-版本说明列表获取
     'promptServer':'/api/icssman/file/uploadImage',    //静态知识
     /**************医学术语维护****************/
-	  'saveConceptInfo':'/api/knowledgeman/libraryDetail/addLibraryDetail',   //保存术语静态知识
+	'saveConceptInfo':'/api/knowledgeman/libraryDetail/addLibraryDetail',   //保存术语静态知识
     'delConceptInfo':'/api/knowledgeman/libraryDetail/removeLibraryDetail',   //删除术语静态知识
-    // 'knowledgeName': 'api/knowledgeman/medical/getAllMedicalInfo', //医学术语--命名维护
-    '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', //查询所有术语名称
-    'getMedicalInfoList': 'http://192.168.3.101:5050/api/knowledgeman/medical/getMedicalInfoList', //医学术语--属性维护--属性列表
-    'medicalInfoExcelIm': 'http://192.168.3.101:5050/api/knowledgeman/medical/medicalInfoExcelIm', //医学术语--属性维护-术语医学属性excel文件导入
-    'getMedicalInfoDetail': 'http://192.168.3.101:5050/api/knowledgeman/medical/getMedicalInfoDetail', //医学术语--属性维护--属性详情
-    'addMedicalInfo': 'http://192.168.3.101:5050/api/knowledgeman/medical/addMedicalInfo', //医学术语--属性维护--术语医学属性添加或者编辑
-    'removeMedicalInfo': 'http://192.168.3.101:5050/api/knowledgeman/medical/removeMedicalInfo', //医学术语--属性维护--术语医学属性删除
-    'getAllLexiconRelationship':'http://192.168.3.101:5050/api/knowledgeman/lexicon/getAllLexicon', //医学术语--获取所有关系类型
-    'getAllConcept':'http://192.168.3.101:5050/api/knowledgeman/concept/getAllConcept',   //医学术语--获取所有概念(标准术语)
-    'getAllBodypart': 'http://192.168.3.101:5050/api/knowledgeman/bodypart/getAllBodypart',  //医学术语--获取所有部位
+    'knowledgeName': 'api/knowledgeman/concept/getAllInformation', //医学术语-命名维护
+    'knowledgeUpload': 'api/knowledgeman/concept/conceptInfoExcelIm', //医学术语-命名维护-导入
+    'allKnowledgeType': 'api/knowledgeman/lexicon/getAllLexicon', //医学术语-类型列表
+    'deletMedicalName': 'api/knowledgeman/concept/removeConceptInfo', //医学术语-命名维护-删除
+    'getMedicalDetail': 'api/knowledgeman/concept/getConceptInfoDetail', //医学术语-命名维护-详情
+    'addMedicalName': 'api/knowledgeman/concept/addConceptInfo', //医学术语-命名维护-添加修改
+    'knowledgeRelation': 'api/knowledgeman/relation/getRelationInfoList', //医学术语-关系维护
+    'delKnowledgeRelation': 'api/knowledgeman/relation/removeRelationInfo', //医学术语-关系维护-删除
+    'getAllRelationType': 'api/knowledgeman/lexiconRelationship/getAllLexiconRelationship', //医学术语-关系维护-关系下拉
+    'addRelationConcept': 'api/knowledgeman/relation/addRelationInfo', //医学术语-关系维护-添加
+    'RelationUpload': 'api/knowledgeman/relation/relationInfoExcelIm', //医学术语-关系维护-导入
     'scaleContentStructure': 'api/icssman/scaleContent/list',  //量表结构维护 -- 列表
     'getAllDeptAndDisInfo': 'api/icssman/moduleInfo/getAllDeptAndDisInfo',  //模板维护-获取科室和疾病所有信息
     'queryEvaluationModulePages': 'api/icssman/evaluationModuleMapping/queryEvaluationModulePages',  //慢病管理评估维护 -- 列表
+    'getMedicalInfoList': '/api/knowledgeman/medical/getMedicalInfoList', //医学术语--属性维护--属性列表
+    'medicalInfoExcelIm': '/api/knowledgeman/medical/medicalInfoExcelIm', //医学术语--属性维护-术语医学属性excel文件导入
+    'getMedicalInfoDetail': '/api/knowledgeman/medical/getMedicalInfoDetail', //医学术语--属性维护--属性详情
+    'addMedicalInfo': '/api/knowledgeman/medical/addMedicalInfo', //医学术语--属性维护--术语医学属性添加或者编辑
+    'removeMedicalInfo': '/api/knowledgeman/medical/removeMedicalInfo', //医学术语--属性维护--术语医学属性删除
+    'getAllLexiconRelationship':'/api/knowledgeman/lexicon/getAllLexicon', //医学术语--获取所有关系类型
+    'getAllConcept':'/api/knowledgeman/concept/getAllConcept',   //医学术语--获取所有概念(标准术语)
+    'getAllBodypart': '/api/knowledgeman/bodypart/getAllBodypart',  //医学术语--获取所有部位
+    'getAllDepts': '/api/knowledgeman/medical/getAllDepts',  //医学术语--获取所有科室
+    'getLisMappingPage': '/api/icssman/lisMapping/getLisMappingPage', //医学数据-化验大小项与公表项维护-列表
+    'addLisMapping': '/api/icssman/lisMapping/addLisMapping',  //医学数据-化验大小项与公表项维护-新增
+    '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',  //医学数据-化验大小项与公表项维护-获取所有化验公表项
+    'queryIndexConfigPages':'api/icssman/indexConfig/queryIndexConfigPages',  //医学数据-慢病指标值关联维护-列表
+    'getIndexConfigLists':'api/icssman/indexConfig/getIndexConfigLists',  //医学数据-慢病指标值关联维护-获取慢病指标值关联
+    'cancelIndexConfigAlls':'api/icssman/indexConfig/cancelIndexConfigAlls',  //医学数据-慢病指标值关联维护-删除慢病指标值关联
+    'saveIndexConfigLists':'api/icssman/indexConfig/saveIndexConfigLists',  //医学数据-慢病指标值关联维护-添加关联
+    'updateIndexConfigList':'api/icssman/indexConfig/updateIndexConfigList',  //医学数据-慢病指标值关联维护-修改关联
+    
 	},
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 59 - 4
src/api/icss.js

@@ -220,7 +220,7 @@ export default {
     knowledgeName(param) {//命名维护
         return axios.post(urls.knowledgeName, param)
     },
-    allKnowledgeType(param) {//命名维护
+    allKnowledgeType(param) {//命名维护-类型列表
         return axios.post(urls.allKnowledgeType, param)
     },
     knowledgeUpload(param) {//命名维护--导入
@@ -229,17 +229,26 @@ export default {
     deletMedicalName(param) {//命名维护--删除
         return axios.post(urls.deletMedicalName, param)
     },
-    getMedicalDetail(param) {//命名维护--修改
+    getMedicalDetail(param) {//命名维护--获取详情
         return axios.post(urls.getMedicalDetail, param)
     },
+    addMedicalName(param) {//命名维护--新增、修改
+        return axios.post(urls.addMedicalName, 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)
+    getAllRelationType(param) {//关系维护-术语关系
+        return axios.post(urls.getAllRelationType, param)
+    },
+    addRelationConcept(param) {//关系维护-添加
+        return axios.post(urls.addRelationConcept, param)
+    },
+    RelationUpload(param) {//关系维护-导入
+        return axios.post(urls.RelationUpload, param)
     },
     getMedicalInfoList(param) { //医学术语--属性维护--属性列表
         return axios.post(urls.getMedicalInfoList, param)
@@ -265,6 +274,7 @@ export default {
     getAllBodypart(param) {
         return axios.post(urls.getAllBodypart, param)
     },
+
     scaleContentStructure(param) {
         return axios.post(urls.scaleContentStructure, param)
     },
@@ -274,4 +284,49 @@ export default {
     queryEvaluationModulePages(param) { 
         return axios.post(urls.queryEvaluationModulePages,param)
     },
+    getAllDepts(param) {
+        return axios.post(urls.getAllDepts, param)
+    },
+    getLisMappingPage(param) {  //医学数据-化验大小项与公表项维护-列表
+        return axios.post(urls.getLisMappingPage, param)
+    },
+    addLisMapping(param) {  //医学数据-化验大小项与公表项维护-新增
+        return axios.post(urls.addLisMapping, param)
+    },
+    delLisMappingById(param) {  //医学数据-化验大小项与公表项维护-单个删除
+        return axios.post(urls.delLisMappingById, param)
+    },
+    delLisMappingByIds(param) {  //医学数据-化验大小项与公表项维护-批量删除
+        return axios.post(urls.delLisMappingByIds, param)
+    },
+    modifyLisMapping(param) {  //医学数据-化验大小项与公表项维护-修改
+        return axios.post(urls.modifyLisMapping, param)
+    },
+    hasLisMapping(param) {  //医学数据-化验大小项与公表项维护-化验公表项映射是否已存在
+        return axios.post(urls.hasLisMapping, param)
+    },
+	getTypeList(param) {//术语类型-列表
+        return axios.post(urls.getTypeList, param)
+    },
+    addType(param) {//术语类型-添加
+        return axios.post(urls.addType, param)
+    },
+    getAllLisConcept(param) {   //医学数据-化验大小项与公表项维护-获取所有化验公表项
+        return axios.post(urls.getAllLisConcept, param)
+    },
+    queryIndexConfigPages(param) {
+        return axios.post(urls.queryIndexConfigPages, param)    //医学数据-慢病指标值关联维护-列表
+    },
+    getIndexConfigLists(param) {
+        return axios.post(urls.getIndexConfigLists, param)    //医学数据-慢病指标值关联维护-获取慢病指标值关联
+    },
+    cancelIndexConfigAlls(param) {
+        return axios.post(urls.cancelIndexConfigAlls, param)    //医学数据-慢病指标值关联维护-删除慢病指标值关联
+    },
+    saveIndexConfigLists(param) {
+        return axios.post(urls.saveIndexConfigLists, param)    //医学数据-慢病指标值关联维护-添加关联
+    },
+    updateIndexConfigList(param) {
+        return axios.post(urls.updateIndexConfigList, param)    //医学数据-慢病指标值关联维护-修改关联
+    },
 }

+ 396 - 0
src/components/icss/AddChemicalAndCommonMapping.vue

@@ -0,0 +1,396 @@
+<template>
+    <div class="AddChemicalAndCommonMappingWrapper clearfix">
+        <div class="groupTitle"><i
+                class="el-icon-back"
+                @click="back"
+        ></i>化验大小项与公表项对应维护--添加关联</div>
+        <div class="AddChemicalAndCommonMappingBox clearfix">
+            <div class="titleBox clearfix">
+                <h3 class="title">关联公表项</h3>
+                <h3 class="title">关联化验项</h3> 
+            </div>
+            <div class="leftBox clearfix" >
+                
+                <div class="itemLabel clearfix">
+                    <label class="itemLabelName">选择化验大项:</label> 
+                    <input class="searchInput" @focus="focuInput" type="text" v-model = "mealText"> 
+                    <span class="searchName" @click="searchMealItem(1)">搜索</span>
+                    <ul class="itemList mealNameList" ref="mealNameList">
+                      <li 
+                        v-for="item in mealNameList" 
+                        class="mealNameItem ellipsis"
+                        :title="item.tagName"
+                        @click="selectMealName(item)"
+                        :key="item.id">
+                        {{item.tagName}}
+                      </li>
+                    </ul>
+                    
+                </div>
+                <div class="itemLabel clearfix">
+                    <label  class="itemLabelName isRequired">已选择化验大项:</label>
+                    <span class="selectItemName">{{form.mealName}}</span>
+                </div>
+                <div class="itemLabel clearfix">
+                    <label  class="itemLabelName">选择化验小项:</label>
+                    <input class="searchInput"  @focus="focuInput" type="text" v-model = "itemText"> 
+                    <span class="searchName" @click="searchMealItem(2)">搜索</span>
+                    <ul class="itemList itemNameList" ref="itemNameList">
+                      <li 
+                        v-for="item in itemNameList" 
+                        class="mealNameItem ellipsis"
+                        :title="item.tagName"
+                        @click="selectItemName(item)"
+                        :key="item.id">
+                        {{item.tagName}}
+                      </li>
+                    </ul>
+                </div>
+                <div class="itemLabel">
+                    <label  class="itemLabelName">已选择化验小项:</label>
+                    <span class="selectItemName">{{form.itemName}}</span>
+                </div>
+            </div>
+            <div class="midBox">
+                <h3>相互关联</h3>
+            </div>
+            <div class="rightBox">
+                <div class="itemLabel">
+                    <label  class="itemLabelName">选择公表项:</label>
+                    <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.conceptName"
+                        @click="selectUniqueName(item)"
+                        :key="item.conceptName">
+                        {{item.conceptName}}
+                      </li>
+                    </ul>
+                </div>
+                <div class="itemLabel">
+                    <label  class="itemLabelName isRequired">已选择公表项:</label>
+                    <span class="selectItemName">{{form.uniqueName}}</span>
+                </div>
+            </div>
+        </div>
+       <div class="sumbitBox">
+           <!-- <span class="sumbit" @click="submitForm">建立关联</span> -->
+           <el-button
+                type="primary"
+                @click="submitForm"
+            >建立关联</el-button>
+        </div> 
+    </div>
+    
+</template>
+<script>
+import api from '@api/icss.js';
+
+export default {
+    name: 'AddChemicalAndCommonMapping',
+    data() {
+        return {
+            mealText: '', //化验大项搜索文字内容
+            itemText: '',   //化验小项搜索文字内容
+            uniqueText: '',     //公表项搜索文字内容
+            isEdit: false,
+            mealNameList:[],
+            itemNameList: [],
+            uniqueNameList:[],
+            form: {
+                mealName: '', //大项名称
+                itemName: '',   //小项名称
+                uniqueName: '',    //公表名称,必填
+            }
+            
+        }
+    },
+    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) {
+            if( type == '1' || type == '2') {
+                this.getTagList(type)
+            } else if ( type == '3') {
+                this.getAllLisConcept()
+            }
+            
+        },
+        getTagList(type) {
+            let param = {}
+            if (type == 1) {
+                param.tagName = this.mealText
+                param.tagType = [7]
+            } else if (type == 2) {
+                param.tagName = this.itemText
+                param.tagType = [1]
+            }
+            api.searchTagList(param).then((res) => {
+                if (res.data.code === '0') {
+                     if (type == 1) {
+                         this.$refs['mealNameList'].style.display='block'
+                        this.mealNameList = res.data.data
+                    } else if (type == 2) {
+                        this.$refs['itemNameList'].style.display='block'
+                        this.itemNameList = res.data.data
+                    }
+                }
+            })
+            
+        },
+        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'
+            this.$refs['uniqueNameList'].style.display='none'
+        },
+        selectMealName(item) {
+            this.form.mealName = item.tagName
+            this.$refs['mealNameList'].style.display='none'
+            this.mealText = ''
+            this.mealNameList = []
+        },
+        selectItemName(item) {
+             this.form.itemName = item.tagName
+            this.$refs['itemNameList'].style.display='none'
+            this.itemText = ''
+            this.itemNameList = []
+        },
+        selectUniqueName(item) {
+             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);
+        height: 40px;
+        background: #fff;
+        padding: 0 20px 0 30px;
+        margin-bottom: 20px;
+        line-height: 40px;
+        position: relative;
+        z-index: 5;
+            
+    }
+    .titleBox {
+        border-bottom: 1px solid #000;
+        padding:  0 0 10px 0px;
+    }
+    .title {
+        width: 50%;
+        float: left;
+    }
+    .AddChemicalAndCommonMappingBox {
+        padding: 0 30px 20px 30px;
+    }
+    .leftBox , .midBox, .rightBox{
+        width: 40%;
+        float: left;
+        height: 200px;
+    }
+    .midBox {
+        width: 10%;
+        padding:  50px 0 0 0;
+    }
+    .itemLabel {
+        width: 100%;
+        height: 40px;
+        line-height: 40px;
+        position: relative;
+    }
+    .itemLabelName, .searchInput,  .searchName{
+        float: left;
+    }
+    .itemLabelName {
+        width: 150px;
+    }
+    .isRequired::before {
+        content: '*';
+        color: red;
+    }
+    .searchInput, .mealNameItem {
+        padding: 0 5px;
+    }
+    .searchInput, .searchName {
+        display: inline-block;
+        height: 22px;
+        line-height: 22px;
+        border: 1px solid gray;
+        margin: 9px 0 0 0;
+    }
+    
+    .searchName {
+        border-left: none;
+    }
+    .itemList {
+        position: absolute;
+        display: none;
+        background: #fff;
+        width: 162px;
+        height: 80px;
+        border: 1px solid gray;
+        left: 150px;
+        top: 35px;
+        z-index: 2;
+        overflow-y: auto;
+    }
+    .mealNameItem {
+        height: 20px;
+        line-height: 20px;
+        font-size: 14px;
+    }
+    .mealNameItem:hover {
+        border: 1px solid #22ccc8;
+    }
+    .selectItemName {
+        display: inline-block;
+        width: calc(100% - 160px);
+    }
+    .sumbitBox {
+         position: relative;
+            background-color: #fff;
+            margin: 0px 20px;
+            padding: 20px;
+            .el-button {
+                position: absolute;
+                right: 80px;
+                top: -20px;
+            }
+    }
+    .sumbit {
+        position: absolute;
+        display: inline-block;
+        width: 80px;
+        height: 30px;
+        line-height: 30px;  
+        border: 1px solid #000;
+        text-align: center;
+        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>

+ 46 - 20
src/components/icss/AddCommonSymptom.vue

@@ -6,16 +6,26 @@
             @click="back"
         ></i> 常见症状维护系统--{{titleText}}</div>
         <el-form :model="form" ref="ruleForm" :rules="rules" class="addDepartForm">
+            <!-- 一期 -->
+            <el-form-item label="选择科室" prop="department">
+                <el-select :disabled="isEdit || isDetail" v-model="form.department" placeholder="请添加科室" @change="changeDept" class="selectDepart">
+                    <el-option v-for="item in departList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+                </el-select>
+            </el-form-item>
              <el-form-item label="选择类型" prop="type">
                 <el-select :disabled="isEdit || isDetail" v-model="form.type" placeholder="请选择类型"  @change="changeType" class="selectDepart">
-                    <el-option v-for="item in typeList" :key="item.key" :label="item.name" :value="item.key"></el-option>
+                    <!-- 一期 -->
+                    <el-option v-for="item in typeList" :key="item.type" :label="item.typeName" :value="item.type"></el-option>
+                    <!-- 二期 -->
+                    <!-- <el-option v-for="item in typeList" :key="item.key" :label="item.name" :value="item.key"></el-option> -->
                 </el-select>
             </el-form-item>
-            <el-form-item label="选择科室" prop="department">
+            <!-- 二期 -->
+            <!-- <el-form-item label="选择科室" prop="department">
                 <el-select :disabled="isEdit || isDetail || !form.type" v-model="form.department" placeholder="请添加科室" @change="changeDept" class="selectDepart">
                     <el-option v-for="item in departList" :key="item.id" :label="item.name" :value="item.id"></el-option>
                 </el-select>
-            </el-form-item>
+            </el-form-item> -->
         </el-form>
         <div class="symptomList">
             <div class="bottomPartLeft fl" v-if="!isDetail">
@@ -95,7 +105,12 @@
             },
             titleText: '添加科室常见症状',
             departList: [],
-            typeList:[],
+            typeList:[
+                 {
+                    "name": "症状",
+                    "key": 1
+                },
+            ],
             searchVal: '',
             isEdit: false,
             isDetail: false,
@@ -127,7 +142,8 @@
             
         } else {
             this.getDepartmentList()
-            this.getIcssEnumsData()
+            //二期
+            // this.getIcssEnumsData()
         }
     },
     watch: {
@@ -143,19 +159,22 @@
         back(){
             this.$router.go(-1);
         },
-        getIcssEnumsData()  {
-            api.getIcssEnumsData().then((res) => {
-                if(res.data.code === '0') {
-                    console.log(res.data.data.questionTypeEnum)
-                   this.typeList = res.data.data.questionUsualTypeEnum
-                }
-            })
-        },
+        // 二期
+        // getIcssEnumsData()  {
+        //     api.getIcssEnumsData().then((res) => {
+        //         if(res.data.code === '0') {
+        //            this.typeList = res.data.data.questionUsualTypeEnum
+        //         }
+        //     })
+        // },
         getDepartmentList() {
-            const param = {
-                "type": this.form.type
-            }
-            api.getDepartmentList(param).then((res)=>{
+            // 二期
+            // const param = {
+            //     "type": this.form.type
+            // }
+            // api.getDepartmentList(param).then((res)=>{
+            // 一期
+            api.getDepartmentList({}).then((res)=>{
                if(res.data.code === '0') {
                    this.departList = res.data.data
                 }
@@ -180,12 +199,19 @@
             })
         },
         changeDept() {
+            //一期
+            this.form.type = ''
+            this.typeList = this.departList.filter(item => this.form.department == item.id)[0].typeDTOList
+            //二期
+            // this.getSymptomList()
             this.clearData()
-            this.getSymptomList()
         },
         changeType() {
-            this.form.department = ''
-            this.getDepartmentList()
+            // 一期
+            this.getSymptomList()
+            // 二期
+            // this.form.department = ''
+            // this.getDepartmentList()
             this.clearData()
         },
         clearData() {

+ 50 - 4
src/components/icss/AddIndeptLabel.vue

@@ -124,11 +124,11 @@
           this.warning('所有选项必须都有或者都没有同“伴”/“无”标记')
           return;
         }
-        if(parseInt(this.dataPub.region8) >= parseInt(this.dataPub.region9)) {
+        if(parseFloat(this.dataPub.region8) >= parseFloat(this.dataPub.region9)) {
           this.warning('最小年龄不能大于或等于最大年龄')
           return;
         }
-        if(parseInt(this.dataPub.minNormalVal) >= parseInt(this.dataPub.maxNormalVal)) {
+        if(parseFloat(this.dataPub.minNormalVal) >= parseFloat(this.dataPub.maxNormalVal)) {
           this.warning('最小正常值不能大于或等于最大正常值')
           return;
         }
@@ -162,7 +162,7 @@
         this.showSaveDialog(param);
       },
       showSaveDialog(param) {
-        this.showConfirmDialog('是否保存该标签?', () => {
+        /*this.showConfirmDialog('是否保存该标签?', () => {
           api.saveOrUpdate(param).then((res) => {
             if (res.data.code === '0') {
               this.warning(res.data.msg || '保存成功', 'success');
@@ -173,7 +173,49 @@
           }).catch((err) => {
             this.warning(err);
           })
-        });
+        });*/
+        const h = this.$createElement;
+        this.$msgbox({
+          title:'提示',
+          message:h('div',{style:'padding-bottom:10px'},[
+              h('p',{style:'font-size:15px;margin-bottom:10px'},'是否保存该标签?'),
+              h('span',{style:'color:red;font-size:12px'},'标签系统名称已经改变,请去别名维护中修改相关信息'),
+            ]),
+          showCancelButton: true,
+          distinguishCancelAndClose:true,
+          confirmButtonText: '确认并前往别名维护',
+          cancelButtonText:'确认',
+          // type: 'warning',
+          cancelButtonClass:'toast-cancel'
+        }).then(()=>{
+          api.saveOrUpdate(param).then((res) => {
+            if (res.data.code === '0') {
+              this.warning(res.data.msg || '保存成功', 'success');
+              this.$router.push({
+                name:'AddSimilarName',
+                params: {id:param.questionWrapper.id,name:param.questionWrapper.tagName}
+              })
+            } else {
+              this.warning(res.data.msg)
+            }
+          }).catch((err) => {
+            this.warning(err);
+          })
+        }).catch((action)=>{
+          // action :cancel--取消,close--关闭
+          if(action=='cancel'){
+            api.saveOrUpdate(param).then((res) => {
+              if (res.data.code === '0') {
+                this.warning(res.data.msg || '保存成功', 'success');
+                this.$router.push("/admin/LT-YXSJWH-DLLXBQWH");
+              } else {
+                this.warning(res.data.msg)
+              }
+            }).catch((err) => {
+              this.warning(err);
+            })
+          }
+        })
       },
       showConfirmDialog(msg, resolve) {
         this.$alert(msg, '提示', {
@@ -232,5 +274,9 @@
     }
     }
     }
+    .toast-cancel{
+      color: #22ccc8 !important;
+      // background: #22ccc8;
+    }
 </style>
 

+ 68 - 55
src/components/icss/AddMedicalInfo.vue

@@ -27,7 +27,7 @@
                 </el-form-item>
 
 
-                <el-form-item label="选择概念:"  prop = "concept">
+                <el-form-item label="选择概念:"  prop = "concept"  class="required">
 
                       <el-input v-model="form.concept" disabled></el-input>
                       <!-- <el-select v-model="form.concept"   filterable  @change="selectConcept" placeholder="请选择" size="small">
@@ -40,17 +40,17 @@
                       </el-select> -->
                    
                 </el-form-item>
-                <el-form-item label="选择类型:" prop="type">
+                <el-form-item label="选择类型:" prop="type"  class="required">
                         <el-input disabled v-model="form.conceptType"></el-input>
                 </el-form-item>
                
                 <!-- <el-form-item label="术语名称:" prop="termName">
                    <el-input v-model="form.termName"></el-input>
                 </el-form-item> -->
-                 <el-form-item label="术语标准名称:" prop="termStandardName">
+                 <el-form-item label="术语标准名称:" prop="termStandardName"  class="required">
                    <el-input disabled v-model="form.stdName"></el-input>
                 </el-form-item>
-                <el-form-item label="搜索小类名称:">
+                <el-form-item label="搜索小类名称:" >
                   <div class="conceptSearch  termMiniClassSearch">
                     <input v-model="termMiniClassText" type="text" class="searchText">
                     <span class="searchName" @click="searchTermMiniClass">搜索</span>
@@ -66,7 +66,7 @@
                     </ul>
                   </div>
                 </el-form-item>
-                 <el-form-item label="术语小类名称:" prop="termMiniClassName">
+                 <el-form-item label="术语小类名称:" prop="termMiniClassName"  class="required">
                    <el-input disabled v-model="form.termMiniClassName"></el-input>
                    <!-- <el-select v-model="form.termMiniClassName"   filterable  placeholder="请选择" size="small">
                         <el-option
@@ -93,7 +93,7 @@
                     </ul>
                   </div>
                 </el-form-item>
-                <el-form-item label="术语类组:" prop="termClass">
+                <el-form-item label="术语类组:" prop="termClass"  class="required">
                    <el-input disabled v-model="form.termClass"></el-input>
                    <!-- <el-select v-model="form.termClass"   filterable  placeholder="请选择" size="small">
                         <el-option
@@ -104,7 +104,7 @@
                         </el-option>
                     </el-select> -->
                 </el-form-item>
-                <el-form-item label="性别:" prop="sex">
+                <el-form-item label="性别:" prop="sex"  class="required">
                    <el-select v-model="form.sex" clearable placeholder="请选择" size="small">
                         <el-option
                             v-for="item in sexList"
@@ -116,7 +116,7 @@
                 </el-form-item>
                 <el-form-item
                     label="年龄"
-                    class="fix-inp"
+                    class="fix-inp required"
                     prop="age"
                 >
                     <el-col :span="10">
@@ -144,7 +144,7 @@
                       </el-form-item>
                     </el-col>
                 </el-form-item>
-                <el-form-item label="一级部位:" prop="primarySite">
+                <el-form-item label="一级部位:" prop="primarySite" class="required">
                     <el-select v-model="form.primarySite" clearable placeholder="请选择" @change="selectPrimarySite" size="small">
                         <el-option
                             v-for="item in primarySiteList"
@@ -154,7 +154,7 @@
                         </el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="二级部位:" prop="twoLevelPosition">
+                <el-form-item label="二级部位:" prop="twoLevelPosition" class="required">
                     <el-select v-model="form.twoLevelPosition" clearable placeholder="请选择" size="small">
                         <el-option
                             v-for="item in twoLevelPositionList"
@@ -175,11 +175,11 @@
                           </el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="科室:" prop="department">
+                <el-form-item label="科室:" prop="department" class="required">
                    <el-select v-model="form.department"   filterable  placeholder="请选择" size="small">
                           <el-option
                               v-for="(item) in departmentList"
-                              :key="item.id"
+                              :key="item.name"
                               :label="item.name"
                               :value="item.name">
                           </el-option>
@@ -309,35 +309,35 @@
            remark: '' //备注
         },
         rules: {
-            termStandardName: [
-                { required: true, message: '请选择标准术语', trigger: '' }
-            ],
+            // termStandardName: [
+            //     { required: true,  }
+            // ],
 
-            termMiniClassName: [
-                { required: true, message: '请选择小类名称', trigger: 'change' }
-            ],
-            termClass: [
-                { required: true, message: '请选择术语类组', trigger: 'change' }
-            ],
-            sex: [
-                { required: true, message: '请选择性别', trigger: 'change' }
-            ],
+            // termMiniClassName: [
+            //     { required: true,}
+            // ],
+            // termClass: [
+            //     { required: true, }
+            // ],
+            // sex: [
+            //     { required: true, }
+            // ],
             
-            primarySite: [
-                { required: true, message: '请选择一级部位', trigger: 'change' }
-            ],
-            twoLevelPosition: [
-                { required: true, message: '请选择二级部位', trigger: 'change' }
-            ],
-            department: [
-                { required: true, message: '请选择科室', trigger: 'change' }
-            ],
-            minAge: [
-                { required: true, message: '请输入最小年龄', trigger: 'change' }
-            ],
-            maxAge: [
-                { required: true, message: '请输入最大年龄', trigger: 'change' }
-            ]
+            // primarySite: [
+            //     { required: true,}
+            // ],
+            // twoLevelPosition: [
+            //     { required: true, }
+            // ],
+            // department: [
+            //     { required: true,}
+            // ],
+            // minAge: [
+            //     { required: true, }
+            // ],
+            // maxAge: [
+            //     { required: true, }
+            // ]
         }
       }
     },
@@ -352,8 +352,8 @@
         this.form.conceptType = data.conceptType
         this.form.name = data.name
         this.form.stdName = data.stdName
-        this.form.termClass = data.cateName
-        this.form.termMiniClassName = data.grp
+        this.form.termClass = data.grp
+        this.form.termMiniClassName = data.cateName
         this.form.sex = data.gender
         this.form.minAge = data.minAge
         this.form.maxAge = data.maxAge
@@ -368,6 +368,7 @@
         
       }
       this.getPrimarySite()
+      this.getAllDepts()
     },
     methods: {
       back() { this.$router.go(-1) },
@@ -460,10 +461,10 @@
          
         })
       },
-      getDeptInfo() {
-        api.getDeptInfo({}).then((res) => {
+      getAllDepts() {
+        api.getAllDepts({name: ''}).then((res) => {
           if(res.data.code == '0') {
-            this.departmentList = res.data.data.records
+            this.departmentList = res.data.data
           }
         })
       },
@@ -473,28 +474,33 @@
       },
       submitForm() {
         //验证外层表单
-        let goOn=true,it=null;
-        this.$refs.groups.validate((valid) =>{
-          if(!valid){
-            goOn = false;
-            return false;
-          }
-        });
+        // let goOn=true,it=null;
+        // this.$refs.groups.validate((valid) =>{
+        //   if(!valid){
+        //     goOn = false;
+        //     return false;
+        //   }
+        // });
 
-        if(!goOn){
-          return;
+        // if(!goOn){
+        //   return;
+        // }
+        const  { primarySite,termClass,termCode,concept,conceptType,department,order,sex,termMiniClassName, maxAge, minAge, name, remark, stdName, twoLevelPosition } = this.form
+        if ( !primarySite || !termClass || !concept || !conceptType|| !department || !sex || !termMiniClassName || (!maxAge&&maxAge != 0) || (!minAge &&minAge != 0) || !name || !stdName || !twoLevelPosition ) {
+          this.warning('请填写必填项');
+          return
         }
         //通过必填验证,提交保存
         const param = {
           "bodypart": this.form.primarySite,
-          "cateName": this.form.termClass,
+          "grp": this.form.termClass,
           "code": this.form.termCode,
           "conceptName": this.form.concept,
           "conceptType": this.form.conceptType,
           "dept": this.form.department,
           "displayOrder": this.form.order,
           "gender": this.form.sex,
-          "grp": this.form.termMiniClassName,
+          "cateName": this.form.termMiniClassName,
           "maxAge":this.form.maxAge,
           "minAge": this.form.minAge,
           "name": this.form.name,
@@ -540,6 +546,13 @@
 <style lang="less">
     @import "../../less/common.less";
     .MedicalInfoWrapper {
+      .required {
+        .el-form-item__label::before {
+          color: red;
+          content:'*'
+        }
+      }
+        
         .conceptSearch {
           height: 30px;
           margin: 4px 0;

+ 85 - 69
src/components/icss/AddMedicalName.vue

@@ -15,7 +15,7 @@
           <tr>
             <td class="ind">1</td>
             <td :title="data.name&&data.name.length>9?data.name:''">
-              <el-input v-model="data.name" placeholder="请输入术语" maxlength="30" size="small"></el-input>
+              <el-input v-model="data.name" placeholder="请输入术语" maxlength="30" size="small" @input="handleInput"></el-input>
             </td>
             <td>
               <el-select v-if="!id" v-model="data.type" filterable placeholder="请选择" size="small">
@@ -29,7 +29,7 @@
               <span v-else>{{data.type}}</span>
             </td>
             <td class="desc">
-              <el-input v-model="data.mark" placeholder="请输入术语说明" maxlength="120" size="small"></el-input>
+              <el-input v-model="data.remark" placeholder="请输入术语说明" maxlength="120" size="small" @input="handleRemark"></el-input>
             </td>
           </tr>
         </table>
@@ -45,7 +45,7 @@
           <tr v-for="(item,index) in synonymous">
             <td class="ind">{{index+1}}</td>
             <td :title="item.name&&item.name.length>9?item.name:''">
-              <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small"></el-input>
+              <el-input v-model="item.name" placeholder="请输入术语" maxlength="30" size="small" @input="handleInput(index,item.name)"></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.note" placeholder="请输入术语说明" maxlength="120" size="small"></el-input>
+              <el-input v-model="item.remark" placeholder="请输入术语说明" maxlength="120" size="small" @input="handleRemark(index,item.name)"></el-input>
             </td>
             <td v-if="id">
               <span @click="deleLine(index)" class="delete">删除</span>
@@ -89,26 +89,26 @@ import api from '@api/icss.js';
         data:{
           name:'',
           type:'',
-          mark:'', 
-          type:''
+          remark:'',
+          isConcept:1
         },
         typeList:[],
         id:null,
         synonymous:[//同义词
             {
               name:'',
-              id:1,
-              note:''
+              remark:'',
+              isConcept:0
             },
             {
               name:'',
-              id:2,
-              note:''
+              remark:'',
+              isConcept:0
             },
             {
               name:'',
-              id:3,
-              note:''
+              remark:'',
+              isConcept:0
             },
           ],
         colspan:4,
@@ -118,44 +118,37 @@ import api from '@api/icss.js';
     },
     created(){
       this.getTypeList();
-      const info = this.$route.params.info;
-      if(info){
+      const id = this.$route.params.id;
+      if(id){
         this.minTitle = '医学术语命名维护-修改';
-        this.id = info.id;
-        this.data.name = info.name;
-        this.data.type = info.type;
-        this.data.remark = info.remark;
+        this.id = id;
         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;
-          if(result.code == 0){
-            this.synonymous = result.data.medicalInfo;
-          }else{
-            this.$message({
-              message:result.msg,
-              type:'warning'
-            });
-          }
-        })
+        if(this.id){
+          api.getMedicalDetail({'conceptId':this.id}).then((res)=>{
+            const result = res.data;
+            if(result.code == 0){
+              this.data = result.data.libName[0];
+              this.synonymous = result.data.otherNames;
+            }else{
+              this.$message({
+                message:result.msg,
+                type:'warning'
+              });
+            }
+          })
+        }  
       },
       getTypeList(){
-        const param = {
-          current: this.currentPage,
-          size: this.pageSize
-        }
-        api.allKnowledgeType(param).then((res)=>{
+        api.allKnowledgeType({'name':''}).then((res)=>{
           const data = res.data;
           if(data.code==0){
-            this.typeList = data.data.records;
+            // this.typeList = data.data.records;
+            this.typeList = data.data;
           }else{
             this.$message({
               message:data.msg,
@@ -166,21 +159,29 @@ import api from '@api/icss.js';
           console.log(error);
         });
       },
-      handleInput(){//限制输入类型
-
+      handleInput(index,name){
+        // 可输入内容:字母、数字、汉字、特殊字符:%  ——  其余不可输入;
+        if(!name){//标准词输入
+          this.data.name = this.data.name.replace(/[^%0-9a-zA-Z\u4e00-\u9fa5]/g,'');
+        }else{
+          this.synonymous[index].name = this.synonymous[index].name.replace(/[^%0-9a-zA-Z\u4e00-\u9fa5]/g,'');
+        }
+      },
+      handleRemark(index,name){
+      //说明只能输入中文
+        if(!name){//标准词输入
+          this.data.remark = this.data.remark.replace(/[^\u4e00-\u9fa5]/g,'');
+        }else{
+          this.synonymous[index].remark = this.synonymous[index].remark.replace(/[^\u4e00-\u9fa5]/g,'');
+        }
       },
       addSpan(){
-        // let index = this.synIndex;
-        // index++
         let singleSpan = {
-          // index:index,
-          term:'',
-          id:null,
-          type:'',
-          mark:''
+          name:'',
+          remark:'',
+          isConcept:0
         }
         this.synonymous.push(singleSpan);
-        // this.synIndex = index;
       },
       warning(msg,type){
         this.$message({
@@ -198,27 +199,42 @@ import api from '@api/icss.js';
         }).catch(() => {});
       },
       deleLine(index){
-        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);
-          })
-        });
+        // 只在界面删除数据,待点确认 后参才真正删除
+        this.synonymous.splice(index,1);
       },
-      comfirn(){
-        console.log("修改数据:",this.synonymous);
+      comfirn(){  
+        if(!this.data.name){
+          this.warning('请输入标准词');
+          return
+        }
+        if(!this.data.type){
+          this.warning('请选择术语类型');
+          return
+        }
+        // 过滤同义词空数据
+        let realData = this.synonymous.filter((item)=>{
+          return item.name;
+        })
+        let detailList = [];
+        detailList[0] = this.data;
+        for(let i=0; i<realData.length; i++){
+          realData[i].type = this.data.type;
+          detailList.push(realData[i]);
+        }
+        const params = {
+          'name':this.data.name,
+          'type':this.data.type,
+          'detailList':detailList
+        }
+        api.addMedicalName(params).then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.warning(res.data.msg||'操作成功','success');
+            this.$router.push({name:'MedicalName'});
+          }else{
+            this.warning(res.data.msg);
+          }
+        })
       }
     }
   }

+ 71 - 52
src/components/icss/AddMedicalRelation.vue

@@ -8,7 +8,6 @@
           <span>起始术语搜索:</span>
           <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>
@@ -16,7 +15,6 @@
           <span>终点术语搜索:</span>
           <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>
@@ -30,26 +28,26 @@
           </tr>
           <tr>
             <td>
-              <span>{{data.start_name}}</span>
+              <span>{{data.startName}}</span>
             </td>
             <td>
-              <span>{{data.start_type}}</span>
+              <span>{{data.startType}}</span>
             </td>
             <td>
-              <el-select v-model="data.relation" clearable placeholder="请选择" size="mini">
+              <el-select v-model="data.relationName" clearable placeholder="请选择" size="mini">
                 <el-option
                   v-for="item in relationList"
-                  :key="item.key"
+                  :key="item.id"
                   :label="item.name"
-                  :value="item.key">
+                  :value="item.name">
                 </el-option>
               </el-select>
             </td>
             <td>
-              <span>{{data.end_name}}</span>
+              <span>{{data.endName}}</span>
             </td>
             <td>
-              <span>{{data.end_type}}</span>
+              <span>{{data.endType}}</span>
             </td>
           </tr>
         </table>
@@ -64,84 +62,104 @@
   </div>
 </template>
 <script type="text/javascript">
+  import api from '@api/icss.js';
   export default {
     name:'AddMedicalRelation',
     data(){
       return{
         data:{
-          start_name:'',
-          start_type:'',
-          relation:'',
-          end_name:'',
-          end_type:''
+          startName:'',
+          startType:'',
+          relationName:'',
+          endName:'',
+          endType:''
         },
-        relationList:[
-          {
-            name:"测试1",
-            key:1
-          },{
-            name:"测试2",
-            key:2
-          },{
-            name:"测试3",
-            key:3
-          }
-        ],
+        relationList:[],
         firstInput:'',
         endInput:'',
         showFlag:0,
-        searchDatas:[
-          {
-            name:"测试1",
-            id:1,
-            type:'药品'
-          },{
-            name:"测试2",
-            id:2,
-            type:'药品'
-          },{
-            name:"测试3",
-            id:3,
-            type:'药品小类'
-          }
-        ],
+        searchDatas:[],
       }
     },
+    created(){
+      this.getRelationList();
+    },
     methods:{
+      getRelationList(){//获取关系下拉
+        const param = {
+          'code':'',
+          'name':''
+        }
+        api.getAllRelationType(param).then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.relationList = result.data;
+          }else{
+            this.$message({
+              message:result.msg || "数据请求失败",
+              type:'warning'
+            })
+          }
+        })
+      },
       comfirn(){
-        console.log(444,this.data);
+        api.addRelationConcept(this.data).then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.$message({
+              type:'success',
+              message:result.msg||'添加成功'
+            })
+            this.$router.push({path: 'LT-YXSYKWH-YXSYGXWH'});
+          }else{
+            this.$message({
+              type:'warning',
+              message:result.msg
+            })
+          }
+        })
       },
       search(type){
         let item = type==1?this.firstInput:this.endInput;
-        if(item){
-          this.showFlag = type;
-          /*api.getAllConcept(item).then((res)=>{
+        const params = {
+          'isConcept':1,
+          'name':item.trim()
+        }
+        if(item.trim()){
+          // this.showFlag = type;
+          api.getAllConcept(params).then((res)=>{
             const result = res.data;
             if(result.code==0){
               this.searchDatas = result.data;
-              this.showFlag = type;
+              if(result.data&&result.data.length>0){
+                this.showFlag = type;
+              }else{
+                this.showFlag = 0;
+              }
             }else{
               this.$message({
                 type:'warning',
                 message:result.msg
               })
             }
-          })*/
+          })
         }
       },
       chooseFirst(item){
-        this.data.start_name = item.name;
-        this.data.start_type = item.type;
+        this.data.startName = item.name;
+        this.data.startType = item.type;
+        this.firstInput = "";
         this.closeSearch();
       },
       chooseEnd(item){
-        this.data.end_name = item.name;
-        this.data.end_type = item.type;
+        this.data.endName = item.name;
+        this.data.endType = item.type;
+        this.endInput = "";
         this.closeSearch();
       },
       closeSearch(){
         this.showFlag = 0;
-        // this.searchDatas = [];
+        this.searchDatas = [];
       }
     }
   }
@@ -176,6 +194,7 @@
           overflow: hidden;
           white-space: nowrap;
           text-overflow: ellipsis;
+          cursor: pointer;
         }
         li:hover{
           border-color:#22ccc8;

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

@@ -119,8 +119,10 @@
             this.departList.push({ id, name, val:id })
             this.form.department = id
             
+        } else {
+            this.getDepartmentList()
         }
-        this.getDepartmentList()
+        
         this.getTagList()
     },
     watch: {

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

@@ -132,7 +132,7 @@
       }
     },
     created(){
-      const id = this.$route.params.id;
+      const id = this.$route.params.id;console.log(66,this.$route.params);
       if(id){
         this.id = id;
         this.name = this.$route.params.name;

+ 212 - 0
src/components/icss/ChemicalAndCommonMapping.vue

@@ -0,0 +1,212 @@
+<template>
+    <div>
+        <crumbs title="化验大小项与公表项对应维护" style="min-width: 980px">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="化验大项:">
+                    <el-input size="mini" v-model="filter.mealName" placeholder="化验大项" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="化验小项:">
+                    <el-input size="mini" v-model="filter.itemName" placeholder="化验小项" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="化验公表项:">
+                    <el-input size="mini" v-model="filter.uniqueName" placeholder="化验公表项" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addRelation">添加关联</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table
+                :data="list"
+                border
+                style="width: 100%">
+                <el-table-column
+                    :resizable = "false"
+                    type="index"
+                    :index = 'indexMethod'
+                    label="编号"
+                    width="60">
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="gmtOperate"
+                    label="操作时间"
+                    width="180">
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="mealName"
+                    label="化验大项"
+                    show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="itemName"
+                    label="化验小项"
+                    show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="uniqueName"
+                    label="对应项"
+                    show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="modifier"
+                    label="操作人">
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="operate"
+                    label="操作">
+                    <template slot-scope="scope">
+                        <!-- 没有修改 -->
+                        <!-- <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>
+            </el-table>
+        <div class="pagination">
+            <el-pagination v-if="total>pageSize"
+                       :current-page.sync="currentPage"
+                       @current-change="currentChange"
+                       background
+                       :page-size="pageSize"
+                       layout="total,prev, pager, next, jumper"
+                       :total="total">
+            </el-pagination>
+        </div>
+        
+        </div>
+       <!--  <div class="pagination">
+           <el-pagination v-if="total>pageSize"
+                      :current-page.sync="currentPage"
+                      @current-change="currentChange"
+                      background
+                      :page-size="pageSize"
+                      layout="total,prev, pager, next, jumper"
+                      :total="total">
+           </el-pagination>
+       </div> -->
+        
+    </div>
+</template>
+
+<script>
+import api from '@api/icss.js';
+
+export default {
+    name: 'ChemicalAndCommonMapping',   //化验大小项和公表维护
+    data: function() {
+        return {
+            list: [],
+            filter: {
+                mealName:'',
+                itemName:'',
+                uniqueName:''
+            },
+            currentPage: 1,
+            pageSize: 10,
+            total: 0,
+        }
+    },
+    created() {
+        this.getDataList()
+        
+    },
+    methods: {
+        getDataList() {
+            const param = this.getFilterItems();
+            api.getLisMappingPage(param).then((res) => {
+                if(res.data.code == '0') {
+                    this.list = res.data.data.records
+                }
+                this.total = res.data.data.total;
+            })
+        },
+        filterDatas() {
+            this.currentPage = 1;
+            this.getDataList();
+        },
+        addRelation() {
+            this.$router.push({name:'AddChemicalAndCommonMapping'})
+        },
+        modifyRelation(row) {
+            console.log(row,'row')
+            const item = Object.assign({},row);
+            this.$router.push({name:'AddChemicalAndCommonMapping',params:{isEdit:true,data:item}});
+        },
+        currentChange(next) {
+            this.currentPage = next;
+            this.getDataList();
+            // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+            //     this.list = this.cacheData[next];
+            // } else {
+            //     this.getDataList();
+            // }
+        },
+        getFilterItems() {
+            const param = {
+                current: this.currentPage,
+                size: this.pageSize,
+                mealName:this.filter.mealName,
+                itemName:this.filter.itemName,
+                uniqueName:this.filter.uniqueName
+            };
+            return param;
+        },
+        indexMethod(index) {
+            return ((this.currentPage - 1) * this.pageSize) + index + 1;
+        },
+        getTagType(val) {
+            return val
+        },
+        warning(msg,type){
+          this.$message({
+            showClose: true,
+            message:msg,
+            type:type||'warning'
+          })
+        },
+        showConfirmDialog(msg,resolve){
+          this.$alert(msg, '提示', {
+            confirmButtonText: '确定',
+            type: 'warning'
+          }).then(() => {
+            resolve();
+          }).catch(() => {});
+        },
+        showDelDialog(id){
+          this.showConfirmDialog('是否删除该关联?',()=>{
+            api.delLisMappingById({id:id}).then((res)=>{
+              if(res.data.code=='0'){
+                this.getDataList();
+                this.warning(res.data.msg || '操作成功','success');
+              }else{
+                this.warning(res.data.msg);
+              }
+            }).catch((error)=>{
+              this.warning(error);
+            })
+          });
+        }
+    }
+}
+</script>
+
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .delete{
+       color: red;
+    }
+    .delete:hover {
+        color: red;
+    } 
+    .pagination {
+        min-width: 1010px;
+    }
+</style>

+ 192 - 0
src/components/icss/ChronicAndIndexRelation.vue

@@ -0,0 +1,192 @@
+<template>
+    <div>
+        <crumbs title="慢病指标值关联维护" style="min-width: 980px">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="慢病名称:">
+                    <el-input size="mini" v-model="filter.diseaseName" placeholder="慢病名称" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addRelation">添加关联</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table
+                :data="list"
+                border
+                style="width: 100%">
+                <el-table-column
+                    :resizable = "false"
+                    type="index"
+                    :index = 'indexMethod'
+                    label="编号"
+                    width="60">
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="gmtModified"
+                    label="操作时间"
+                    width="180">
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="diseaseName"
+                    label="慢病名称"
+                    show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="modifier"
+                    label="操作人">
+                </el-table-column>
+                <el-table-column
+                    :resizable = "false"
+                    prop="operate"
+                    label="操作">
+                    <template slot-scope="scope">
+                        <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>
+            </el-table>
+        <div class="pagination">
+            <el-pagination v-if="total>pageSize"
+                       :current-page.sync="currentPage"
+                       @current-change="currentChange"
+                       background
+                       :page-size="pageSize"
+                       layout="total,prev, pager, next, jumper"
+                       :total="total">
+            </el-pagination>
+        </div>
+        
+        </div>
+       <!--  <div class="pagination">
+           <el-pagination v-if="total>pageSize"
+                      :current-page.sync="currentPage"
+                      @current-change="currentChange"
+                      background
+                      :page-size="pageSize"
+                      layout="total,prev, pager, next, jumper"
+                      :total="total">
+           </el-pagination>
+       </div> -->
+        
+    </div>
+</template>
+
+<script>
+import api from '@api/icss.js';
+
+export default {
+    name: 'ChronicAndIndexRelation',   //慢病指标值关联维护
+    data: function() {
+        return {
+            list: [],
+            filter: {
+                diseaseName: ''
+            },
+            currentPage: 1,
+            pageSize: 10,
+            total: 0,
+        }
+    },
+    created() {
+        this.getDataList()
+        
+    },
+    methods: {
+        getDataList() {
+            const param = this.getFilterItems();
+            console.log('resss1',)
+            api.queryIndexConfigPages(param).then((res) => {
+                console.log('resss22', res)
+                if(res.data.code == '0') {
+                    console.log('resss', res)
+                    this.list = res.data.data.records
+                    this.total = res.data.data.total;
+                }
+            })
+        },
+        filterDatas() {
+            this.currentPage = 1;
+            this.getDataList();
+        },
+        addRelation() {
+            this.$router.push({name:'AddChemicalAndCommonMapping'})
+        },
+        modifyRelation(row) {
+            console.log(row,'row')
+            const item = Object.assign({},row);
+            this.$router.push({name:'AddChemicalAndCommonMapping',params:{isEdit:true,data:item}});
+        },
+        currentChange(next) {
+            this.currentPage = next;
+            this.getDataList();
+            // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+            //     this.list = this.cacheData[next];
+            // } else {
+            //     this.getDataList();
+            // }
+        },
+        getFilterItems() {
+            const param = {
+                current: this.currentPage,
+                size: this.pageSize,
+                diseaseName:this.filter.diseaseName,
+            };
+            return param;
+        },
+        indexMethod(index) {
+            return ((this.currentPage - 1) * this.pageSize) + index + 1;
+        },
+        getTagType(val) {
+            return val
+        },
+        warning(msg,type){
+          this.$message({
+            showClose: true,
+            message:msg,
+            type:type||'warning'
+          })
+        },
+        showConfirmDialog(msg,resolve){
+          this.$alert(msg, '提示', {
+            confirmButtonText: '确定',
+            type: 'warning'
+          }).then(() => {
+            resolve();
+          }).catch(() => {});
+        },
+        showDelDialog(id){
+          this.showConfirmDialog('是否删除该关联?',()=>{
+            api.delLisMappingById({id:id}).then((res)=>{
+              if(res.data.code=='0'){
+                this.getDataList();
+                this.warning(res.data.msg || '操作成功','success');
+              }else{
+                this.warning(res.data.msg);
+              }
+            }).catch((error)=>{
+              this.warning(error);
+            })
+          });
+        }
+    }
+}
+</script>
+
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .delete{
+       color: red;
+    }
+    .delete:hover {
+        color: red;
+    } 
+    .pagination {
+        min-width: 1010px;
+    }
+</style>

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

@@ -1,6 +1,6 @@
 <template>
     <div>
-        <crumbs title="icss科室维护系统">
+        <crumbs title="icss科室症状维护">
             <el-form :inline="true" class="demo-form-inline">
                 <el-form-item label="科室名称:">
                     <el-input size="mini" v-model="filter.proName" placeholder="科室名称"></el-input>

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

@@ -226,7 +226,7 @@
             'Content-Type': 'multipart/form-data'
           }
         }
-        /*api.knowledgeUpload(formData,header).then((res)=>{
+        api.medicalInfoExcelIm(formData,header).then((res)=>{
           if(res.data.code==0){
             this.$message({
               message: '上传成功',
@@ -243,7 +243,7 @@
         //解决上传相同文件不触发change
         let inp = document.getElementById("upFile");
         inp.value = "";
-        */
+        
       },
     }
   }

+ 26 - 27
src/components/icss/MedicalName.vue

@@ -40,22 +40,26 @@
                         width="60">
                 </el-table-column>
                 <el-table-column
-                        prop="gmtCreated"
+                        prop="operTime"
                         label="操作时间"
                         :show-overflow-tooltip="true">
                 </el-table-column>
                 <el-table-column
-                        prop="name"
+                        prop="libName"
                         label="医学标准术语"
                         show-overflow-tooltip>
                 </el-table-column>
                 <el-table-column
-                        prop="synonymous"
-                        label="其他术语"
+                        prop="libType"
+                        label="术语类型">
+                </el-table-column>
+                <el-table-column
+                        prop="otherNames"
+                        label="同义词"
                         show-overflow-tooltip>
                 </el-table-column>
                 <el-table-column
-                        prop="modifier"
+                        prop="operName"
                         label="操作人">
                 </el-table-column>
                 
@@ -107,7 +111,8 @@
       toEditProduct(row){
         this.$router.push({
           name:'AddMedicalName',
-          params: {info:row}
+          // params: {info:row}
+          params: {id:row.conceptId}
         })
       },
       filterDatas(){
@@ -116,10 +121,6 @@
       },
       getDataList() {
         const param = this.getFilterItems();
-        // const param = {
-        //   current: this.currentPage,
-        //   size: this.pageSize
-        // }
         api.knowledgeName(param).then((res) => {
           if (res.data.code == '0') {
             const data = res.data.data;
@@ -132,14 +133,10 @@
         });
       },
       getTypeList(){
-        const param = {
-          current: this.currentPage,
-          size: 60
-        }
-        api.allKnowledgeType(param).then((res)=>{
+        api.allKnowledgeType({'name':''}).then((res)=>{
           const data = res.data;
           if(data.code==0){
-            this.typeList = data.data.records;
+            this.typeList = data.data;
           }else{
             console.log(res.msg);
           }
@@ -147,13 +144,12 @@
           console.log(error);
         });
       },
-      getDetailList(id) {
-        const param = {'id': id,};
-        // this.$router.push({name:'DeptInfoDetail', params:{id: id}})
-      },
+      /*getDetailList(id) {
+        this.$router.push({name:'DeptInfoDetail', params:{id: id}})
+      },*/
       getFilterItems() {
         const param = {
-          term: this.filter.term,
+          name: this.filter.term,
           current: this.currentPage,
           size: this.pageSize,
           type:this.filter.type
@@ -187,12 +183,16 @@
         }).catch(() => {});
       },
       showDelDialog(item){
-        const param = {
+        /*const param = {
           term:item.term,
           type:item.type,
           id:item.id
+        }*/
+        const param = {
+          conceptId:item.conceptId
         }
-        this.showConfirmDialog('删除该标准词,可能造成相关联的医学信息、术语关系、医学静态知识等信息全部删除,是否删除?',()=>{
+        
+        this.showConfirmDialog('删除该标准术语,需要将所关联的医学属性、术语关系、医学静态知识等信息全部解除关联才可正常删除该信息,是否删除?',()=>{
           api.deletMedicalName(param).then((res)=>{
             if(res.data.code=='0'){
               this.warning(res.data.msg||'操作成功','success');
@@ -214,7 +214,6 @@
         e.preventDefault();
         let formData = new FormData();
         formData.append('uploadfile', fileInfo);
-        console.log(123,fileInfo,formData);
         const header = {
           headers:{
             'Content-Type': 'multipart/form-data'
@@ -226,6 +225,7 @@
               message: '上传成功',
               type: 'success',
             });
+            this.getDataList();
           }else{
             this.$message({
               message:res.data.msg,
@@ -233,11 +233,10 @@
             });
           }
         })
-        this.getDataList();
+        
         //解决上传相同文件不触发change
         let inp = document.getElementById("upFile");
-        inp.value = "";
-        
+        inp.value = "";   
       },
     }
   }

+ 43 - 41
src/components/icss/MedicalRelation.vue

@@ -9,17 +9,17 @@
                 <el-select v-model="type" clearable placeholder="请选择" size="mini">
                   <el-option
                     v-for="item in typeList"
-                    :key="item.key"
+                    :key="item.id"
                     :label="item.name"
-                    :value="item.key">
+                    :value="item.id">
                   </el-option>
                 </el-select>
               </el-form-item>
               <el-form-item label="起始术语:">
-                  <el-input size="mini" v-model="filter.proName" placeholder="输入术语"></el-input>
+                  <el-input size="mini" v-model="startName" placeholder="输入术语"></el-input>
               </el-form-item>
               <el-form-item label="终点术语:">
-                  <el-input size="mini" v-model="filter.proName" placeholder="输入术语"></el-input>
+                  <el-input size="mini" v-model="endName" placeholder="输入术语"></el-input>
               </el-form-item>
               <el-form-item>
                   <el-button size="mini" @click="filterDatas">确认</el-button>
@@ -42,7 +42,7 @@
                         width="60">
                 </el-table-column>
                 <el-table-column
-                        prop="gmtOperate"
+                        prop="operTime"
                         label="操作时间"
                         :show-overflow-tooltip="true">
                 </el-table-column>
@@ -72,7 +72,7 @@
                         show-overflow-tooltip>
                 </el-table-column>
                 <el-table-column
-                        prop="operatorName"
+                        prop="operName"
                         label="操作人">
                 </el-table-column>
                 
@@ -107,32 +107,16 @@
         currentPage: 1,
         pageSize: 10,
         total: 0,
-        filter: {
-          proName: ''
-        },
+        startName:'',
+        endName:'',
         type:'',
-        typeList:[
-          {
-            name:'类型1',
-            id:1,
-            key:1
-          },
-          {
-            name:'类型2',
-            id:2,
-            key:2
-          },
-          {
-            name:'类型3',
-            id:3,
-            key:3
-          },
-        ],
+        typeList:[],
         titleWidth:'1070px' //头部最小宽度
       }
     },
     created() {
       this.getDataList();
+      this.getRelationList();
     },
     methods: {
       toEditProduct(row){
@@ -147,7 +131,15 @@
       },
       getDataList() {
         const param = this.getFilterItems();
-        api.knowledgeRelation(param).then((res) => {
+        const param1 = {
+          "current": this.currentPage,
+          "endName": this.endName,
+          "relationId": this.type,
+          "size": this.pageSize,
+          "startName": this.startName
+        }
+        const params = this.type?param1:param;
+        api.knowledgeRelation(params).then((res) => {
           if (res.data.code == '0') {
             const data = res.data.data;
             this.list = data.records;
@@ -158,15 +150,29 @@
           console.log(error);
         });
       },
-      getDetailList(id) {
-        const param = {'id': id,};
-        // this.$router.push({name:'DeptInfoDetail', params:{id: id}})
+      getRelationList(){
+        const param = {
+          'code':'',
+          'name':''
+        }
+        api.getAllRelationType(param).then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.typeList = result.data;
+          }else{
+            this.$message({
+              message:result.msg || "数据请求失败",
+              type:'warning'
+            })
+          }
+        })
       },
       getFilterItems() {
         const param = {
-          // questionName: this.filter.proName,
           current: this.currentPage,
-          size: this.pageSize
+          size: this.pageSize,
+          startName: this.startName,
+          endName: this.endName
         };
         return param;
       },
@@ -198,11 +204,7 @@
       },
       showDelDialog(item){
         const params = {
-          start_term:item.startName,
-          start_type:item.startType,
-          end_term:item.endName,
-          end_type:item.endType,
-          relation_name:item.relationName
+          id:item.id
         }
         this.showConfirmDialog('是否删除该关系?可能对现有系统造成影响',()=>{
           api.delKnowledgeRelation(params).then((res)=>{
@@ -232,7 +234,7 @@
             'Content-Type': 'multipart/form-data'
           }
         }
-        /*api.uploadFile(formData,header).then((res)=>{
+        api.RelationUpload(formData,header).then((res)=>{
           if(res.data.code==0){
             this.$message({
               message: '上传成功',
@@ -245,11 +247,11 @@
             });
           }
         })
-        this.getDataList();*/
-        /*//解决上传相同文件不触发change
+        this.getDataList();
+        //解决上传相同文件不触发change
         let inp = document.getElementById("upFile");
         inp.value = "";
-        */
+        
       }
     }
   }

+ 141 - 0
src/components/icss/MedicalType.vue

@@ -0,0 +1,141 @@
+<template>
+    <div>
+        <crumbs title="医学术语类型维护">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="医学类型:">
+                    <el-input size="mini" v-model="name" placeholder="输入类型"></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addType">添加类型</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table :data="list"
+                      border
+                      style="width: 100%">
+                <el-table-column
+                        type="index"
+                        :index="indexMethod"
+                        label="编号"
+                        width="60">
+                </el-table-column>
+                <el-table-column
+                        prop="gmtModified"
+                        label="操作时间"
+                        :show-overflow-tooltip="true">
+                </el-table-column>
+                <el-table-column
+                        prop="name"
+                        label="医学类型"
+                        show-overflow-tooltip>
+                </el-table-column>
+                <el-table-column
+                        prop="modifier"
+                        label="操作人">
+                </el-table-column>
+            </el-table>
+            <el-pagination v-if="total>pageSize"
+                           :current-page.sync="currentPage"
+                           @current-change="currentChange"
+                           background
+                           :page-size="pageSize"
+                           layout="total,prev, pager, next, jumper"
+                           :total="total">
+            </el-pagination>
+        </div>
+
+    </div>
+</template>
+
+<script>
+  import api from '@api/icss.js';
+  export default {
+    name: 'MedicalType',
+    data: function () {
+      return {
+        list: [],
+        cacheData: {},
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+        name:''
+      }
+    },
+    created() {
+      this.getDataList();
+    },
+    methods: {
+      filterDatas(){
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      getDataList() {
+        const param = this.getFilterItems();
+        api.getTypeList(param).then((res) => {
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            this.list = data.records;
+            this.cacheData[param.current] = data.records;
+            this.total = data.total;
+          }
+        }).catch((error) => {
+          console.log(error);
+        });
+      },
+      getFilterItems() {
+        const param = {
+          name: this.name,
+          current: this.currentPage,
+          size: this.pageSize
+        };
+        return param;
+      },
+      indexMethod(index) {
+        return ((this.currentPage - 1) * this.pageSize) + index + 1;
+      },
+      currentChange(next) {
+        this.currentPage = next;
+        if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+          this.list = this.cacheData[next];
+        } else {
+          this.getDataList();
+        }
+      },
+      addType(){
+        this.$prompt('添加:','医学类型添加',{
+          confirmButtonText: '确定',
+          showCancelButton: false,
+          inputPattern:/^[\u4e00-\u9fa5]+$/,
+          inputErrorMessage: '术语类型只能输入汉字'
+        }).then(({value})=>{
+          console.log("添加的类型是:",value);
+          if(value.trim()){
+            api.addType({name:value.trim()}).then((res)=>{
+              if(res.data.code==0){
+                this.$message({
+                  message:res.data.msg||'添加成功',
+                  type:'success'
+                })
+                this.getDataList();
+              }
+            }).catch((error)=>{
+              console.log(error);
+            })
+          }
+        }).catch(()=>{
+
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+    @import "../../less/admin.less";
+    .el-table .cell{
+      overflow: hidden;
+      white-space: nowrap;
+    }
+</style>

+ 49 - 3
src/components/icss/NoiseTemplate.vue

@@ -176,7 +176,7 @@ export default {
         });
         return;
       }
-      if(parseInt(this.dataPub.region8) >= parseInt(this.dataPub.region9)) {
+      if(parseFloat(this.dataPub.region8) >= parseFloat(this.dataPub.region9)) {
           this.$message({
             message: '最小年龄不能大于或等于最大年龄',
             type: 'warning'
@@ -219,7 +219,7 @@ export default {
       this.showDelDialog(param)
     },
     showDelDialog(param) {
-      this.showConfirmDialog('是否保存该标签组?', () => {
+      /*this.showConfirmDialog('是否保存该标签组?', () => {
         api.saveOrUpdate(param).then((res) => {
           if (res.data.code === '0') {
             this.warning(res.data.msg || '保存成功', 'success','1000')
@@ -234,7 +234,53 @@ export default {
         }).catch((err) => {
           this.warning(err);
         })
-      });
+      });*/
+      const h = this.$createElement;
+      this.$msgbox({
+        title:'提示',
+        message:h('div',{style:'padding-bottom:10px'},[
+            h('p',{style:'font-size:15px;margin-bottom:10px'},'是否保存该标签组?'),
+            h('span',{style:'color:red;font-size:12px'},'标签系统名称已经改变,请去别名维护中修改相关信息'),
+          ]),
+        showCancelButton: true,
+        distinguishCancelAndClose:true,
+        confirmButtonText: '确认并前往别名维护',
+        cancelButtonText:'确认',
+        // type: 'warning',
+        cancelButtonClass:'toast-cancel'
+      }).then(()=>{
+        api.saveOrUpdate(param).then((res) => {
+          if (res.data.code === '0') {
+            this.warning(res.data.msg || '保存成功', 'success');
+            this.$router.push({
+              name:'AddSimilarName',
+              params: {id:param.questionWrapper.id,name:param.questionWrapper.tagName}
+            })
+          } else {
+            this.warning(res.data.msg)
+          }
+        }).catch((err) => {
+          this.warning(err);
+        })
+      }).catch((action)=>{
+        // action :cancel--取消,close--关闭
+        if(action=='cancel'){
+          api.saveOrUpdate(param).then((res) => {
+            if (res.data.code === '0') {
+              this.warning(res.data.msg || '保存成功', 'success');
+              setTimeout(() => {
+                this.$router.push({
+                  path:'/admin/LT-YXSJWH-BQZWH'
+                })
+              }, 1000);
+            } else {
+              this.warning(res.data.msg)
+            }
+          }).catch((err) => {
+            this.warning(err);
+          })
+        }
+      })
     },
     showConfirmDialog(msg, resolve) {
       this.$alert(msg, '提示', {

+ 10 - 0
src/routes.js

@@ -70,6 +70,12 @@ import ChronicDiseaseAdd from '@components/icss/ChronicDiseaseAdd.vue'; //量表
 import ChronicDiseaseManage from '@components/icss/ChronicDiseaseManage.vue'; //慢病管理评估维护 -- 列表
 import ChronicDiseaseManageAdd from '@components/icss/ChronicDiseaseManageAdd.vue'; //慢病管理评估维护 -- 添加
 
+import ChemicalAndCommonMapping from '@components/icss/ChemicalAndCommonMapping.vue'; //化验大小项与公表维护
+import AddChemicalAndCommonMapping from '@components/icss/AddChemicalAndCommonMapping.vue'  //化验大小项与公表维护--添加关联
+import ChronicAndIndexRelation from '@components/icss/ChronicAndIndexRelation.vue'  //医学数据--慢病指标值关联维护
+
+
+import MedicalType from '@components/icss/MedicalType.vue'//医学术语维护-类型维护
 export default [
   {
     path: '/',
@@ -205,6 +211,10 @@ export default [
       {path:'LT-YXSJWH-LBJGTJ',component:ChronicDiseaseAdd,name:'ChronicDiseaseAdd'},  //量表结构维护 -- 添加
       {path:'LT-YXSJWH-MBGLYPG',component:ChronicDiseaseManage,name:'ChronicDiseaseManage'},  //慢病管理评估维护 -- 列表
       {path:'LT-YXSJWH-MBGLYTJ',component:ChronicDiseaseManageAdd,name:'ChronicDiseaseManageAdd'},  //慢病管理评估维护 -- 添加
+      {path:'LT-YXSJWH-HYDXXYGBXDY',component:ChemicalAndCommonMapping,name:'ChemicalAndCommonMapping'},  //化验大小项与公表维护
+      {path:'LT-YXSJWH-TJHYDXXYGBXDY',component:AddChemicalAndCommonMapping,name:'AddChemicalAndCommonMapping'},  //化验大小项与公表维护--添加关联
+      {path:'LT-YXSYKWH-YXSYLXWH',component:MedicalType,name:'MedicalType'},     //医学术语--类型维护
+      {path:'LT-YXSJWH-MBZBZGLWH',component:ChronicAndIndexRelation,name:'ChronicAndIndexRelation'},     //医学数据--慢病指标值关联维护
     ]
   }
 ]