<template>
  <portal to="notification-outlet">
  <div class="select" @touchmove.prevent>
    <ul class="clearfix">
      <li
        v-for="(item,idx) in result"
        :class="[{'liSelect':item.select,'noBorder':((item.description||item.name).indexOf('${'))!=-1}]"
        :key="item.id"
      >
        <span v-if="((item.description||item.name).indexOf('${'))==-1">{{item.description||item.name}}</span>
        <OptionInp v-else :item="item" @handleInp="inpVal" :inx="idx"/>
      </li>
    </ul>
    <div :class="sure?'realSure sure':'sure'" @click="makeSuer">
      确定 <span v-if="numPlus">({{numPlus}})</span>
    </div>
  </div>
  </portal>
</template>
<script>
  import OptionInp from '../common/OptionInp.vue';
  import {concatVal,getExpStr} from '../utils/tools.js';
export default {
  props: ["symptomResult","num"],
  data() {
    return {
      result: [], //答案结果
      connectResult: [], //id
      contentResult: "", //name
      rules: [], //规则所需数据value
      numPlus:0,     //已选答案个数
      sure:false
    };
  },
  mounted() {
    //this.numPlus = this.num
    console.log(this.symptomResult.questionDetailList)
    this.result = this.symptomResult.questionDetailList;
  },
  watch:{
    result: {
      handler(newArr) {
        let num = 0,sldNum=0;
        for(let i = 0;i < newArr.length;i++){
          if(!newArr[i].select){
            ++num;
          }else{
            sldNum++;
          }
        }
        this.numPlus =sldNum;
      },
      immediate: true,
      deep:true
    }
  },
  methods: {
    inpVal(val,index){//输入框失焦处理
      // 输入框回读
      let detailList = this.result;
      let currItem = detailList[index];
      currItem.value = val;
      if(val){
        this.sure=true;
      }else{
        if(detailList.findIndex((it)=>it.value)!==-1){
          this.sure=true;
        }else{
          this.sure=false;
        }
      }

    },
    handleClick(it,index,flg,ipt){
      if(flg){
        document.activeElement.blur();
        document.activeElement.scrollIntoViewIfNeeded(true);
        setTimeout(()=>{
          document.activeElement.scrollIntoViewIfNeeded(true);
        },300)
      }
      /*let data = it.questionDetailList&&it.questionDetailList.slice(0); //数组深拷贝
      if(ipt){//输入框单选，输入了内容才算选中,删除内容算取消
        for(let i=0;i<data.length; i++){
          if(i==index){
            data[i].select=data[i].value?1:0;
          }else{
            data[i].select = 0
          }
        }
      }else{
      for(let i=0;i<data.length; i++){
        if(i==index){
          data[i].select = data[i].select==1?0:1;
        }else{
          data[i].select = 0
        }
      }*/
      /*}
      let temp = concatVal(data);
      const newData = Object.assign({},this.datas,{questionDetailList:data,value:temp.value,valueP:temp.valueP});
      this.$emit("updata",newData);*/
    },
    makeSuer() {
      if(!this.sure)return;
      let result = this.result;
      // if(this.numPlus == 1){
      let tmpResult=[],tmpResultp=[];
      for (let i = 0; i < result.length; i++) {
        const text=result[i].name;
        const textp=result[i].description||result[i].name;
        const msg = getExpStr(text);
        const msgp = getExpStr(textp);
        if(result[i].name.indexOf("${")!==-1){
          if(result[i].value){
            tmpResult.push(msg.prefix+(result[i].value||"")+msg.suffix);
            tmpResultp.push(msgp.prefix+(result[i].value||"")+msgp.suffix);
          }
        }else {
          //tmpIds=tmpIds.concat(result[i].connectId)
          tmpResult.push(text);
          tmpResultp.push(textp);
        }
        }
      // }else{

      // }
      let number = this.num;
      this.$emit("updataResult", this.symptomResult,  {val:tmpResult.join('、'),valp:tmpResultp.join('、')},++number);

    },
    /*selectResult(item,idx) {
      const { exclusion, select } = item;
      let result = JSON.parse(JSON.stringify(this.result));
      if (select) {//判断是否选中,选中的取消,关联id删除，未选中判断是否互斥
        for (let i = 0; i < result.length; i++) {
          if(i == idx){
            result[i].select = false
          }
        }
      }else{
        if(+exclusion === 1){
          for (let i = 0; i < result.length; i++) {
              if(i == idx){
                result[i].select = true
              }else{
                result[i].select = false
              }
          }
        }else{
          for (let i = 0; i < result.length; i++) {
            if(result[i].select&&+result[i].exclusion === 1){
              result[i].select=false
            }else{
              if(i == idx){
                result[i].select = true
              }
            }
          }
        }
      }
      this.result = result
    }*/
  },
  components:{
    OptionInp
  }
};
</script>
<style lang="less" scoped>
  @import "../less/base.less";
.select {
  background-color: #fff;
  padding: 0.12rem 0 0 0;
  position: fixed;
  width: 100%;
  bottom: 0;
  box-sizing: border-box;
  box-shadow: 0 0 30px -10px rgba(104, 124, 189, 0.25);
  li {
    padding: 0.14rem 0.2rem;
    border:1px #DFE0E4 solid;
    border-radius: 0.36rem;
    font-size: #font[select];
    margin: 0.15rem 0.15rem 0;
    float: left;
    color: #666;
  }
  .liSelect {
    color: #fff;
    background-color: #colors[btn];
    border-color:  #colors[btn];
  }
  .noBorder{
    border: none;
    width: 100%;
    &.liSelect{
       background: none;
    }
  }
}
</style>
