<template>
  <view class="bargain on">
    <!-- 在header上加 on 为请求支援 -->
    <!-- 当前登录的用户和url上携带的用户id不一致视为被邀请砍价 -->
    <view class="wrapper bargain-box on user" v-if="bargainUserInfo && bargainUid != userInfo.uid">
      <!-- <view class="people">
        {{ bargainShare.lookCount }}人查看 丨 {{ bargainShare.shareCount }}人分享 丨 {{ bargainShare.userCount }}人参与
      </view> -->
      <!-- 帮助砍价、帮砍成功:-->
      <view class="pictxt acea-row row-center-wrapper">
        <div class="bargain-header">
          <view class="pictrue"><image :src="bargainUserInfo.avatar" /></view>
          <view class="text">
            {{ bargainUserInfo.nickname }}
            <text>邀请您帮忙砍价</text>
          </view>
        </div>
      </view>
    </view>
    <view class="wrapper bargain-box time on">
      <div class="pictxt">
        <count-down :isDay="true" :tipText="'倒计时 '" :dayText="' 天 '" :hourText="' 时 '" :minuteText="' 分 '" :secondText="' 秒'" :datatime="goodsDetail.stopTime"></count-down>
      </div>
    </view>
    <view class="wrapper bargain-box bargain-product">
      <view class="pictxt acea-row row-between-wrapper" @click="openAlone">
        <view class="pictrue">
          <image :src="goodsDetail.image" />
          <view class="bargain_view">
            查看商品
            <view class="iconfont icon-jiantou iconfonts"></view>
          </view>
        </view>
        <view class="text acea-row row-column-around">
          <view class="line2" v-text="goodsDetail.title"></view>
          <view class="money font-color-red">
            已砍至: ¥
            <text class="num" v-text="bargainHelpCount.remainingPrice"></text>
          </view>
          <view class="acea-row row-middle">
            <view class="successNum" v-text="`原价:${goodsDetail.price || 0}`"></view>
            <view class="successNum" v-text="`已有${bargainSumCount || 0}人砍价成功`"></view>
          </view>
        </view>
      </view>

      <!-- 砍价进度条 -->
      <view class="cu-progress acea-row row-middle round margin-top">
        <view class="acea-row row-middle bg-red" :style="{ width: bargainHelpCount.pricePercent + '%' }"></view>
      </view>

      <!-- 砍价进度条下的金额 -->
      <view class="balance acea-row row-between-wrapper">
        <view v-text="`已砍${bargainHelpCount.alreadyPrice || 0}元`"></view>
        <view v-if="bargainHelpCount.price === 0">砍价成功</view>
        <view v-else v-text="`还剩${bargainHelpCount.price || 0}元`"></view>
      </view>

      <!-- 砍价成功:-->
      <!-- 
        surplusPrice  砍价剩余金额为0
        bargainUid  砍价人为发起砍价用户
        userBargainStatus  砍价状态为
       -->
      <view class="bargainSuccess" v-if="pay">
        <span class="iconfont icon-xiaolian"></span>
        恭喜您砍价成功,快去支付吧~
      </view>

      <!-- 参与砍价按钮 同一人-->
      <view v-if="participate" class="bargainBnt" @click="goParticipate">立即发起砍价</view>

      <!-- 邀请好友按钮 -->
      <view v-if="inviteFriends" class="bargainBnt" @click="goPoster">邀请好友帮砍价</view>

      <!-- 帮砍好友砍按钮 -->
      <view v-if="helpFriendsBargain" class="bargainBnt" @click="getBargainHelp">帮好友砍一刀</view>

      <!-- 发起砍价按钮 非同一人-->
      <view v-if="bargain" class="bargainBnt" @click="getBargainStart">我也要砍价</view>

      <!-- 支付按钮 -->
      <view class="bargainBnt" @click="goPay" v-if="pay">立即支付</view>

      <view class="bargainBnt on" @click="goList">抢更多商品</view>
      <view class="tip">
        已有
        <span class="font-color-red" v-text="bargainHelpCount.count"></span>
        位好友成功帮您砍价
      </view>
      <view class="lock"></view>
    </view>
    <view class="bargainGang bargain-box">
      <view class="title font-color-red acea-row row-center-wrapper">
        <view class="pictrue"><image :src="`${$VUE_APP_RESOURCES_URL}/images/left.png`" /></view>
        <view class="titleCon">砍价帮</view>
        <view class="pictrue on"><image :src="`${$VUE_APP_RESOURCES_URL}/images/left.png`" /></view>
      </view>
      <view class="list">
        <view class="item acea-row row-between-wrapper" v-for="(item, bargainHelpListIndex) in bargainHelpList" :key="bargainHelpListIndex">
          <view class="pictxt acea-row row-between-wrapper">
            <view class="pictrue"><image :src="item.avatar" /></view>
            <view class="text">
              <view class="name line1" v-text="item.nickname"></view>
              <view class="line1" v-text="item.add_time"></view>
            </view>
          </view>
          <view class="money font-color-red">
            <text class="iconfont icon-kanjia"></text>
            砍掉{{ item.price }}元
          </view>
        </view>
      </view>
      <view class="load font-color-red" v-if="!helpListStatus" @click="getBargainHelpList">点击加载更多</view>
      <view class="lock"></view>
    </view>
    <view class="goodsDetails bargain-box">
      <view class="title font-color-red acea-row row-center-wrapper">
        <view class="pictrue"><image :src="`${$VUE_APP_RESOURCES_URL}/images/left.png`" /></view>
        <view class="titleCon">商品详情</view>
        <view class="pictrue on"><image :src="`${$VUE_APP_RESOURCES_URL}/images/left.png`" /></view>
      </view>
      <view class="conter" v-html="goodsDetail.description"></view>
      <view class="lock"></view>
    </view>
    <view class="goodsDetails bargain-box">
      <view class="title font-color-red acea-row row-center-wrapper">
        <view class="pictrue"><image :src="`${$VUE_APP_RESOURCES_URL}/images/left.png`" /></view>
        <view class="titleCon">活动规则</view>
        <view class="pictrue on"><image :src="`${$VUE_APP_RESOURCES_URL}/images/left.png`" /></view>
      </view>
      <view class="conter" v-html="goodsDetail.rule"></view>
    </view>
    <view class="bargainTip" :class="active === true ? 'on' : ''">
      <view class="cutOff" v-if="bargainUid === userInfo.uid">
        您已砍掉
        <text class="font-color-red" v-text="bargainHelpPrice"></text>
        元,听说分享次数越多砍价成功的机会越大哦!
      </view>
      <view class="cutOff on" v-else>
        <view class="help font-color-red" v-text="'成功帮砍' + bargainHelpPrice + '元'"></view>
        ,您也可以砍价低价拿哦,快去挑选心仪的商品吧~
      </view>
      <view class="tipBnt" @click="goPoster" v-if="bargainUid === userInfo.uid">邀请好友帮砍价</view>
      <view class="tipBnt" @click="getBargainStart" v-else>我也要参与</view>
    </view>
    <view class="mask" @touchmove.prevent :hidden="active === false" @click="close"></view>
  </view>
