zhangxc 6 years ago
parent
commit
4aaf8562de

File diff suppressed because it is too large
+ 11224 - 0
package-lock.json


+ 16 - 9
src/api/config.js

@@ -74,14 +74,18 @@ export default {
     'delServiceToken': '/api/diagbotman/serviceToken/deleteTokenByProductServiceId',//删除令牌
     'disableToken': '/api/diagbotman/serviceToken/disableToken',   //   禁用令牌
     'enableToken': '/api/diagbotman/serviceToken/enableToken',   //    启用令牌
-		'getConsoleOnTrial': '/api/diagbotman/productOrder/getConsoleOnTrial', //可试用产品
-		'openUpOnTrial': '/api/diagbotman/productOrder/openUpOnTrial', //  立即试用请求
-		'productAuthProgress': '/api/diagbotman/productOrder/productAuthProgress', //产品开通进度
-		'getConsoleOpened': '/api/diagbotman/productOrder/getConsoleOpened', // 控制台--已开通产品
-		'enShowOption': '/api/diagbotman/productOrder/enShowOption', //控制台--是否显示选项
-        'addRenewalsInfo': '/api/diagbotman/morServices/addRenewalsInfo', // 控制台--续费
-        'getAuthenProgress': '/api/user/userAuthentication/queryAuthProgress', // 控制台--账号认证进度
-		'intoVerify': '/api/diagbotman/productOrder/openProductCheck', // 控制台--进入验证
+    'getConsoleOnTrial': '/api/diagbotman/productOrder/getConsoleOnTrial', //可试用产品
+    'openUpOnTrial': '/api/diagbotman/productOrder/openUpOnTrial', //  立即试用请求
+    'productAuthProgress': '/api/diagbotman/productOrder/productAuthProgress', //产品开通进度
+    'getConsoleOpened': '/api/diagbotman/productOrder/getConsoleOpened', // 控制台--已开通产品
+    'enShowOption': '/api/diagbotman/productOrder/enShowOption', //控制台--是否显示选项
+    'addRenewalsInfo': '/api/diagbotman/morServices/addRenewalsInfo', // 控制台--续费
+    'getAuthenProgress': '/api/user/userAuthentication/queryAuthProgress', // 控制台--账号认证进度
+    'intoVerify': '/api/diagbotman/productOrder/openProductCheck', // 控制台--进入验证
+    /* 医学后台维护相关接口 */
+    'getDropList': 'api/icssman/dictionaryInfo/getList', //下来选项列表(标签类型、标签归属等)
+    'getTagList': 'api/icssman/questionInfo/list', //标签列表
+    'searchTagList': 'api/icssman/questionInfo/index', //标签池检索
 	},
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',
@@ -92,5 +96,8 @@ export default {
 		'LT-DDXT': 'el-icon-setting',
 		'LT-CPXGL': 'el-icon-upload',
 		'LT-GRZX': 'el-icon-news'
-	}
+  },
+  controlType:{
+    
+  }
 }

+ 18 - 0
src/api/icss.js

@@ -0,0 +1,18 @@
+import axios from 'axios';
+import config from '@api/config.js';
+
+const urls = config.urls;
+export default {
+    getDropList() {
+        return axios.post(urls.getDropList)
+    },
+    getTagList(param) {
+        return axios.post(urls.getTagList, param)
+    },
+    searchTagList(param) {
+        return axios.post(urls.searchTagList, param)
+    },
+    validateSystomName(param) {
+        return axios.post(urls.searchTagList, param)
+    },
+}

+ 194 - 0
src/components/icss/LabelGroup.vue

