<template>
  <div class="body">
    <div class="bkg">
      <u-image mode="widthFix" width="100vw" :src="require('@/static/answer-bkg.png')"></u-image>
    </div>

    <div class="container">
      <div class="container__bkg">
        <u-image width="100%" height="100%" mode="scaleToFill" :src="require('@/static/answer-container-bkg.png')"></u-image>
      </div>
      <div class="title">
        {{ containerTitle(now+1) }}
      </div>

      <transition name="answering"
                  enter-active-class="fade-in"
                  leave-to-class="fade-out">
        <div :style="{ 'display': progress !== 1 ? 'none' : '' }" v-show="progress === 1">
          <div class="question">
            1921年，中国共产党召开了第一次全国代表大会，宣告中国共产党成立。你知道这次大会是在哪里召开的吗？
          </div>
          <div class="answers">
            <div class="answers__item" v-for="(item, index) in 4" @click="$u.throttle(() => answer(item, index))">
              <div class="answers__item--num" :class="{ 'answers__item--num-active': index === flag }">{{num(index)}}</div>
              <div class="answers__item--text" :class="{ 'answers__item--text-active': index === flag }">上海</div>
            </div>
          </div>
        </div>
      </transition>

      <transition name="answer-result"
                  enter-active-class="fade-in"
                  leave-to-class="fade-out">
        <div :style="{ 'display': progress !== 2 ? 'none' : '' }"  class="answers correct" v-show="progress === 2">
          <div class="answers__img">
            <u-image mode="widthFix" :width="194" :src="require('@/static/correct.png')"></u-image>
          </div>

          <div class="answers__text">
            恭喜你，答对了！
          </div>

          <div class="answers__btn" @click="$u.throttle(next)">
            <u-image mode="widthFix" :width="381" :src="require('@/static/next-btn.png')"></u-image>
          </div>
        </div>
      </transition>

      <transition name="answer-end"
                  enter-active-class="fade-in"
                  leave-to-class="fade-out">
        <div :style="{ 'display': progress !== 3 ? 'none' : '' }"  class="answers correct" v-show="progress === 3">
          <div class="answers__img">
            <u-image mode="widthFix" :width="194" :src="require('@/static/correct.png')"></u-image>
          </div>

          <div class="answers__text answers__result">
            打卡成功，已完成<span>{{'3'}}</span>个红色场馆的打卡， 完成8家红色场馆打卡即可获得<span>荣誉证书</span>
          </div>

          <div class="answers__btn" @click="$u.throttle(next)">
            <u-image mode="widthFix" :width="381" :src="require('@/static/back-home-btn.png')"></u-image>
          </div>
        </div>
      </transition>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      now: 0,
      nowAnswer: {},
      answers: [{},{},{}],

      progress: 1,//1答题中2答案3结束
      flag: -1,//显示active index
    };
  },
  methods: {
    answer (item, index) {
      this.flag = index

      setTimeout(() => {

        this.progress = this.now === (this.answers.length - 1) ? 3 : 2
      },500)
    },

    next () {
      this.now ++
      this.flag = -1
      this.progress = 1
    }
  },
  computed: {
    num () {
      return function (index) {
        let map = new Map([
          [0,'A'],
          [1,'B'],
          [2,'C'],
          [3,'D'],
          [4,'E'],
          [5,'F'],
          [6,'G'],
          [7,'H'],
          [8,'I'],
        ])
        return map.get(index)
      }
    },

    containerTitle () {
      return function (number) {
        let chineseNumber = "";
        let chineseDigits = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
        let chineseUnits = ["", "十", "百", "千", "万", "亿"];

        if (number === 0) {
          return chineseDigits[0];
        }

        let digits = [];
        while (number > 0) {
          digits.push(number % 10);
          number = Math.floor(number / 10);
        }

        let unitIndex = 0;
        for (let i = 0; i < digits.length; i++) {
          let digit = digits[i];
          let unit = chineseUnits[unitIndex];

          if (digit === 0) {
            if (unit === "万" || unit === "亿") {
              chineseNumber = chineseUnits[unitIndex] + chineseNumber;
              unitIndex++;
            }
            continue;
          }

          chineseNumber = chineseDigits[digit] + unit + chineseNumber;
          unitIndex++;

          if (unitIndex === 5) {
            unitIndex = 1;
          }
        }

        return `第${chineseNumber}题`;
      }
    }
  }
}
</script>

<style lang="scss">
.body {

  padding: 100rpx 20rpx 0 20rpx;
}
.bkg {

  z-index: -1;
  position: absolute;
  top: 0;
  left: 0;
}

.container {
  min-height: 936rpx;

  padding-bottom: 96rpx;
  position: relative;
  &__bkg {

    z-index: 0;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }

  & .title {
    width: 51%;
    text-align: center;
    font-size: 50rpx;
    font-weight: 400;
    color: #FFFFFF;

    padding: 15rpx 0rpx;
    z-index: 1;
    position: relative;
  }

  & .question {
    font-weight: 500;
    color: #333333;
    font-size: 35rpx;

    margin-top: 96rpx;
    padding: 0 51rpx;
    z-index: 1;
    position: relative;
  }

  & .correct {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }
  & .answers {

    margin-top: 58rpx;
    padding: 0 51rpx;
    z-index: 1;
    position: relative;
    &__item {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;

      & + div {

        margin-top: 34rpx;
      }
      &--num {
        font-weight: 500;
        color: #666666;
        font-size: 32rpx;
        text-align: center;
        width: 60rpx;
        height: 60rpx;
        line-height: 60rpx;
        background: #fff;
        border: 1px solid #F85352;
        border-radius: 50%;
        transition: all 0.2s;

        margin-right: 13rpx;
        &-active {
          background: #F85352;
          color: #fff;
        }
      }
      &--text {
        line-height: 60rpx;
        flex: 1;
        font-weight: 500;
        font-size: 32rpx;
        color: #666;
        background: #fff;
        border: 1px solid #F85352;
        border-radius: 0 20rpx 20rpx 20rpx;
        transition: all 0.2s;

        padding: 0 54rpx;
        &-active {
          background: #F85352;
          color: #fff;
        }
      }
    }


    &__text {
      font-size: 32rpx;
      font-weight: 500;
      color: #666666;
      line-height: 135rpx;

      & > span {
        font-size: 34rpx;
        color: #C52A34;
      }
    }
    &__result {
      color: #666666;
      font-weight: 500;
      font-size: 20rpx;
      line-height: 36rpx;

      padding: 0 calc(127rpx - 51rpx);
    }
  }
}

.fade-in {
  animation: fade-in .5s cubic-bezier(0.39, 0.575, 0.565, 1) both;
}

@keyframes fade-in {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.fade-out {
  animation: fade-out .4s ease-out both;
}

@keyframes fade-out {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
</style>
