<template>
  <view>
    <view class="header">
      <view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
        <view class="searchBox_left" @click="back">
          <u-icon name="arrow-left" size="20px" color="#000"></u-icon>
        </view>
      </view>
    </view>
    <view class="swiper">
      <view class="tag2 tag-img" v-if="
        currentGG.is_same_day
      ">当日达</view>
      <swiper :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000" @change="changeIndex">
        <swiper-item v-for="(item, index) in currentGG.goods_carousel" :key="index">
          <image :src="picUrl + item"></image>
        </swiper-item>
      </swiper>

      <view class="NumDot" v-if="currentGG.goods_carousel && currentGG.goods_carousel.length > 0">
        {{ currentIndex }} /{{ currentGG.goods_carousel.length }}
      </view>
    </view>

    <view class="box_15">
      <view class="section_2">
        <view class="text-wrapper_4">
          <text lines="1" class="text_31">￥</text>
          <text lines="1" class="text_30">{{ currentGG.group_buy_price }}</text>
          <text lines="1" class="text_33">/{{ currentGG.goods_unit }}</text>
        </view>
        <text lines="1" decode="true" class="text_32">单买价&nbsp;￥{{ currentGG.sales_price }}/{{
          currentGG.goods_unit }}</text>
      </view>
      <view class="section_3">
        <text lines="1" class="text_34">距结束还剩</text>
        <view class="box_16">
          <view class="timeBox">
            <view class="dayTimeBox">{{ endTheCountdownDay }}天</view>
            <view class="timeBox">
              <view class="time">{{ endTheCountdownHour }}</view>
              <view>：</view>
            </view>
            <view class="timeBox">
              <view class="time">{{ endTheCountdownMinute }}</view>
              <view>：</view>
            </view>
            <view class="timeBox">
              <view class="time">{{ endTheCountdownSecond }}</view>
            </view>
          </view>

          <!-- <text lines="1" class="text_35">{{ endTheCountdownDay }}天</text>
          <text lines="1" class="text_36">：</text>
          <text lines="1" class="text_37">：</text>
          <view class="text-wrapper_6">
            <text lines="1" class="text_39">{{ endTheCountdownHour }}</text>
          </view>
          <view class="text-wrapper_7">
            <text lines="1" class="text_40">{{ endTheCountdownMinute }}</text>
          </view>
          <view class="text-wrapper_5">
            <text lines="1" class="text_38">{{ endTheCountdownSecond }}</text>
          </view> -->
        </view>
      </view>
    </view>

    <view class="Money">
      <view class="MoneyMark">￥</view>
      {{ currentGG.group_buy_price }}
      <view class="MoneyUnit">/{{ currentGG.goods_unit }}</view>
    </view>

    <!-- 规格 -->
    <!-- @click="changeGG2(item, index)" :class="index == currentGGIndex ? 'active' : ''"> -->
    <view class="GGBox">
      <view class="GG_left">
        <view class="GG_Item" v-for="(item, index) in info.commodity_goods_info_list" :key="item.id"
          @click="changeGG(item, index)" :class="index == currentGGIndex ? 'active' : ''">
          {{ item.goods_spec }} / {{ item.goods_unit }}
        </view>
      </view>
      <view class="GG_rigth" v-if="info.commodity_goods_info_list && info.commodity_goods_info_list.length > 0">
        共{{ info.commodity_goods_info_list.length }}款<u-icon size="26rpx" name="arrow-right"></u-icon>
      </view>
    </view>

    <view class="Tit">
      <view class="tag tag-text" v-if="
        currentGG.is_same_day
      ">当日达</view>
      {{ currentGG.goods_name }}
    </view>
    <view class="Msg">{{ currentGG.commodity_brief }}</view>

    <view class="fenge"></view>

    <!-- 已购买区域 -->
    <view>
      <view class="purchase-area">
        <view class="purchase-count">{{ totalCount }}人已购买</view>
        <view class="view-more" @click="showPurchaseRecords">查看更多 &gt;</view>
      </view>
      <view class="record-list">
        <view class="record-item" v-for="(record, index) in purchaseRecords" :key="index">
          <view class="record-user">
            <image :src="record.avatar" class="user-avatar"></image>
            <view class="user-name">{{ record.nick_name }}</view>
          </view>
          <view class="record-amount">
            {{ formatDate(record.buy_time) }}买了{{ record.count }}件
          </view>
          <view class="record-time">
            <button class="buy-btn" @click="goSubmit">去下单</button>
          </view>
        </view>
      </view>
    </view>

    <view class="fenge"></view>

    <h3 class="GoodsMsg">商品详情</h3>

    <view class="Msg_Item">
      <view class="Msg_ItemTit">商品编号</view>
      <view class="Msg_ItemCon" @click="copys(currentGG.goods_no)">
        {{ currentGG.goods_no }}
        <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_copy.png"></image>
      </view>
    </view>
    <view class="Msg_Item">
      <view class="Msg_ItemTit">规格说明</view>
      <view class="Msg_ItemCon">{{ currentGG.goods_spec }}</view>
    </view>
    <view class="Msg_Item">
      <view class="Msg_ItemTit">售卖单位</view>
      <view class="Msg_ItemCon">{{ currentGG.goods_unit }}</view>
    </view>

    <view class="GoosMsg">
      <image v-for="item in currentGG.goods_detail_pic" :src="picUrl + item" :key="item" mode="widthFix"></image>
    </view>

    <view class="priceInfo">
      <h3 class="priceInfo-title">价格说明</h3>
      <view class="priceInfo-content">
        <view>
          <text class="priceInfo-content-title">划线价格：</text>
          指商品的厂商指导价、正品零售价、市面常见价或该商品曾经展示过的销售价等，并非原价。仅供参考。
        </view>
        <view>
          <text class="priceInfo-content-title">未划线价格：</text>
          指商品的实时价格，不因表述的差异改变性质，具体成交价格根据商品参加活动，或使用优惠券等发生变化最终以订单结算价格为准。
        </view>
      </view>
    </view>

    <!-- 底部购物车 -->
    <view class="Car">
      <view class="car_left">
        <view class="share" @click="share">
          <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png"
            mode="widthFix"></image>
          分享
        </view>
        <view class="cars" @click="car">
          <u-badge numberType="limit" :type="type" max="99" :value="carNum"></u-badge>

          <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_car.png"
            mode="widthFix"></image>
          购物车
        </view>
      </view>

      <view class="car_right" v-if="info.commodity_goods_info_list[currentGGIndex].total_stock < 1" @click="addCar">
        已售罄
      </view>

      <view class="car_right" v-if="
        info.commodity_goods_info_list[currentGGIndex].total_stock > 0 &&
        (!info.commodity_goods_info_list[currentGGIndex].cart_count ||
          info.commodity_goods_info_list[currentGGIndex].cart_count.count == 0)
      " @click="addCar">
        加入购物车
      </view>

      <view class="car_right" v-if="
        info.commodity_goods_info_list[currentGGIndex].cart_count.count > 0
        && info.commodity_goods_info_list[currentGGIndex].total_stock > 0

      ">
        <u-number-box v-model="info.commodity_goods_info_list[currentGGIndex].cart_count.count
          " @change="changeCar" min="0">
          <view slot="minus" class="minus">
            <u-icon name="minus" size="36" bold></u-icon>
          </view>
          <text slot="input" style="width: 200rpx; text-align: center" class="input">
            {{
              info.commodity_goods_info_list[currentGGIndex].cart_count.count
            }}</text>
          <view slot="plus" class="plus">
            <u-icon name="plus" color="#FFFFFF" size="36" bold></u-icon>
          </view>
        </u-number-box>
      </view>
    </view>

    <!-- 分享 -->
    <view class="shadow" @click.stop="changeShadow" v-if="boxshadow1">
      <view class="shadowBox1">
        <view class="shadowBox1Item" @click="shareFriend">
          <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png"
            mode="aspectFill"></image>
          微信好友
        </view>
        <view class="shadowBox1Item" @click="openSave">
          <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png"
            mode="aspectFill"></image>
          生成海报
        </view>
      </view>
    </view>
    <!-- 海报 -->
    <view class="shadow" @click="changeShadow2" v-if="boxshadow2">
      <view class="shadowBox2">
        <view class="shadowBox_img">
          <view class="boxshadow_tit">今日商品推荐</view>
          <view class="boxshadow_img">
            <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png">
            </image>
          </view>
          <view class="line"></view>
          <view class="shadowBoxInfo">
            <view class="shadowboxInfo_left">二维码</view>
            <view class="shadowboxInfo_right">
              <view class="shadowboxInfo_right_1">正鲜生</view>
              <view class="shadowboxInfo_right_2">
                长按识别小程序 <br />
                数量有限马上抢购
              </view>
            </view>
          </view>
        </view>
        <view class="shadowBox_btn" @click.stop="saveImg">保存海报</view>
      </view>
    </view>

    <!-- 评价 查看详情 -->
    <!-- <u-popup :show="show" round="20rpx" mode="bottom" @close="close" @open="open" :z-index="10070">
      <view class="reviews-section">
        <view class="popup-header">
          <h3 class="popup-header-h3">评价</h3>
          <view class="popup-header-view" @click="close">取消</view>
        </view>
        <view class="temp">
          <view class="temp1">
            <img class="temp_img" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/pingjia.png" />
            为你展示真实评价
          </view>
          <view class="temp1" @click="showSizePopup">
            款式
            <img class="temp_img1" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kuanshi.png" />
          </view>
        </view>
        <view class="reviews-list" v-if="comments.length > 0">
          <view class="review-item" v-for="(comment, index) in comments" :key="index">
            <view class="review-user">
              <image :src="comment.avatar" class="user-avatar"></image>
              <view class="user-info">
                <view class="user-name">{{ comment.username }}</view>
              </view>
              <view class="review-time">{{ comment.time }}</view>
            </view>
            <view class="user-purchase">已购 {{ comment.product }}</view>
            <view class="review-content">{{ comment.content }}</view>
            <view class="review-images" v-if="comment.images.length > 0">
              <image :src="img" class="review-img" v-for="(img, idx) in comment.images" :key="idx"></image>
            </view>
          </view>
        </view>
      </view>
    </u-popup> -->

    <!-- 团购记录弹窗 -->
    <u-popup :show="showPurchase" round="20rpx" mode="bottom" @close="closePurchase">
      <view class="purchase-popup">
        <view class="popup-header">
          <h3 class="popup-header-h3">团购记录</h3>
          <view class="popup-header-view" @click="closePurchase">取消</view>
        </view>
        <view class="purchase-records">
          <view class="record-header">
            <view class="record-header-item">买家</view>
            <view class="record-header-item">数量</view>
            <view class="record-header-item">购买时间</view>
          </view>
          <view class="record-list">
            <view class="record-item" v-for="(record, index) in purchaseRecords" :key="index">
              <view class="record-user">
                <image :src="record.avatar" class="user-avatar"></image>
                <view class="user-name">{{ record.nick_name }}</view>
              </view>
              <view class="record-amount">+{{ record.count }}</view>
              <view class="record-time">{{ record.buy_time }}</view>
            </view>
          </view>
        </view>
      </view>
    </u-popup>

    <!-- 选择款式 -->
    <u-popup :show="showSize" round="20rpx" mode="bottom" @close="closeSize">
      <view class="popup-header">
        <h3 class="popup-header-h3">选择款式</h3>
        <view class="popup-header-view" @click="closeSize">取消</view>
      </view>
      <view class="itemSize_top">
        <image :src="changeImg" class="itemSize-img"></image>
        <view class="itemSize_info">
          <view class="itemSize_name">{{ changeName }}</view>
          <view class="itemSize_price">￥{{ changePrice }}/袋</view>
        </view>
      </view>
      <view class="itemSize" v-for="(item, index) in info.commodity_goods_info_list" :key="item.id"
        @click="changeGG(item, index)" :class="index == currentGGIndex ? 'itemSize_active' : ''">
        {{ item.goods_name }} {{ item.goods_spec }} / {{ item.goods_unit }}
      </view>
    </u-popup>
  </view>