@@ -0,0 +1,194 @@
+<template>
+    <div>
+        <crumbs title="标签组维护" style="min-width: 1085px">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="标签类型:">
+                    <el-select size="mini" v-model="filter.tagType[0]" placeholder="标签类型" clearable>
+                        <el-option v-for="item in tagTypes" :label="item.name" :value="item.val" :key="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="标签归属:">
+                    <el-select size="mini" v-model="filter.tagAdscription" @change="getValue"  placeholder="标签归属" clearable>
+                        <el-option v-for="item in Adscriptions" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="标签系统名称:">
+                    <el-input size="mini" v-model="filter.tagSysName" placeholder="标签系统名称" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="primary" @click="addTagGroup">添加标签组</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="操作时间"
+                    width="180">
+                </el-table-column>
+                <el-table-column
+                    prop="typeCn"
+                    label="标签归属">
+                </el-table-column>
+                <el-table-column
+                    prop="tagTypeCn"
+                    label="标签类型">
+                </el-table-column>
+                <el-table-column
+                    prop="tagName"
+                    label="标签系统名称">
+                </el-table-column>
+                <el-table-column
+                    prop="modifier"
+                    label="操作人">
+                </el-table-column>
+                <el-table-column
+                    prop="operate"
+                    label="操作">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyTagGroup(scope.row)" type="text" size="small">修改</el-button>
+                        <el-button class="delete" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+
+        </div>
+        <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>
+</template>
+
+<script>
+import api from '@api/icss.js';
+
+export default {
+    name: 'tag-group',
+    data: function() {
+        return {
+            list: [],
+            tagTypes: [],
+            Adscriptions: [],
+            tagTypesList: [],
+            filter: {
+                tagType: [], //标签类型
+                tagAdscription: '', //标签归属
+                tagSysName: '', //标签系统名称
+            },
+            currentPage: 1,
+            pageSize: 10,
+            total: 0,
+        }
+    },
+    created() {
+        this.getDropList().then(() => {
+            this.getDataList()
+        })
+        
+    },
+    methods: {
+        getValue(val) {
+            console.log('changeVal', val, this.filter.tagAdscription)
+        },
+        getDropList() {
+            return api.getDropList().then((res) =>{
+                console.log('dropList', res)
+                if(res.data.code === '0') {
+                    this.Adscriptions = res.data.data[1];
+                    this.tagTypes =  res.data.data[3];
+                    for (var i = 0; i < this.tagTypes.length; i++) {
+                        this.tagTypesList.push(this.tagTypes[i].val)
+                    }
+                }
+                 
+            })
+        },
+        getDataList() {
+           console.log('data', this.tagTypesList)
+            const param = this.getFilterItems();
+            console.log('param', param)
+            api.getTagList(param).then((res) => {
+                const list = res.data.data.records
+                for (var i = 0; i < list.length; i++) {
+                    for (var j =  0; j < this.tagTypes.length; j++) {
+                        if(list[i].tagType === this.tagTypes[j].val) {
+                            list[i].tagTypeCn = this.tagTypes[j].name
+                        }
+                    }
+                    for (var z =  0; z < this.Adscriptions.length; z++) {
+                        if(list[i].type === this.Adscriptions[z].val) {
+                            list[i].typeCn = this.Adscriptions[z].name
+                        }
+                    }
+                   
+                }
+                this.list = list;
+                this.total = res.data.data.total;
+                console.log('tagGroup',res)
+            })
+        },
+        filterDatas() {
+            this.currentPage = 1;
+            this.getDataList();
+        },
+        addTagGroup() {
+            this.$router.push({path:'LT-YXSJWH-TJBQZ'})
+            console.log('添加产品线');
+        },
+        modifyTagGroup() {
+            console.log('修改产品线');
+        },
+        currentChange(next) {
+            this.currentPage = next;
+            this.getDataList();
+            // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+            //     this.list = this.cacheData[next];
+            // } else {
+            //     this.getDataList();
+            // }
+        },
+        getFilterItems() {
+            const param = {
+                tagTypeList: this.filter.tagType[0] && this.filter.tagType|| this.tagTypesList,
+                current: this.currentPage,
+                size: this.pageSize,
+                type: this.filter.tagAdscription,
+                tagName: this.filter.tagSysName
+            };
+            return param;
+        },
+        indexMethod(index) {
+            return ((this.currentPage - 1) * this.pageSize) + index + 1;
+        },
+        getTagType(val) {
+            return val
+        }
+    }
+}
+</script>
+
+
+<style lang="less">
+    .delete{
+       color: red
+    }
+    .delete:hover {
+        color: red;
+    } 
+</style>

+ 87 - 0
src/components/icss/NoiseTemplate.vue

