Luolei 6 лет назад
Родитель
Сommit
3a35d38517

+ 6 - 2
src/api/config.js

@@ -117,9 +117,13 @@ export default {
     'delDiscInformation': 'api/icssman/disclaimerInformation/cancelDisclaimerInformations', //免责声明-删除
     'closeInformation': 'api/icssman/disclaimerInformation/endDisclaimerInformations', //免责声明-停用
     'openInformation': 'api/icssman/disclaimerInformation/startDisclaimerInformations', //免责声明-启用
-    'updateModuleInfo': 'api/icssman/moduleInfo/updateModuleInfo', //模板维护系统修改保存
+    'getQuestionInfos': 'api/icssman/moduleInfo/getQuestionInfos', //模板维护标签池数据获取
+    'saveModuleInfo': 'api/icssman/moduleInfo/saveModuleInfo', //模板维护新增
+    'updateModuleInfo': 'api/icssman/moduleInfo/updateModuleInfo', //模板维护修改
     'getModuleInfoList': 'api/icssman/moduleInfo/getModuleInfoList', //模板维护系统列表
-    'getModuleInfoOne': 'api/icssman/moduleInfo/getModuleInfoOne', //模板维护系统修改获取单个模板信息
+    'getModuleInfoSub': 'api/icssman/moduleInfo/getModuleInfo', //获取子模板列表
+    'getModuleInfoOne': 'api/icssman/moduleInfo/getModuleInfoOne', //模板维护系统修改获取单个模板信息上部分信息
+    'getModuleDetailInfo': 'api/icssman/moduleInfo/getModuleDetailInfo', //模板维护系统修改获取单个模板右侧信息
     'delTemplate': 'api/icssman/moduleInfo/delete', //模板维护系统删除单个模板信息
     'getPhysicalExamTempList': 'api/icssman/deptVital/getDeptVitalPage', //查体模板列表
     'getPhysicalExamTempDepartList':'api/icssman/deptVital/getDeptShortList_create' , //查体模板科室列表--新增

+ 14 - 2
src/api/icss.js

@@ -126,15 +126,27 @@ export default {
     openInformation(param) {//免责声明-停用
         return axios.post(urls.openInformation, param)
     },
-    updateModuleInfo(param) {//模板维护系统修改保存
+    updateModuleInfo(param) {//模板维护系统修改
         return axios.post(urls.updateModuleInfo, param)
     },
+    saveModuleInfo(param) {//模板维护系统新增
+        return axios.post(urls.saveModuleInfo, param)
+    },
     getModuleInfoList(param) {//模板维护系统列表
         return axios.post(urls.getModuleInfoList, param)
     },
-    getModuleInfoOne(param) {//模板维护系统修改获取单个模板信息
+    getModuleInfoSub(param) {//获取子模板列表
+        return axios.post(urls.getModuleInfoSub, param)
+    },
+    getQuestionInfos(param) {//获取模板维护标签池数据
+        return axios.post(urls.getQuestionInfos, param)
+    },
+    getModuleInfoOne(param) {//模板维护系统修改获取单个模板信息顶部信息
         return axios.post(urls.getModuleInfoOne, param)
     },
+    getModuleDetailInfo(param) {//模板维护系统修改获取单个模板信息右侧信息
+        return axios.post(urls.getModuleDetailInfo, param)
+    },
     delTemplate(param) {//模板维护系统删除单个模板信息
         return axios.post(urls.delTemplate, param)
     },

+ 30 - 3
src/api/utils.js

@@ -64,12 +64,12 @@ export default {
   filterArr(arr,val,type,des){  //数组剔除指定元素 
     if(type == 1){
       if(des){
-        return arr.filter(item => item.id != val)
+        return arr.filter(item => item.id != val)  //判断id
       }else{
-        return arr.filter(item => item != val)
+        return arr.filter(item => item != val)    //判断值
       }
     }else{
-      let tmp = arr.filter(item => JSON.stringify(item) == JSON.stringify(val))
+      let tmp = arr.filter(item => JSON.stringify(item) == JSON.stringify(val))   //判读是否存在
       if(JSON.stringify(tmp) == '[]'){
         return false;
       }else{
@@ -200,6 +200,33 @@ export default {
       obj[maps[it]] = typeof data[it]=='number'?data[it]+'':data[it];
     }
     return obj;
+  },
+  /**
+   * 模板数据提交转化函数
+   */
+  orderTemplateData(data){
+    let tmpArr = [];
+    for(let i =0;i<data.length;i++){
+      let obj={
+        "flag": '',
+        "questionId": '',
+        "relationModule": '',
+        "text": ""
+      };
+      if(data[i].type == 'sub'){      //这是子模板
+        obj.relationModule = parseInt(data[i].id)
+      }else if(data[i].type == 'input'){     //这个是输入框文字
+        if(data[i].text){   //去掉空输入框
+          obj.text = data[i].text
+        }else{
+          return;
+        }
+      }else{    //这个是标签
+        obj.questionId = data[i].id
+      }
+      tmpArr.push(obj)
+    }
+    return tmpArr;
   }
 }
 

+ 221 - 118
src/components/icss/CommonTemplate.vue

@@ -38,59 +38,64 @@
     </div>
     <div class="bottomPartRight bottomPartRightTemplate">
       <p class="poolTitle">模板内容:</p>
-      <el-form
-        class="subTemplate"
-        ref="groups"
-        :model="form"
-      >
-        <el-form-item
-          label="添加子模板:"
-          prop="region"
-          size="mini"
-        >
-          <el-select
-            v-model="form.region"
-            placeholder="请选择模板类型"
+      <div class="arrowWrap" style="float:right;marginRight:10px" v-if="type != 1 && type != 2">
+        <i class="el-icon-arrow-left arrowWrapPub" @click="moveTag(0)"></i>
+        <i class="el-icon-arrow-right arrowWrapPub" @click="moveTag(1)"></i>
+      </div>
+      <div class="formWrap" v-if="type == 1 || type == 2">
+          <el-form
+            class="subTemplate"
+            :model="form"
           >
-            <el-option
-              v-for="item in Adscriptions"
-              :label="item.name"
-              :value="item.val"
-              :key="item.id"
-            ></el-option>
-          </el-select>
-          <div style="display:inline-block">
-            <el-button size="mini" @click="addDomTemplate(0)">添加</el-button>
-            <el-button size="mini" @click="delSubTemplate">删除子模板</el-button>
-            <el-button size="mini" @click="addDomTemplate(1)">插入输入栏</el-button>
-          </div>
-
-          <el-button icon="el-icon-arrow-left" class="changeOrder changeOrderPub"></el-button>
-          <el-button icon="el-icon-arrow-right" class="changeOrderPub"></el-button>
-        </el-form-item>
-      </el-form>
+            <el-form-item
+              label="添加子模板:"
+              prop="region"
+              size="mini"
+            >
+              <el-select
+                v-model="form.region"
+                placeholder="请选择子模板"
+              >
+                <el-option
+                  v-for="item in Adscriptions"
+                  :label="item.name"
+                  :value="item.id"
+                  :key="item.id"
+                ></el-option>
+              </el-select>
+              <el-button size="mini" @click="addDomTemplate(0,'submitForm')">添加</el-button>
+              <el-button size="mini" @click="delSubTemplate">删除子模板</el-button>
+              <el-button size="mini" @click="addDomTemplate(1)">插入输入栏</el-button>
+            </el-form-item>
+          </el-form>
+        <div class="arrowWrap">
+          <i class="el-icon-arrow-left arrowWrapPub" @click="moveTag(0)"></i>
+          <i class="el-icon-arrow-right arrowWrapPub" @click="moveTag(1)"></i>
+        </div>
+      </div>
       <ul class="tagList operationPool templateTagLists">
         <li
           class="tagItem operationItem"
           v-for="(item,idx) in rightTagsList"
-          :key='item.id'
-          :style="getStyle2(item)?styles:null"
+          :key='item.name'
           @click='selectRightTag(item,idx)'
+          :style="getStyle2(item)?styles:null"
         >
           <div class="inputBox" v-if="item.type === 'input'">
               <el-input
                 placeholder=""
                 v-model="item.text"
+                @change="updataData"
               >
               </el-input>
           </div>
           <p
             v-if="item.type === 'sub'"
             class="tagName  ellipsis"
-            :title="'[ 添加子模块 ]'"
-          >添加子模块 </p>
+            :title="'[ '+item.tagName+' ]'"
+          >{{item.tagName}}</p>
           <p
-            v-if="item.tagName"
+            v-if="item.type !== 'input' && item.type !== 'sub'"
             class="tagName  ellipsis"
             :title="'[ '+item.tagName+' ]'"
           >{{item.tagName}} </p>
@@ -113,30 +118,21 @@ export default {
       default: '',
       type: String
     },
-    sexType: {
-      default: '',
-      type: String
-    },
     options: {
-      default: () => [],
-      type: Array
+      default: () => {},
+      type: Object
     },
   },
   data() {
     return {
-      Adscriptions: [
-        { name: '添加病情变化', val: '1', id: '001' },
-        { name: '病程变化', val: '2', id: '002' },
-        { name: '添加其他症状', val: '3', id: '003' },
-      ],
-      form: {
-        region: '1',    //归属
-      },
+      Adscriptions: [],     //子模板列表
+      form: {region: ''},    //当前子模板
       addTag:{
         text:'',              //输入框内容为空
         id:'',                //id可以用index做id
         type:'input',        //sub 子模板
       },
+      subTmpList:[],     //子模板的id用于去重
       leftTagsList: [],
       selectLeftTagsList: [],
       rightTagsList: [],
@@ -148,24 +144,55 @@ export default {
       },
     }
   },
+  destroyed: function () {
+    this.searchVal = ''
+  },
   mounted() {
     this.$nextTick(()=>{
-      this.rightTagsList = this.options
-      let newArr = [];
-      for (let i = 0; i < this.rightTagsList.length; i++) {
-        if (this.rightTagsList[i].tagType == 8) {
-          newArr.push({ text: this.rightTagsList[i].tagName, type: 'input', id: i })
-        } else {
-          newArr.push(this.rightTagsList[i])
+      if(this.type){this.searchTagList()}
+      if(this.options.id){
+        if(this.options && this.options.data && this.options.data.length>0){
+          let reviewList = this.options.data
+          let tmpSubTmpList = this.subTmpList.slice(0)
+          for(let m = 0;m < reviewList.length;m++){
+            if(reviewList[m].relationModule != null){      //这是子模板,修改有子模板需要记录去重
+              reviewList[m].id = reviewList[m].relationModule + 'sub'
+              reviewList[m].tagName = reviewList[m].relationModuleName
+              reviewList[m].type = 'sub'
+              tmpSubTmpList.push(reviewList[m].relationModule)     
+              this.subTmpList = tmpSubTmpList
+            }else if(reviewList[m].tagType == 8){     //这个是输入框文字
+              reviewList[m].id = m+'1001001001'
+              reviewList[m].type = 'input'
+              reviewList[m].text = reviewList[m].tagName
+            }else{    //这个是标签
+              reviewList[m].id = reviewList[m].questionId
+            }
+          }
+          this.rightTagsList = reviewList
+          console.log(reviewList,'xiugai')
         }
+        this.$emit('changeActionData', this.rightTagsList, false);
+        this.getSubTemplate()
+      }else{
+        this.getSubTemplate()
       }
-      this.rightTagsList = newArr
-      this.$emit('changeActionData', this.rightTagsList, false);
     })
   },
   watch: {
-    pool(newVal, preVal) {
-      this.leftTagsList = newVal
+    type(newVal, preVal) {
+      if(newVal != preVal){
+        this.form = {region: ''}  
+        this.subTmpList = []     //子模板的id用于去重
+        this.leftTagsList = []
+        this.selectLeftTagsList = []
+        this.rightTagsList = []
+        this.selectRightTagsList = []
+        this.selectRightTagsListIndex = []
+        this.searchVal = ''
+        this.getSubTemplate()      //重新获取子模板
+        this.searchTagList()       //重新获取标签池数据
+      }
     },
     searchVal(newVal, preVal) {
       if (newVal.trim() == '') {
@@ -176,26 +203,91 @@ export default {
     },
   },
   methods: {
-    addDomTemplate(sign){
+    updataData(){
+      this.$emit('changeActionData', this.rightTagsList, false);
+    },
+    addDomTemplate(sign,dom){
       let tmpArr1 = this.rightTagsList.slice(0);
       let tmpArr2 = this.selectRightTagsListIndex.slice(0);
-      if(tmpArr2.length < 1){return}
+      let tmpArr3 = this.subTmpList.slice(0),tmpRegion = this.form.region;
+      let tmpArr4 = this.Adscriptions.filter(item => item.id == tmpRegion);
+      let tmpTag = Object.assign({},this.addTag);     //深度复制obj
+      if(sign == 0){         //添加子模板
+        if(tmpArr4.length == 0){
+          this.$message({
+            message:'请选择子模板',
+            type:'warning'
+          })
+          return false;
+        }
+        tmpTag.type = 'sub'
+        tmpArr3.push(tmpRegion)
+        tmpTag.tagName = tmpArr4[0].name
+        tmpTag.id = tmpArr4[0].id + 'sub'
+        this.subTmpList = tmpArr3  //记录子模板id 
+        this.form.region = ''
+        this.getSubTemplate()
+      }else{     //添加输入框
+        tmpTag.type = 'input'
+      }
+      tmpArr1.push(tmpTag);
       for(let i =0; i < tmpArr1.length; i++){    //循环右侧所有数据
-        let id1 = tmpArr1[i].id;
-        for(let j = 0; j < tmpArr2.length; j++){       //循环右侧选中的数据
-          let id2 = tmpArr2[j];
-          if(id1 == id2){
-            let tmpTag = Object.assign({},this.addTag);     //防止id相同
-            tmpTag.type = sign == 0?'sub':'input';
-            tmpTag.id = id1 + i +55454;            //id还是会重复bug
-            tmpArr1.splice(i+1,0,tmpTag);
+        if(tmpArr1[i].type == 'input'){
+          tmpArr1[i].id = i + '1001001001'     //给添加的子模板或者输入框加上id
+        }
+      }
+      this.rightTagsList = tmpArr1;
+      this.$emit('changeActionData', this.rightTagsList, false);
+    },
+    moveTag(dir){
+      let tmpArr1 = this.rightTagsList.slice(0);
+      let tmpArr2 = this.selectRightTagsListIndex.slice(0);
+      let tmpArr3 = this.selectRightTagsList.slice(0);
+      if(dir == 0){     //往左
+        for(let i = 0;i < tmpArr3.length;i++){     //删除选中的元素
+          let tmpId = tmpArr3[i].id
+          tmpArr1 = tmpArr1.filter(item => item.id !== tmpId)
+        }
+        let tmpArr = tmpArr1.slice(0)
+        for(let k = 0;k < tmpArr2.length;k++){     //选中元素的index
+          let tmpIdx = tmpArr2[k]-1
+          tmpArr.splice(tmpIdx,0,tmpArr3[k])
+          if(tmpArr2[k] == 0){
+            return
+          }
+          tmpArr2[k] = (tmpArr2[k]-1)
+        }
+        this.selectRightTagsListIndex = tmpArr2
+        this.rightTagsList = tmpArr
+      }else{     //往右
+        for(let i = 0;i < tmpArr3.length;i++){     //删除选中的元素
+          let tmpId = tmpArr3[i].id
+          tmpArr1 = tmpArr1.filter(item => item.id !== tmpId)
+        }
+        let tmpArr = tmpArr1.slice(0)
+        for(let k = 0;k < tmpArr2.length;k++){     //选中元素的index
+          let tmpIdx = tmpArr2[k]+1
+          tmpArr.splice(tmpIdx,0,tmpArr3[k])
+          if(tmpArr2[k] == tmpArr1.length){
+            return
           }
+          tmpArr2[k] = (tmpArr2[k]+1)
         }
+        this.selectRightTagsListIndex = tmpArr2
+        this.rightTagsList = tmpArr
       }
-      this.rightTagsList = tmpArr1
+      this.$emit('changeActionData', this.rightTagsList, false);
     },
-    delSubTemplate(){
-
+    delSubTemplate(){   //删除子模板
+      if (this.selectRightTagsList.length>0 && this.selectRightTagsList[0].type === 'sub') {    //删除子模板,输入框或者标签就不变
+        this.rightTagsList = this.rightTagsList.filter(item => item.id !== this.selectRightTagsList[0].id)
+        this.subTmpList = this.subTmpList.filter(item => item.id !== this.selectRightTagsList[0].id)  //选中的子模板id去掉
+      }
+      this.selectLeftTagsList = []
+      this.selectRightTagsList = []
+      this.selectRightTagsListIndex = []
+      this.$emit('changeActionData', this.rightTagsList, false);
+      this.getSubTemplate()
     },
     selectLeftTag(tag, index, e) {
       const hasTag = this.isHasTag(tag, this.selectLeftTagsList)
@@ -206,16 +298,18 @@ export default {
       }
     },
     selectRightTag(tag,idx) {
-      const hasTag = this.isHasTag(tag, this.selectRightTagsList)
+      const hasTag = this.isHasTag(tag, this.selectRightTagsList);
       let tmpArr = this.selectRightTagsListIndex;
+      let tmpArr1 = this.selectRightTagsList.slice(0);
       if (hasTag) {
-        this.selectRightTagsList = this.selectRightTagsList.filter(item => item.id !== tag.id)
-        tmpArr = tmpArr.filter(item => item !== tag.id)
+        this.selectRightTagsList = this.selectRightTagsList.filter(item => item.tagName !== tag.name)
+        tmpArr = tmpArr.filter(item => item !== idx)
         this.selectRightTagsListIndex = tmpArr
       } else {
-        this.selectRightTagsList.push(tag);
-        tmpArr.push(tag.id)
-        this.selectRightTagsListIndex = tmpArr
+        tmpArr1[0] = tag;
+        tmpArr[0]=idx;
+        this.selectRightTagsList = tmpArr1;
+        this.selectRightTagsListIndex = tmpArr;
       }
     },
     isHasTag(item, arr) {
@@ -233,31 +327,16 @@ export default {
       return this.isHasTag(item, this.selectRightTagsList)
     },
     toLeftList() {
-      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.rightTagsList.length; j++) {
-            if (this.selectRightTagsList[i].id === this.rightTagsList[j].id) {
-              if(j < this.rightTagsList.length-1){
-                if(this.rightTagsList[i+1].type !== 'input'){
-                  this.rightTagsList.splice(j, 1)
-                }else if(this.rightTagsList[i+1].type === 'input'){
-                  this.rightTagsList.splice(j, 2)
-                }
-              }else{
-                this.rightTagsList.splice(j, 1)
-              }
-            }
-          }
+      if (this.selectRightTagsList.length>0 && this.selectRightTagsList[0].type !== 'sub' && this.selectRightTagsList[0].type !== 'input') {    //往左的是子模板不变或者输入框,是输入框或者标签就删除
+        for (let i = 0; i < this.selectRightTagsList.length; i++) {
+          this.rightTagsList = this.rightTagsList.filter(item => item.id !== this.selectRightTagsList[0].id)
         }
+        this.searchTagList()
+        this.$emit('changeActionData', this.rightTagsList, false);
       }
       this.selectLeftTagsList = []
       this.selectRightTagsList = []
       this.selectRightTagsListIndex = []
-      this.searchTagList()
-      this.$emit('changeActionData', this.rightTagsList, false);
     },
     toRightList() {
       this.rightTagsList.push(...this.selectLeftTagsList);
@@ -271,25 +350,33 @@ export default {
     },
     searchTagList() {
       let notIds = []
-      for (let i = 0; i < this.selectRightTagsList.length; i++) {
-        if (typeof this.rightTagsList[i].id === 'number') {
+      for (let i = 0; i < this.rightTagsList.length; i++) {
           notIds.push(this.rightTagsList[i].id)
-        }
       }
       let param = {
         "tagName": this.searchVal,
-        "type": this.type || '',
-        "notIds": notIds,
+        "type": 1,
+        "noIds": notIds,
       }
-      api.searchTagList(param).then((res) => {
+      api.getQuestionInfos(param).then((res) => {
         if (res.data.code === '0') {
           this.leftTagsList = res.data.data
           this.selectLeftTagsList = []
           this.selectRightTagsList = []
         }
       })
-    }
-
+    },
+    getSubTemplate() {
+      let param = {
+        noIds:this.subTmpList
+      }
+      api.getModuleInfoSub(param).then((res) => {
+        if (res.data.code === '0') {
+          console.log(res.data.data)
+          this.Adscriptions = res.data.data
+        }
+      })
+    },
   }
 }
 </script>
@@ -304,6 +391,7 @@ export default {
   .poolTitle {
     box-sizing: border-box;
     margin-bottom: 20px;
+    display: inline-block;
   }
   .inputBox {
     width: 100px;
@@ -360,15 +448,36 @@ export default {
   .bottomPartRight {
     float: left;
     width: 60%;
-    .changeOrder {
-      margin-left: 20px;
+      .arrowWrap {
+        float: right;
+        background-color: #fff;
+        padding-top: 1px;
+        margin-right: 10px;
+        .arrowWrapPub[data-v-2db8be7a] {
+          border: 1px solid @adminBase;
+          height: 23px;
+          width: 40px;
+          text-align: center;
+          background: #fff;
+          line-height: 23px;
+          border-radius: 3px;
+          margin-left: 10px;
+        }
+      }
+    .formWrap {
+      position: relative;
+      height: 30px;
+      .subTemplate {
+        width: 470px;
+        float: left;
+      }
     }
   }
   .templateTagList {
     height: 450px;
   }
   .templateTagLists {
-    height: 468px;
+    height: 462px;
     width: 98%;
   }
   button {
@@ -393,13 +502,10 @@ export default {
 <style lang="less">
 @import "../../less/common.less";
 .bottomPartRightTemplate {
-  .subTemplate {
-    // display: inline-block;
-  }
   .el-form-item__content {
     .el-input__inner {
-      height: 30px;
-      line-height:30px;
+      height: 28px;
+      line-height:28px;
       border-radius:5px;
       font-size: 14px;
     }
@@ -409,9 +515,6 @@ export default {
     .el-button--mini[data-v-2db8be7a], .el-button--mini.is-round[data-v-2db8be7a] {
       padding: 5px 8px 4px;
     }
-    .el-button--mini[data-v-2db8be7a].changeOrderPub, .el-button--mini.is-round[data-v-2db8be7a].changeOrderPub {
-      padding: 5px 12px;
-    }
     .el-button:hover {
         color: @adminBase;
         border-color: @adminBase;

+ 18 - 72
src/components/icss/PubTemplateGroup.vue

@@ -12,17 +12,17 @@
         prop="region1"
       >
         <span class="changeTips">改变归属后,模板明细将会恢复到默认状态</span>
-          <!-- :disabled="!!editData.id" -->
         <el-select
+          :disabled="!!editData.id"
           v-model="form.region1"
           placeholder="请选择模板归属"
-          @change="readyChangeSelect"
+          @change="sendData"
         >
           <el-option
             v-for="item in Adscriptions"
             :label="item.name"
-            :value="item.val"
-            :key="item.id"
+            :value="item.key+''"
+            :key="item.key"
           ></el-option>
         </el-select>
       </el-form-item>
@@ -32,10 +32,9 @@
       >
         <el-input
           v-model="form.region2"
-          :disabled="!form.region1"
+          :disabled="!!editData.id"
           maxLength="120"
           placeholder="请输入模板名称"
-          @change="sendData"
         ></el-input>
       </el-form-item>
     </el-form>
@@ -43,6 +42,7 @@
 </template>
 <script>
 import api from '@api/icss.js';
+import utils from '@api/utils.js';
 
 /**
  * 归属type
@@ -53,25 +53,10 @@ import api from '@api/icss.js';
 export default {
   props:['editData'],
   data() {
-    var validatePass2 = (rule, value, callback) => {
-        const editData = this.$props.editData;
-        if(editData.id && value == editData.tagName){ //修改系统名称没变就不再校验
-          callback();    
-        }else{
-          this.validateSystomName(value,callback)
-        }
-    };
     return {
-      Adscriptions:[
-        {name:'主诉模板',val:'1',id:'1001'},
-        {name:'现病史模板',val:'2',id:'1002'},
-        {name:'现病史空模板',val:'3',id:'1003'},
-        {name:'其他史模板',val:'4',id:'1004'},
-        {name:'嵌套模板',val:'5',id:'1005'},
-        {name:'慢病模板',val:'6',id:'1006'},
-      ],
+      Adscriptions:[],
       form: {
-        region1: '1',    //归属
+        region1: '',    //归属
         region2: '',     //模板名称
         tagPool:[],      //标签池
       },
@@ -81,68 +66,29 @@ export default {
         ],
         region2: [
           { required: true, message: '请输入模板名称', trigger: 'change' },
-          { validator: validatePass2, trigger: 'blur' },
+          // { validator: validatePass2, trigger: 'blur' },
         ],
       },
     }
   },
-  computed: {
-    newType() {
-      return this.form.region1;
-    },
+  beforeMount:function(){
+    let templateOwn = localStorage.getItem('icssEnumsData') ? JSON.parse(localStorage.getItem('icssEnumsData')).moduleTypeEnum : []
+    this.Adscriptions = templateOwn;
   },
   mounted() {
     const editData = this.$props.editData;
     if(editData.id){      //修改
-      const trans = utils.transformKeys(editData,2);
-      this.form = Object.assign({},this.form,trans);
+      // const trans = utils.transformKeys(editData,2);
+      this.form = Object.assign({},this.form,editData);
+      this.form.region1 = (editData.type+'')
+      this.form.region2 = editData.name
     }
     this.$emit('changeVal', this.form, false)
-    this.searchTagList()
-  },
-  watch: {
-    newType(nextVal, prevVal) {
-      if(nextVal != prevVal){
-        this.searchTagList()
-      }
-    },
+    // this.searchTagList()
   },
   methods:{
     sendData(val){
-      console.log(val)
-    },
-    readyChangeSelect(val){
-      console.log(val)
-    },
-    searchTagList() {
-      let region1 = this.form.region1;
-      let param = {
-        "type": region1,
-        "tagName": "腹"
-      }
-
-      api.searchTagList(param).then((res) => {
-        if (res.data.code === '0') {
-          this.form.tagPool = res.data.data
-        }
-      })
-    },
-    validateSystomName(name,callback) {         //判断模板名称是否存在
-      if(this.form.region2.trim() == ''){ return }
-      let param = {
-        "existName": this.form.region2,     
-        "type": this.form.region1,
-        "notTagType":[8],        //去掉文字标签查重
-      }
-      api.validateSystomName(param).then((res) => {
-        if (res.data.code === '0') {
-          if(res.data.data && res.data.data.length != 0){
-            callback(new Error('该系统名称已存在'));
-          }else{
-            callback();
-          }
-        }
-      })
+      this.$emit('changeVal', this.form, false)
     },
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {

+ 21 - 31
src/components/icss/TemplateMaintenance.vue

@@ -3,8 +3,8 @@
         <crumbs title="模板维护" style="min-width: 980px">
             <el-form :inline="true" class="demo-form-inline">
                 <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 size="mini" v-model="filter.tagAdscription" placeholder="模板归属" clearable>
+                        <el-option v-for="item in Adscriptions" :label="item.name" :value="item.key" :key="item.key" ></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item>
@@ -100,20 +100,16 @@
 
     },
     methods: {
-      getValue(val) {
-        console.log('changeVal', val, this.filter.tagAdscription)
-      },
       getDropList() {
+        let templateOwn = localStorage.getItem('icssEnumsData') ? JSON.parse(localStorage.getItem('icssEnumsData')).moduleTypeEnum : []
+        this.Adscriptions = templateOwn;
         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[6];
             for (var i = 0; i < this.tagTypes.length; i++) {
               this.tagTypesList.push(this.tagTypes[i].val)
             }
           }
-
         })
       },
       getDataList() {
@@ -131,11 +127,9 @@
                 list[i].typeCn = this.Adscriptions[z].name
               }
             }
-
           }
           this.list = list;
           this.total = res.data.data.total;
-          console.log('tagGroup-列表',res)
         })
       },
       filterDatas() {
@@ -146,36 +140,32 @@
         this.$router.push({path:'LT-YXSJWH-TJMBWH'})
       },
       modifyIndeptTag(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);
-        //     this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:item}});
-        //   }else{
-        //     this.$message({
-        //       message: msg,
-        //       type: 'warning'
-        //     });
-        //   }
-        // });
-        console.log(row)
+        Promise.all([
+          api.getModuleInfoOne({moduleId:row.id}),
+          api.getModuleDetailInfo({moduleId:row.id})
+        ]).then((data)=>{
+          let data0 = data[0].data;
+          let data1 = data[1].data;
+          let allData = {},topMsg={},rightMsg={};
+          if(data0.code == 0){
+            topMsg = Object.assign({},data0.data);
+          }
+          if(data1.code == 0){
+            rightMsg = Object.assign({},data1);
+          }
+          allData = Object.assign({},topMsg,rightMsg)
+          this.$router.push({name:'TemplateMaintenanceWrap',params:{isEdit:true,data:allData}});
+        })
       },
       currentChange(next) {
         this.currentPage = next;
         this.getDataList();
-        // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
-        //     this.list = this.cacheData[next];
-        // } else {
-        //     this.getDataList();
-        // }
       },
       getFilterItems() {
         const param = {
-          // tagTypeList: [1],
           current: this.currentPage,
           size: this.pageSize,
           type: this.filter.tagAdscription,
-          // tagName: this.filter.tagSysName
         };
         return param;
       },
@@ -199,7 +189,7 @@
       },
       showDelDialog(id){
         this.showConfirmDialog('是否删除该标签?',()=>{
-          api.deleteTagGroup({ids:id}).then((res)=>{
+          api.delTemplate({ids:id}).then((res)=>{
             if(res.data.code=='0'){
               this.getDataList();
               this.warning(res.data.msg || '操作成功','success');

+ 32 - 45
src/components/icss/TemplateMaintenanceWrap.vue

@@ -7,16 +7,15 @@
     <PubTemplateGroup
       :editData="editData"
       @changeVal="changeVal"
-      @changeType="changeType"
       @validatePass="validatePass"
       ref="submitForm"
     ></PubTemplateGroup>
     <div class="main">
       <CommonTemplate
-        v-if="dataPub.region1 == 1" 
+        v-if="dataPub.region1"
         :pool="dataPub.tagPool"
         :type="dataPub.region1"
-        :options="editData.questionMapping"
+        :options="editData"
          @changeActionData="changeActionData"
       >
       </CommonTemplate>
@@ -45,14 +44,6 @@ export default {
       txt:'模板维护--添加模板',
       dataPub: {},                    //公用组件传的值都在这
       editData:{},                    //编辑数据
-      form: {
-        currentOrder: '0',            //标签成文顺序
-      },
-      rules: {
-        currentOrder: [
-          { required: true, message: '选择标签成文顺序', trigger: 'change' }
-        ]
-      },
       sendIds: [[], [], [], [], [], []],           //标签明细右侧操作数据
     }
   },
@@ -67,14 +58,7 @@ export default {
   methods: {
     back() { this.$router.go(-1) },
     changeVal(val) {    //子组件数据改变传递到父组件
-      this.dataPub = val
-      // console.log('公用组件传的值都在这', val)
-    },
-    changeSex(sex) {       //性别改变,清空标签明细
-      // console.log(sex)
-    },
-    changeType(type) {        //填写单类型改变,标签明细左侧更新,右侧清空
-      // console.log(type)
+      this.dataPub = val    // console.log('公用组件传的值都在这', val)
     },
     changeActionData(arr) {          //标签明细右侧数据id
       this.sendIds = arr
@@ -84,47 +68,48 @@ export default {
     },
     validatePass() {      //验证成功回调,调取接口
       //仍需验证标签明细是否选择
-      let type = this.dataPub.region1;
-      if (JSON.stringify(this.sendIds) == '[[],[],[],[],[],[]]' && type != 6 && type != 7 && type != 8) {
+      let type = this.dataPub.region1,name=this.dataPub.region2;
+      if (JSON.stringify(this.sendIds) == '[]') {
         this.$message({
           message: '请选择标签明细',
           type: 'warning'
         });
         return;
       }
-      let detailLis = utils.dataRecombination(this.sendIds, this.dataPub.region2)
+      let detailLis = utils.orderTemplateData(this.sendIds)
       let param = {
-        "questionWrapper": {
-          "controlType": 0,                            //控件类型(0:默认值 1:下拉单选 2:下拉多选 6:文本框 7:数字键盘文本框 99:联合推送)
-          "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,                //界面名称
-          "joint": this.dataPub.region5,               //标签间的连接符
-          "subType": this.dataPub.region6,   	         //0:可以,1:不可以(当项目检索)
-          "sexType": this.dataPub.region7,             //1:男,2:女,3:通用
-          "ageBegin": this.dataPub.region8,       		 //最小年龄
-          "ageEnd": this.dataPub.region9,              //最大年龄
-          "textGenerate": this.form.currentOrder,      //成文顺序 默认0
-          "copyType": this.dataPub.region10,           //是否复制
-          "showAdd": this.dataPub.region11,            //是否显示加号血压
-          "showInfo": 0,
-          "questionDetails": [],
-          "questionMappings": detailLis       //映射关系,
-        }
+        "modelDetils": detailLis,
+        "name": name,
+        "type": type,
+        "id":this.editData.id || ''
       }
+      console.log(param,'保存模板的参数')
       this.showDelDialog(param)
     },
     showDelDialog(param) {
-      this.showConfirmDialog('是否保存该标签组?', () => {
-        api.saveOrUpdate(param).then((res) => {
+      this.showConfirmDialog('是否保存该模板?', () => {
+        if(this.editData.id){
+          api.updateModuleInfo(param).then((res) => {
+            if (res.data.code === '0') {
+              this.warning(res.data.msg || '修改成功', 'success','1000')
+              setTimeout(() => {
+                this.$router.push({
+                  path:'/admin/LT-YXSJWH-MBWH'
+                })
+              }, 1000);
+            } else {
+              this.warning(res.data.msg)
+            }
+          }).catch((err) => {
+            this.warning(err);
+          })
+        }else{
+          api.saveModuleInfo(param).then((res) => {
           if (res.data.code === '0') {
             this.warning(res.data.msg || '保存成功', 'success','1000')
             setTimeout(() => {
               this.$router.push({
-                path:'/admin/LT-YXSJWH-BQZWH'
+                path:'/admin/LT-YXSJWH-MBWH'
               })
             }, 1000);
           } else {
@@ -133,6 +118,8 @@ export default {
         }).catch((err) => {
           this.warning(err);
         })
+        }
+        
       });
     },
     showConfirmDialog(msg, resolve) {