</template>
<script>
import CountDown from '@/components/CountDown'
import { getBargainDetail, getBargainShare, getBargainStart, getBargainHelp, getBargainHelpPrice, getBargainHelpList, getBargainHelpCount, getBargainStartUser } from '@/api/activity'
import { postCartAdd } from '@/api/store'
import { mapGetters } from 'vuex'
import {} from '@/libs/wechat'
import { isWeixin, parseQuery, handleQrCode } from '@/utils/index'

const NAME = 'DargainDetails'

export default {
  name: 'DargainDetails',
  components: {
    CountDown,
  },
  props: {},
  data: function () {
    return {
      bargainId: 0, //砍价编号
      bargainSumCount: 0, //砍价成功人数
      activeMsg: '',
      active: false,
      bargainHelpPrice: 0, //砍掉金额
      bargainHelpList: [],
      helpListStatus: false, //砍价列表是否获取完成 false 未完成 true 完成
      page: 1, //页码
      limit: 2, //数量
      pricePercent: 0, //砍价进度条
      bargainShare: {}, // 砍价分享的消息
      bargainHelpCount: {}, // 砍价的信息数据
      goodsDetail: {}, // 商品的详情
      bargainUserInfo: [], // 开启砍价用户信息
      bargainUid: 0, // 参与砍价的用户
      pay: false, // 支付
      bargain: false, // 发起砍价
      participate: false, // 参与砍价
      inviteFriends: false, // 邀请好友
      helpFriendsBargain: false, // 帮好友砍
      bargainSuccess: false, // 帮好友砍价成功
      mainBargainSuccess: false, // 砍价成功
    }
  },
  computed: mapGetters(['userInfo', 'isLogin']),
  mounted: function () {
    this.mountedStart()
  },
  methods: {
    // 开始处理砍价逻辑
    mountedStart: function () {
      var that = this
      let url = handleQrCode()
      // bargainId 砍价商品id
      // bargainUid 发起砍价人
      if (url) {
        // 通过二维码进来
        that.bargainId = url.bargainId
        that.bargainUid = url.partake
      } else {
        // 正常途径进来
        that.bargainId = that.$yroute.query.id
        that.bargainUid = that.$yroute.query.partake
      }
      if (this.bargainUid == 0 || !this.bargainUid) {
        // url未携带用户uid,填上登录用户uid,跳转
        that.bargainUid = that.userInfo.uid
      }
      // 获取商品详情
      that.getBargainDetail()
      // 砍价数据统计
      that.getBargainShare(0)
      if (that.bargainUid !== that.userInfo.uid) {
        that.getBargainStartUser()
      }
    },
    // 发起砍价
    goParticipate() {
      //发起人和当前用户为同一人
      if (this.bargainUid === this.userInfo.uid) {
        // 变更为当前用户砍价页面
        this.getBargainStart()
      } else {
        // 发起人与当前用户非同一人,变更为发起人的砍价页面
        this.getBargainStartUser()
      }
      this.getBargainHelpCount()
    },
    // 查看商品
    openAlone: function () {
      this.$yrouter.push({
        path: '/pages/shop/GoodsCon/index',
        query: {
          id: this.goodsDetail.productId,
        },
      })
    },
    // 砍价完成,去支付
    goPay: function () {
      var data = {}
      var that = this
      data.productId = that.goodsDetail.productId
      data.cartNum = that.goodsDetail.num
      data.uniqueId = ''
      data.bargainId = that.bargainId
      data.new = 1
      postCartAdd(data)
        .then(res => {
          that.$yrouter.push({
            path: '/pages/order/OrderSubmission/index',
            query: {
              id: res.data.cartId,
            },
          })
        })
        .catch(err => {
          uni.showToast({
            title: err.msg || err.response.data.msg || err.response.data.message,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 生成海报
    goPoster: function () {
      var that = this
      that.getBargainShare(that.bargainId)
      this.$yrouter.push({
        path: '/pages/activity/Poster/index',
        query: {
          id: that.bargainId,
          type: 2,
        },
      })
    },
    // 跳转砍价商品列表
    goList: function () {
      this.$yrouter.push({
        path: '/pages/activity/GoodsBargain/index',
      })
    },
    //砍价分享
    //bargainId 0  获取 查看人数 分享人数 参与人数
    //bargainId 砍价产品编号 添加分享次数  获取 查看人数 分享人数 参与人数
    getBargainShare: function (bargainId) {
      var that = this
      getBargainShare({
        bargainId: bargainId,
      }).then(res => {
        that.bargainShare = res.data
      })
    },
    // 获取产品详情
    getBargainDetail: function () {
      var that = this
      uni.showLoading({
        title: '加载中',
        mask: true,
      })
      getBargainDetail(that.bargainId)
        .then(res => {
          uni.hideLoading()
          that.goodsDetail = res.data.bargain
          console.log(that.goodsDetail)
          that.goodsDetail.description = that.goodsDetail.description.replace(/\<img/gi, '<img style="max-width:100%;height:auto;"')
          that.goodsDetail.rule = that.goodsDetail.rule.replace(/\<img/gi, '<img style="max-width:100%;height:auto;"')
          that.getBargainHelpCount()
        })
        .catch(res => {
          uni.hideLoading()
          uni.showToast({
            title: res.msg,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 开启砍价-发起人与当前用户非同一人
    getBargainStart: function () {
      var that = this
      getBargainStart({
        bargainId: that.bargainId,
      })
        .then(() => {
          that.bargainUid = that.userInfo.uid
          that.getBargainHelp()
          that.getBargainHelpCount()
        })
        .catch(res => {
          uni.showToast({
            title: res.msg,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 参与砍价
    getBargainHelp: function () {
      var that = this
      if (this.bargainHelpCount.price === 0 && that.bargainUid !== that.userInfo.uid) {
        return uni.showToast({
          title: '好友已经砍价成功',
          icon: 'success',
          duration: 2000,
        })
      }
      var data = {
        bargainId: that.bargainId,
        bargainUserUid: that.bargainUid,
      }
      getBargainHelp(data)
        .then(res => {
          that.activeMsg = res.data.status
          if (res.data.status === 'SUCCESSFUL' && that.bargainUid !== that.userInfo.uid) {
            uni.showToast({
              title: '您已经砍过了',
              icon: 'none',
              duration: 2000,
            })
            return
          }
          that.helpListStatus = false
          that.page = 1
          that.bargainHelpList = []
          that.getBargainHelpPrice()
        })
        .catch(res => {
          uni.showToast({
            title: res.msg,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    //获取砍掉的金额
    getBargainHelpPrice: function () {
      var that = this
      getBargainHelpPrice({
        bargainId: that.bargainId,
        bargainUserUid: that.bargainUid,
      })
        .then(res => {
          that.bargainHelpPrice = res.data.price
          that.getBargainHelpCount()
          that.getBargainHelpList()
          switch (that.activeMsg) {
            case 'SUCCESSFUL':
              break
            case 'SUCCESS':
              that.active = true
              break
          }
        })
        .catch(res => {
          uni.showToast({
            title: res.msg,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 砍价帮助列表
    getBargainHelpList: function () {
      var that = this
      if (that.helpListStatus === true) return
      getBargainHelpList({
        bargainId: that.bargainId,
        bargainUserUid: that.bargainUid,
        page: that.page,
        limit: that.limit,
      })
        .then(res => {
          that.helpListStatus = res.data.length < that.limit
          if (that.page == 1) {
            that.bargainHelpList = []
          }
          that.page++
          if (res.data) {
            that.bargainHelpList.push.apply(that.bargainHelpList, res.data)
          }
        })
        .catch(err => {
          if (!err.msg) {
            return
          }
          uni.showToast({
            title: err.msg || err.response.data.msg || err.response.data.message,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 砍价 砍价帮总人数、剩余金额、进度条、已经砍掉的价格
    getBargainHelpCount: function () {
      getBargainHelpCount({
        bargainId: this.bargainId,
        bargainUserUid: this.bargainUid,
      })
        .then(res => {
          // 剩余砍价金额,显示已砍至¥** 使用 = 商品价格 - 已经砍掉的金额
          let remainingPrice = (this.goodsDetail.price - res.data.alreadyPrice).toFixed(2)
          this.bargainHelpCount = {
            ...res.data,
            remainingPrice,
          }
          this.handleButtonStatus()
        })
        .catch(err => {
          if (!err.msg) {
            return
          }
          uni.showToast({
            title: err.msg || err.response.data.msg || err.response.data.message,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 判断是否可以支付
    handleButtonStatus() {
      // 砍价按钮分为
      // 1.参与砍价 ==> 发起人与当前用户为同一人 && 未参与
      if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 0) {
        this.participate = true
      } else {
        this.participate = false
      }

      // 2.邀请好友 ==> 发起人与当前用户同一人 && 已参与未过期 && 剩余金额>0
      if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 1 && this.bargainHelpCount.price > 0) {
        this.inviteFriends = true
      } else {
        this.inviteFriends = false
      }

      // 3.帮好友砍价 ==> 发起人与当前用户非一人 && 未参与未过期 && 剩余金额>0  && 为砍价
      if (
        this.bargainUid != this.userInfo.uid &&
        this.bargainHelpCount.status == 1 &&
        // this.bargainHelpCount.userBargainStatus &&
        this.bargainHelpCount.price > 0
      ) {
        this.helpFriendsBargain = true
      } else {
        this.helpFriendsBargain = false
      }

      // 4.支付 ==> 发起人与当前用户同一人 && 已参与未过期 && 剩余金额<=0
      if (this.bargainUid === this.userInfo.uid && this.bargainHelpCount.status == 1 && this.bargainHelpCount.price <= 0) {
        this.pay = true
      } else {
        this.pay = false
      }

      // 5.砍价人发起新的砍价 ==> 发起人与当前用户非一人 && 未参与
      if (this.bargainUid != this.userInfo.uid) {
        this.bargain = true
      } else {
        this.bargain = false
      }

      // 砍价弹窗
      // 1.发起人砍价成功 ==> 发起人与当前用户同一人 && 已参与未过期
      // 2.砍价人砍价成功 ==> 发起人与当前用户非一人 && 已参与未过期
      // 3.已砍价 ==> 已参与 && 砍价状态为 true
    },
    // 获取开启砍价用户信息
    // 参与砍价,为同一人发起砍价后
    getBargainStartUser: function () {
      var that = this
      getBargainStartUser({
        bargainId: that.bargainId,
        bargainUserUid: that.bargainUid,
      })
        .then(res => {
          that.bargainUserInfo = res.data
          that.getBargainHelpList()
        })
        .catch(res => {
          uni.showToast({
            title: res.msg,
            icon: 'none',
            duration: 2000,
          })
        })
    },
    // 关闭弹窗
    close: function () {
      this.active = false
    },
    // 设置微信分享
    onShareAppMessage: function () {
      return {
        title: this.storeInfo.title,
        imageUrl: this.storeInfo.image,
        path: 'pages/activity/DargainDetails/index?id=' + this.storeInfo.id + '&spread=' + uni.getStorageSync('uid'),
        success(res) {
          uni.showToast({
            title: '分享成功',
          })
        },
        fail(res) {
          uni.showToast({
            title: '分享失败',
            icon: 'none',
          })
        },
      }
    },
  },
  onShareAppMessage() {
    return {
      path: `/pages/activity/DargainDetails/index/?id=${this.$yroute.query.id}&partake=${this.userInfo.uid}`,
    }
  },
}
</script>

<style lang="less">
.bargain {
  &.on {
    .bargain-box {
      background: #fff;
      width: auto;
      margin: 0 20rpx;
      border: 0;
    }

    .header {
      height: auto;
      text-align: left;

      .time {
        text-align: left;
        font-size: 24rpx;

        margin: 0;
        padding: 0;
        padding: 20rpx;
        width: auto;
        height: auto;
      }
    }
  }
}

page {
  background-color: #f5f5f5 !important;
}

.bargainBnt_hui {
  font-size: 0.3 * 100rpx;
  font-weight: bold;
  color: #fff;
  width: 6 * 100rpx;
  height: 0.8 * 100rpx;
  border-radius: 0.4 * 100rpx;
  background: #bbb;
  text-align: center;
  line-height: 0.8 * 100rpx;
  margin-top: 0.32 * 100rpx;
}

.bargain_view {
  left: 0;
  right: 0;
  height: 0.48 * 100rpx;
  background: rgba(0, 0, 0, 0.5);
  opacity: 1;
  border-radius: 0 0 0.06 * 100rpx 0.06 * 100rpx;
  position: absolute;
  bottom: 0;
  font-size: 0.22 * 100rpx;
  color: #fff;
  text-align: center;
  line-height: 0.48 * 100rpx;
}

.iconfonts {
  font-size: 0.22 * 100rpx;
}
</style>