@@ -0,0 +1,87 @@
+<template>
+  <div class="NoiseTemplateWrapper TemplateWrapper">
+    <div class="groupTitle"><i
+        class="el-icon-back"
+        @click="back"
+      ></i> 标签组维护--添加标签组</div>
+    <PubTagGroup @changeVal="changeVal" @validatePass="validatePass" ref="submitForm"></PubTagGroup>
+    <div class="main">
+      <p class="title"> <i>*</i> 标签明细:</p>
+      <PubTagPartDetail v-show="dataPub.region2 == 2"></PubTagPartDetail>
+      <SymptomTagGroup v-if="dataPub.region2 == 4" :dataPub ="this.dataPub"></SymptomTagGroup>
+      <div class="btn">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+/**
+ * dataPub.region2  判断底部显示哪些
+ */
+import PubTagGroup from './PubTagGroup';
+import PubTagPartDetail from './PubTagPartDetail';
+import SymptomTagGroup from './SymptomTagGroup';
+export default {
+  name:'NoiseTemplateWrapper',
+  data(){
+    return {
+      dataPub:{},      //公用组件传的值都在这
+    }
+  },
+  methods:{
+    back() {this.$router.go(-1)},
+    changeVal(val){    //子组件数据改变传递到父组件
+      this.dataPub = val
+      console.log('公用组件传的值都在这',val)
+    },
+    submitForm() {       // 调用子组件的方法验证公用部分
+      this.$refs.submitForm.submitForm('groups');  
+    },
+    validatePass(){      //验证成功回调,调取接口
+      //仍需验证标签明细是否选择
+      
+    },
+  },
+  components:{
+    PubTagGroup,
+    PubTagPartDetail,
+    SymptomTagGroup,
+  }
+}
+</script>
+<style lang="less">
+@import '../../less/common.less';
+.NoiseTemplateWrapper {
+  .groupTitle {
+    background-color: #fff;
+    height: 40px;
+    line-height: 40px;
+    padding-left: 20px;
+    // position: fixed;
+    // width: 100%;
+    // top: 60px;
+    // left: 384px;
+    // z-index: 33;
+  }
+  .main {
+    background-color: #fff;
+    margin: 0 20px 20px;
+    padding: 20px;
+    border-top: 1px solid @icssBorder;
+    box-sizing: border-box;
+    font-size: 14px;
+    color: #606266;
+    .title{
+      margin-bottom: 20px;
+      i {
+        color:#f56c6c;
+      }
+    }
+  }
+  .btn {
+    text-align: right;
+  }
+}
+</style>
+

+ 386 - 0
src/components/icss/PubTagGroup.vue

