<template>
  <div>
    <div class="map" v-if="total !== 20 && total !== 0">
      <img class="background" :src="imgUrl.background" v-if="total !== 5"/>
      <img class="background" :src="imgUrl.background5" v-if="total === 5"/>
      <img :src="imgUrl.go" class="go" @click="shuoming = true"/>
      <div v-for="(data,index) in lessonList" :class="'island-block land'+(index+1)" :id="index === lessonList.length-1? 'nowLesson' :''">
        <div :class="{today:index === lessonList.length-1}" @click="showDia(data)">
          <img :src="imgUrl.isLandAct" v-if="index !== lessonList.length-1" class="land"/>
          <img :src="imgUrl.islandNow" v-if="index === lessonList.length-1"  class="land"/>
          <img :src="imgUrl.day[index]" class="day"/>
          <div class="star-block">
            <img :src="imgUrl.starDefault" v-if="!starNum(data,2)"/>
            <img :src="imgUrl.starSelect" v-if="starNum(data,2)"/>
            <img :src="imgUrl.starDefault" v-if="!starNum(data,3)"/>
            <img :src="imgUrl.starSelect" v-if="starNum(data,3)"/>
            <img :src="imgUrl.starDefault" v-if="!starNum(data,4)"/>
            <img :src="imgUrl.starSelect" v-if="starNum(data,4)"/>
          </div>
        </div>
      </div>
      <div v-for="i in (total - lessonList.length) " :class="'island-block land'+(total-i+1)" @click="noLesson()">
        <img :src="imgUrl.islandDefault" class="land"/>
        <img :src="imgUrl.day[total-i]" class="day"/>
        <div class="star-block">
          <img :src="imgUrl.starDefault"/>
          <img :src="imgUrl.starDefault"/>
          <img :src="imgUrl.starDefault"/>
        </div>
      </div>
    </div>
    <div class="map" v-if="total === 20 || total === 0">
      <img class="background" :src="imgUrl.bg20"/>
      <img :src="imgUrl.go20" class="go go20" @click="shuoming = true"/>
      <div class="title title20" v-if="courseList.length > 0" @click="showCourseList">
        {{titleName.category_name}}
        <i class="iconfont icon-xiala"></i>
      </div>
      <div v-for="(data,index) in lessonList" :class="'island-block land20'+(index+1)" :id="index === lessonList.length-1? 'nowLesson' :''">
        <div :class="{today:index === lessonList.length-1}" @click="showDia(data)">
          <img :src="imgUrl.map20Land" v-if="index !== lessonList.length-1" class="land"/>
          <img :src="imgUrl.map20Land" v-if="index === lessonList.length-1"  class="land"/>
          <img :src="imgUrl.day[index]" class="day"/>
          <div class="star-block">
            <img :src="imgUrl.mapBgStarN" v-if="!starNum(data,2)"/>
            <img :src="imgUrl.mapBgStar" v-if="starNum(data,2)"/>
            <img :src="imgUrl.mapBgStarN" v-if="!starNum(data,3)"/>
            <img :src="imgUrl.mapBgStar" v-if="starNum(data,3)"/>
            <img :src="imgUrl.mapBgStarN" v-if="!starNum(data,4)"/>
            <img :src="imgUrl.mapBgStar" v-if="starNum(data,4)"/>
          </div>
        </div>
      </div>
      <div v-for="i in (20 - lessonList.length) " :class="'island-block land20'+(20-i+1)" @click="noLesson()">
        <img :src="imgUrl.map20LandC" class="land"/>
        <img :src="imgUrl.day[total-i]" class="day"/>
        <div class="star-block">
          <img :src="imgUrl.starDefault"/>
          <img :src="imgUrl.starDefault"/>
          <img :src="imgUrl.starDefault"/>
        </div>
      </div>
    </div>
    <img :src="imgUrl.box" class="box-img" @click="teacherQ2 = true"/>
    <bottom-tab/>
    <mt-popup v-model="showLesson">
      <div class="lesson-block">
        <img :src="imgUrl.lessonBg" class="lesson-bg"/>
        <img :src="imgUrl.close" class="close" @click="showLesson = false"/>
        <div class="age-choose" v-if="thisLessonBox && thisLessonBox.ele_list.length > 1">
          <span :class="{active:thisLesson.max_age === 3}" @click="chooseAge(3)">0-3岁</span>
          <span :class="{active:thisLesson.max_age === 6}" @click="chooseAge(6)">4-6岁</span>
        </div>
        <div class="list-block" v-if="thisLesson">
          <div class="img-block">
            <img :src="imgUrl.look" class="look list" @click="goToLesson('1')"/>
          </div>
          <div class="img-block" v-if="thisLesson">
            <img :src="imgUrl.play" class="play list" @click="goToLesson('2')"/>
            <div class="disable-block" v-if="!thisLesson.watch_list.find(i=>{return i.page_id === 1})">
              <img :src="imgUrl.clock"/>
            </div>
          </div>
          <div class="img-block">
            <img :src="imgUrl.show" class="show list" @click="goToLesson('3')"/>
            <div class="disable-block" v-if="!thisLesson.watch_list.find(i=>{return i.page_id === 2})">
              <img :src="imgUrl.clock"/>
            </div>
          </div>
          <div class="img-block">
            <img :src="imgUrl.jiayou" class="jiayou list" @click="goToLesson('4')"/>
            <div class="disable-block" v-if="!thisLesson.watch_list.find(i=>{return i.page_id === 4})">
              <img :src="imgUrl.clock"/>
            </div>
          </div>
        </div>
      </div>
    </mt-popup>
    <mt-popup v-model="shuoming">
      <div class="shuoming-block" :style="{backgroundImage:`url(${imgUrl.smBg})`}">
        <img :src="imgUrl.close" class="close" @click="shuoming = false"/>
        <div class="content">
          <h1>课程介绍:</h1>
          欢迎各位来到唱唱英语训练营,我们在每一天的课程中都准备了精彩的英语学习、唱动体验内容等着您哦,通过每日坚持学习与分享打卡收集星星,更可以在课程全部完成后用星星兑换神秘奖品哦!快来带着宝贝一起愉快的在玩耍中学习英语吧!
          <h1 class="se">规则介绍:</h1>
          1.地图中每一个浮动标志物(岛屿、树屋、房屋等)都对应着当天进行中的课程。
          <br>
          2.地图中显示灰色的课程是因课程还未开放,请耐心等待,我们会根据课程进度依次开放。
          <br>
          3.每一天的课程最多可以收集3颗星星。
          <br>
          4.完成一天的课程(即爸妈看一看和宝贝玩一玩单元)就可获得一颗星星。
          <br>
          5.填写每日宝贝成长秀并且提交后可获得一颗星星。
          <br>
          6.完成填写后根据页面提示分享打卡海报可获得一颗星星。
          <br>
          7.完成地图中所有课程内容并且集齐所有星星后,请联系您的私人老师兑换什么奖品哦!
        </div>
      </div>
    </mt-popup>
    <mt-popup v-model="showChoose" :modal="true">
      <div class="choose-block">
        <mt-picker :slots="[{values:courseList,defaultIndex:courseList.indexOf(lesson)}]"  value-key="category_name" @change="onValuesChange"></mt-picker>
        <mt-button type="primary" size="large" plain @click="subLesson">确定</mt-button>
      </div>
    </mt-popup>
    <mt-popup v-model="teacherQ2">
      <div class="teacher-block">
        <img :src="imgUrl2.teacherBg" class="teacher-bg"/>
        <img :src="teacherDetail.qr" class="qr" v-if="teacherDetail">
        <div class="content-text">
          <div class="title-text">
            请长按识别图中二维码添加老师
          </div>
          并截图发送领取神秘礼品哦
        </div>
        <div class="closeBtn" @click="teacherQ2 = false"></div>
      </div>
    </mt-popup>
  </div>
