Преглед изворни кода

添加免责声明
Squashed commit of the following:

commit 5aa2bdc4772a121a8f95796d287a6144aba0849a
Merge: e1b7e26 73440ab
Author: zhouna <zhouna@zjlantone.com>
Date: Fri Mar 1 17:33:02 2019 +0800

Merge remote-tracking branch 'origin/dev2/zhangxc' into dev

commit e1b7e2694cf8c386d3964ea9e0230d3983deb805
Merge: 163e4c9 de516f0
Author: zhouna <zhouna@zjlantone.com>
Date: Fri Mar 1 17:32:42 2019 +0800

Merge branch 'test' into dev

# Conflicts:
# src/api/icss.js

commit 73440abf636577fda0d05524180791434ca727b7
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Mar 1 17:03:31 2019 +0800

症状推送

commit de516f030d664bb82787ae5a35f68515237ab4c4
Merge: 4c3985a aebb7f7
Author: Luolei <16657115156@163.com>
Date: Fri Mar 1 16:39:30 2019 +0800

Merge branch 'test' of http://192.168.2.236:10080/zhouna/platformFront into test

commit 4c3985ae9ebe589d36c352b579501681f060b795
Author: Luolei <16657115156@163.com>
Date: Fri Mar 1 16:19:02 2019 +0800

限制调用时机

commit f0d48657fba60ba4fd72c031b8368b7c67efc619
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Mar 1 16:15:33 2019 +0800

noIds添加判断

commit 7822c027d53e42610d9c00a7a6cc7f6277fd940d
Merge: 8324bf6 f9a0af3
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Mar 1 15:43:24 2019 +0800

Merge branch 'dev2/luolei' into dev2/zhangxc

commit 8324bf6701f684f38e1fe3c906d2e10b27b20318
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Mar 1 15:42:41 2019 +0800

症状推送(未完成)

commit f9a0af3b869f1e84296e4630293ae99532e35155
Author: Luolei <16657115156@163.com>
Date: Fri Mar 1 15:40:56 2019 +0800

合并问题

commit aad93151bf13fb20e8b732369d05452e62d05c17
Merge: f61ed45 cad991f
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Mar 1 15:08:39 2019 +0800

merge from 'luolei'

commit f61ed45412bf0650f1eca8616018dbb5e5dad14f
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Mar 1 15:01:33 2019 +0800

症状推送及其修改(未完成)

commit aebb7f75c35177143468f1c70c43738de296363e
Author: Luolei <16657115156@163.com>
Date: Fri Mar 1 14:32:58 2019 +0800

多次调用问题解决

commit cad991f7ef1b6740b8abc6e2fbd7a907471732b4
Author: Luolei <16657115156@163.com>
Date: Fri Mar 1 09:40:18 2019 +0800

修改完成,参数统一配置

commit 163e4c98b7bf96e2c8e8f9369c2069c9f337c13e
Author: zhouna <zhouna@zjlantone.com>
Date: Thu Feb 28 20:20:45 2019 +0800

配置项修改

commit 3992819f3cbccf6d8950af1db46f1c562ee7b700
Author: zhouna <zhouna@zjlantone.com>
Date: Thu Feb 28 20:09:38 2019 +0800

添加富文本编辑器

commit 14e739f9bc8d1064667f92622dc0fb7dd2597713
Author: Luolei <16657115156@163.com>
Date: Thu Feb 28 16:03:58 2019 +0800

标签组修改

commit 78b130de9259175f18e1c2e06a61188c35ddb864
Author: Luolei <16657115156@163.com>
Date: Wed Feb 27 15:08:40 2019 +0800

判断有误

commit fb3b8a9db8ad25b276585bf1994d36aea26d1d7c
Merge: 77a9c8c a0b68ed
Author: zhangxc <zhangxc@zjlantone.com>
Date: Wed Feb 27 14:47:20 2019 +0800

merge from 'dev2/luolei'

commit 77a9c8c7c09e2981265d35abc5425484d9519783
Author: zhangxc <zhangxc@zjlantone.com>
Date: Wed Feb 27 14:41:59 2019 +0800

标签组修改(血压和症状)

commit a0b68ed4950b1a6fa297aa3828229e7561631978
Author: Luolei <16657115156@163.com>
Date: Wed Feb 27 14:40:44 2019 +0800

修改

commit 7e1c8ed574b9c38f7f0385f0d1a8b551e7225ba0
Author: zhouna <zhouna@zjlantone.com>
Date: Tue Feb 26 20:25:47 2019 +0800

提示信息维护

commit ee26bc4f4c3451b75130f73fc3049bfee0a70d08
Author: zhangxc <zhangxc@zjlantone.com>
Date: Tue Feb 26 09:51:54 2019 +0800

标签组修改标签组公共数据部分

commit 1b15b11ac6e8fe8b00ebd8a33f275539108bf5e5
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 25 15:37:03 2019 +0800

初始化时填写单类型赋值

commit 9f1ce7bb11dbee76ddee677fca2710ef9f50bf9a
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 25 15:36:02 2019 +0800

删除联合推送标签明细项

commit f4dd8ed9ab6b249a970e9552f73233955e475bf7
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 25 14:34:32 2019 +0800

标签组添加限制条件

commit 6d4dc57bfb9537ec7f37d09e6883458ff15eccfe
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Feb 22 15:08:17 2019 +0800

修改归属,填写单类型,性别,标签明细重置

commit 061de293c240f35ad7e82056d57d846c8f3cb531
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Feb 22 13:57:28 2019 +0800

修改归属为化验类别为多选时标签显示

commit 479a87035c1997213f6ec710cd8fa4ddd647d7a6
Author: zhangxc <zhangxc@zjlantone.com>
Date: Fri Feb 22 10:57:15 2019 +0800

化验和多选框

commit a4724d13390450886b82d650e703095dada8a401
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Feb 21 11:08:15 2019 +0800

修改标签类型和归属显示名称

commit b448a51594240b8b0da025ee9a823c4577e2d18a
Merge: 0b52ec6 db7e04f
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 18 17:15:00 2019 +0800

Merge branch 'test' into dev2/zhangxc

commit db7e04f1441269684f4d3d9d93e2df81a77ba69a
Author: Luolei <16657115156@163.com>
Date: Mon Feb 18 13:08:58 2019 +0800

和单标签

commit 0b52ec6854995f8e3caee14237cac15bacfdd6b4
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 18 10:30:59 2019 +0800

修改bug

commit 56c4f223af587c04ae70c4d01b6c11cb480be35b
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 18 10:30:39 2019 +0800

修改标签池标签名称样式

commit 3663d6490026fc3f4fab92f3966dec703705a017
Merge: 7aec89a 43e196f
Author: Luolei <16657115156@163.com>
Date: Mon Feb 18 10:13:29 2019 +0800

Merge branch 'dev2/luolei' into independentTag

commit a589a6dedb9ef0c9ebf6edfa9b09b44e98fd33ef
Author: zhangxc <zhangxc@zjlantone.com>
Date: Mon Feb 18 10:08:57 2019 +0800

修改标签名称样式

commit 43e196ffb1e3a0cc0085f330794ebf423a0a2c6b
Author: Luolei <16657115156@163.com>
Date: Fri Feb 15 17:26:43 2019 +0800

bug修改

commit 7aec89ad1af7201574105b99f0636c44e91a69e2
Author: zhouna <zhouna@zjlantone.com>
Date: Wed Feb 13 16:32:54 2019 +0800

禁用传值布尔型

commit 66fc0760cfcd217eba0577f8bfe2e68f3998448b
Author: zhouna <zhouna@zjlantone.com>
Date: Wed Feb 13 16:28:50 2019 +0800

修改标签归属、类型和性别不可改

commit 85d3a2321a8fbf021d3c8dd0185944dd1b8b4fd8
Author: zhouna <zhouna@zjlantone.com>
Date: Wed Feb 13 16:22:22 2019 +0800

单选标签修改

commit be7cbda8c07e9408ad26925b7cd6115fe5c3070e
Author: zhouna <zhouna@zjlantone.com>
Date: Tue Feb 12 11:20:22 2019 +0800

文本类型修改,单选类型修改未完

commit 2eb59396d0ba2af2245c2655ee3f9c0880f3ea79
Author: zhouna <zhouna@zjlantone.com>
Date: Mon Feb 11 18:10:47 2019 +0800

单选维护属性tag显示

commit 0321a75eab8f276a9d3ec826bd2dcc8f635902e0
Author: zhouna <zhouna@zjlantone.com>
Date: Mon Feb 11 17:35:26 2019 +0800

输入框类型维护

