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 }) } } })