</template>

<script>
  import {mapImage,IndexImage} from "../util/imgUrl";
  import  {getLessonListApi,getCourseListApi,getTeacherApi} from "../service/api";
  import bottomTab from './public/bottomTab'
  import { Toast,MessageBox  } from 'mint-ui'
  export default {
    data(){
      return {
        periods_id:this.$route.query.periods_id,
        teacherQ2:false,
        parent_category_id:Number(this.$route.query.parent_category_id),
        imgUrl:mapImage,
        imgUrl2:IndexImage,
        lessonList:[],
        courseList:[],
        lesson:{},
        thisLessonBox:false,
        total:0,
        teacherDetail:null,
        showChoose:false,
        showLesson:false,
        shuoming:false,
        thisLesson:null
      }
    },
    computed:{
      titleName(){
        let lesson = this.courseList.find(i=>{
          return i.category_id===Number(this.parent_category_id)
        });
        this.lesson =lesson;
        return lesson
      },
      indexOfLesson(){
        return this.courseList.findIndex(i=>i.category_id===Number(this.parent_category_id))
      },
    },
    components:{
      bottomTab
    },
    mounted(){
      this.initPage()
    },
    methods:{
      starNum(data,page_id){
        let ret = false;
        data.ele_list.forEach(i=>{
          if(i.watch_list.find(i=>{return i.page_id === page_id })){
            ret = true
          }
        });
        return ret
      },
      chooseAge(a){
        let thisLesson = this.thisLessonBox.ele_list.find(i=>{
            return i.max_age === a
          });

        console.log(thisLesson)
        if(!!thisLesson){
          this.thisLesson = thisLesson
        }else{
          MessageBox('错误', '暂无课程');
        }
      },
      subLesson(){
        this.$router.push({name:'map',query:{periods_id:this.periods_id,parent_category_id:this.lesson.category_id,course_type:this.$route.query.course_type}});
        this.parent_category_id = this.lesson.category_id;
        this.showChoose = false;
        this.initPage()
      },
      onValuesChange(a,b){
        this.lesson = b[0]
      },
      initPage(){
        if(this.$route.query.course_type == 0){
        getCourseListApi(this.periods_id).then(res=>{
          this.courseList = res
        });
        }
        if(this.parent_category_id){
          getLessonListApi(this.periods_id,{category_id:this.parent_category_id}).then(res=>{
            this.lessonList = res.list;
            this.total = res.periods_info.current_watch_num || 0;
            if(res.list && res.list.length > 0){
              this.$nextTick(function(){
                document.getElementById('nowLesson').scrollIntoView({behavior:'smooth',start:'center'})
              })
            }
          });
        }else{

        }
        getTeacherApi().then(res=>{
          this.teacherDetail = res;
        })
      },
      noLesson(){
        Toast('课程尚未开始')
      },
      showDia(data){
        this.thisLesson = data.ele_list[0];
        this.thisLessonBox = data;
        this.showLesson = true
      },
      showCourseList(){
        this.showChoose = true
      },
      goToLesson(type){
        let query = {
          periods_id:this.thisLessonBox.periods_id,
          category_id:this.thisLessonBox.category_id,
          parent_category_id:this.parent_category_id,
          element_id:this.thisLesson.id,
          course_type:this.$route.query.course_type,
          type:type
        };
        this.$router.push({name:'lesson',query:query})
      }
    }
  }
