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