var http = require('../../utils/http.js');
// 定义一个微信小程序的组件
Component({
  /**
   * 组件的属性列表
   * 用于接收外部传入的各种数据，来控制组件的展示和行为等
   */
  properties: {
    // 优惠券相关信息的对象，包含如couponId等具体详情数据
    item: Object,
    // 数字类型，可能用于区分优惠券的类型等，具体用途需结合业务场景判断
    type: Number,
    // 布尔类型，可能用于判断是否处于某种订单相关的场景等，具体由外部传入决定
    order: Boolean,
    // 布尔类型，用于判断优惠券是否可使用，外部传入设置该状态
    canUse: Boolean,
    // 数字类型，可能表示优惠券的序号或者索引等，具体依业务而定
    index: Number,
    // 数字类型，也许和展示时间相关的类型区分有关，具体功能要看业务逻辑
    showTimeType: Number
  },

  /**
   * 组件的初始数据
   * 在这里初始化组件内部使用的数据状态
   */
  data: {
    // 初始设置stsType的值为4，具体含义可能和后续的业务逻辑相关，比如商品分类筛选等
    stsType: 4
  },
  // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
  attached: function () {
    // 打印当前组件中data里的item数据，方便调试查看传入的优惠券相关信息，可根据实际需求决定是否保留该语句
    // console.log(this.data.item);
  },
  /**
   * 组件的方法列表
   * 定义了组件内可调用的各种方法，用于实现不同的业务功能，如操作优惠券等
   */
  methods: {
    // 接收优惠券的方法
    receiveCoupon() {
      // 获取当前组件中data里item对象的couponId属性值，作为要接收的优惠券的ID
      var couponId = this.data.item.couponId;
      // 使用引入的http模块发起一个POST请求，向服务端请求接收优惠券
      http.request({
        // 请求的接口地址，用于接收优惠券的服务端接口
        url: "/p/myCoupon/receive",
        // 请求方法为POST
        method: "POST",
        // 将获取到的优惠券ID作为请求的数据发送给服务端，此处可能需根据服务端要求调整格式，比如包装成对象等
        data: couponId,
        callBack: () => {
          // 获取当前组件中的优惠券对象（此处可能是为了更新其相关状态）
          var coupon = this.data.item;
          // 将优惠券的可接收状态设置为false，表示已接收
          coupon.canReceive = false;
          // 通过setData更新组件中data里的item数据，从而更新组件的展示状态等
          this.setData({
            item: coupon
          })
        }
      })
    },
    // 查看优惠券的方法，会触发一个名为'checkCoupon'的自定义事件，并传递相关数据
    checkCoupon(e) {
      // 触发名为'checkCoupon'的自定义事件，并传递当前组件的索引（之前定义的index属性），该语句被注释掉了，可能有其他考虑，比如更换了传递数据的方式
      // this.triggerEvent('checkCoupon', this.data.index);
      // 触发名为'checkCoupon'的自定义事件，传递包含当前点击元素的优惠券ID（从事件对象的dataset中获取）的对象，用于在外部处理查看优惠券的相关逻辑
      this.triggerEvent('checkCoupon', {
        couponId: e.currentTarget.dataset.couponid
      });
    },
    /**
     * 立即使用优惠券的方法
     * 用于导航到相应的商品分类页面，并携带优惠券相关信息作为参数，以展示可使用优惠券的商品等
     */
    useCoupon() {
      // 构建要导航到的页面地址，先设置基础的商品分类页面路径，并添加stsType参数（初始值为4，有其特定业务含义）
      var url = '/pages/prod-classify/prod-classify?sts=' + this.data.stsType;
      // 获取当前组件中data里item对象的couponId属性值，作为要传递的优惠券ID
      var id = this.data.item.couponId;
      // 设置页面标题为"优惠券活动商品"，用于在导航到的页面展示等
      var title = "优惠券活动商品";
      // 如果获取到了优惠券ID，则将其和标题作为参数添加到页面地址后面，方便目标页面根据这些参数展示相应内容
      if (id) {
        url += "&tagid=" + id + "&title=" + title;
      }
      // 使用微信小程序的导航API，跳转到构建好的页面地址对应的页面
      wx.navigateTo({
        url: url
      })

    }
  }
})