392 lines
10 KiB
JavaScript
392 lines
10 KiB
JavaScript
/*
|
|
* 手太欠
|
|
* 愿这世界都如故事里一样 美好而动人~
|
|
*/
|
|
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
isFixedTop : 0,
|
|
barHeight : getApp().globalData.barHeight, // 状态栏高度
|
|
goodsId : '', // 商品id
|
|
goodsData : '', // 商品数据
|
|
mallContent : '', // 商品详情
|
|
skus : [], // 显示的规格-提交
|
|
skuid : '',
|
|
specselect : '', // 确认购买的规格
|
|
selectSkusValues: '', // 默认选项
|
|
valueId : '', // 选中规格id
|
|
valueIndex : '', // 选中规格下标index
|
|
specselectIndex : '',
|
|
qtyNumber : 1, // 产品数量
|
|
goodsSize : false,
|
|
invite : '',
|
|
isParent : false, // 绑定邀请码
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad(options) {
|
|
this.setData({
|
|
goodsId: options.id,
|
|
})
|
|
getApp().globalData.invite = options.invite || ''
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow() {
|
|
// 获取商品详情
|
|
this.goodsInfo();
|
|
},
|
|
|
|
/**
|
|
* 输入产品数量
|
|
*/
|
|
goodsNumberInput(e){
|
|
let inventory = this.data.selectSkusValues.stock
|
|
if(inventory < e.detail.value ){
|
|
wx.showToast({
|
|
title: '超出库存数量',
|
|
icon : 'none',
|
|
})
|
|
this.setData({
|
|
qtyNumber: Math.min(inventory, e.detail.value)
|
|
})
|
|
return
|
|
}
|
|
this.setData({
|
|
qtyNumber: e.detail.value
|
|
})
|
|
},
|
|
/**
|
|
* 离开产品数量
|
|
*/
|
|
goodsNumberBlur(e){
|
|
let { value } = e.detail
|
|
if(value == '' || value <= 0){
|
|
this.setData({
|
|
qtyNumber: 1
|
|
})
|
|
}
|
|
},
|
|
/**
|
|
* 商品详情
|
|
*/
|
|
goodsInfo() {
|
|
// 因分享朋友圈启动时未挂载全局接口方法,故这里只能使用微信原生方法
|
|
wx.showLoading({
|
|
title: '加载中...',
|
|
mask : true
|
|
})
|
|
wx.request({
|
|
// url : 'https://api.xhtest.douhuofalv.com/api/mall/goods/' + this.data.goodsId,
|
|
url : 'https://api.xuanhuojk.com/api/mall/goods/' + this.data.goodsId,
|
|
header : {
|
|
"Accept" : "application/json",
|
|
"channel" : "client",
|
|
"Authorization" : wx.getStorageSync("token") || ""
|
|
},
|
|
success: res => {
|
|
wx.hideLoading()
|
|
let { statusCode, data } = res
|
|
if(statusCode == 200){
|
|
let dataOBJ = data.data
|
|
this.setData({
|
|
goodsData : dataOBJ,
|
|
mallContent : dataOBJ.content.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"'),
|
|
skus : dataOBJ.skus,
|
|
skuid : dataOBJ.skus[0].sku_id,
|
|
selectSkusValues: dataOBJ.skus[0],
|
|
specselect : dataOBJ.skus[0].unit.split('|'),
|
|
invite : dataOBJ.invite
|
|
})
|
|
return
|
|
}
|
|
wx.showToast({
|
|
title: data.message,
|
|
icon : 'none'
|
|
})
|
|
},
|
|
fail: err => {
|
|
wx.showToast({
|
|
title: err.errMsg,
|
|
icon : 'none'
|
|
})
|
|
}
|
|
})
|
|
// wx.$api.mall.goodsSee(this.data.goodsId).then(res => {
|
|
// this.setData({
|
|
// goodsData : res.data,
|
|
// mallContent : res.data.content.replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"'),
|
|
// skus : res.data.skus,
|
|
// skuid : res.data.skus[0].sku_id,
|
|
// selectSkusValues: res.data.skus[0],
|
|
// specselect : res.data.skus[0].unit.split('|'),
|
|
// invite : res.data.invite
|
|
// })
|
|
// }).catch(err =>{
|
|
// console.log(err)
|
|
// }).finally(() => {
|
|
// wx.hideLoading()
|
|
// })
|
|
},
|
|
|
|
/**
|
|
* 选规格
|
|
*/
|
|
selectSize(e) {
|
|
this.setData({
|
|
qtyNumber: 1
|
|
})
|
|
let valueid = e.currentTarget.dataset.valueid,
|
|
index = e.currentTarget.dataset.index
|
|
var temp1 = 'specselect['+index+']'
|
|
this.setData({
|
|
[temp1]: valueid
|
|
})
|
|
let newlist = []
|
|
let str = ''
|
|
for (var i in this.data.specselect) {
|
|
if (i == index) {
|
|
newlist.push(valueid);
|
|
if (i == 0) {
|
|
str = valueid
|
|
} else {
|
|
str = str + '|' + valueid
|
|
}
|
|
} else {
|
|
newlist.push(this.data.specselect[i])
|
|
if (i == 0) {
|
|
str = this.data.specselect[i]
|
|
} else {
|
|
str = str + '|' + this.data.specselect[i]
|
|
}
|
|
}
|
|
}
|
|
for (var i in this.data.skus) {
|
|
if (this.data.skus[i].unit == str) {
|
|
this.setData({
|
|
selectSkusValues: this.data.skus[i]
|
|
})
|
|
break;
|
|
}
|
|
}
|
|
this.setData({
|
|
specselect: newlist
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 产品数量加减
|
|
*/
|
|
goodsNumber(e){
|
|
let num = this.data.qtyNumber,
|
|
val = e.currentTarget.dataset.type,
|
|
stock = this.data.selectSkusValues.stock
|
|
if (val == 'plus'){
|
|
num ++;
|
|
if(num > stock) {
|
|
wx.showToast({
|
|
title : '商品数量不能大于库存量',
|
|
icon : 'none'
|
|
})
|
|
this.setData({
|
|
qtyNumber: stock
|
|
})
|
|
} else {
|
|
this.setData({
|
|
qtyNumber: num
|
|
})
|
|
}
|
|
|
|
}else{
|
|
if (num > 1){
|
|
num --;
|
|
if(num < this.data.qtyNumber) {
|
|
this.setData({
|
|
qtyNumber: num
|
|
})
|
|
}
|
|
}else{
|
|
wx.showToast({
|
|
title : '商品数量不能小于1',
|
|
icon : 'none'
|
|
})
|
|
}
|
|
this.setData({
|
|
qtyNumber: num
|
|
})
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 规格弹出
|
|
*/
|
|
buyPop() {
|
|
this.setData({
|
|
goodsSize: !this.data.goodsSize
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 规格关闭
|
|
*/
|
|
closeTap() {
|
|
this.setData({
|
|
goodsSize: false
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 确认购买
|
|
*/
|
|
buyTap() {
|
|
// 获取登录状态
|
|
if(wx.getStorageSync("token") != ''){
|
|
let {
|
|
sku_id,
|
|
stock
|
|
} = this.data.selectSkusValues;
|
|
if (stock > 0) {
|
|
this.setData({
|
|
skuid : sku_id,
|
|
goodsSize : false
|
|
})
|
|
// 是否有推荐人
|
|
if(this.data.goodsData.has_parent) {
|
|
wx.navigateTo({
|
|
url: '/pages/mall/confirm/confirm?skuId=' + sku_id + '&qty=' + this.data.qtyNumber || 1
|
|
})
|
|
return
|
|
}
|
|
// 显示绑定手机号弹窗
|
|
this.setData({
|
|
isParent: true
|
|
})
|
|
} else {
|
|
uni.showToast({
|
|
title: '当前商品库存不足',
|
|
icon: 'none',
|
|
mask: true,
|
|
duration: 2000
|
|
})
|
|
}
|
|
|
|
}else{
|
|
// 去登录
|
|
wx.navigateTo({
|
|
url: "/pages/login/index"
|
|
})
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 监听页面滑动事件
|
|
*/
|
|
onPageScroll(e) {
|
|
this.setData({
|
|
isFixedTop: parseInt(e.scrollTop)
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 返回上一页
|
|
*/
|
|
returnGo() {
|
|
wx.navigateBack({
|
|
delta: 1,
|
|
fail: () => {
|
|
wx.switchTab({
|
|
url: '/pages/mall/index?invite=' + getApp().globalData.inviteText
|
|
})
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 回到首页
|
|
*/
|
|
returnHome() {
|
|
wx.switchTab({
|
|
url: '/pages/mall/index?invite=' + getApp().globalData.inviteText
|
|
})
|
|
},
|
|
|
|
/*
|
|
获取邀请码
|
|
*/
|
|
bindinput(e) {
|
|
this.setData({
|
|
nameValue: e.detail.value
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 关闭绑定邀请码弹窗
|
|
*/
|
|
nameCancel() {
|
|
this.setData({
|
|
isParent: !this.data.isParent
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 绑定邀请码
|
|
*/
|
|
nameTrue() {
|
|
let {
|
|
sku_id
|
|
} = this.data.selectSkusValues;
|
|
wx.$api.mall.userBind({
|
|
username: this.data.nameValue
|
|
}).then(res => {
|
|
wx.navigateTo({
|
|
url: '/pages/mall/confirm/confirm?skuId=' + sku_id + '&qty=' + this.data.qtyNumber || 1
|
|
})
|
|
this.setData({
|
|
isParent: false
|
|
})
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 放大轮播相册图片
|
|
*/
|
|
opneBanner(e){
|
|
let imgs = [],
|
|
index = e.currentTarget.dataset.index
|
|
for (let img of e.currentTarget.dataset.imgs){
|
|
imgs.push(img)
|
|
}
|
|
wx.previewImage({
|
|
urls : imgs,
|
|
current : imgs[index]
|
|
})
|
|
},
|
|
/**
|
|
* 分享给朋友
|
|
*/
|
|
onShareAppMessage(){
|
|
return{
|
|
title : this.data.goodsData.name,
|
|
path : '/pages/mall/details/details?id=' + this.data.goodsId + '&invite=' + this.data.invite,
|
|
imageUrl: this.data.goodsData.cover
|
|
}
|
|
},
|
|
/**
|
|
* 分享朋友圈
|
|
*/
|
|
onShareTimeline(){
|
|
return{
|
|
title : this.data.goodsData.name,
|
|
query : 'id=' + this.data.goodsId + '&invite=' + this.data.invite,
|
|
imageUrl : this.data.goodsData.cover
|
|
}
|
|
}
|
|
}) |