uniapp/pages_promotion/pinfan/public/js/detail.js

216 lines
5.9 KiB
JavaScript

export default {
data() {
return {
goodsRoute: '/pages_promotion/pinfan/detail',
posterApi: '/pinfan/api/goods/poster',
groupId: 0,
pinfan_id: 0,
pintuanList: [],
currentPintuan: {
headimg: '',
timeMachine: {}
},
openPopup: false,
timestamp: '',
newList: [],
}
},
onLoad(data) {
this.pinfan_id = data.pinfan_id || 0;
if (data.id) {
this.pinfan_id = data.id;
}
this.groupId = data.group_id || 0;
// 小程序扫码进入
if (data.scene) {
var sceneParams = decodeURIComponent(data.scene);
sceneParams = sceneParams.split('&');
if (sceneParams.length) {
sceneParams.forEach(item => {
if (item.indexOf('id') != -1) this.pinfan_id = item.split('-')[1];
if (item.indexOf('group_id') != -1) this.group_id = item.split('-')[1];
});
}
}
},
async onShow() {
await this.getGoodsSkuDetail();
this.getPintuanGroupList();
},
methods: {
// 获取拼团商品详情
async getGoodsSkuDetail() {
let res = await this.$api.sendRequest({
url: '/pinfan/api/goods/detail',
async: false,
data: {
pintuan_id: this.pinfan_id
}
});
let data = res.data;
if (data.goods_sku_detail != null) {
this.goodsSkuDetail = data.goods_sku_detail;
this.skuId = this.goodsSkuDetail.sku_id;
this.goodsSkuDetail.group_id = this.groupId;
//拼团倒计时
if ((this.goodsSkuDetail.end_time - res.timestamp) > 0) {
this.goodsSkuDetail.timeMachine = this.$util.countDown(this.goodsSkuDetail.end_time - res
.timestamp);
} else {
this.$util.showToast({
title: "活动已结束",
});
setTimeout(() => {
this.$util.redirectTo('/pages/goods/detail', {
goods_id: this.goodsSkuDetail.goods_id
}, 'redirectTo');
}, 1000);
}
// 分享参数、链接
this.shareQuery = 'pinfan_id=' + this.pinfan_id + '&group_id=' + this.groupId;
this.shareUrl = this.goodsRoute + '?' + this.shareQuery;
// 在线客服聊天参数
this.chatRoomParams = {
sku_id: this.goodsSkuDetail.sku_id,
type: 'pintuan',
type_id: this.goodsSkuDetail.pintuan_id
};
// 海报参数
this.posterParams = {
id: this.goodsSkuDetail.id
};
// 处理商品数据
this.handleGoodsSkuData();
this.goodsSkuDetail.show_price = (this.goodsSkuDetail.group_id == 0 ? this.goodsSkuDetail
.promotion_price : this.goodsSkuDetail
.pintuan_price);
this.goodsSkuDetail.save_price = (this.goodsSkuDetail.price - this.goodsSkuDetail.show_price) > 0 ?
(this.goodsSkuDetail
.price - this.goodsSkuDetail.show_price).toFixed(2) : 0;
if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
} else {
this.$util.redirectTo('/pages_tool/goods/not_exist', {}, 'redirectTo');
}
},
// 发起拼团
pintuan(isPromotion = true) {
if (!uni.getStorageSync('token')) {
if (!this.source_member) {
this.$refs.login.open(this.shareUrl);
} else {
this.$refs.login.open(this.shareUrl + '&source_member=' + this.source_member);
}
return;
}
if (isPromotion) {
this.resetPrice();
}
this.$refs.goodsSku.show("pinfan", () => {
this.resetPrice();
this.getCartCount();
});
},
// 立即购买
buyNow() {
if (!uni.getStorageSync('token')) {
if (!this.source_member) {
this.$refs.login.open(this.shareUrl);
} else {
this.$refs.login.open(this.shareUrl + '&source_member=' + this.source_member);
}
return;
}
this.$refs.goodsSku.show("buy_now", () => {
this.getCartCount();
});
},
//-------------------------------------海报-------------------------------------
// 获取拼团组列表
getPintuanGroupList() {
this.$api.sendRequest({
url: "/pinfan/api/pinfangroup/lists",
data: {
goods_id: this.goodsSkuDetail.goods_id
},
success: res => {
let data = res.data;
this.timestamp = res.timestamp
if (data != null && data.length) {
this.pintuanList = data;
for (let i = 0; i < this.pintuanList.length; i++) {
if (this.pintuanList[i]['end_time'] > res.timestamp) {
this.pintuanList[i].timeMachine = this.$util.countDown(this.pintuanList[i][
'end_time'
] - res.timestamp);
this.pintuanList[i].currentTime = res.timestamp;
} else {
this.pintuanList[i].timeMachine = null;
}
}
this.newList = this.pintuanList.filter(item => {
return item.end_time > res.timestamp;
});
this.$forceUpdate();
}
}
});
},
//打开拼团弹出框
openPinTuan(groupId, pintuan_num, time, headimg, head_id) {
if (this.memberId == head_id) {
this.$util.showToast({
title: "您不能参与自己的团"
});
return;
}
this.openPopup = true;
this.currentPintuan = {
groupId: groupId,
pintuan_num: pintuan_num,
timeMachine: this.$util.countDown(time),
headimg: headimg
};
this.$refs.pintuanPopup.open(() => {
this.goodsSkuDetail.group_id = 0;
this.openPopup = false;
});
},
closePinTuanPopup() {
this.$refs.pintuanPopup.close();
},
//参与拼团
joinPintuan() {
this.closePinTuanPopup();
this.goodsSkuDetail.group_id = this.currentPintuan.groupId;
this.goodsSkuDetail.show_price = this.goodsSkuDetail.pintuan_price;
this.goodsSkuDetail.save_price = (this.goodsSkuDetail.price - this.goodsSkuDetail.show_price) > 0 ? (this
.goodsSkuDetail
.price - this.goodsSkuDetail.show_price).toFixed(2) : 0;
this.$forceUpdate();
this.pintuan(false);
},
pintuanImageError(index) {
this.pintuanList[index].headimg = this.$util.getDefaultImage().head;
this.$forceUpdate();
},
// 重置价格
resetPrice() {
this.goodsSkuDetail.group_id = 0;
this.goodsSkuDetail.show_price = this.goodsSkuDetail.promotion_price;
this.goodsSkuDetail.save_price = (this.goodsSkuDetail.price - this.goodsSkuDetail.show_price) > 0 ? (this
.goodsSkuDetail
.price - this.goodsSkuDetail.show_price).toFixed(2) : 0;
this.$forceUpdate();
}
}
}