<template>
  <div class="pay-bg">
    <img src="../../assets/images/pages.png" alt />
    <div class="pay-btn">
      <div class="num">
        ¥
        <span>199</span>.00
      </div>
      <div class="btn" @click="goPay" v-if="orderStatus === 100">立即购买</div>
      <div class="btn active" v-if="orderStatus === 1" @click="goHome">已购买</div>
      <div class="btn" v-if="orderStatus === -1" @click="goMyOrder">待支付</div>
    </div>
    <pay-we-chart :requestParam="requestParam"></pay-we-chart>
  </div>
</template>
<script>
import * as api from '@/api/pay.js'
import { getUser } from '@/api/account'

export default {
  data() {
    const productId =
      webConf.isDev === 'production'
        ? '6684359515615264768'
        : '6682927830365372416'
    return {
      userId: '',
      requestParam: {
        product_id: productId, // 提前设定
        open_id: '', // 通过微信授权获取
        prepay_id: '', // 通过调用接口获取
        app_id: '', // 提前设定
        app_secret: '' // 提前设定
      },
      orderStatusTime: null,
      orderStatus: 100
    }
  },
  methods: {
    // 已购买
    goHome() {
      this.$toast('您已购买！')
    },
    // 支付
    goPay() {
      wx.miniProgram.navigateTo({
        url: `/pages/pay/index?data=${this.requestParam.product_id}`
      })
    },
    // 去我的订单页面
    goMyOrder() {
      wx.miniProgram.navigateTo({
        url: `/pages/web/index?src=${window.location.origin}/my/buyCourses`
      })
    },
    // 获取订单状态
    getOrderStatus() {
      api.getOrderStatus().then(res => {
        this.orderStatus = res.status
        if (this.orderStatus === 1) {
          this.orderStatusTime && clearInterval(this.orderStatusTime)
        }
      })
    },
    // 获取openID
    getOpenid() {
      getUser().then(res => {
        api.getOpenid({ id: res.id, identity: 'transport' }).then(res => {
          if (res.code === 0) {
            this.requestParam.open_id = res.data.openid
          }
        })
      })
    }
  },
  beforeMount() {
    this.getOrderStatus()
    this.orderStatusTime && clearInterval(this.orderStatusTime)
    this.orderStatusTime = setInterval(this.getOrderStatus, 1000)
  },
  destroyed() {
    this.orderStatusTime && clearInterval(this.orderStatusTime)
  }
}
</script>
<style lang="scss" scoped>
.pay-bg {
  width: 100%;
  img {
    width: 100%;
  }
}
.pay-btn {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 7.5rem;
  height: 1rem;
  background: rgba(255, 255, 255, 1);
  box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.05);
  display: flex;
  align-items: center;
  padding: 0 0.4rem;
  .num {
    font-size: 0.26rem;
    color: #ff6767;
    span {
      font-size: 0.4rem;
    }
  }
  .btn {
    width: 4.65rem;
    height: 0.7rem;
    background: rgba(255, 103, 103, 1);
    border-radius: 0.12rem;
    margin-left: auto;
    text-align: center;
    line-height: 0.7rem;
    color: #fff;
    font-size: 0.3rem;
  }
  .active {
    background: #ccc;
  }
}
</style>