@@ -0,0 +1,386 @@
+<template>
+  <div class="PubTagGroupWrapper">
+    <el-form
+      class="groups"
+      :rules="rules"
+      ref="groups"
+      :model="form"
+      label-width="150px"
+    >
+      <el-form-item
+        label="选择归属:"
+        prop="region1"
+      >
+        <el-select
+          v-model="form.region1"
+          placeholder="请选择归属"
+          @change="sendData"
+        >
+          <el-option
+            v-for="item in Adscriptions"
+            :label="item.name"
+            :value="item.val"
+            :key="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="选择填写单类型:"
+        prop="region2"
+      >
+        <el-select
+          v-model="form.region2"
+          placeholder="请选择填写单类型"
+          @change="sendData"
+        >
+          <el-option
+            v-for="item in labelTypes"
+            :label="item.name"
+            :value="item.val"
+            :key="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="标签系统名称:"
+        prop="region3"
+      >
+        <el-input
+          v-model="form.region3"
+          maxLength="30"
+          placeholder="请输入标签系统名称"
+          @change="sendData"
+        ></el-input>
+      </el-form-item>
+      <el-form-item
+        label="标签界面名称:"
+        prop="region4"
+      >
+        <el-input
+          v-model="form.region4"
+          maxLength="30"
+          placeholder="请输入标签界面名称"
+          @change="sendData"
+        ></el-input>
+      </el-form-item>
+      <el-form-item
+        label="选择项之间链接:"
+        prop="region5"
+      >
+        <el-input
+          v-model="form.region5"
+          maxLength="30"
+          placeholder="请输入选择项之间链接"
+          @change="sendData"
+        ></el-input>
+      </el-form-item>
+      <el-form-item
+        label="能否当项目检索:"
+        prop="region6"
+      >
+        <el-select
+          v-model="form.region6"
+          @change="sendData"
+        >
+          <el-option
+            label="不可以"
+            value="不可以"
+          ></el-option>
+          <el-option
+            label="可以"
+            value="可以"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="性别:"
+        prop="region7"
+      >
+        <el-select
+          v-model="form.region7"
+          @change="readyChangeSex"
+        >
+          <el-option
+            label="通用"
+            value="通用"
+          ></el-option>
+          <el-option
+            label="男"
+            value="男"
+          ></el-option>
+          <el-option
+            label="女"
+            value="女"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="年龄:"
+        prop="region8"
+        class="ages"
+      >
+        <el-input
+          v-model.number="form.region8"
+          ref="valage1"
+          @input="sendData"
+        ></el-input> ~
+        <el-input
+          v-model.number="form.region9"
+          ref="valage2"
+          @input="sendData"
+        ></el-input>
+      </el-form-item>
+      <!-- 暂时不用 -->
+      <!-- <el-form-item label="选择子项时是否复制主项标签:" prop="region10">
+        <el-select v-model="form.region10">
+          <el-option label="不可以" value="不可以"></el-option>
+          <el-option label="可以" value="可以"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="是否复制当前模块:" prop="region11">
+        <el-select v-model="form.region11">
+          <el-option label="不可以" value="不可以"></el-option>
+          <el-option label="可以" value="可以"></el-option>
+        </el-select>
+      </el-form-item> -->
+    </el-form>
+  </div>
+</template>
+<script>
+import api from '@api/icss.js';
+/**
+ * titlePar 顶部显示左(有默认值可不填)
+ * titleSub  顶部显示右(有默认值可不填)
+ * form 当前页面传到父组件的数据(region10,region11暂时不用)
+ * submitForm 基本信息验证必填项
+ * validatePass 基本信息必填项验证成功回调
+ * 父组件根据form.region2改变底部组件操作项
+ * searchTagList 函数的参数根据type变化
+ */
+
+export default {
+  data() {
+    var validatePass2 = (rule, value, callback) => {
+        this.validateSystomName(value,callback)
+    };
+    return {
+      status2: [
+        { name: '症状标签', key: '8' },
+        { name: '单选自由填写项', key: '9' },
+        { name: '多选项、预设结构选择', key: '10' },
+        { name: '预设结构选择', key: '11' },
+        { name: '伴/无结构类型', key: '12' },
+        { name: '推送症状类型', key: '13' },
+        { name: '诊断/药品/辅检', key: '14' },
+        { name: '血压类型', key: '15' },
+      ],
+      form: {
+        region1: '',    //归属
+        region2: '',     //填写单类型
+        region3: '',      //系统名称
+        region4: '',      //界面名称
+        region5: '',      //选项之间的链接
+        region6: '不可以',      //是否可以检索
+        region7: '通用',       //性别
+        region8: '0',          //最小年龄
+        region9: '200',         //最大年龄
+        // region10: '可以',        //是否复制主标签
+        // region11: '不可以',       //是否复制当前模块
+        tagPool:[],          //标签池数据
+      },
+      rules: {
+        region1: [
+          { required: true, message: '请选择归属', trigger: 'change' }
+        ],
+        region2: [
+          { required: true, message: '请选择填写单类型', trigger: 'change' }
+        ],
+        region3: [
+          { required: true, message: '请输入标签系统名称', trigger: 'change' },
+          { validator: validatePass2, trigger: 'blur' },
+        ],
+        region4: [
+          { required: true, message: '请输入标签界面名称', trigger: 'change' }
+        ],
+        region6: [
+          { required: true, message: '请输入能否当项目检索', trigger: 'change' }
+        ],
+        region7: [
+          { required: true, message: '请选择性别', trigger: 'change' }
+        ],
+        region8: [
+          { required: true, message: '请输入最小年龄', trigger: 'change' }
+        ],
+        region9: [
+          { required: true, message: '请输入最大年龄', trigger: 'change' }
+        ],
+        // region10: [
+        //   { required: true, message: '选择子项时是否复制主项标签', trigger: 'change' }
+        // ],
+        // region11: [
+        //   { required: true, message: '是否复制当前模块', trigger: 'change' }
+        // ],
+      },
+      tmpSex: '通用',
+      Adscriptions: [],
+      labelTypes: [],
+      labelTypesList: [],
+      tagTypes: [],        //标签池数据
+      type:'',
+      systom:null,      //标签系统名称存在与否
+    }
+  },
+  computed: {
+    newSex() {
+      return this.form.region7;
+    },
+    newType() {
+      return this.form.region1;
+    },
+  },
+  mounted() {
+    this.$emit('submitForm', 'groups', false);
+    this.getDropList();
+  },
+  watch: {
+    newSex(nextVal, prevVal) {
+      this.tmpSex = prevVal;
+    },
+    newType(nextVal, prevVal) {
+      if (nextVal != prevVal) {
+        this.searchTagList(nextVal)
+        this.type = nextVal
+      }
+    },
+  },
+  methods: {
+    getDropList() {
+      return api.getDropList().then((res) => {
+        if (res.data.code === '0') {
+          this.Adscriptions = res.data.data[1];
+          this.labelTypes = res.data.data[2];
+        }
+      })
+    },
+    searchTagList(type) {
+      let param = {
+        "type": type,
+        "tagType": type == 1?[1]:[],
+        "controlType":type == 1?[1,2]:[],
+      }
+      api.searchTagList(param).then((res) => {
+        if (res.data.code === '0') {
+          this.form.tagPool = res.data.data
+        }
+      })
+    },
+    validateSystomName(name,callback) {
+      if(this.form.region3.trim() == ''){ return }
+      let param = {"existName": this.form.region3,"type": this.type}
+      api.validateSystomName(param).then((res) => {
+        if (res.data.code === '0') {
+          if(res.data.data && res.data.data.length != 0){
+            callback(new Error('该系统名称已存在'));
+          }else{
+            callback();
+          }
+        }
+      })
+    },
+    sendData() {
+      this.$emit('changeVal', this.form, false)
+    },
+    changeSex(sex) {   //改变性别清空数据
+      this.form = {
+        region1: '',
+        region2: '',
+        region3: '',
+        region4: '',
+        region5: '',
+        region6: '不可以',
+        region7: sex,
+        region8: '0',
+        region9: '200',
+        tagPool:[]
+      }
+      this.$emit('changeVal', this.form, false)
+    },
+    readyChangeSex(data) {
+      let sex = data;
+      this.$confirm('改变性别后,所填信息将会回复到默认状态?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        cancelButtonClass: 'cancelColor',
+        type: 'warning'
+      }).then(() => {
+        this.changeSex(sex);
+      }).catch(() => {
+        this.form.region7 = this.tmpSex;
+      });
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.$emit('validatePass', this.form, false)
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    }
+  }
+}
+</script>
+<style lang="less">
+.PubTagGroupWrapper {
+  
+}
+.groups {
+  background-color: #fff;
+  padding: 20px;
+  margin: 20px 20px -20px 20px;
+  .el-form-item__content,
+  .el-input__inner {
+    height: 30px;
+    line-height: 30px;
+    width: 200px;
+  }
+  .el-form-item {
+    margin-bottom: 20px;
+  }
+  .el-form-item__error {
+    top: 28px;
+  }
+  .el-form-item__label {
+    line-height: 30px;
+    text-align: left;
+  }
+  .el-input__icon {
+    line-height: 30px;
+  }
+  .ages .el-input {
+    display: inline-block;
+    width: auto;
+    .el-input__inner {
+      width: 40px;
+      padding: 0 5px;
+    }
+
+    .el-input__inner::-webkit-outer-spin-button,
+    .el-input__inner::-webkit-inner-spin-button {
+      -webkit-appearance: none;
+    }
+
+    .el-input__inner[type="number"] {
+      -moz-appearance: textfield;
+    }
+  }
+  .el-message-box__btns .el-button--default {
+    color: #606266 !important;
+  }
+  .cancelColor {
+    color: #22ccc8 !important;
+  }
+}
+</style>
+

