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.
207 lines
5.2 KiB
207 lines
5.2 KiB
const productUtil = require('../../utils/product.js') |
|
var app = getApp() |
|
Page({ |
|
data: { |
|
title: '', |
|
id: 0, |
|
quantity: 1, |
|
product: {}, |
|
windowWidth: 375, |
|
windowHeight: 667, |
|
pixelRatio: 2, |
|
accountType: '', |
|
from_share: false, |
|
|
|
codeFloating: { |
|
data: {}, |
|
style: { |
|
width: 100, |
|
height: 100 |
|
}, |
|
pos: { |
|
left: 650, |
|
top: 650 |
|
}, |
|
state: 'small', |
|
url: '', |
|
imgStyle: '' |
|
} |
|
}, |
|
|
|
onShareAppMessage: function () { |
|
return { |
|
title: this.data.product.name, |
|
desc: "巴爷供销社 - 高品质购物", |
|
path: `pages/show_product/show_product?id=${this.data.product.id}&share=1` |
|
} |
|
}, |
|
|
|
onLoad (params) { |
|
var that = this |
|
var id = params.id |
|
|
|
try { |
|
var res = wx.getSystemInfoSync() |
|
this.setData({ |
|
windowWidth: res.windowWidth, |
|
windowHeight: res.windowHeight, |
|
pixelRatio: res.pixelRatio |
|
}) |
|
app.globalData.windowWidth = res.windowWidth |
|
app.globalData.windowHeight = res.windowHeight |
|
app.globalData.pixelRatio = res.pixelRatio |
|
} catch (e) { |
|
} |
|
|
|
if (params.share) { |
|
productUtil.getProduct(id, function(result){ |
|
var data = app.store.sync(result.data) |
|
that.setData({ |
|
from_share: true, |
|
id: data.id, |
|
product: data, |
|
title: data.name |
|
}) |
|
}) |
|
} else { |
|
var allProducts |
|
if (params.type) { |
|
allProducts = wx.getStorageSync(`cate_${params.type}`) |
|
} else { |
|
allProducts = wx.getStorageSync('products') |
|
} |
|
var id = params.id |
|
var product = allProducts.filter(function(i){ |
|
return i.id === id |
|
})[0] |
|
|
|
this.setData({ |
|
from_share: false, |
|
id: id, |
|
product: product, |
|
title: product.name |
|
}) |
|
} |
|
|
|
var reqPath = {path: `pages/show_product/show_product?id=${this.data.product.id}&share=1`} |
|
productUtil.getProductPageQrCode(reqPath, function(resp){ |
|
that.setData({'codeFloating.url': resp.data.url}) |
|
}) |
|
}, |
|
|
|
onShow() { |
|
if (app.globalData.currentCustomer) { |
|
var accountType = app.globalData.currentCustomer.account_type |
|
this.setData({accountType: accountType}) |
|
} |
|
}, |
|
|
|
onReady() { |
|
wx.setNavigationBarTitle({ title: this.data.title }) |
|
}, |
|
|
|
bindAddToCart (e) { |
|
var that = this |
|
|
|
//管到屏蔽 |
|
if (!app.globalData.featureManager.enableGuanDao) { |
|
if (this.data.product && (parseInt(this.data.product['category-id']) === 18)) { |
|
wx.showModal({ |
|
title: '管到商品暂未开放', |
|
content: '目前无法在小程序上购买管到商品,如有需要,可以在巴爷微信商城上进行购买。', |
|
showCancel: false, |
|
success: function(res) {} |
|
}) |
|
return |
|
} |
|
} |
|
|
|
var cartItems = wx.getStorageSync('cartItems') || [] |
|
|
|
var exist = cartItems.filter(function(ele){ |
|
return ele.id === that.data.id |
|
})[0] |
|
|
|
if (exist) { |
|
exist.quantity = parseInt(exist.quantity) + 1 |
|
} else { |
|
cartItems.push({ |
|
id: this.data.id, |
|
quantity: 1, |
|
product: this.data.product |
|
}) |
|
} |
|
wx.showToast({ |
|
title: '成功加入', |
|
icon: 'success', |
|
duration: 1000 |
|
}) |
|
wx.setStorage({ |
|
key: 'cartItems', |
|
data: cartItems |
|
}) |
|
|
|
if (this.data.from_share) { |
|
wx.switchTab({ |
|
url: '../cart/cart' |
|
}) |
|
} |
|
}, |
|
|
|
changeCodeState: function (e) { |
|
var ratio = 750 / this.data.windowWidth |
|
var eleStyle = this.data.codeFloating.style |
|
var pos = e.touches[0] |
|
|
|
var eleLeft = pos.clientX - eleStyle.width / ratio / 2 |
|
var eleTop = pos.clientY - eleStyle.height / ratio / 2 |
|
|
|
if (pos.clientX <= eleStyle.width / ratio / 2) { |
|
eleLeft = 0 |
|
} else if (pos.clientX + eleStyle.width / ratio / 2 > this.data.windowWidth) { |
|
eleLeft = this.data.windowWidth - eleStyle.width / 2 |
|
} else if (pos.clientY + eleStyle.height / ratio / 2 > this.data.windowHeight) { |
|
eleTop = this.data.windowHeight - eleStyle.height / 2 |
|
} else if (pos.clientY <= eleStyle.height / ratio / 2) { |
|
eleTop = 0 |
|
} |
|
|
|
eleLeft = eleLeft * ratio |
|
eleTop = eleTop * ratio |
|
|
|
var animation = wx.createAnimation({ |
|
duration: 500, |
|
timingFunction: 'step-start', |
|
}) |
|
animation.left(`${eleLeft}rpx`).top(`${eleTop}rpx`).step() |
|
this.setData({ |
|
'codeFloating.data': animation.export(), |
|
'codeFloating.pos': {left: eleLeft, top: eleTop} |
|
}) |
|
}, |
|
|
|
catchScaleCode: function (e) { |
|
var animation = wx.createAnimation({ |
|
duration: 800, |
|
timingFunction: 'ease', |
|
}) |
|
|
|
var state, width |
|
if (this.data.codeFloating.state == "small") { |
|
width = "750rpx" |
|
state = 'big' |
|
animation.left(0).top('100rpx').width(width).height(width).step() |
|
} else { |
|
width = "100rpx" |
|
let pos = this.data.codeFloating.pos |
|
state = 'small' |
|
animation.left(`${pos.left}rpx`).top(`${pos.top}rpx`).width(width).height(width).step() |
|
} |
|
|
|
this.setData({ |
|
'codeFloating.data': animation.export(), |
|
'codeFloating.state': state, |
|
'codeFloating.imgStyle': `width: ${width}; height: ${width};` |
|
}) |
|
} |
|
})
|
|
|