EP-WachatApp/eaterplanet_ecommerce/moduleA/pin/goodsDetail.js

1415 lines
40 KiB
JavaScript
Raw Normal View History

2023-03-24 11:24:28 +08:00
// eaterplanet_ecommerce/pages/goods/goodsDetail.js
var util = require('../../utils/util.js');
var status = require('../../utils/index.js');
var app = getApp();
var detailClearTime = null;
function count_down(that, total_micro_second) {
var second = Math.floor(total_micro_second / 1000);
var days = second / 3600 / 24;
var daysRound = Math.floor(days);
var hours = second / 3600 - (24 * daysRound);
var hoursRound = Math.floor(hours);
var minutes = second / 60 - (24 * 60 * daysRound) - (60 * hoursRound);
var minutesRound = Math.floor(minutes);
var seconds = second - (24 * 3600 * daysRound) - (3600 * hoursRound) - (60 * minutesRound);
that.setData({
endtime: {
days: fill_zero_prefix(daysRound),
hours: fill_zero_prefix(hoursRound),
minutes: fill_zero_prefix(minutesRound),
seconds: fill_zero_prefix(seconds),
show_detail: 1
}
});
if (total_micro_second <= 0) {
clearTimeout(detailClearTime);
detailClearTime = null;
if (that.data.goods.over_type == 0) {
that.authSuccess();
}
that.setData({
endtime: {
days: "00",
hours: "00",
minutes: "00",
seconds: "00",
}
});
return;
}
detailClearTime = setTimeout(function () {
total_micro_second -= 1000;
count_down(that, total_micro_second);
}, 1000)
}
// 位数不足补零
function fill_zero_prefix(num) {
return num < 10 ? "0" + num : num
}
Page({
mixins: [require('../../mixin/globalMixin.js')],
data: {
needAuth: false,
goodsIndex: 1,
goods_id: 0,
endtime: {
days: "00",
hours: "00",
minutes: "00",
seconds: "00",
},
is_share_html: true,
imageSize: {
imageWidth: "100%",
imageHeight: 600
},
cartNum: 0,
noIns: false,
index_bottom_image: '',
hideModal: true,
shareImgUrl: '',
goods_details_middle_image: '',
is_show_buy_record: 0,
stopNotify: true,
iconArr: {
home: '',
car: ''
},
canvasWidth: 375,
canvasHeight: 300,
fmShow: true,
pinListCount: 0,
pinList: [],
needPosition: false,
groupInfo: {
group_name: '社区',
owner_name: '团长'
}
},
$data: {
id: '',
scene: ''
},
imageUrl: '',
goodsImg: '',
currentOptions: [],
buy_type: 'pindan',
canPreSub: true,
handlerGobackClick(delta) {
const pages = getCurrentPages();
if (pages.length >= 2) {
wx.navigateBack({
delta: delta
});
} else {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
}
},
handlerGohomeClick(url) {
wx.switchTab({
url: '/eaterplanet_ecommerce/pages/index/index'
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
app.setShareConfig();
app.globalData.navBackUrl = '';
var that = this;
status.setNavBgColor();
status.setGroupInfo().then((groupInfo) => { that.setData({ groupInfo }) });
status.setIcon().then(function (iconArr) {
that.setData({ iconArr });
});
var scene = decodeURIComponent(options.scene);
this.$data.id = options.id;
this.$data.scene = options.scene;
if (scene !== 'undefined') {
var opt_arr = scene.split("_");
options.id = opt_arr[0];
options.share_id = opt_arr[1];
options.community_id = opt_arr[2];
}
if (options.community_id !== 'undefined' && options.community_id > 0) {
this.$data.community_id = options.community_id;
}
wx.showLoading();
if (options.share_id != 'undefined' && options.share_id > 0) wx.setStorage({ key: "share_id", data: options.share_id })
this.get_goods_details(options.id);
this.get_instructions();
this.setData({
canvasWidth: app.globalData.systemInfo.windowWidth,
canvasHeight: 0.8 * app.globalData.systemInfo.windowWidth,
goods_id: options.id
})
},
get_goods_details: function (id) {
let that = this;
if (!id) {
wx.hideLoading();
wx.showModal({
title: '提示',
content: '参数错误',
showCancel: false,
confirmColor: '#F75451',
success(res) {
if (res.confirm) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/pages/index/index',
})
}
}
})
return false;
}
this.getFujinTuan(id);
let token = wx.getStorageSync('token');
let community = wx.getStorageSync('community');
let community_id = community.communityId || 0;
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'groupdo.get_goods_detail',
token: token,
id,
community_id
},
dataType: 'json',
success: function (res) {
wx.hideLoading();
let goods = (res.data.data && res.data.data.goods) || '';
// 商品不存在
if (!goods || goods.length == 0 || Object.keys(goods) == '') {
wx.showModal({
title: '提示',
content: '该商品不存在,回首页',
showCancel: false,
confirmColor: '#F75451',
success(res) {
if (res.confirm) {
wx.redirectTo({
url: '/eaterplanet_ecommerce/moduleA/pin/index',
})
}
}
})
}
let comment_list = res.data.comment_list;
comment_list.map(function (item) {
14 * item.content.length / app.globalData.systemInfo.windowWidth > 3 && (item.showOpen = true), item.isOpen = true;
})
// 幻灯片预览数组
let goods_images = res.data.data.goods_image;
let prevImgArr = [];
goods_images.forEach(function (item) { prevImgArr.push(item.image); })
that.currentOptions = res.data.data.options;
let pin_info = res.data.data.pin_info || {};
// 开启社区
let pintuan_model_buy = res.data.pintuan_model_buy || 0;
let is_comunity_rest = res.data.is_comunity_rest || 0;
let needPosition = false;
if (pintuan_model_buy==1) {
needPosition = true;
// 团长休息
if (is_comunity_rest==1) {
wx.showModal({
title: '温馨提示',
content: '团长休息中,欢迎下次光临!',
showCancel: false,
confirmColor: '#F75451',
confirmText: '好的',
success(res) { }
})
}
that.needCommunity();
}
that.setData({
needPosition,
pintuan_model_buy,
is_comunity_rest,
order_comment_count: res.data.order_comment_count,
comment_list: comment_list,
goods: goods,
options: res.data.data.options,
order: {
goods_id: res.data.data.goods.goods_id,
pin_id: res.data.data.pin_id,
},
share_title: goods.share_title,
buy_record_arr: res.data.data.buy_record_arr,
goods_image: res.data.data.goods_image,
goods_image_length: res.data.data.goods_image.length,
service: goods.tag,
showSkeleton: false,
is_comunity_rest: res.data.is_comunity_rest,
prevImgArr,
open_man_orderbuy: res.data.open_man_orderbuy,
man_orderbuy_money: res.data.man_orderbuy_money,
goodsdetails_addcart_bg_color: res.data.goodsdetails_addcart_bg_color || 'linear-gradient(270deg, #f9c706 0%, #feb600 100%)',
goodsdetails_buy_bg_color: res.data.goodsdetails_buy_bg_color || 'linear-gradient(90deg, #ff5041 0%, #ff695c 100%)',
pin_info,
pintuan_close_stranger: res.data.pintuan_close_stranger,
is_need_subscript: res.data.is_need_subscript,
need_subscript_template: res.data.need_subscript_template
}, () => {
let goods_share_image = goods.goods_share_image;
if (goods_share_image) {
console.log('draw分享图');
status.download(goods_share_image + "?imageView2/1/w/500/h/400").then(function (a) {
that.goodsImg = a.tempFilePath, that.drawImgNoPrice();
});
} else {
console.log('draw价格');
let shareImg = goods.image_thumb;
status.download(shareImg + "?imageView2/1/w/500/h/400").then(function (a) {
that.goodsImg = a.tempFilePath, that.drawImg();
});
}
})
let over_type = goods.over_type;
var seconds = 0;
if (over_type == 0) {
seconds = (goods.begin_time - res.data.data.cur_time) * 1000;
} else {
seconds = (goods.end_time - res.data.data.cur_time) * 1000;
}
if (seconds > 0) {
count_down(that, seconds);
}
}
})
},
/**
* 需要社区
* 判断是否已绑定
*/
needCommunity: function () {
let that = this;
console.log('需要社区')
let token = wx.getStorageSync('token');
//当前社区
let currentCommunity = wx.getStorageSync('community');
let currentCommunityId = (currentCommunity && currentCommunity.communityId) || '';
let shareCommunityId = this.$data.community_id;
console.log('shareCommunityId', shareCommunityId)
// 单社区
util.getCommunityById(shareCommunityId).then(res => {
if (res.open_danhead_model == 1) {
let default_head_info = res.default_head_info;
app.globalData.community = default_head_info;
app.globalData.changedCommunity = true;
wx.setStorage({ key: "community", data: default_head_info })
that.setData({ community: default_head_info })
token && that.addhistory(default_head_info);
} else {
// 社区是否存在
if (currentCommunityId != '') {
// 存在并且不相同
console.log('currentCommunityId存在 比较社区')
if (currentCommunityId != shareCommunityId) {
console.log('currentCommunityId存在 社区不同')
if (res.data) {
that.setData({
showChangeCommunity: true,
changeCommunity: res.data,
community: currentCommunity
})
}
}
} else {
// 不存在社区id
//token 是否存在
if (token) {
util.getCommunityInfo().then(function (ret) {
//比较社区
console.log('token存在 比较社区')
if (ret.community_id && ret.community_id != shareCommunityId) {
that.setData({
showChangeCommunity: true,
changeCommunity: res.data,
community: currentCommunity
})
}
}).catch((param) => {
console.log('step4 新人')
if (Object.keys(param) != '') that.addhistory(param, true);
});
} else {
console.log('token不存在 存社区')
// 直接存本地
app.globalData.community = res.data;
app.globalData.changedCommunity = true;
wx.setStorage({ key: "community", data: res.data })
that.setData({ community: res.data })
}
}
}
})
},
/**
* 切换提示
*/
confrimChangeCommunity: function () {
let community = this.data.changeCommunity;
let token = wx.getStorageSync('token');
app.globalData.community = community;
app.globalData.changedCommunity = true;
wx.setStorage({
key: "community",
data: community
})
token && this.addhistory(community);
this.setData({ community, showChangeCommunity: false })
this.get_goods_details(this.data.goods_id, community, community.communityId);
console.log('用户点击确定')
},
/**
* 历史社区
*/
addhistory: function (community, isNew = false) {
var community_id = community.communityId;
console.log('addhistory');
var token = wx.getStorageSync('token');
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'index.addhistory_community',
community_id: community_id,
token: token
},
dataType: 'json',
success: function (res) {
if (isNew) {
console.log('新人 社区')
app.util.request({
'url': 'entry/wxapp/index',
'data': {
controller: 'index.get_community_info',
community_id: community_id
},
dataType: 'json',
success: function (result) {
if (result.data.code == 0) {
let community = result.data.data;
app.globalData.community = community;
app.globalData.changedCommunity = true;
wx.setStorage({ key: "community", data: community })
}
}
})
}
}
})
},
/**
* 授权成功回调
*/
authSuccess: function () {
var id = this.$data.id;
var scene = this.$data.scene;
let url = '/eaterplanet_ecommerce/moduleA/pin/goodsDetail?id=' + id + '&scene=' + scene;
app.globalData.navBackUrl = url;
wx.redirectTo({ url })
},
authModal: function () {
if (this.data.needAuth) {
this.setData({ showAuthModal: !this.data.showAuthModal });
return false;
}
return true;
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
let that = this;
util.check_login_new().then((res) => {
if (!res) {
that.setData({
needAuth: true
})
} else {
(0, status.cartNum)('', true).then((res) => {
res.code == 0 && that.setData({
cartNum: res.data
})
});
}
})
this.setData({
stopNotify: false
});
},
/**
* 图片信息
*/
imageLoad: function (e) {
var imageSize = util.imageUtil(e)
this.setData({
imageSize
})
},
/**
* 获取服务信息
*/
get_instructions: function () {
let that = this;
app.util.request({
'url': 'entry/wxapp/index',
'data': {
controller: 'goods.get_instructions'
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) {
var instructions = res.data.data.value;
if (instructions == '') that.setData({ noIns: true })
that.setData({
instructions,
index_bottom_image: res.data.data.index_bottom_image,
goods_details_middle_image: res.data.data.goods_details_middle_image,
is_show_buy_record: res.data.data.is_show_buy_record,
order_notify_switch: res.data.data.order_notify_switch,
is_show_comment_list: res.data.data.is_show_comment_list,
goods_details_price_bg: res.data.data.goods_details_price_bg,
isShowContactBtn: res.data.data.index_service_switch || 0,
goods_industrial_switch: res.data.data.goods_industrial_switch || 0,
goods_industrial: res.data.data.goods_industrial || '',
is_show_ziti_time: res.data.data.is_show_ziti_time || 0,
hide_community_change_btn: res.data.data.hide_community_change_btn || 0,
is_show_goodsdetails_communityinfo: res.data.data.is_show_goodsdetails_communityinfo || 0
})
}
}
})
},
getFujinTuan: function (goods_id){
let that = this;
let community = wx.getStorageSync('community');
let head_id = community.communityId || 0;
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'groupdo.get_goods_fujin_tuan',
goods_id,
limit: 4,
head_id
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) {
let { list, count } = res.data;
if (list.length) {
let timestamp = Date.parse(new Date());
list.forEach((item, index)=>{
list[index].seconds = (item.end_time - item.cur_interface_time)*1000 + timestamp;
console.log((item.end_time - item.cur_interface_time))
})
}
that.setData({
pinList: list || [],
pinListCount: count || 0
})
}
}
})
},
/**
* 打开购物车
*/
openSku: function (t) {
if (!this.authModal()) return;
this.canPreSub = true;
var that = this;
var is_just_addcar = 0;
var goods_id = this.data.goods_id;
var options = this.currentOptions;
that.setData({ addCar_goodsid: goods_id })
let list = options.list || [];
let arr = [];
if (list.length > 0) {
for (let i = 0; i < list.length; i++) {
let sku = list[i]['option_value'][0];
let temp = {
name: sku['name'],
id: sku['option_value_id'],
index: i,
idx: 0
};
arr.push(temp);
}
//把单价剔除出来begin
var id = '';
for (let i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
id = id + arr[i]['id'];
} else {
id = id + arr[i]['id'] + "_";
}
}
var cur_sku_arr = options.sku_mu_list[id];
that.setData({
sku: arr,
sku_val: 1,
cur_sku_arr: cur_sku_arr,
skuList: options,
visible: true,
showSku: true,
is_just_addcar
});
} else {
let goods = this.data.goods;
let danprice = this.data.pin_info.danprice || 0;
let cur_sku_arr = {
canBuyNum: goods.total,
spuName: goods.goodsname,
// actPrice: goods.actPrice,
marketPrice: goods.marketPrice,
stock: goods.total,
skuImage: goods.image_thumb,
pinprice: goods.actPrice,
actPrice: danprice.split(".")
}
that.setData({
sku: [],
sku_val: 1,
cur_sku_arr: cur_sku_arr,
skuList: [],
visible: true,
showSku: true
})
}
},
/**
* 确认购物车
*/
gocarfrom: function (e) {
var that = this;
wx.showLoading();
var token = wx.getStorageSync('token');
app.util.request({
'url': 'entry/wxapp/user',
'data': {
controller: 'user.get_member_form_id',
'token': token,
"from_id": e.detail.formId
},
dataType: 'json',
success: function (res) { }
})
that.goOrder();
},
/**
* 关闭购物车
*/
closeSku: function () {
this.setData({
visible: 0,
stopClick: false,
});
},
goOrder: function () {
var that = this;
if (that.data.can_car) {
that.data.can_car = false;
}
let open_man_orderbuy = this.data.open_man_orderbuy;
if (open_man_orderbuy == 1) {
let man_orderbuy_money = this.data.man_orderbuy_money * 1;
let sku_val = this.data.sku_val;
let cur_sku_arr = this.data.cur_sku_arr;
let actPrice = cur_sku_arr.actPrice[0] + '.' + cur_sku_arr.actPrice[1];
console.log(actPrice * 1 * sku_val);
if (actPrice * 1 * sku_val < man_orderbuy_money) {
wx.showToast({
title: '满' + man_orderbuy_money + '元可下单!',
icon: 'none'
})
return false;
}
}
var goods_id = that.data.addCar_goodsid;
var quantity = that.data.sku_val;
var cur_sku_arr = that.data.cur_sku_arr;
var sku_str = '';
var is_just_addcar = 0;
let buy_type = this.buy_type;
let community = wx.getStorageSync('community');
let community_id = community.communityId || 0;
if (cur_sku_arr && cur_sku_arr.option_item_ids) {
sku_str = cur_sku_arr.option_item_ids;
}
let data = {
goods_id,
community_id,
quantity,
sku_str,
buy_type,
pin_id: 0,
is_just_addcar
}
util.addCart(data).then(res=>{
if(res.showVipModal==1) {
let { pop_vipmember_buyimage } = res.data;
wx.hideLoading();
that.setData({ pop_vipmember_buyimage, showVipModal: true, visible: false })
} else if (res.data.code == 3 || res.data.code == 7) {
wx.showToast({
title: res.data.msg,
icon: 'none',
duration: 2000
})
} else if (res.data.code == 4) {
wx.hideLoading();
that.setData({ needAuth: true, showAuthModal: true, visible: false })
} else if (res.data.code == 6) {
var msg = res.data.msg;
let max_quantity = res.data.max_quantity || '';
(max_quantity > 0) && that.setData({ sku_val: max_quantity })
wx.showToast({
title: msg,
icon: 'none',
duration: 2000
})
} else {
var is_limit = res.data.is_limit_distance_buy;
var pages_all = getCurrentPages();
if (pages_all.length > 3) {
wx.redirectTo({
url: `/eaterplanet_ecommerce/pages/order/placeOrder?type=${buy_type}&is_limit=${is_limit}`
})
} else {
wx.navigateTo({
url: `/eaterplanet_ecommerce/pages/order/placeOrder?type=${buy_type}&is_limit=${is_limit}`
})
}
}
}).catch(res=>{
app.util.message(res||'请求失败', '', 'error');
})
},
selectSku: function (event) {
var that = this;
let str = event.currentTarget.dataset.type;
let obj = str.split("_");
let arr = that.data.sku;
let temp = {
name: obj[3],
id: obj[2],
index: obj[0],
idx: obj[1]
};
arr.splice(obj[0], 1, temp);
that.setData({
sku: arr
})
var id = '';
for (let i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
id = id + arr[i]['id'];
} else {
id = id + arr[i]['id'] + "_";
}
}
var options = this.data.skuList;
var cur_sku_arr = options.sku_mu_list[id];
that.setData({
cur_sku_arr: cur_sku_arr
});
console.log(id);
},
submit: function (e) {
var from_id = e.detail.formId;
var token = wx.getStorageSync('token');
app.util.request({
'url': 'entry/wxapp/user',
'data': {
controller: 'user.get_member_form_id',
'token': token,
"from_id": from_id
},
dataType: 'json',
success: function (res) { }
})
},
/**
* 开团订阅
*/
preBalance: function(e){
if (!this.authModal()) return;
let that = this;
if(!this.canPreSub) return;
this.canPreSub = false;
let is_need_subscript = this.data.is_need_subscript;
let buy_type = e.currentTarget.dataset.type;
this.buy_type = buy_type;
this.setData({ buy_type })
if(is_need_subscript==1) {
//弹出订阅消息
this.subscriptionNotice().then(()=>{
that.openSku(buy_type);
}).catch(()=>{
that.openSku(buy_type);
});
} else {
that.openSku(buy_type);
}
},
/**
* 订阅消息
*/
subscriptionNotice: function() {
console.log('subscriptionNotice')
let that = this;
return new Promise((resolve, reject)=>{
let obj = that.data.need_subscript_template;
let tmplIds = Object.keys(obj).map(key => obj[key]); // 订阅消息模版id
if (wx.requestSubscribeMessage) {
tmplIds.length && wx.requestSubscribeMessage({
tmplIds: tmplIds,
success(res) {
let is_need_subscript = 1;
let acceptId = [];
tmplIds.forEach(item=>{
if (res[item] == 'accept') {
//用户同意了订阅,添加进数据库
acceptId.push(item);
} else {
//用户拒绝了订阅或当前游戏被禁用订阅消息
is_need_subscript = 0;
}
})
if(acceptId.length) {
that.addAccept(acceptId);
}
that.setData({ is_need_subscript })
resolve();
},
fail() {
reject();
}
})
} else {
// 兼容处理
reject();
}
})
},
// 用户点击订阅添加到数据库
addAccept: function (acceptId) {
let token = wx.getStorageSync('token');
let type = acceptId.join(',');
app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'user.collect_subscriptmsg',
token,
type
},
dataType: 'json',
method: 'POST',
success: function () {}
})
},
balance: function (e) {
if (!this.authModal()) return;
let that = this;
let buy_type = e.currentTarget.dataset.type;
// let isZreo = e.currentTarget.dataset.zero || 0;
this.buy_type = buy_type;
this.setData({ buy_type })
// if (isZreo == 1) {
// this.zeroModal(()=>{
// that.openSku(buy_type);
// });
// } else {
that.openSku(buy_type);
// }
},
/**
* 数量加减
*/
setNum: function (event) {
let types = event.currentTarget.dataset.type;
var that = this;
var num = 1;
let sku_val = this.data.sku_val * 1;
if (types == 'add') {
num = sku_val + 1;
} else if (types == 'decrease') {
if (sku_val > 1) {
num = sku_val - 1;
}
}
let arr = that.data.sku;
var options = this.data.skuList;
if (arr.length > 0) {
var id = '';
for (let i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
id = id + arr[i]['id'];
} else {
id = id + arr[i]['id'] + "_";
}
}
}
if (options.length > 0) {
var cur_sku_arr = options.sku_mu_list[id];
if (num > cur_sku_arr['canBuyNum']) {
num = num - 1;
}
} else {
let cur_sku_arr = this.data.cur_sku_arr;
if (num > cur_sku_arr['canBuyNum']) {
num = num - 1;
}
}
this.setData({
sku_val: num
})
},
scrollImagesChange: function (t) {
this.videoContext.pause();
this.setData({
fmShow: true,
goodsIndex: t.detail.current + 1
});
},
share_handler: function () {
this.setData({
is_share_html: !this.data.is_share_html
})
},
share_quan: function () {
if (!this.authModal()) return;
wx.showLoading({
title: '获取中',
})
var token = wx.getStorageSync('token');
var community = wx.getStorageSync('community');
var goods_id = this.data.order.goods_id;
var community_id = community.communityId;
var that = this;
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'goods.get_user_goods_qrcode',
token: token,
community_id: community_id,
goods_id: goods_id
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) {
setTimeout(function () {
wx.hideLoading()
}, 2000)
var image_path = res.data.image_path;
wx.getImageInfo({
src: image_path,
success: function (res) {
var real_path = res.path;
wx.saveImageToPhotosAlbum({
filePath: real_path,
success(res) {
wx.showToast({
title: '图片保存成功,可以分享了',
icon: 'none',
duration: 2000
})
that.setData({
is_share_html: true
});
}
})
}
})
} else {
that.setData({
needAuth: true
})
}
}
})
},
onReady: function (res) {
this.videoContext = wx.createVideoContext('myVideo');
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
this.setData({ stopNotify: true })
console.log('详情页hide', this.data.stopNotify)
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
console.log('onUnload')
this.setData({ stopNotify: true })
console.log('详情页unload', this.data.stopNotify);
detailClearTime = null;
clearTimeout(detailClearTime);
},
/**
* 获取分享图并显示
* 20181225 新形式
*/
get_share_img: function () {
if (!this.authModal()) return;
wx.showLoading();
let shareImgUrl = this.data.shareImgUrl;
if (shareImgUrl != '') {
wx.hideLoading();
this.setData({
hideModal: false,
is_share_html: true
})
} else {
var token = wx.getStorageSync('token');
var community = wx.getStorageSync('community');
var goods_id = this.data.goods_id;
var community_id = community.communityId;
var that = this;
app.util.request({
url: 'entry/wxapp/index',
data: {
controller: 'goods.get_user_goods_qrcode',
token: token,
community_id: community_id,
goods_id: goods_id
},
dataType: 'json',
success: function (res) {
if (res.data.code == 0) {
wx.hideLoading();
var image_path = res.data.image_path;
wx.previewImage({
current: image_path, // 当前显示图片的http链接
urls: [image_path] // 需要预览的图片http链接列表
})
} else {
that.setData({
needAuth: true
})
}
}
})
}
},
closeShareModal: function () {
this.setData({ hideModal: true })
},
/**
* 展开收起
*/
bindOpen: function (t) {
var idx = t.currentTarget.dataset.idx;
console.log(idx)
if (this.data.comment_list[idx].isOpen) {
this.data.comment_list[idx].isOpen = false;
var comment_list = this.data.comment_list;
this.setData({
comment_list: comment_list
});
} else {
this.data.comment_list[idx].isOpen = true;
var comment_list = this.data.comment_list;
this.setData({
comment_list: comment_list
});
}
},
/**
* 保存分享图并显示
* 20181225 新形式
*/
saveThumb: function (e) {
wx.showLoading();
let that = this;
var image_path = this.data.shareImgUrl;
wx.getImageInfo({
src: image_path,
success: function (res) {
var real_path = res.path;
real_path && wx.saveImageToPhotosAlbum({
filePath: real_path,
success(res) {
console.log(res)
wx.hideLoading();
wx.showToast({
title: '已保存相册',
icon: 'none',
duration: 2000
})
that.setData({
hideModal: true
});
},
fail: function (res) {
wx.hideLoading();
console.log(res)
if (res.errMsg === "saveImageToPhotosAlbum:fail:auth denied") {
wx.openSetting({
success(settingdata) {
if (settingdata.authSetting["scope.writePhotosAlbum"]) {
console.log("获取权限成功,再次点击图片保存到相册")
} else {
console.log("获取权限失败")
}
}
})
}
}
})
}
})
},
drawImgNoPrice: function () {
var t = this;
wx.createSelectorQuery().select(".canvas-img").boundingClientRect(function () {
const context = wx.createCanvasContext("myCanvas");
context.drawImage(t.goodsImg, 0, 0, status.getPx(375), status.getPx(300));
if (t.data.goods.video) context.drawImage("../../images/play.png", status.getPx(127.5), status.getPx(90), status.getPx(120), status.getPx(120));
context.save();
context.restore(), context.draw(false, t.checkCanvasNoPrice());
}).exec();
},
checkCanvasNoPrice: function () {
var that = this;
setTimeout(() => {
wx.canvasToTempFilePath({
canvasId: "myCanvas",
success: function (res) {
res.tempFilePath ? that.imageUrl = res.tempFilePath : that.drawImgNoPrice();
console.log('我画完了')
},
fail: function (a) {
that.drawImgNoPrice();
}
})
}, 500)
},
drawImg: function () {
let endtime = this.data.endtime;
let shareTime = (endtime.days > 0 ? endtime.days + '天' : '') + endtime.hours + ':' + endtime.minutes + ':' + endtime.seconds;
var t = this;
wx.createSelectorQuery().select(".canvas-img").boundingClientRect(function () {
const context = wx.createCanvasContext("myCanvas");
context.font = "28px Arial";
var e = context.measureText("¥").width + 2;
var o = context.measureText(t.data.goods.price_front + "." + t.data.goods.price_after).width;
context.font = "17px Arial";
var s = context.measureText("¥" + t.data.goods.productprice).width + 3,
n = context.measureText("累计销售 " + t.data.goods.seller_count).width,
u = context.measureText("· 剩余" + t.data.goods.total + " ").width + 10;
context.font = "18px Arial";
let over_type_text = t.data.goods.over_type == 0 ? '距开始' : '距结束';
var r = context.measureText(over_type_text).width;
var d = context.measureText(shareTime).width + 10;
context.drawImage(t.goodsImg, 0, 0, status.getPx(375), status.getPx(300));
context.drawImage("../../images/shareBottomBg.png", status.getPx(0), status.getPx(225), status.getPx(375), status.getPx(75));
if (t.data.goods.video) context.drawImage("../../images/play.png", status.getPx(127.5), status.getPx(70), status.getPx(120), status.getPx(120));
context.save();
status.drawText(context, { color: "#ffffff", size: 28, textAlign: "left" }, "¥", status.getPx(6), status.getPx(267), status.getPx(e));
status.drawText(context, { color: "#ffffff", size: 28, textAlign: "left" }, t.data.goods.price_front + "." + t.data.goods.price_after,
status.getPx(e), status.getPx(267), status.getPx(o));
context.restore();
context.save();
context.restore(),
context.save(),
(0, status.drawText)(context,
{ color: "#ffffff", size: 15, textAlign: "left" },
"¥" + t.data.goods.productprice,
(0, status.getPx)(e + o + 10),
(0, status.getPx)(267),
(0, status.getPx)(s)
),
context.restore(),
context.save(),
(0, status.drawText)(
context,
{ color: "#ffffff", size: 17, textAlign: "left" },
"累计销售" + t.data.goods.seller_count,
(0, status.getPx)(10),
(0, status.getPx)(290),
(0, status.getPx)(n)
),
context.restore(),
context.save(),
(0, status.drawText)(context,
{ color: "#ffffff", size: 17, textAlign: "left" },
"· 剩余" + t.data.goods.total,
(0, status.getPx)(n + 10),
(0, status.getPx)(290),
(0, status.getPx)(u)
),
context.restore(),
context.save(),
context.beginPath(),
context.setStrokeStyle("white"),
context.moveTo((0, status.getPx)(e + o + 10),
(0, status.getPx)(261)),
context.lineTo((0, status.getPx)(e + o + s + 15),
(0, status.getPx)(261)),
context.stroke(),
context.restore(),
context.save(),
(0, status.drawText)(context,
{ color: "#F8E71C", size: 18, textAlign: "center" },
over_type_text,
(0, status.getPx)(318),
(0, status.getPx)(260),
(0, status.getPx)(r)
),
context.restore(),
context.save(),
(0, status.drawText)(context, { color: "#F8E71C", size: 18, textAlign: "center" },
shareTime,
(0, status.getPx)(315),
(0, status.getPx)(288),
(0, status.getPx)(d)
),
context.restore();
context.draw(false, t.checkCanvas());
}).exec();
},
checkCanvas: function () {
var that = this;
setTimeout(() => {
wx.canvasToTempFilePath({
canvasId: "myCanvas",
success: function (res) {
res.tempFilePath ? that.imageUrl = res.tempFilePath : that.drawImg();
console.log('我画完了')
},
fail: function (a) {
that.drawImg();
}
})
}, 500)
},
previewImg: function (e) {
let idx = e.currentTarget.dataset.idx || 0;
let prevImgArr = this.data.prevImgArr;
wx.previewImage({
current: prevImgArr[idx],
urls: prevImgArr
})
},
/**
* 播放视频隐藏封面图
*/
btnPlay: function () {
this.setData({
fmShow: false
})
this.videoContext.play();
},
videEnd: function () {
this.videoContext.exitFullScreen();
this.setData({
fmShow: true
})
},
endPlay: function () {
this.videoContext.pause();
this.setData({
fmShow: true
})
},
goLink: function (e) {
var pages_all = getCurrentPages();
var url = e.currentTarget.dataset.link;
if (pages_all.length > 3) {
wx.redirectTo({ url })
} else {
wx.navigateTo({ url })
}
},
/**
* 0元开团提示
*/
zeroModal: function(fn){
let pin_info = this.data.pin_info;
let notice = pin_info.pintuan_newman_notice || '';
if (notice) {
wx.showModal({
title: '温馨提示',
content: notice,
confirmColor: '#ff5041',
success(res) {
if (res.confirm) {
fn()
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
} else {
fn()
}
},
/**
* 0元开团
*/
zeroTuanSub: function() {
if (!this.authModal()) return;
let that = this;
this.zeroModal(()=>{
that.zeroCartAdd()
});
},
zeroCartAdd: function(){
let goods_id = this.data.goods_id || '';
var token = wx.getStorageSync('token');
let community = wx.getStorageSync('community');
let community_id = community.communityId || 0;
goods_id && app.util.request({
url: 'entry/wxapp/user',
data: {
controller: 'car.add_newcar',
token: token,
goods_id: goods_id,
community_id
},
dataType: 'json',
success: function (res) {
if(res.data.code==0) {
let order_id = res.data.order_id;
wx.navigateTo({
url: `/eaterplanet_ecommerce/moduleA/pin/share?id=${order_id}`
})
} else {
wx.showToast({
title: res.data.msg || '开团失败',
icon: 'none'
})
}
}
})
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
let { goods_id, share_title, goods } = this.data;
var community = wx.getStorageSync('community');
var community_id = community.communityId;
var share_id = wx.getStorageSync('member_id');
var share_path = `eaterplanet_ecommerce/moduleA/pin/goodsDetail?id=${goods_id}&share_id=${share_id}&community_id=${community_id}`;
let shareImg = goods.goods_share_image;
// if(pin_info.is_zero_open!=1 && pin_info.pin_price) share_title = pin_info.pin_price + '元' + share_title;
var that = this;
that.setData({ is_share_html: true, hideModal: true });
return {
title: share_title,
path: share_path,
imageUrl: shareImg ? shareImg : that.imageUrl,
success: function (res) {
// 转发成功
},
fail: function (res) {
// 转发失败
}
}
},
onShareTimeline: function() {
let { goods_id, share_title, goods } = this.data;
var community = wx.getStorageSync('community');
var community_id = community.communityId;
var share_id = wx.getStorageSync('member_id');
let shareImg = goods.goods_share_image;
this.setData({ is_share_html: true, hideModal: true });
var query= `id=${goods_id}&share_id=${share_id}&community_id=${community_id}`;
return {
title: share_title,
imageUrl: shareImg ? shareImg : this.imageUrl,
query,
success: function() {},
fail: function() {}
};
}
})