+ 73 - 0
src/components/icss/PubTagPartDetail.vue

@@ -0,0 +1,73 @@
+<template>
+  <div class="bottomPart clearfix">
+    <div class="bottomPartLeft fl">
+      <p class="poolTitle">标签池</p>
+      <div class="pool">
+        <div class="search">搜索</div>
+        <ul>
+          <li>标签</li>
+          <li>标签</li>
+          <li>标签</li>
+          <li>标签</li>
+          <li>标签</li>
+          <li>标签</li>
+          <li>标签</li>
+          <li>标签</li>
+        </ul>
+      </div>
+    </div>
+    <div class="bottomPartMid fl">
+      <p><span class="el-icon-arrow-left"></span></p>
+      <p><span class="el-icon-arrow-right"></span></p>
+    </div>
+    <div class="bottomPartRight fr">
+      <span>操作界面</span>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data(){
+    return {
+      msg:''
+    }
+  }
+}
+</script>
+<style lang="less">
+@import '../../less/common.less';
+.bottomPart {
+  .bottomPartLeft {
+    width: 30%;
+    border:1px solid @icssBorder;
+    box-sizing: border-box;
+    .poolTitle {
+      border-bottom: 1px solid @icssBorder;
+      box-sizing: border-box;
+    }
+    .pool {
+      
+    }
+  }
+  .bottomPartMid {
+    width: 10%;
+    p {
+      width: 100%;
+      text-align: center;
+      span {
+        display: inline-block;
+        width: 50px;
+        height: 30px;
+        line-height: 30px;
+        margin: 0 auto;
+      }
+    }
+  }
+  .bottomPartRight {
+    width: 60%;
+    background-color: red;
+  }
+}
+</style>
+
+