</script>

<style scoped lang="less">
  @import "../util/public";
  .box-img{
    position: fixed;
    left: 14*@toVw;
    bottom: 60*@toVw;
    width: 70*@toVw;
  }
  .lesson-block{
    position: relative;
    background: rgba(0,0,0,0.5);
    width: 308*@toVw;
    height: 364*@toVw;
    .lesson-bg{
      width: 308*@toVw;
      height: 364*@toVw;
      position: relative;
    }
    .close{
      top: 10*@toVw;
      position: absolute;
      right: 10*@toVw;
      width: 16*@toVw;
    }
    .age-choose{
      position: absolute;
      width: 292*@toVw;
      border-radius: 8 * @toVw;
      top: 43 * @toVw;
      height: 30 * @toVw;
      line-height: 30 * @toVw;
      text-align: center;
      background: #666;
      color: white;
      left: 50%;
      margin-left: -146*@toVw;
      overflow: hidden;
      span{
        display: inline-block;
        width: 145.5*@toVw;
        float: left;
        &.active{
          background: white;
          color: #666;
        }
        &:nth-child(1){
          border-right:  1*@toVw solid #666;
        }
      }
    }
    .list-block{
      width: 276*@toVw;
      height: 264*@toVw;
      border-radius: 8px;
      position: absolute;
      top: 76*@toVw;
      background: white;
      left: 50%;
      margin-left: -146*@toVw;
      padding: 8*@toVw;
      .img-block{
        position: relative;
        overflow: hidden;
        border-radius: 8px;
        .disable-block{
          position: absolute;
          top: 0;
          left: 0;
          right: 0;
          bottom: 7px;
          border-radius: 8px;
          text-align: center;
          background-color: rgba(0,0,0,0.3);
          img{
            width: 25 * @toVw;
            margin-top: 15 * @toVw;
          }
        }
        .list{
          width: 100%;
          margin-bottom: 3*@toVw;
        }
      }
    }

  }

  .teacher-block{
    position: relative;
    width: 74.66666667vw;
    background-color: rgba(0,0,0,0.7);
    .teacher-bg{
      width: 280*@toVw;
    }
    .qr{
      width: 138*@toVw;
      height: 138*@toVw;
      position: absolute;
      top:65 * @toVw;
      left: 70 * @toVw;
    }
    .content-text{
      width: 100%;
      text-align: center;
      position: absolute;
      top: 315 * @toVw;
      font-size:12 * @toVw;
      font-family:PingFang-SC-Medium;
      font-weight:500;
      color:rgba(153,153,153,1);
      line-height:23px;
      .title-text{
        color: #333;
        font-family:PingFang-SC-Medium;
        font-weight:500;
        margin-bottom: 5 * @toVw;
        font-size: 17*@toVw;
      }
    }
    .closeBtn{
      position: absolute;
      width: 30*@toVw;
      height: 30*@toVw;
      right: 8*@toVw;
      top: 8*@toVw;
    }
  }
  .title{
    position: absolute;
    width: 120px;
    background: #654B17;
    font-size:13px;
    font-family:MicrosoftYaHei;
    font-weight:400;
    color:rgba(255,255,255,1);
    left: 50%;
    margin-left: -70px;
    top: 146*@toVw;
    text-align: center;
    padding: 3px 0 3px 10px ;
    border-radius: 5px;

  }
  .map{
    .background{
      width: 375*@toVw;
    }
    .go{
      position: absolute;
      top: 154*@toVw;
      left: 31*@toVw;
      width: 195*@toVw;
      &.go20{
        width: 134 * @toVw;
        top: 196 * @toVw;
        left: 42 * @toVw;
      }
    }
    .island-block{
      position: absolute;
      width: 105*@toVw;
      .land{
        width: 100%;
      }
      .day{
        position: absolute;
        width: 45*@toVw;
        bottom: 14*@toVw;
        left: 76*@toVw;
      }
      .star-block{
        position: absolute;
        left: 22*@toVw;
        bottom: -3*@toVw;
        img{
          width: 20*@toVw;
        }
      }
      .today{
        animation: dodge 1.5s infinite;
      }
      &.land201{
        top: 287 * @toVw;
        right: 39 * @toVw;
      }
      &.land202{
        top: 407 * @toVw;
        left: 39 * @toVw;
      }
      &.land203{
        top: 564 * @toVw;
        right: 158 * @toVw;
      }
      &.land204{
        top: 666 * @toVw;
        right: 24 * @toVw;
      }
      &.land205{
        top: 775 * @toVw;
        left: 35 * @toVw;
      }
      &.land206{
        top: 910 * @toVw;
        right: 11 * @toVw;
      }
      &.land207{
        top: 993 * @toVw;
        left: 24 * @toVw;
      }
      &.land208{
        top: 1131 * @toVw;
        right: 112 * @toVw;
      }
      &.land209{
        top: 1301 * @toVw;
        right: 24 * @toVw;
      }
      &.land2010{
        top: 1420 * @toVw;
        right: 169 * @toVw;
      }
      &.land2011{
        top: 1602 * @toVw;
        right: 50 * @toVw;
      }
      &.land2012{
        top: 1765 * @toVw;
        left: 48 * @toVw;
      }
      &.land2013{
        top: 1908 * @toVw;
        right: 68 * @toVw;
      }
      &.land2014{
        top: 2095 * @toVw;
        right: 38 * @toVw;
      }
      &.land2015{
        top: 2208 * @toVw;
        left: 46 * @toVw;
      }
      &.land2016{
        top: 2381 * @toVw;
        right: 71 * @toVw;
      }
      &.land2017{
        top: 2549 * @toVw;
        left: 33 * @toVw;
      }
      &.land2018{
        top: 2646 * @toVw;
        right: 49 * @toVw;
      }
      &.land2019{
        top: 2799 * @toVw;
        right: 200 * @toVw;
      }
      &.land2020{
        top: 2959 * @toVw;
        right: 47 * @toVw;
      }
      &.land1{
        top: 215*@toVw;
        right: 48*@toVw;
      }
      &.land2{
        top: 343*@toVw;
        left: 39*@toVw;
      }
      &.land3{
        top: 500*@toVw;
        left: 105*@toVw;
      }
      &.land4{
        top: 602*@toVw;
        right: 32*@toVw;
      }
      &.land5{
        top: 710*@toVw;
        left: 35*@toVw;
      }
      &.land6{
        top: 846*@toVw;
        right: 18*@toVw;
      }
      &.land7{
        top: 929*@toVw;
        left: 24*@toVw;
      }
      &.land8{
        top: 1064*@toVw;
        right: 151*@toVw;
      }
      &.land9{
        top: 1237*@toVw;
        right: 32*@toVw;
      }
      &.land10{
        top: 1356*@toVw;
        left: 93*@toVw;
      }
    }
    @keyframes dodge
    {
      0%{
        transform:scale(0.95,0.95)
      }
      50%{
        transform:scale(1.05,1.05)
      }
      100%{
        transform:scale(0.95,0.95)
      }
    }
  }
  .shuoming-block{
    width: 308 * @toVw;
    height: 435 *@toVw;
    background-size: 100% 100%;
    border-radius: 8px;
    position: relative;
    .close{
      position: absolute;
      top: 10 * @toVw;
      right: 10 * @toVw;
      width: 16 * @toVw;
    }
    .content{
      background: white;
      width: 262 * @toVw;
      height: 313 * @toVw;
      border-radius: 8px;
      border: 1px solid #333;
      line-height: 1.6em;
      font-size: 12px;
      position: relative;
      top: 77 * @toVw;
      color: #333;
      padding: 15*@toVw;
      overflow: auto;
      h1{
        font-size: 16px;
        margin-bottom: 5px;
        &.se{
        margin-top: 10px;
         }
      }
    }
  }
  .choose-block{
    width: 300 * @toVw;
    padding: 10 * @toVw;
  }
</style>