forked from zhongyuanhaiju/uniapp
216 lines
5.9 KiB
JavaScript
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();
|
|
}
|
|
}
|
|
}
|