+ 198 - 0
src/components/icss/SymptomTagGroup.vue

@@ -0,0 +1,198 @@
+<template>
+    <div class="symptomTagGroupWrapper clearfix">
+    <div class="bottomPartLeft fl">
+      <p class="poolTitle">标签池</p>
+      <div class="pool">
+        <input class="search" @input="searchTag"/>
+        <ul class="tagList">
+            <li class = "tagItem"
+                v-for="item in leftTagsList" 
+                :key='item.id'
+                @click='selectLeftTag(item)'
+            >
+                <p class="tagName">{{item.tagName}} </p>
+            </li>
+        </ul>
+      </div>
+    </div>
+    <div class="bottomPartMid fl">
+      <p><span class="el-icon-arrow-left" @click="toLeftList"></span></p>
+      <p><span class="el-icon-arrow-right" @click="toRightList"></span></p>
+    </div>
+    <div class="bottomPartRight fr">
+      <p class="poolTitle">操作池</p>
+      <ul class="tagList">
+            <li class = "tagItem"
+                v-for="item in rightTagsList" 
+                :key='item.id'
+                @click='selectRightTag(item)'
+            >
+                <p class="tagName">{{item.tagName}} </p>
+            </li>
+        </ul>
+    </div>
+  </div>
+</template>
+<script>
+import api from '@api/icss.js';
+export default {
+    name: "SymptomTagGroup",
+    props: {
+        dataPub: {},
+    },
+    data() {
+        return {
+            leftTagsList: [],
+            selectLeftTagsList: [],
+            rightTagsList: [],
+            selectRightTagsList: [],
+
+        }
+    },
+    mounted() {
+        this.leftTagsList = this.dataPub.tagPool
+        console.log('TAGPOOL', this.dataPub)
+    },
+    methods: {
+        selectLeftTag(tag) {
+            const hasTag = this.isHasTag(tag, this.selectLeftTagsList)
+            console.log(hasTag)
+            if (hasTag) {
+                this.selectLeftTagsList = this.selectLeftTagsList.filter(item => item.id !== tag.id)
+            } else {
+                this.selectLeftTagsList.push(tag);
+            }
+            console.log(this.selectLeftTagsList)
+            // this.isSelectTag(tag, this.selectLeftTagsList)
+            
+        },
+        selectRightTag(tag) {
+            const hasTag = this.isHasTag(tag, this.selectRightTagsList)
+            console.log(hasTag)
+            if (hasTag) {
+                this.selectRightTagsList = this.selectRightTagsList.filter(item => item.id !== tag.id)
+            } else {
+                this.selectRightTagsList.push(tag);
+            }
+            console.log(this.selectRightTagsList)
+            // this.isSelectTag(tag, this.selectRightTagsList)
+            
+        },
+        isHasTag(item, arr) {
+            for ( let i = 0; i <arr.length; i++) {
+                if(arr[i].id === item.id) {
+                    return true;
+                }
+            }
+            return false;
+        },
+        isSelectTag(tag, arr) {
+            const hasTag = this.isHasTag(tag, arr)
+            console.log(hasTag)
+            if (hasTag) {
+                // arr = arr.filter(item => item.id !== tag.id)
+                arr = arr.filter((item) => {console.log('aaa',item.id === tag.id); return item.id !== tag.id})
+            } else {
+                arr.push(tag);
+            }
+            console.log(arr)
+        },
+        toLeftList() {
+            this.leftTagsList = this.tagPool
+            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.rightTagsList.length; i++) {
+                this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
+            }
+            this.selectRightTagsList = []
+        },
+        toRightList() {
+            this.rightTagsList.push(...this.selectLeftTagsList);
+            for (let i = 0; i < this.rightTagsList.length; i++) {
+                this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
+            }
+            console.log(this.rightTagsList)
+            this.selectLeftTagsList = []
+        },
+        searchTag(value) {
+            console.log('value', value)
+            let notIds = []
+            for (let i = 0; i < this.rightTagsList.length; i++) {
+                notIds.push(rightTagsList[i].id)
+            }
+            console.log(this.dataPub)
+            let param = {
+                "tagName": value.data,
+                "tagType": [
+                    4
+                ],
+                "type": this.dataPub.region1 || ''
+            }
+            api.searchTagList(param).then((res) => {
+                if (res.data.code === '0') {
+                    this.leftTagsList = res.data.data
+                }
+            })
+           
+        }
+
+    }
+}
+</script>
+
+<style lang="less" scoped>
+@import '../../less/common.less';
+.symptomTagGroupWrapper {
+    .bottomPartLeft {
+        width: 30%;
+        box-sizing: border-box;
+    }
+    .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 {
+        padding: 10px 10px;
+        height: 300px;
+        overflow-y: auto;
+    }
+    .tagItem {
+        line-height: 20px;
+    }
+    .tagName:before {
+        content: '['
+    }
+    .tagName::after {
+        content: ']'
+    }
+    .bottomPartMid {
+        width: 10%;
+    p {
+        width: 100%;
+        text-align: center;
+        span {
+            display: inline-block;
+            width: 50px;
+            height: 30px;
+            line-height: 30px;
+            margin: 0 auto;
+        }
+    }
+    }
+    .bottomPartRight {
+        width: 60%;
+    }
+}
+</style>