commit 082c91207349481dd5bbc13de511d46d212d83ea
Author: zhouna <zhouna@zjlantone.com>
Date: Mon Feb 11 16:37:36 2019 +0800

单选维护bug修改

commit 6e9b2f35040b7f082ba078cdab9634b6b2b9f6cf
Author: zhouna <zhouna@zjlantone.com>
Date: Mon Feb 11 14:53:29 2019 +0800

单选标签属性选项置灰

commit e344e25fd4fdfebf07d172e0e91cf35ad1b1835b
Merge: 7b95e36 d8f8c68
Author: zhouna <zhouna@zjlantone.com>
Date: Sun Feb 3 10:04:46 2019 +0800

Merge branch 'dev' into independentTag

commit d8f8c684797c688a85bdb6c5d50f54765e0d6cd4
Merge: e2dd153 ba5e9e6
Author: zhouna <zhouna@zjlantone.com>
Date: Sun Feb 3 09:48:48 2019 +0800

Merge remote-tracking branch 'origin/dev' into dev

commit e2dd1536cc4df81687c2f3634b7fb6582eba3ffe
Author: zhouna <zhouna@zjlantone.com>
Date: Sat Feb 2 17:30:26 2019 +0800

单选维护

commit 6eb57b7e5ccefc107775d6e9d7677deb50d3342b
Author: zhouna <zhouna@zjlantone.com>
Date: Fri Feb 1 17:57:41 2019 +0800

独立标签

commit 7b95e36f5bd527c1e23d3ff62b66184bb42b3743
Merge: 6568234 c1ca617
Author: zhouna <zhouna@zjlantone.com>
Date: Fri Feb 1 15:29:27 2019 +0800

Merge remote-tracking branch 'origin/depart' into independentTag

commit 1cd9412ecd0d8cd09c694fdf238507017ec7d06b
Author: Luolei <16657115156@163.com>
Date: Fri Feb 1 10:12:44 2019 +0800

bug修改

commit c4b0acf690b308b061c567aaa3620bd02879ec29
Merge: 34570c5 b77e984
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 17:23:17 2019 +0800

Merge branch 'test' of http://192.168.2.236:10080/zhouna/platformFront into test

commit 34570c5385b33631c74c29db58d02faad21367b0
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 17:23:09 2019 +0800

bug修改

commit b77e984deaa7675a0364c1248f2b38b4d9ce76b0
Merge: 93ce48b ba5e9e6
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:36:20 2019 +0800

Merge branch 'dev2/zhangxc' into test

commit ba5e9e68617c1696e27de52e6deb48b39b47c9af
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:35:33 2019 +0800

修改顶部标题样式

commit 93ce48bda37148c865cb0b305a6e645f8418badd
Merge: 148d49f db0659a
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 15:23:42 2019 +0800

Merge branch 'dev2/luolei' into test

commit db0659aab84a70449bb5b5c61a9084463554b100
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 15:22:51 2019 +0800

优化

commit 148d49f1e88af00f186b116c3ec8a8defeabeb3c
Merge: 3e9010f 60307c5
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:19:38 2019 +0800

Merge branch 'dev2/zhangxc' into test

commit 60307c58ad8b6f06092ce19d0550c31b7c89c60d
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:18:06 2019 +0800

修改横铺统一(血压)为每个后面添加一个输入框

commit 3e9010f66dc1ad911c37486615ea5423be2c9285
Merge: 77d8884 f04c384
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 15:16:48 2019 +0800

Merge branch 'dev2/luolei' into test

commit f04c384d802839228bc2f74fb7dc65ede83a1775
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 15:15:12 2019 +0800

互斥项

commit 77d88846790cf2166999d602a6890d6ef4422190
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:06:13 2019 +0800

修改左右箭头位置

commit 714eba80c300c481857d0df5285a86944c4469e0
Merge: 969688f 3fe9e97
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:01:58 2019 +0800

Merge branch 'test' of http://192.168.2.236:10080/zhouna/platformFront into test

commit 969688f82f0f869e5eafdc40263054c83cf0093d
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 15:01:49 2019 +0800

修改标签属性删除

commit 3fe9e97cc952b42e09c6564fa5ccf9fccf060501
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 14:34:44 2019 +0800

保存忘打开了

commit 6568234d9e55ae3d7b0de1c6739d8627ded2e14a
Merge: 58d39fc 3f48de8
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 13:24:55 2019 +0800

Merge branch 'dev' into test

commit 3f48de89a4a27030ce0315be08d7afde6ec2a4b8
Merge: bf43109 025ac3d
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 13:24:36 2019 +0800

Merge branch 'dev2/zhangxc' into dev

commit 025ac3d1380cd268e40ce856f873f1b92c27c9f7
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 13:22:17 2019 +0800

修改操作池样式

commit 58d39fcdde20bc640cae05942b8eaea3a4e9f4b6
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 13:18:04 2019 +0800

去掉既往史下面的提示

commit 2964171fec51793f979776c433cede0594777d96
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 11:13:21 2019 +0800

修改性别清除标签明细

commit bf43109c5f7a9da797f3256e5dcd178b1cb2c437
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 10:41:53 2019 +0800

不区分单选多选

commit 775e19e7edca1934ede0f43f42116bcefe29f5c6
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 10:13:39 2019 +0800

去掉弹窗

commit cdd3894959797fd53fa8fb26bf46e1d886d2d177
Merge: e0ae7ed 393d9e4
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 10:11:23 2019 +0800

Merge branch 'dev' of http://192.168.2.236:10080/zhouna/platformFront into dev

commit e0ae7ed97452c8e17f9517ab4b466daccdecab1e
Author: Luolei <16657115156@163.com>
Date: Thu Jan 31 10:11:13 2019 +0800

添加参数,默认值修改

commit 393d9e47dbbcc5293b3cb96f11024f30678fcaa7
Author: zhangxc <zhangxc@zjlantone.com>
Date: Thu Jan 31 09:53:55 2019 +0800

修改样式

# Conflicts:
# src/api/config.js
# src/api/icss.js
# src/api/utils.js
# src/components/icss/BloodPressTagGroup.vue
# src/components/icss/NoiseTemplate.vue
# src/components/icss/PubTagGroup.vue
# src/components/icss/PubTagPartDetail.vue
# src/components/icss/SymptomTagGroup.vue
# src/routes.js

liucf пре 6 година
родитељ
комит
f142c2dc63

+ 19 - 1
src/api/config.js

@@ -106,6 +106,7 @@ export default {
     'addSimilarName': 'api/icssman/retrieval/addTagRetrieval', //别名维护-添加、修改
     'searchLable': 'api/icssman/questionInfo/index', //标签检索
     'uploadFile': 'api/icssman/retrieval/retrievalExcelIm', //别名维护-导入
+    'discInformation': 'api/icssman/disclaimerInformation/getDisclaimerInformations', //免责声明
 	},
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',
@@ -116,5 +117,22 @@ export default {
 		'LT-DDXT': 'el-icon-setting',
 		'LT-CPXGL': 'el-icon-upload',
 		'LT-GRZX': 'el-icon-news'
-  }
+  },
+  labelTypesMaps: {       //// 归属和填写单类型限制
+    '1':['2','3','4','11'],
+    '3':['4','6'],
+    '4':[,'2','3'],
+    '5':['7'],
+    '6':['9'],
+    '7':['9'],
+    '8':['9']
+  },
+  groupParams:[
+    {controlType:[1,2],tagType:[1],notTagType:[8]},     //多列多选(杂音/初为)     notTagType为文字标签剔除
+    {controlType:[1,2,6,7],tagType:[1,2],notTagType:[8]},  //多项统一横铺标签(血压)
+    {controlType:[1,2,6,7],tagType:[1,2],notTagType:[8]},  //症状详细(症状尾巴)
+    {controlType:[1,2],tagType:[1,2,3,4,10],notTagType:[8]}, //组合项标签(既往史)
+    {controlType:[1,6],tagType:[],notTagType:[8]},    //化验组合
+    {controlType:[1,2,99],tagType:[],notTagType:[8]},   //症状推送类型(添加症状)
+  ]
 }

+ 25 - 4
src/api/icss.js

@@ -2,6 +2,7 @@ import axios from 'axios';
 import config from '@api/config.js';
 
 const urls = config.urls;