</template>

<script>
import { apiArr } from "../../../api/shop";
import { apiArr as apiArr2 } from "../../../api/groupPurchase";
import { picUrl, menuButtonInfo, request, NavgateTo } from "../../../utils";
export default {
  data() {
    return {
      picUrl,
      top: "",
      localHeight: "",
      carNum: "",
      prevCarNum: "",
      currentNum: "0", //当前商品的数量
      type: "error",
      boxshadow1: false,
      boxshadow2: false,
      id: "",
      info: "",
      currentIndex: "1", //当前轮播图

      currentGG: "", //当前选中规格
      currentGGIndex: "", //当前规格index

      carOrderList: [],
      // 新增评论数据
      showReviewPopup: false,
      // comments: [
      //   {
      //     avatar: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
      //     username: "TP",
      //     product: "库尔勒香梨 10kg/箱",
      //     content:
      //       "踏入这家位于街角的餐厅，木质门框与暖黄灯光交织出温馨氛围，墙面上手绘的食材插画画透着文艺气息，开放式厨房的设计让食客能看见厨师处理食材的全过程，第一印象便给人以干净与安心。",
      //     images: ["https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png"],
      //     time: "2025-03-01 11:24:20",
      //   },
      //   {
      //     avatar: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
      //     username: "TP",
      //     product: "库尔勒香梨 10kg/箱",
      //     content:
      //       "踏入这家位于街角的餐厅，木质门框与暖黄灯光交织出温馨氛围，墙面上手绘的食材插_draw着文艺气息，开放式厨房的设计让食客能看见厨师处理食材的全过程，第一印象便给人以干净与安心。",
      //     images: [
      //       "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
      //       "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
      //       "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
      //     ],
      //     time: "2025-03-01 11:24:20",
      //   },
      // ],
      show: false,
      showSize: false,
      showPurchase: false,
      purchaseRecords: [],
      totalCount: 0,
      changeImg: "",
      changeName: "",
      changePrice: "",

      endTime: "",
      endTheCountdownDay: '',
      endTheCountdownHour: '',
      endTheCountdownMinute: '',
      endTheCountdownSecond: '',
      timer: null, // 定时器ID
    };
  },
  methods: {
    // 显示团购记录
    showPurchaseRecords() {
      if (this.purchaseRecords.length > 0) {
        this.showPurchase = true;
      } else {
        uni.showToast({
          title: '没有更多数据',
          icon: 'none'
        })

      }
    },

    // 关闭团购记录
    closePurchase() {
      this.showPurchase = false;
    },

    //去下单
    goSubmit() {
      NavgateTo('/packages/shop/groupPurchaseSubmit/index')
    },

    changeIndex(e) {
      this.currentIndex = e.detail.current + 1;
    },

    back() {
      uni.navigateBack({
        delta: 1,
      });
    },
    // 分享微信
    shareFriend() {
      this.boxshadow2 = false;
      return;
      // uniapp 分享微信好友
      uni.share({
        provider: "weixin",
        type: "link",
        scene: "session",
        link: "https://uniapp.dcloud.net.cn/",
        title: "商品名称",
        imageUrl: "",
        success: (res) => {
          uni.showToast({
            title: "分享成功",
            icon: "success",
            duration: 2000,
          });
          this.boxshadow1 = false;
        },
        fail: (err) => {
          console.log("分享失败", err);
          this.boxshadow1 = false;
        },
      });
    },
    changeShadow() {
      this.boxshadow1 = false;
    },
    openSave() {
      this.boxshadow1 = false;
      this.boxshadow2 = true;
    },
    // 保存海报
    saveImg() {
      this.boxshadow2 = false;
      // 微信小程序保存图片
      uni.downloadFile({
        url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png",
        success: (res) => {
          if (res.statusCode === 200) {
            uni.saveImageToPhotosAlbum({
              filePath: res.tempFilePath,
              success: (res) => {
                uni.showToast({
                  title: "保存成功",
                  icon: "success",
                  duration: 2000,
                });
              },
              fail: (err) => {
                console.log("保存失败", err);
              },
            });
          }
        },
        fail: (err) => {
          console.log("下载失败", err);
        },
      });
    },
    changeShadow2() {
      this.boxshadow2 = false;
    },

    // 点分享按钮
    share() {
      this.boxshadow1 = true;
    },
    //商品详情
    getGoodsInfo() {
      request(apiArr.getGoodsInfo, "POST", {
        id: this.id,
      }).then((res) => {
        // 分割图片
        res.commodity_goods_info_list.forEach((item) => {
          item.goods_detail_pic = item.goods_detail_pic.split(",");
          item.goods_carousel = item.goods_carousel.split(",");
          item.commodity_pic = item.commodity_pic.split(",");
        });

        //根据购物车列表 和 当前商品列表 来更新当前商品列表在购物车中的数量
        console.log("🚀 ~ getGoodsInfo ~ this.carOrderList:", this.carOrderList)
        if (this.carOrderList) {
          this.carOrderList.forEach((items) => {
            res.commodity_goods_info_list.forEach((item) => {
              if (items.goods_id == item.id) {
                item.cart_count = { count: 0 };
                item.cart_count.count = items.count;
              }
            });
          });
        }
        this.info = res;
        this.currentGG = res.commodity_goods_info_list[0];
        this.currentGGIndex = 0;

        this.changeImg = this.currentGG.commodity_pic[0]
        this.changeName = this.currentGG.goods_alias
        this.changePrice = this.currentGG.sales_price
      });
    },

    copys(e) {
      uni.setClipboardData({
        data: e,
        success: (res) => {
          uni.showToast({
            title: "复制成功",
            icon: "success",
            duration: 2000,
          });
        },
      });
    },

    // 切换规格
    changeGG(item, index) {
      this.currentGG = item;
      this.currentGGIndex = index;
      if (this.currentGG.cart_count) {
        this.currentNum = this.currentGG.cart_count.count;
      } else {
        this.currentGG.cart_count = { count: 0 };
      }
      this.changeImg = item.commodity_pic[0]
      this.changeName = item.goods_alias
      this.changePrice = item.sales_price
    },
    car() {
      NavgateTo("../shopCar/index");
    },

    //获取购物车数量
    getShopCar() {
      request(apiArr.getCarCount, "POST", {}).then((res) => {
        this.carNum = res.total;
        this.prevCarNum = res.total;
      });
    },

    getShopCarList() {
      return request(apiArr.getCar, "POST", {}).then((res) => {
        // 合并当日达和普通商品数据
        this.carOrderList = [].concat(res.same_day_cart_list, res.normal_cart_list)
          .flatMap(supplier => supplier.commodity_cart_and_goods_model);
        return res;
      });
    },

    addCar() {
      let that = this;
      //如果没有当前商品 直接添加一个
      let goods_id_and_count = [];
      this.info.commodity_goods_info_list[this.currentGGIndex].cart_count = {
        count: 1,
      };
      this.info.commodity_goods_info_list.forEach((item) => {
        console.log(item.cart_count);
        goods_id_and_count.push({
          goods_id: item.id,
          count: item.cart_count ? item.cart_count.count : 0,
        });
      });

      console.log(goods_id_and_count);
      //因为是当前商品没有 调用update就是增加商品。增加商品之后再获取购物车数量
      request(apiArr.updateCar, "POST", {
        goods_id_and_count,
      }).then((res) => {
        that.getShopCar();
        that.getShopCarList();
      });
    },

    // 购物车更改
    changeCar(newValue) {
      //商品数量变化
      const params = {
        user_id: uni.getStorageSync("userId"),
        goods_id_and_count: [
          {
            goods_id:
              this.info.commodity_goods_info_list[this.currentGGIndex].id,
            count: newValue.value,
          },
        ],
      };
      request(apiArr.updateCar, "POST", params).then((res) => {
        console.log(res);
        this.getShopCarList();
        uni.showToast({
          title: "操作成功！",
          success() { },
        });
        this.getShopCar();
      });
    },

    showPopup() {
      this.show = true;
    },

    showSizePopup() {
      this.showSize = true;
    },

    close() {
      this.show = false;
    },

    closeSize() {
      this.showSize = false;
    },

    // 购买记录
    getBuyRecord() {
      const params = {
        activity_id: 47,
        goods_id: this.id
      }
      request(apiArr2.groupBuyRecord, 'POST', params).then(res => {
        const record = res.group_buy_record.map(item => {
          return {
            ...item,
            avatar: picture + item.avatar
          }
        })
        this.purchaseRecords = record
        this.totalCount = res.total_count
      })
    },
    formatDate(dateStr) {
      if (!dateStr) return '';
      const date = new Date(dateStr);
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      return `${month}月${day}日`;
    },

    // 计算距离结束日期的剩余时间
    getEndTheCountdown(endTime) {
      // 获取当前时间和结束时间的时间戳
      const now = new Date().getTime();
      const end = new Date(endTime).getTime();

      // 计算时间差（毫秒）
      let diff = end - now;

      // 如果已经结束，返回提示
      if (diff <= 0) {
        return '团购已结束';
      }

      // 计算距离结束时间
      this.endTheCountdownDay = Math.floor(diff / (1000 * 60 * 60 * 24));
      diff -= this.endTheCountdownDay * (1000 * 60 * 60 * 24);
      this.endTheCountdownHour = Math.floor(diff / (1000 * 60 * 60));
      diff -= this.endTheCountdownHour * (1000 * 60 * 60);
      this.endTheCountdownMinute = Math.floor(diff / (1000 * 60));
      diff -= this.endTheCountdownMinute * (1000 * 60);
      this.endTheCountdownSecond = Math.floor(diff / (1000));
    }
  },
  onLoad(options) {
    const itemObj = JSON.parse(decodeURIComponent(options.item));
    const meun = menuButtonInfo();
    this.top = meun.top;
    this.localHeight = meun.height;
    this.id = itemObj.commodity_id ? itemObj.commodity_id : itemObj.id;
    this.endTime = itemObj.group_buy_goods_list[0].group_buy_activity_info.end_time
    this.getBuyRecord()
    this.getEndTheCountdown(this.endTime)

    // 启动定时器，每秒更新一次倒计时
    this.timer = setInterval(() => {
      this.getEndTheCountdown(this.endTime)
    }, 1000)
  },
  onReachBottom() { },
  onShow() {
    // 确保getShopCarList完成后再执行getGoodsInfo
    this.getShopCarList().then(() => {
      this.getGoodsInfo();
    });
    this.getShopCar();
  },

  //离开页面的时候直接更新购物车数量(目前接口是 传入商品id 数量。如果有当前商品就更新数量。如果没有就增加商品。如果删除某个商品 count 为0 就删除)
  onHide() {
    // 清除定时器
    if (this.timer) {
      clearInterval(this.timer)
      this.timer = null
    }

    let goods_id_and_count = [];
    this.info.commodity_goods_info_list.forEach((item) => {
      goods_id_and_count.push({
        goods_id: item.id,
        count: item.cart_count ? item.cart_count.count : 0,
      });
    });

    request(apiArr.updateCar, "POST", {
      goods_id_and_count,
    }).then((res) => {
      console.log("Cart updated on hide");
    });
    return;
  },
};
</script>

<style>
@import url("./index.css");
</style>