+ 7 - 1
src/less/base.less

@@ -13,7 +13,12 @@ html{
 input, textarea{
   outline: none;
 }
-
+ul {
+  list-style: none;
+}
+i {
+  font-style: normal;
+}
 a {
   text-decoration: none;
 }
@@ -27,6 +32,7 @@ a {
   clear: both;
   overflow: hidden;
   width: 0;
+  content: '';
 }
 
 .fl {

+ 1 - 0
src/less/common.less

@@ -16,6 +16,7 @@
 
 /*朗通后台基本颜色*/
 @adminBase: #22ccc8;
+@icssBorder: #c0c4cc;
 
 /*用户后台基本颜色*/
 @userBase: #1774f0;

+ 6 - 2
src/routes.js

@@ -28,7 +28,9 @@ import OrganizationInfo from '@components/admin/OrganizationInfo.vue';//机构
 import AddOrganization from '@components/admin/AddOrganization.vue';//添加机构信息
 import ModifinedOrga from '@components/admin/ModifinedOrga.vue';//修改机构信息
 import ProductDetail from '@components/admin/ProductDetail.vue';
-import Console from '@components/user/Console.vue'
+import Console from '@components/user/Console.vue';
+import LabelGroup from '@components/icss/LabelGroup.vue'
+import NoiseTemplate from '@components/icss/NoiseTemplate.vue';
 
 export default [
   {
@@ -126,7 +128,9 @@ export default [
       {path: 'LT-GRZX', component: PersonCenter},
       {path: 'LT-CPXGL', component: ProductLinesManage},
       {path: 'LT-CPXGL-TJCPX', component: AddProductLine,name:'editProductLine'},
-			{path: 'LT-GRZX/CHANGE',component: ChangePwd}, //个人中心--修改密码
+      {path: 'LT-GRZX/CHANGE',component: ChangePwd}, //个人中心--修改密码
+      {path: 'LT-YXSJWH-BQZWH',component: LabelGroup}, //医学数据维护--标签组维护
+      {path:'LT-YXSJWH-TJBQZ',component:NoiseTemplate},     //医学数据维护--标签组维护--添加标签组
     ]
   }
 ]

+ 2 - 1
vue.config.js

@@ -1,6 +1,7 @@
 const path = require('path');
 // const proxy_path = 'http://192.168.2.236:80';
-const proxy_path = 'http://192.168.2.241:88';
+// const proxy_path = 'http://192.168.2.241:88';
+const proxy_path = 'http://192.168.2.236:88';
 // const proxy_path = 'http://192.168.3.100:5050';
 // const proxy_path = 'http://192.168.3.117:5050';//周铁刚
 // const proxy_path = 'http://192.168.3.115:5050';