<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"></view>
            <view class="successNum" v-text="'已有' + bargainSumCount + '人砍价成功'"></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 + '元'"></view>
        <view v-if="bargainHelpCount.price === 0">砍价成功</view>
        <view v-else v-text="'还剩' + bargainHelpCount.price + '元'"></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="@/static/images/left.png" />
        </view>
        <view class="titleCon">砍价帮</view>
        <view class="pictrue on">
          <image src="@/static/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="@/static/images/left.png" />
        </view>
        <view class="titleCon">商品详情</view>
        <view class="pictrue on">
          <image src="@/static/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="@/static/images/left.png" />
        </view>
        <view class="titleCon">活动规则</view>
        <view class="pictrue on">
          <image src="@/static/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;
        }
        console.log(this)

        // 获取商品详情
        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;
            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.goodsDetail.stopTime = that.goodsDetail.stopTime / 1000
            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;
            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>
