You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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