+const groupParams = config.groupParams;
 export default {
     getIcssEnumsData(){
         return axios.post(urls.getIcssEnumsData)
@@ -33,9 +34,9 @@ export default {
     detailsTagList(param) {
         return axios.post(urls.detailsTagList, param)
     },
-  detailsTag(param) {
-        return axios.post(urls.detailsTag, param)
-      },
+    detailsTag(param) {   //根据id返回数据
+      return axios.post(urls.detailsTag, param)
+    },
     getDeptInfo(param) {//科室维护
         return axios.post(urls.getDeptInfo, param)
     },
@@ -57,7 +58,24 @@ export default {
     deleteTagGroup(param) {
         return axios.post(urls.deleteTagGroup, param)
     },
-    similarName(param) {//别名维护
+    getGroupParams(val){
+      if(val == 2){
+        return groupParams[0]
+      }else if(val == 3){
+        return groupParams[1]
+      }else if(val == 4){
+        return groupParams[2]
+      }else if(val == 6){
+        return groupParams[3]
+      }else if(val == 7){
+        return groupParams[4]
+      }else if(val == 11){
+        return groupParams[5]
+      }else {
+        return null
+      }
+    },
+	similarName(param) {//别名维护
         return axios.post(urls.similarName, param)
     },
     delSimilarName(param) {//别名维护-删除
@@ -75,4 +93,7 @@ export default {
     uploadFile(param) {//别名维护-导入
         return axios.post(urls.uploadFile, param)
     },
+    discInformation(param) {//免责声明
+        return axios.post(urls.discInformation, param)
+    },
 }

+ 9 - 6
src/api/utils.js

@@ -84,16 +84,16 @@ export default {
    * @param {type} 填写单类型 
    */
   dataRecombination(dataArr,type){
-    console.log(type,dataArr)
+    // console.log(dataArr,type)
     let tmpArr = [];
     for(let i = 0;i < dataArr.length;i++){
       let mapping = {
         "sonQuestion": "",
-        "position": 0,              //默认值,传0
+        "position": 0,               //默认值,传0
         "formPosition": 1,          // 填写单显示位置(0:左, 1:上)
         "exclusionType": 1,         //互斥:1
-        "text": "",                  //如果有文本内容,上面的值都置空
-        "symptomType": 0,         //0:默认值 1:主症状特有 2:伴随症状特有
+        "text": "",                 //如果有文本内容,上面的值都置空
+        "symptomType": 0,           //0:默认值 1:主症状特有 2:伴随症状特有
       }
       let sonQuestionMap = {     //目前只在既往史中用到,同层数据置空
           "id": "",
@@ -129,7 +129,7 @@ export default {
         }
         mapping.sonQuestion = tmpData[0];    //{sonQuestion:18}
         tmpArr.push(mapping)
-      }else if (type == 4 || type == 3) { //横铺展开(如咳嗽)
+      }else if (type == 4 || type == 3 || type == 7) { //横铺展开(如咳嗽)
         mapping.formPosition = 0;
         mapping.exclusionType = 0;
         mapping.symptomType = dataArr[i].symptomType
@@ -142,7 +142,9 @@ export default {
           mapping.sonQuestion = dataArr[i].id
           tmpArr.push(mapping)
         }
-       
+      } else if(type == 11) {    //推送症状类型(添加症状)
+        mapping.sonQuestion = dataArr[i].id
+        tmpArr.push(mapping)
       }
     }
     return tmpArr;
@@ -173,6 +175,7 @@ export default {
   transformKeys(data){
     const maps = {
       "controlType": 'region2',                            //控件类型(0:默认值 1:下拉单选 2:下拉多选 6:文本框 7:数字键盘文本框 99:联合推送)
+      "tagType": 'region2',              //标签类型
       "id": "id",                                    //新增id置空
       "type": 'region1',                //标签归属
       "tagName": 'region3',             //系统名称

+ 0 - 1
src/components/icss/AddDeptInfo.vue

@@ -11,7 +11,6 @@
                 <el-form-item label="描述:" prop="remark">
                     <el-input type="textarea" :rows="3" placeholder="请输入科室描述" v-model="form.remark" maxlength="1024"></el-input>
                 </el-form-item>
-                </el-form-item>
                 <el-button size="small" type="primary" @click="addOrga">{{text}}</el-button>
             </el-form>
         </div>

+ 28 - 10
src/components/icss/BloodPressTagGroup.vue

@@ -71,6 +71,10 @@ export default {
             default: '',
             type: String
         },
+        options: {
+            default: () => [],
+            type: Array
+        },
     },
     data() {
         return {
@@ -86,15 +90,30 @@ export default {
         }
     },
     mounted() {
+        this.rightTagsList2 = this.options
+        let newArr = []
+        for (let i = 0; i < this.rightTagsList2.length; i++) {
+            if(this.rightTagsList2[i].tagType == 8) {
+                newArr.push({ text: this.rightTagsList2[i].tagName ,type:'input' ,id: i+',,,'})
+            } else {
+                if(i === 0 ) {
+                    newArr.push({ text: '' ,type:'input' ,id: i+',,,'})
+                }
+                newArr.push(this.rightTagsList2[i])
+                if(!this.rightTagsList2[i+1] || this.rightTagsList2[i+1]&&this.rightTagsList2[i+1].tagType != 8) {
+                    newArr.push({ text: '' ,type:'input' ,id: i+',,,,'})
+                }
+            }
+        }
+        this.rightTagsList2 = newArr
+        this.$emit('changeActionData',this.rightTagsList2, false);
         this.searchTagList()
         // this.leftTagsList = this.pool
         // console.log('TAGPOOL', this.pool)
     },
     watch: {
         pool(newVal, preVal) {
-            if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
-                this.leftTagsList = newVal
-            }
+          this.leftTagsList = newVal
         },
         searchVal(newVal, preVal){
             if(newVal.trim() == ''){
@@ -112,7 +131,7 @@ export default {
                     this.rightTagsList2 = [];
                     this.selectRightTagsList = [];
                     this.searchVal = '';
-                     this.searchTagList();
+                    //  this.searchTagList();
                 }
             }
         },
@@ -220,20 +239,19 @@ export default {
         searchTagList() {
             let notIds = []
             for (let i = 0; i < this.rightTagsList.length; i++) {
-                if(this.rightTagsList[i].id) {
-                    notIds.push(this.rightTagsList[i].id)
+                 if(typeof this.rightTagsList2[i].id === 'number') {
+                    notIds.push(this.rightTagsList2[i].id)
                 }
                 
             }
-            let param = {
+            let param1 = api.getGroupParams(3);            
+            let param2 = {
                 "tagName": this.searchVal,
-                "tagType": [1, 2],
-                "controlType": [],
                 "type": this.type || '',
                 "notIds": notIds,
                 "sexType": this.sexType,
-
             }
+            let param = Object.assign(param1,param2)
             api.searchTagList(param).then((res) => {
                 if (res.data.code === '0') {
                     this.leftTagsList = res.data.data

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

@@ -1,6 +1,6 @@
 <template>
     <div>
-        <crumbs title="独立标签维护" style="min-width: 1085px">
+        <crumbs title="独立标签维护">
             <el-form :inline="true" class="demo-form-inline">
                 <!--<el-form-item label="标签类型:">
                     <el-select size="mini" v-model="filter.tagType[0]" placeholder="标签类型" clearable>

+ 329 - 0
src/components/icss/InspactTagGroup.vue

@@ -0,0 +1,329 @@
+<template>
+    <div class="symptomTagGroupWrapper clearfix">
+    <div class="bottomPartLeft">
+      <p class="poolTitle">标签池</p>
+      <div class="pool">
+        <el-input
+          placeholder="请输入搜索内容"
+          v-model="searchVal"
+        >
+            <i
+                slot="prefix"
+                class="el-input__icon el-icon-search"
+            ></i>
+        </el-input>
+        <ul class="tagList tagPool">
+            <li v-for="(item, index) in leftTagsList"
+                class = "tagItem"
+                :key='item.id'
+                :title="'[ '+item.tagName+' ]'"
+                :style="getStyle(item)?styles:null"
+                @click='selectLeftTag(item, index, $event)'
+            >
+                <p class="tagName ellipsis" >{{item.tagName}} </p>
+            </li>
+        </ul>
+      </div>
+    </div>
+    <div class="bottomPartMid fl">
+        <p><span class="el-icon-arrow-right" @click="toRightList"></span></p>
+        <p><span class="el-icon-arrow-left" @click="toLeftList"></span></p>
+    </div>
+    <div class="bottomPartRight inspectBottomPartRight">
+      <p class="poolTitle">操作界面:</p>
+      <ul class="tagList operationPool">
+            <li class = "tagItem"
+                v-for="(item) in rightTagsList2" 
+                :key='item.id'
+                :style="getStyle2(item)?styles:null"
+                @click='selectRightTag(item)'
+            >   
+                <p v-if="item.tagName" class="tagName">{{item.tagName}} </p>
+            </li>
+        </ul>
+    </div>
+  </div>
+</template>
+<script>
+import api from '@api/icss.js';
+import utils from '@api/utils.js';
+
+export default {
+    name: "InspactTagGroup",
+    props: {
+        pool: {
+            default: () => [],
+            type: Array
+        },
+        type: {
+            default: '',
+            type: String
+        },
+        sexType: {
+            default: '',
+            type: String
+        },
+        options: {
+            default: () => [],
+            type: Array
+        }
+    },
+    data() {
+        return {
+            leftTagsList: [],
+            selectLeftTagsList: [],
+            rightTagsList: [],
+            rightTagsList2: [],
+            selectRightTagsList: [],
+            searchVal: '',
+            styles:{
+                background:'#eae7e7'
+            },
+        }
+    },
+    mounted() {
+      this.$nextTick(()=>{
+        this.rightTagsList = this.options
+        this.rightTagsList2 = this.options
+        this.$emit('changeActionData',this.options, false);
+        this.searchTagList()
+      })
+    },
+    watch: {
+        pool(newVal, preVal) {
+            if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+                this.leftTagsList = newVal
+            }
+        },
+        searchVal(newVal, preVal){
+            if(newVal.trim() == ''){
+                this.searchTagList()
+            }else if(newVal.trim() != preVal.trim()){
+                this.searchTagList()
+            }
+        },
+        sexType(newVal, preVal) {
+            if (newVal != preVal) {
+                if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+                    this.leftTagsList = [];
+                    this.selectLeftTagsList = [];
+                    this.rightTagsList = [];
+                    this.rightTagsList2 = [];
+                    this.selectRightTagsList = [];
+                    this.searchVal = '';
+                     this.searchTagList();
+                }
+            }
+        },
+
+        
+    },
+    methods: {
+        selectLeftTag(tag, index, e) {
+            const hasTag = this.isHasTag(tag, this.selectLeftTagsList)
+            if (hasTag) {
+                this.selectLeftTagsList = this.selectLeftTagsList.filter(item => item.id !== tag.id)
+            } else {
+                this.selectLeftTagsList.push(tag);
+            }
+        },
+        selectRightTag(tag) {
+            const hasTag = this.isHasTag(tag, this.selectRightTagsList)
+            if (hasTag) {
+                this.selectRightTagsList = this.selectRightTagsList.filter(item => item.id !== tag.id)
+            } else {
+                this.selectRightTagsList.push(tag);
+            }
+            
+        },
+        isHasTag(item, arr) {
+            for ( let i = 0; i <arr.length; i++) {
+                if(arr[i].id === item.id) {
+                    return true;
+                }
+            }
+            return false;
+        },
+        getStyle(item){       //左侧选中状态
+            // console.log('selected',utils.filterArr(this.leftTagsList,item,2))
+            // return utils.filterArr(this.selectLeftTagsList,item,2)
+            return this.isHasTag(item, this.selectLeftTagsList)
+        },
+        getStyle2(item) {
+            // return utils.filterArr(this.selectRightTagsList,item,2)
+            return this.isHasTag(item, this.selectRightTagsList)
+        },
+        toLeftList() {
+            // if(!this.searchVal) {
+            //     this.leftTagsList = this.searchTagList()
+            // }
+            
+            for (let i = 0; i < this.selectRightTagsList.length; i++) {
+                this.rightTagsList = this.rightTagsList.filter(item => item.id !== this.selectRightTagsList[i].id)
+            }
+            for (let i = 0; i < this.selectRightTagsList.length; i++) {//每次往回移时同时删掉下面输入框
+                if (this.selectRightTagsList[i].type !== 'input') {
+                    for (let j = 0; j < this.rightTagsList2.length; j++) {
+                        if(this.selectRightTagsList[i].id === this.rightTagsList2[j].id) {
+                            this.rightTagsList2.splice(j, 1)
+                        }
+                    }
+                }
+            }
+            this.selectLeftTagsList = []
+            this.selectRightTagsList = []
+            this.searchTagList()
+            this.$emit('changeActionData',this.rightTagsList2, false);
+        },
+        toRightList() {
+            this.rightTagsList.push(...this.selectLeftTagsList);
+            // let textItem = { text: ',' ,type:'input' }
+            for (let i = 0; i < this.selectLeftTagsList.length; i++) { //选中标签每个加入输入框,默认为逗号
+                this.rightTagsList2.push(this.selectLeftTagsList[i]);
+            }
+            
+            for (let i = 0; i < this.rightTagsList.length; i++) {
+                this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
+            }
+            this.selectLeftTagsList = []
+            this.selectRightTagsList = []
+            this.$emit('changeActionData',this.rightTagsList2, false);
+        },
+        searchTagList() {
+            let notIds = []
+            for (let i = 0; i < this.rightTagsList.length; i++) {
+                if(this.rightTagsList[i].id) {
+                    notIds.push(this.rightTagsList[i].id)
+                }
+            }
+            let param1 = api.getGroupParams(7);
+            let param2 = {
+                "tagName": this.searchVal,
+                "type": this.type || '',
+                "notIds": notIds,
+                "sexType": this.sexType,
+            }
+            let param = Object.assign(param1,param2)
+            api.searchTagList(param).then((res) => {
+                if (res.data.code === '0') {
+                    this.leftTagsList = res.data.data
+                    this.selectLeftTagsList = []
+                    this.selectRightTagsList = []
+                }
+            })
+           
+        },
+    }
+}
+</script>
+
+<style lang="less" >
+@import '../../less/common.less';
+.symptomTagGroupWrapper {
+    .bottomPartLeft {
+        width: 30%;
+        box-sizing: border-box;
+        float: left;
+    }
+    .poolTitle {
+        // border-bottom: 1px solid @icssBorder;
+        box-sizing: border-box;
+        margin-bottom: 20px;
+    }
+    .pool {
+        // border:1px solid @icssBorder;
+    
+    }
+    .search {
+        width: 100%;
+        border-bottom: 1px solid @icssBorder;
+        box-sizing: border-box;
+        height: 30px;
+    }
+    .tagList {
+        border: 1px solid @icssBorder;
+    }
+    .tagPool {
+        height: 300px;
+        overflow-y: auto;
+
+    }
+    .attributeBox {
+        position: absolute;
+        right: -100px;
+        top: 2px;
+    }
+    .tagItem {
+        position: relative;
+        line-height: 30px;
+        cursor: pointer;
+        padding: 0 10px;
+    }
+    .operationPool {
+        position: relative;
+        width: 60%;
+        min-height: 300px;
+        padding: 10px 0;
+    }
+    .tagName:before {
+        content: '['
+    }
+    .tagName::after {
+        content: ']'
+    }
+    .bottomPartMid {
+        width: 8%;
+        margin-top: 60px;
+        p {
+        width: 100%;
+        text-align: center;
+        span {
+            cursor: pointer;
+            display: inline-block;
+            width: 30px;
+            height: 40px;
+            line-height: 40px;
+            margin: 0 auto;
+            border: 1px solid @icssBorder;
+            margin-bottom: 15px;
+            font-size: 18px;
+        }
+        }
+    }
+    .bottomPartRight {
+        float: left;
+        width: 40%;
+    }
+    .buttonBox {
+        width: 10%;
+        float: left;
+    }
+    .followButton {
+        margin-top: 20px;
+    }
+    .tagAttribute {
+       border: 1px solid @icssBorder;
+       height: 17px;
+       line-height: 17px;
+       padding: 3px 5px;
+       border-radius: 10px;
+    }
+    .inputBox {
+        width: 120px;
+        .el-input {
+            .el-input__inner {
+                height: 30px;
+                background: rgb(234, 231, 231);
+            }
+        }
+    }
+    .closeTagAttribute {
+        position: absolute;
+        top: -5px;
+        right: -5px;
+    }
+    .active {
+        color: #aBcdef;
+    }
+}
+</style>

+ 15 - 3
src/components/icss/LabelGroup.vue

@@ -108,7 +108,7 @@ export default {
         },
         getDropList() {
             return api.getDropList().then((res) =>{
-                console.log('dropList', res)
+                // console.log('dropList', res)
                 if(res.data.code === '0') {
                     this.Adscriptions = res.data.data[1];
                     this.tagTypes =  res.data.data[3];
@@ -147,8 +147,20 @@ export default {
         addTagGroup() {
             this.$router.push({path:'LT-YXSJWH-TJBQZ'})
         },
-        modifyTagGroup() {
-            console.log('修改产品线');
+        modifyTagGroup(row) {
+            api.detailsTag({id:row.id,sexType:row.sexType,age:row.age}).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:'AddLabelGroup',params:{isEdit:true,data:item}});
+                }else{
+                    this.$message({
+                    message: msg,
+                    type: 'warning'
+                    });
+                }
+            });
         },
         currentChange(next) {
             this.currentPage = next;

+ 42 - 7
src/components/icss/NoiseTemplate.vue

@@ -5,6 +5,7 @@
         @click="back"
       ></i> 标签组维护--添加标签组</div>
     <PubTagGroup
+      :editData="editData"
       @changeVal="changeVal"
       @changeSex="changeSex"
       @changeType="changeType"
@@ -12,7 +13,7 @@
       ref="submitForm"
     ></PubTagGroup>
     <div class="main">
-      <p class="title"> <i>*</i> 标签明细:</p>
+      <p v-if="dataPub.region1 != 6 && dataPub.region1 != 7 && dataPub.region1 != 8" class="title"> <i>*</i> 标签明细:</p>
       <PubTagPartDetail
         :pool="dataPub.tagPool"
         :type="dataPub.region1"
@@ -21,6 +22,7 @@
         :sexType="dataPub.region7"
         :tipLis="dataPub.tipLis"
         :choose="dataPub.region2 == 6?'multiple':'single'"
+        :options="editData.questionMapping"
         v-show="dataPub.region2 == 2 || dataPub.region2 == 6"
         @changeActionData="changeActionData"
       ></PubTagPartDetail>
@@ -29,17 +31,37 @@
         :pool="dataPub.tagPool" 
         :type="dataPub.region1"
         :sexType="dataPub.region7"
+        :options="editData.questionMapping"
         @changeActionData="changeActionData"
         >
       </SymptomTagGroup>
+      <InspactTagGroup 
+        v-if="dataPub.region2 == 7" 
+        :pool="dataPub.tagPool" 
+        :type="dataPub.region1"
+        :sexType="dataPub.region7"
+        :options="editData.questionMapping"
+        @changeActionData="changeActionData"
+        >
+      </InspactTagGroup>
       <BloodPressTagGroup 
         v-if="dataPub.region2 == 3" 
         :pool="dataPub.tagPool" 
         :type="dataPub.region1"
         :sexType="dataPub.region7"
+        :options="editData.questionMapping"
         @changeActionData="changeActionData"
         >
       </BloodPressTagGroup>
+      <SymptomPush
+        v-if="dataPub.region2 == 11" 
+        :pool="dataPub.tagPool" 
+        :type="dataPub.region1"
+        :sexType="dataPub.region7"
+        :options="editData.questionMapping"
+         @changeActionData="changeActionData"
+      >
+      </SymptomPush>
       <el-form
         v-if="dataPub.region2 == 2"
         class="order"
@@ -80,7 +102,9 @@
 import PubTagGroup from './PubTagGroup';
 import PubTagPartDetail from './PubTagPartDetail';
 import SymptomTagGroup from './SymptomTagGroup';
+import InspactTagGroup from './InspactTagGroup';
 import BloodPressTagGroup from './BloodPressTagGroup';
+import SymptomPush from './SymptomPush';
 import api from '@api/icss.js';
 import utils from '@api/utils.js';
 
@@ -89,6 +113,7 @@ export default {
   data() {
     return {
       dataPub: {},      //公用组件传的值都在这
+      editData:{},                    //编辑数据
       form: {
         currentOrder: '0',     //标签成文顺序
       },
@@ -100,6 +125,13 @@ export default {
       sendIds: [[], [], [], [], [], []],           //标签明细右侧操作数据
     }
   },
+  beforeMount:function(){
+    const {isEdit,data} = this.$route.params;
+    if(isEdit){
+      this.editData = data;
+      // console.log('回读数据', this.editData)
+    }
+  },
   computed: {
     newSign() {
       return this.dataPub.region2;
@@ -116,13 +148,13 @@ export default {
     back() { this.$router.go(-1) },
     changeVal(val) {    //子组件数据改变传递到父组件
       this.dataPub = val
-      console.log('公用组件传的值都在这', val)
+      // console.log('公用组件传的值都在这', val)
     },
     changeSex(sex) {       //性别改变,清空标签明细
-      console.log(sex)
+      // console.log(sex)
     },
     changeType(type) {        //填写单类型改变,标签明细左侧更新,右侧清空
-      console.log(type)
+      // console.log(type)
     },
     changeActionData(arr) {          //标签明细右侧数据id
       this.sendIds = arr
@@ -132,20 +164,21 @@ export default {
     },
     validatePass() {      //验证成功回调,调取接口
       //仍需验证标签明细是否选择
-      if (JSON.stringify(this.sendIds) == '[[],[],[],[],[],[]]') {
+      let type = this.dataPub.region1;
+      if (JSON.stringify(this.sendIds) == '[[],[],[],[],[],[]]' && type != 6 && type != 7 && type != 8) {
         this.$message({
           message: '请选择标签明细',
           type: 'warning'
         });
         return;
       }
-
       let detailLis = utils.dataRecombination(this.sendIds, this.dataPub.region2)
       let param = {
         "questionWrapper": {
           "controlType": 0,                            //控件类型(0:默认值 1:下拉单选 2:下拉多选 6:文本框 7:数字键盘文本框 99:联合推送)
-          "id": "",                                    //新增id置
+          "id": this.editData.id || '',                //新增id
           "type": this.dataPub.region1,                //标签归属
+          // "itemType":0,                                //0:是症状,1:不是症状
           "tagType": this.dataPub.region2,             //标签类型
           "tagName": this.dataPub.region3,             //系统名称
           "name": this.dataPub.region4,                //界面名称
@@ -204,6 +237,8 @@ export default {
     PubTagPartDetail,
     SymptomTagGroup,
     BloodPressTagGroup,
+    SymptomPush,
+    InspactTagGroup,
   }
 }
 </script>

+ 55 - 40
src/components/icss/PubTagGroup.vue

@@ -13,6 +13,7 @@
       >
         <span class="changeTips">改变归属后,标签明细将会恢复到默认状态</span>
         <el-select
+          :disabled="!!editData.id"
           v-model="form.region1"
           placeholder="请选择归属"
           @change="(e)=>readyChangeSelect(e,1)"
@@ -31,7 +32,7 @@
       >
         <span class="changeTips">改变类型后,标签明细将会恢复到默认状态</span>
         <el-select
-          :disabled="!form.region1"
+          :disabled="!!editData.id || !form.region1"
           v-model="form.region2"
           placeholder="请选择填写单类型"
           @change="(e)=>readyChangeSelect(e,2)"
@@ -44,6 +45,30 @@
           ></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item
+        label="性别:"
+        prop="region7"
+      >
+        <span class="changeTips">改变性别后,标签明细将会恢复到默认状态</span>
+        <el-select
+          v-model="form.region7"
+          :disabled="!!editData.id || !form.region1 || form.region2 == 11"
+          @change="(e)=>readyChangeSelect(e,3)"
+        >
+          <el-option
+            label="通用"
+            value="3"
+          ></el-option>
+          <el-option
+            label="男"
+            value="1"
+          ></el-option>
+          <el-option
+            label="女"
+            value="2"
+          ></el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item
         label="标签系统名称:"
         prop="region3"
@@ -98,30 +123,6 @@
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item
-        label="性别:"
-        prop="region7"
-      >
-        <span class="changeTips">改变性别后,标签明细将会恢复到默认状态</span>
-        <el-select
-          v-model="form.region7"
-          :disabled="!form.region1 || form.region2 == 11"
-          @change="(e)=>readyChangeSelect(e,3)"
-        >
-          <el-option
-            label="通用"
-            value="3"
-          ></el-option>
-          <el-option
-            label="男"
-            value="1"
-          ></el-option>
-          <el-option
-            label="女"
-            value="2"
-          ></el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item
         label="年龄:"
         prop="region8"
@@ -164,6 +165,7 @@
 </template>
 <script>
 import api from '@api/icss.js';
+import utils from '@api/utils.js';
 /**
  * titlePar 顶部显示左(有默认值可不填)
  * titleSub  顶部显示右(有默认值可不填)
@@ -187,9 +189,15 @@ import api from '@api/icss.js';
 
 
 export default {
+  props:['editData'],
   data() {
     var validatePass2 = (rule, value, callback) => {
-        this.validateSystomName(value,callback)
+        const editData = this.$props.editData;
+        if(editData.id && value == editData.tagName){ //修改系统名称没变就不再校验
+          callback();    
+        }else{
+          this.validateSystomName(value,callback)
+        }
     };
     return {
       form: {
@@ -211,7 +219,7 @@ export default {
       labelTypesMaps: {       //// 归属和填写单类型限制
         '1':['2','3','4','11'],
         '3':['4','6'],
-        '4':[,'2','3'],
+        '4':['2','3'],
         '5':['7'],
         '6':['9'],
         '7':['9'],
@@ -273,6 +281,12 @@ export default {
     },
   },
   mounted() {
+    const editData = this.$props.editData;
+    if(editData.id){
+      const trans = utils.transformKeys(editData);
+      // console.log('editData1', editData)
+      this.form = Object.assign({},this.form,trans);
+    }
     this.$emit('submitForm', 'groups', false);
     this.getDropList();
     this.$emit('changeVal', this.form, false)
@@ -280,16 +294,16 @@ export default {
   watch: {
     newSex(nextVal, prevVal) {
       this.tmpSex = prevVal;
+      if (nextVal != prevVal || this.form.region2 == 2 || this.form.region2 == 6 || this.form.region2 == 7 || this.form.region2 == 9) {
+        this.searchTagList()
+      }
     },
     newType(nextVal, prevVal) {
       this.tmpOwn = prevVal;
-      if (nextVal != prevVal) {
-        this.searchTagList()
-      }
     },
     newSign(nextVal, prevVal) {
       this.tmpType = prevVal;
-      if (nextVal != prevVal && JSON.stringify(this.form.tagPool) != '[]' ) {
+      if (nextVal != prevVal || this.form.region2 == 2 || this.form.region2 == 6 || this.form.region2 == 7 || this.form.region2 == 9) {
         this.searchTagList()
       }
     },
@@ -302,18 +316,21 @@ export default {
           this.labelTypesList = res.data.data[2];
           this.form.order = res.data.data[5];
           this.form.tipLis = res.data.data[6];
-           this.Adscriptions = this.AdscriptionsList.filter(item => Object.keys(this.labelTypesMaps).indexOf(item.val) > -1)
+          this.labelTypes = this.labelTypesList;
+          // console.log('labelTypes', this.labelTypes)
+          this.Adscriptions = this.AdscriptionsList.filter(item => Object.keys(this.labelTypesMaps).indexOf(item.val) > -1);
         }
       })
     },
     searchTagList() {
       let region1 = this.form.region1, region2 = this.form.region2;
-      let param = {
+      let param1 = !!region2 ? api.getGroupParams(region2): {};
+      let param2 = {
         "type": region1,
-        "tagType": region2 == 2?[1]:(region2 == 6?[1,2,3,4,10]:[]),
-        "controlType":region2 == 2?[1,2]:[],
         "sexType": this.form.region7,
       }
+      let param = Object.assign(param1,param2)
+
       api.searchTagList(param).then((res) => {
         if (res.data.code === '0') {
           this.form.tagPool = res.data.data
@@ -324,8 +341,9 @@ export default {
       if(this.form.region3.trim() == ''){ return }
       let param = {
         "existName": this.form.region3,
-        "tagType":this.form.region2.split(''),
-        "type": this.form.region1
+        "tagType":this.form.region2.split(''),       
+        "type": this.form.region1,
+        "notTagType":[8],        //去掉文字标签查重
       }
       api.validateSystomName(param).then((res) => {
         if (res.data.code === '0') {
@@ -347,15 +365,12 @@ export default {
     changeSex(data) {   //改变性别清空数据
       this.$emit('changeVal', this.form, false)
       this.$emit('changeSex', data, false)
-      this.searchTagList()
     },
     readyChangeSelect(tmpData,type) {
       if(type === 1) {
         this.form.region2 = '';
         this.labelTypes = this.labelTypesList.filter(item => this.labelTypesMaps[tmpData].indexOf(item.val) > -1)
-        
       }
-      console.log(tmpData)
       this.changeSex(tmpData);
       // if(type == 3){
       //   this.form.region7 = this.tmpSex;

+ 52 - 10
src/components/icss/PubTagPartDetail.vue

@@ -123,6 +123,10 @@ export default {
       default: 'single',      //multiple 多选 single 单选
       type: String
     },
+    options: {
+        default: () => [],
+        type: Array
+    }
   },
   data() {
     return {
@@ -142,8 +146,40 @@ export default {
       notIds:[],               //去重IDs
       multipleItem:[],         //右侧选中的单条标签
       currentTipLis:[],         //右侧选中的标签提示
+      tmpNum:0,
     }
   },
+  mounted(){
+    this.$nextTick(()=>{
+      let tagList = this.options;
+      if(tagList.length > 0){
+        let tmpArr = [[],[],[],[],[],[]];
+        this.tmpNum = 1
+        if(tagList[0].formPosition == 1){
+          tagList.map((val,idx)=>{
+            if(this.sign == 2) {     //杂音修改
+                tmpArr[idx].push(val)
+            }else{       //既往史修改
+              tmpArr[idx] = val.questionMapping
+            }
+          })
+        }else{
+          tagList.map((val,idx)=>{
+            if(this.sign == 2) {     //杂音修改
+                tmpArr[idx+1].push(val)
+            }else{       //既往史修改
+              tmpArr[idx+1] = val.questionMapping
+            }
+          })
+        }
+        
+        this.poolDetailList = tmpArr
+        this.poolDetailListAll = Array.prototype.concat.apply([],this.poolDetailList);     //二维转一维
+        this.searchTagList()
+        this.getPoolDetailListTips();
+      }
+    })
+  },
   watch: {
     pool(newVal, preVal) {
       this.currentPool = newVal
@@ -155,19 +191,19 @@ export default {
     },
     sexType(newVal, preVal) {
       if (newVal != preVal) {
-        if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+        if (JSON.stringify(newVal) != JSON.stringify(preVal) && this.tmpNum != 1) {
           this.clearData()
         }
       }
     },
     sign(newVal, preVal) {
-      if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+      if (JSON.stringify(newVal) != JSON.stringify(preVal) && this.tmpNum != 1) {
         this.clearData()
       }
     },
     type(newVal, preVal) {
-      if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
-        this.clearData()
+      if (JSON.stringify(newVal) != JSON.stringify(preVal) && this.tmpNum != 1) {
+        // this.clearData()
       }
     },
     searchVal(newVal, preVal){
@@ -195,11 +231,14 @@ export default {
     },
     selectTagOne(e,id,n){
       e.stopPropagation()
+      if(this.activePartSon != n){
+        this.multipleItem = []
+      }
       this.activePartSon = n
       this.activePart = -1
       this.selectArr = [false, false, false, false, false, false]
       this.poolDetailListAll = Array.prototype.concat.apply([],this.poolDetailList);     //二维转一维
-      if(utils.filterArr(this.multipleItem,id,2)){
+      if(utils.filterArr(this.multipleItem,id,2)){     //选中的有没有单列的小项,有去掉
         let tmpArr = utils.filterArr(this.multipleItem,id,1);
         this.multipleItem = tmpArr;
       }else{
@@ -294,14 +333,16 @@ export default {
         ids.push(value.id)
       })
       this.notIds = ids;
-      let param = {
+      
+      let param1 = !!this.sign ? api.getGroupParams(this.sign): {};
+      let param2 = {
         "tagName": this.searchVal || '',
         "type": this.type,
         "notIds": this.notIds,
-        "tagType": this.sign == 2?[1]:(this.sign == 6?[1,2,3,4,10]:[]),
-        "controlType":this.sign == 2?[1,2]:[],
         "sexType": this.sexType,
       }
+      let param = Object.assign(param1,param2)
+
       api.searchTagList(param).then((res) => {
         if (res.data.code === '0') {
           this.currentPool = res.data.data
@@ -387,7 +428,7 @@ export default {
             tmpArr.push(res.data.data[idStr]);
             this.selectArr.map((flg,idx)=>{         //判断右侧有没有选中
               if(flg){    //有选中
-                if(idx == 0 && res.data.data[idStr].questionDetailList && res.data.data[idStr].questionDetailList.length > 1){
+                if(idx == 0 && res.data.data[idStr].questionDetailList && res.data.data[idStr].questionDetailList.length != 1){
                   this.$message({
                     showClose: true,
                     message: '添加的数据有误',
@@ -396,7 +437,7 @@ export default {
                   return;
                 }
                 let ids = [];
-                this.poolDetailList[idx] = tmpArr;
+                this.poolDetailList[idx] = tmpArr;     //单选的数据
                 this.poolDetailListAll = Array.prototype.concat.apply([],this.poolDetailList);     //二维转一维
                 this.searchTagList();
                 this.getPoolDetailListTips();
@@ -417,6 +458,7 @@ export default {
               }
               this.currentLis = [];       //左侧选中数据清空
             })
+            // console.log('单选的数据',this.poolDetailList)
           }else{           //判断是多选
             let num = 0,tmpArr = [];
             this.currentLis.map((id)=>{

+ 374 - 0
src/components/icss/SymptomPush.vue

@@ -0,0 +1,374 @@
+<template>
+    <div class="symptomPushWrapper clearfix">
+    <div class="symptomPushBottomPartLeft">
+      <p class="symptomPushPoolTitle">标签池</p>
+      <div class="symptomPushPool">
+        <el-input
+          placeholder="请输入搜索内容"
+          v-model="searchVal"
+        >
+            <i
+                slot="prefix"
+                class="el-input__icon el-icon-search"
+            ></i>
+        </el-input>
+        <ul class="symptomPushTagList symptomPushTagPool">
+            <li v-for="(item, index) in leftTagsList"
+                class = "symptomPushTagItem"
+                :key='item.id'
+                :title="'[ '+item.tagName+' ]'"
+                :style="getStyle(item)?styles:null"
+                @click='selectLeftTag(item, index, $event)'
+            >
+                <p class="symptomPushTagName ellipsis" >{{item.tagName}} </p>
+            </li>
+        </ul>
+      </div>
+    </div>
+    <div class="symptomPushBottomPartMid fl">
+        <p><span class="el-icon-arrow-right" @click="toRightList"></span></p>
+        <p><span class="el-icon-arrow-left" @click="toLeftList"></span></p>
+    </div>
+    <div class="symptomPushBottomPartRight ">
+      <p class="symptomPushPoolTitle">操作界面:</p>
+      <ul v-for="(item, index) in rightTagsList" 
+            :key="index"    
+            class="symptomPushTagList symptomPushOperationPool"
+            :class="index === 1&&item.id ? 'symptomPushOperationPoolPush':'' "
+            :style="currentSelectIndex === index?styles:null"
+            @click="SelectList(index)"
+      >
+             
+            <li v-if="index===1" class = "symptomPushTagItemPushBox">   
+                <p class = "symptomPushTagItemPush" v-if="index===1">此处放置推送模块</p>
+            </li>
+            <li 
+                v-for="(it) in item.questionDetailList"
+                :key = "it.id"
+                class = "symptomPushTagItem">   
+                {{it.name}}
+            </li>
+        </ul>
+    </div>
+  </div>
+</template>
+<script>
+import api from '@api/icss.js';
+import utils from '@api/utils.js';
+
+export default {
+    name: "SymptomPush",
+    props: {
+        pool: {
+            default: () => [],
+            type: Array
+        },
+        type: {
+            default: '',
+            type: String
+        },
+        sexType: {
+            default: '',
+            type: String
+        },
+        options: {
+            default: () => [],
+            type: Array
+        }
+    },
+    data() {
+        return {
+            leftTagsList: [],
+            selectLeftTagId: {},
+            rightTagsList: [{}, {}],
+            currentSelectIndex: -1,
+            searchVal: '',
+            styles:{
+                background:'#eae7e7'
+            },
+        }
+    },
+    mounted() {
+        if(this.options.length) {
+            if(this.options.length === 2) {     //当两个模块都有值时
+                this.rightTagsList = this.options
+                this.$emit('changeActionData',this.rightTagsList, false);
+                
+            } else if(this.options.length === 1) {
+                this.options[0].controlType == 99 ? this.rightTagsList.splice(1, 1, this.options[0]) :this.rightTagsList.splice(0, 1, this.options[0])
+            }
+            this.searchTagList()
+        }
+    },
+    watch: {
+        pool(newVal, preVal) {
+            if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+                this.leftTagsList = newVal
+            }
+        },
+        searchVal(newVal, preVal){
+            if(newVal.trim() == ''){
+                this.searchTagList()
+            }else if(newVal.trim() != preVal.trim()){
+                this.searchTagList()
+            }
+        },
+        sexType(newVal, preVal) {
+           
+        },
+
+        
+    },
+    methods: {
+        selectLeftTag(tag, index, e) {
+            let isFull = true
+            for(let i = 0; i < this.rightTagsList.length; i++) {
+                if(Object.keys(this.rightTagsList[i]).length === 0) {
+                    isFull = false
+                    break;
+                }
+            }
+            if (isFull && this.currentSelectIndex === -1) {
+                return
+            }
+           this.selectLeftTagId = tag
+           console.log(this.selectLeftTagId)
+        },
+        
+        getStyle(item){       //左侧选中状态
+            return item.id == this.selectLeftTagId.id
+        },
+        
+        toLeftList() {
+            if(this.currentSelectIndex === -1) {
+                return
+            }
+            this.rightTagsList.splice(this.currentSelectIndex, 1, { })
+            this.selectLeftTagId = {}
+            this.searchTagList()
+            this.$emit('changeActionData',this.rightTagsList, false);
+        },
+        toRightList() {
+            if(Object.keys(this.selectLeftTagId).length === 0) { //判断标签池有没有选中标签
+                this.$message({
+                    showClose: true,
+                    message: '请选择标签池',
+                    type: 'warning'
+                });
+                return
+            }
+            let fillIndex = -1
+            if(this.currentSelectIndex === -1) {    //操作界面没有选择模块时
+                for(let i = 0; i < this.rightTagsList.length; i++) {
+                    if(Object.keys(this.rightTagsList[i]).length === 0) {
+                        fillIndex = i
+                        break
+                     }
+                }
+
+            } else {
+                fillIndex = this.currentSelectIndex
+            }
+            if(fillIndex === -1) {
+                this.$message({
+                    showClose: true,
+                    message: '请选择标签池',
+                    type: 'warning'
+                });
+                return;
+            } else {
+                this.getcontrolType(fillIndex)
+            }
+            
+           
+        },
+        getcontrolType(fillIndex) {
+            if(fillIndex === 0) {
+                    if(this.selectLeftTagId.controlType != 99) {
+                        this.getRighDetailsTag(fillIndex)
+                    } else {
+                        this.$message({
+                            showClose: true,
+                            message: '请选择正确的标签类型',
+                            type: 'warning'
+                        });
+                        return;
+                    }  
+                    
+                } else if (fillIndex === 1) {
+                    if(this.selectLeftTagId.controlType == 99) {
+                        this.rightTagsList.splice(fillIndex, 1, this.selectLeftTagId)
+                         this.searchTagList()
+                        this.$emit('changeActionData',this.rightTagsList, false);
+                    } else {
+                        this.$message({
+                            showClose: true,
+                            message: '请选择正确的标签类型',
+                            type: 'warning'
+                        });
+                        return;
+                    }
+                }
+        },
+        searchTagList() {
+            let notIds = []
+            for (let i = 0; i < this.rightTagsList.length; i++) {
+                if(this.rightTagsList[i].id) {
+                    notIds.push(this.rightTagsList[i].id)
+                }
+                
+            }
+            let param = {
+                "tagName": this.searchVal,
+                "tagType": [1],
+                "controlType": [1,2,99],
+                "type": this.type || '',
+                "notIds": notIds,
+                "sexType": this.sexType,
+
+            }
+            api.searchTagList(param).then((res) => {
+                if (res.data.code === '0') {
+                    this.leftTagsList = res.data.data
+                }
+            })
+           
+        },
+        getRighDetailsTag(fillIndex) {
+            let param = {
+                // "age": 0,
+                "id":  this.selectLeftTagId.id,
+                // "sexType": 3
+            }
+             api.detailsTag(param).then((res) =>{
+                 if (res.data.code === '0') {
+                     this.selectLeftTagId = res.data.data
+                     if(this.currentSelectIndex !== -1) {
+                        //    this.rightTagsList[this.currentSelectIndex] = this.selectLeftTagId;
+                        this.rightTagsList.splice(this.currentSelectIndex, 1, this.selectLeftTagId)
+                    } else {
+                        for(let i = 0; i < this.rightTagsList.length; i++) {
+                            if(Object.keys(this.rightTagsList[i]).length === 0) {
+                                this.rightTagsList.splice(i, 1, this.selectLeftTagId)
+                                break;
+                            }
+                        }
+                    }
+                    this.searchTagList()
+                    this.$emit('changeActionData',this.rightTagsList, false);
+                 }
+             })
+        },
+        SelectList(index) {
+            
+            this.currentSelectIndex = this.currentSelectIndex === index ? -1 : index;
+        }
+    }
+}
+</script>
+
+<style lang="less" >
+@import '../../less/common.less';
+.symptomPushWrapper {
+    .symptomPushBottomPartLeft {
+        width: 30%;
+        box-sizing: border-box;
+        float: left;
+    }
+    .symptomPushPoolTitle {
+        // border-bottom: 1px solid @icssBorder;
+        box-sizing: border-box;
+        margin-bottom: 20px;
+    }
+    .symptomPushPool {
+        // border:1px solid @icssBorder;
+    
+    }
+    .symptomPushSearch {
+        width: 100%;
+        border-bottom: 1px solid @icssBorder;
+        box-sizing: border-box;
+        height: 30px;
+    }
+    .symptomPushTagList {
+        border: 1px solid @icssBorder;
+    }
+    .symptomPushTagPool {
+        height: 300px;
+        overflow-y: auto;
+
+    }
+    .symptomPushOperationPoolPush {
+        border: 1px dashed @icssBorder;
+    }
+    .symptomPushTagItem {
+        position: relative;
+        line-height: 30px;
+        cursor: pointer;
+        padding: 0 10px;
+    }
+    .symptomPushOperationPool {
+        position: relative;
+        width: 30%;
+        min-height: 300px;
+        padding: 10px 0;
+        float: left;
+    }
+    .symptomPushTagName:before {
+        content: '['
+    }
+    .symptomPushTagName::after {
+        content: ']'
+    }
+    .symptomPushBottomPartMid {
+        width: 8%;
+        margin-top: 60px;
+        p {
+        width: 100%;
+        text-align: center;
+        span {
+            cursor: pointer;
+            display: inline-block;
+            width: 30px;
+            height: 40px;
+            line-height: 40px;
+            margin: 0 auto;
+            border: 1px solid @icssBorder;
+            margin-bottom: 15px;
+            font-size: 18px;
+        }
+        }
+    }
+    .symptomPushBottomPartRight {
+        float: left;
+        width: 60%;
+    }
+    .symptomPushButtonBox {
+        width: 10%;
+        float: left;
+    }
+    .symptomPushFollowButton {
+        margin-top: 20px;
+    }
+    .symptomPushInputBox {
+        width: 120px;
+        .el-input {
+            .el-input__inner {
+                height: 30px;
+                background: rgb(234, 231, 231);
+            }
+        }
+    }
+    .symptomPushTagItemPushBox {
+        text-align: center
+    }
+    .symptomPushTagItemPush {
+        display: inline-block;
+        padding: 5px 10px;
+    }
+
+    .active {
+        color: #aBcdef;
+    }
+}
+</style>

+ 44 - 13
src/components/icss/SymptomTagGroup.vue

@@ -83,6 +83,10 @@ export default {
             default: '',
             type: String
         },
+        options: {
+            default: () => [],
+            type: Array
+        }
     },
     data() {
         return {
@@ -98,15 +102,42 @@ export default {
         }
     },
     mounted() {
-        this.searchTagList()
+      this.$nextTick(()=>{
+        let tagList = this.options;
+        if(tagList.length > 0){
+          console.log(99)
+          this.rightTagsList2 = this.options
+          let newArr = []
+          for (let i = 0; i < this.rightTagsList2.length; i++) {
+              if(this.rightTagsList2[i].tagType == 8) {
+                  newArr.push({ text: this.rightTagsList2[i].tagName ,type:'input' ,id: i+',,,'})
+              } else {
+                  if(i === 0 ) {
+                      newArr.push({ text: '' ,type:'input' ,id: i+',,,'})
+                  }
+                  newArr.push(this.rightTagsList2[i])
+                  if(!this.rightTagsList2[i+1] || this.rightTagsList2[i+1]&&this.rightTagsList2[i+1].tagType != 8) {
+                      newArr.push({ text: '' ,type:'input' ,id: i+',,,,'})
+                  }
+              }
+          }
+          this.rightTagsList2 = newArr
+          this.$emit('changeActionData',this.rightTagsList2, false);
+          this.searchTagList()
+        }
+      })
+        
         // this.leftTagsList = this.pool
         // console.log('TAGPOOL', this.pool)
     },
     watch: {
         pool(newVal, preVal) {
-            if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
-                this.leftTagsList = newVal
-            }
+             this.leftTagsList = newVal
+            // console.log('sdsadasdasdasdas11111111', newVal,'asds',preVal)
+            // if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+            //     console.log('sdsadasdasdasdas')
+            //     //  this.leftTagsList = newVal
+            // }
         },
         searchVal(newVal, preVal){
             if(newVal.trim() == ''){
@@ -124,7 +155,7 @@ export default {
                     this.rightTagsList2 = [];
                     this.selectRightTagsList = [];
                     this.searchVal = '';
-                     this.searchTagList();
+                    //  this.searchTagList();
                 }
             }
         },
@@ -147,7 +178,6 @@ export default {
             } else {
                 this.selectRightTagsList.push(tag);
             }
-            
         },
         isHasTag(item, arr) {
             for ( let i = 0; i <arr.length; i++) {
@@ -229,21 +259,22 @@ export default {
         },
         searchTagList() {
             let notIds = []
-            for (let i = 0; i < this.rightTagsList.length; i++) {
-                if(this.rightTagsList[i].id) {
-                    notIds.push(this.rightTagsList[i].id)
+            console.log('this.rightTagsList2',this.rightTagsList2)
+            for (let i = 0; i < this.rightTagsList2.length; i++) {
+                if(typeof this.rightTagsList2[i].id === 'number') {
+                    notIds.push(this.rightTagsList2[i].id)
                 }
                 
             }
-            let param = {
+            
+            let param1 = api.getGroupParams(4);            
+            let param2 = {
                 "tagName": this.searchVal,
-                "tagType": [1, 2],
-                "controlType": [],
                 "type": this.type || '',
                 "notIds": notIds,
                 "sexType": this.sexType,
-
             }
+            let param = Object.assign(param1,param2)
             api.searchTagList(param).then((res) => {
                 if (res.data.code === '0') {
                     this.leftTagsList = res.data.data

+ 8 - 2
src/routes.js

@@ -40,6 +40,9 @@ import PromptInfo from '@components/icss/PromptInfo.vue'//提示信息
 import AddPromptInfo from '@components/icss/AddPromptInfo.vue'//添加提示信息
 import SimilarName from '@components/icss/SimilarName.vue'//别名维护
 import AddSimilarName from '@components/icss/AddSimilarName.vue'//别名维护-详情
+import DisclaimerInformation from '@components/icss/DisclaimerInformation.vue'//免责声明
+import DiscInfoDetail from '@components/icss/DiscInfoDetail.vue'//免责声明-详情
+import AddDisclInfo from '@components/icss/AddDisclInfo.vue'//免责声明-添加
 export default [
   {
     path: '/',
@@ -138,7 +141,7 @@ export default [
       {path: 'LT-CPXGL-TJCPX', component: AddProductLine,name:'editProductLine'},
       {path: 'LT-GRZX/CHANGE',component: ChangePwd}, //个人中心--修改密码
       {path: 'LT-YXSJWH-BQZWH',component: LabelGroup}, //医学数据维护--标签组维护
-      {path:'LT-YXSJWH-TJBQZ',component:NoiseTemplate},     //医学数据维护--标签组维护--添加标签组
+      {path:'LT-YXSJWH-TJBQZ',component:NoiseTemplate,name:'AddLabelGroup'},     //医学数据维护--标签组维护--添加标签组
       {path:'LT-YXSJWH-KSWH',component:DeptInfo},     //医学数据维护--科室维护
       {path:'LT-YXSJWH-KSXQ',component:DeptInfoDetail,name:'DeptInfoDetail'},     //科室维护--详情
       {path:'LT-YXSJWH-TJKS',component:AddDeptInfo,name:'AddDeptInfo'},     //科室维护--添加
@@ -146,8 +149,11 @@ export default [
       {path:'LT-YXSJWH-TJDLBQ',component:AddIndeptLabel,name:'AddIndeptLabel'},     //独立标签维护--添加
       {path:'LT-YXSJWH-TSXXWH',component:PromptInfo,name:'PromptInfo'},         //提示信息维护
       {path:'LT-YXSJWH-TJTSXX',component:AddPromptInfo,name:'AddPromptInfo'},         //提示信息维护
-	  {path:'LT-YXSJWH-BMWH',component:SimilarName,name:'SimilarName'},     //别名维护
+	    {path:'LT-YXSJWH-BMWH',component:SimilarName,name:'SimilarName'},     //别名维护
       {path:'LT-YXSJWH-TJBM',component:AddSimilarName,name:'AddSimilarName'},     //别名维护-详情
+      {path:'LT-YXSJWH-MZSMWH',component:DisclaimerInformation,name:'DisclaimerInformation'},     //免责声明
+      {path:'LT-YXSJWH-MZSMXQ',component:DiscInfoDetail,name:'DiscInfoDetail'},     //免责声明-详情
+      {path:'LT-YXSJWH-TJMZSM',component:AddDisclInfo,name:'AddDisclInfo'},     //免责声明-添加
     ]
   }
 ]