2513 lines
74 KiB
JavaScript
2513 lines
74 KiB
JavaScript
var app = getApp();
|
||
var optionsId = ""; //选择后的 规格ID
|
||
var specsManage = [];
|
||
var optionsMaxCount = 1;
|
||
var clicktag = 0;
|
||
var WxParse = require("../../../wxParse/wxParse.js");
|
||
let isclick = true;
|
||
let siftTop='';
|
||
let foshowTop='';
|
||
Component({
|
||
properties: {
|
||
// 属性值可以在组件使用时指定
|
||
prop_goods_info: {
|
||
type: null, //父组件的商品详情数据
|
||
},
|
||
goodsId: {
|
||
type: Number,
|
||
},
|
||
goodsType: {
|
||
type: String,
|
||
},
|
||
mark: {
|
||
type: String,
|
||
},
|
||
hoet: {
|
||
type: null,
|
||
},
|
||
markId: {
|
||
type: null,
|
||
},
|
||
boxHeight: {
|
||
type: Number,
|
||
},
|
||
xqBoxShow: {
|
||
type: null,
|
||
},
|
||
toker: {
|
||
type: Boolean,
|
||
},
|
||
datop:{
|
||
type:null
|
||
}
|
||
},
|
||
data: {
|
||
language: "",
|
||
getprice: "",
|
||
// 图片域名
|
||
imagUrl: "https://mini-app-img-1251768088.cos.ap-guangzhou.myqcloud.com/",
|
||
// 这是tab
|
||
current: 1,
|
||
//设置数据
|
||
goodsInfo: {},
|
||
goods_plugin: {},
|
||
is_o2o: true,
|
||
//o2o商品数量
|
||
o2oCount: 0,
|
||
//门店名字
|
||
o2oName: "",
|
||
//门店电话
|
||
o2oPhone: "",
|
||
o2oLat: "",
|
||
customer_open: true,
|
||
o2oLng: "",
|
||
cartsNum: 0,
|
||
carts: [],
|
||
cartsTotal: 0.0,
|
||
goodsCarts: {},
|
||
popNum: 0,
|
||
popCard: {},
|
||
commentLimit: [], //设置最新5条评论
|
||
//商品详情
|
||
currentTabIndex: "0",
|
||
first_content: "",
|
||
second_content: "",
|
||
third_content: [],
|
||
//标记防止重复加载
|
||
is_first_content: false,
|
||
is_second_content: false,
|
||
is_third_content: false,
|
||
isGoodsLove: false, //是否显示爱心值
|
||
goods_love_cash: 0, //爱心值 现金
|
||
goods_love_deduction: 0, //爱心值抵扣
|
||
goods_love_name: "", //爱心值title,
|
||
specid: "", //规格ID
|
||
popTitle: "",
|
||
popThumb: "",
|
||
popStock: "",
|
||
popPrice: "",
|
||
goodsDescription: "",
|
||
showCart: false,
|
||
|
||
btnData: {
|
||
over_top: 500,
|
||
icon_url: "https://www.yunzmall.com//min_img/icon-fontclass-zhiding.png"
|
||
},
|
||
//海报显隐
|
||
posterShow: false,
|
||
show1: false,
|
||
posterImg: "",
|
||
timestart: 0,
|
||
timeend: 0,
|
||
isCup: true,
|
||
isGoods: false,
|
||
showDis: true, //控制加入购物车的显示
|
||
store_id: "",
|
||
//活动显示隐藏
|
||
activityShow: false,
|
||
//商城活动
|
||
activityItem: {},
|
||
//商城活动默认第一个
|
||
firstActivityBtn: "",
|
||
//商城活动默认第一个内容
|
||
firstActivityCon: "",
|
||
//商城活动点击开关
|
||
activitySwitch: false,
|
||
openVip: "2",
|
||
salesCount: "", //销量
|
||
minicartStyle: "",
|
||
leftPrice: "",
|
||
OldGoodsNum: "", //保存获取input焦点时的商品数量
|
||
iPnoneBottomBol: false,
|
||
//打开分享弹窗
|
||
showSahre: false,
|
||
// 是否开启好物圈插件
|
||
wechatcircle_open: 0,
|
||
|
||
broadcast_data: [], //飘窗订单数据
|
||
|
||
//限时购开关
|
||
isBuy: false,
|
||
isTime: false,
|
||
//限时购开始时间
|
||
beginTime: 0,
|
||
//显示购结束时间
|
||
endTime: 0,
|
||
//计算后的倒计时
|
||
countDownObj: {
|
||
day: "00",
|
||
hou: "00",
|
||
min: "00",
|
||
sec: "00",
|
||
},
|
||
|
||
/*拓客卡 */
|
||
toker: false,
|
||
customer_development: "",
|
||
effective_time: [],
|
||
effective_day: [],
|
||
many_list: [],
|
||
once_list: [],
|
||
active: 0,
|
||
|
||
wx_video_link: 0, //视频号扩展插件
|
||
showVideoLink: false,
|
||
article_url: null, // 视频号扩展链接
|
||
limitedTimeCustomName:"限时购", //* 限时购自定义名称
|
||
isMultiSpecs: false, //多规格商品是否显示会员价
|
||
specsVIPPrc: null, //规格商品会员价
|
||
noneArr:[],
|
||
}, // 私有数据,可用于模板渲染
|
||
|
||
lifetimes: {
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {
|
||
isclick = true;
|
||
this.getiPnoneBottom();
|
||
let language = wx.getStorageSync("langIndex");
|
||
this.setData({ language: language.en });
|
||
this.getGoodsPage(this.data.prop_goods_info);
|
||
// this.getCommentData();
|
||
},
|
||
moved() {
|
||
},
|
||
detached() {
|
||
},
|
||
ready() {
|
||
// this.footSet();
|
||
let price_text = wx.getStorageSync("yz_basic_info").lang.goods && wx.getStorageSync("yz_basic_info").lang.goods.price ? wx.getStorageSync("yz_basic_info").lang.goods.price : "现价";
|
||
let that = this;
|
||
|
||
that.setData({
|
||
getprice: price_text,
|
||
});
|
||
this.createSelectorQuery()
|
||
.select(".sift")
|
||
.boundingClientRect(function (rect) {
|
||
if(rect){
|
||
that.setData({
|
||
pjtop: rect.top - 80,
|
||
});
|
||
}
|
||
})
|
||
.exec();
|
||
this.createSelectorQuery()
|
||
.select(".foShowBox")
|
||
.boundingClientRect(function (rect) {
|
||
if(rect){
|
||
that.setData({
|
||
xqtop: rect.top - 100,
|
||
});
|
||
}
|
||
})
|
||
.exec();
|
||
},
|
||
},
|
||
|
||
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
|
||
attached() {}, // 此处attached的声明会被lifetimes字段中的声明覆盖
|
||
ready() {},
|
||
|
||
pageLifetimes: {
|
||
// 组件所在页面的生命周期函数
|
||
show() {
|
||
this.getCart();
|
||
},
|
||
hide() {},
|
||
resize() {},
|
||
},
|
||
methods: {
|
||
gotohuiyuan() {
|
||
if (this.data.selfbuy_discount && this.data.selfbuy_discount.link_to_level_page && this.data.selfbuy_discount.link_to_level_page.show == 1) {
|
||
wx.navigateTo({
|
||
url: "/packageB/member/MemberGradeList/MemberGradeList",
|
||
});
|
||
}
|
||
},
|
||
openShare() {
|
||
this.setData({
|
||
showSahre: true,
|
||
});
|
||
},
|
||
closeSharePop() {
|
||
this.setData({
|
||
showSahre: false,
|
||
});
|
||
},
|
||
shareGoods() {
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.wechatcircle_products.api.import.import");
|
||
let data = {
|
||
product_list: [
|
||
{
|
||
item_code: that.data.goodsInfo.id,
|
||
title: that.data.goodsInfo.title,
|
||
desc: that.data.goodsInfo.title,
|
||
category_list: ["商品"],
|
||
image_list: that.data.goodsInfo.thumb_url,
|
||
src_wxapp_path: "packageA/detail_v2/detail_v2?id=" + that.data.goodsInfo.id,
|
||
sku_list: [
|
||
{
|
||
sku_id: that.data.goodsInfo.id,
|
||
price: that.data.goodsInfo.price,
|
||
original_price: that.data.goodsInfo.market_price,
|
||
status: 1,
|
||
},
|
||
],
|
||
},
|
||
],
|
||
};
|
||
|
||
if (isclick) {
|
||
isclick = false;
|
||
app._postNetWork({
|
||
url: urlStr,
|
||
data: data,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
setTimeout(function () {
|
||
isclick = true;
|
||
}, 1000);
|
||
if (wx.openBusinessView) {
|
||
wx.openBusinessView({
|
||
businessType: "friendGoodsRecommend",
|
||
extraData: {
|
||
product: {
|
||
item_code: that.data.goodsInfo.id,
|
||
title: that.data.goodsInfo.title,
|
||
image_list: that.data.goodsInfo.thumb_url,
|
||
},
|
||
},
|
||
success: function (res) {
|
||
console.log("success", res);
|
||
that.setData({
|
||
showSahre: false,
|
||
});
|
||
},
|
||
fail: function (res) {
|
||
console.log("fail", res);
|
||
that.setData({
|
||
showSahre: false,
|
||
});
|
||
},
|
||
});
|
||
} else {
|
||
wx.showToast({
|
||
title: "微信7.0.3及以上版本支持 请先更新微信版本",
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
} else {
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
setTimeout(function () {
|
||
isclick = true;
|
||
}, 1000);
|
||
console.log(res);
|
||
},
|
||
});
|
||
}
|
||
},
|
||
getiPnoneBottom() {
|
||
let that = this;
|
||
try {
|
||
var value = wx.getStorageSync("iPhoneBottom");
|
||
if (value) {
|
||
that.setData({
|
||
iPnoneBottomBol: true,
|
||
});
|
||
// Do something with return value
|
||
}
|
||
} catch (e) {
|
||
// Do something when catch error
|
||
}
|
||
},
|
||
callPhone() {
|
||
wx.makePhoneCall({
|
||
phoneNumber: this.data.service_mobile,
|
||
});
|
||
},
|
||
closePop() {
|
||
this.setData({
|
||
show1: false,
|
||
});
|
||
},
|
||
showPop() {
|
||
if (this.data.customer_open) {
|
||
this.setData({
|
||
show1: true,
|
||
});
|
||
}
|
||
},
|
||
clearCart() {
|
||
var that = this;
|
||
var destroyCarts = [];
|
||
this.data.carts.forEach((item) => {
|
||
destroyCarts.push(item.id);
|
||
});
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.destroy");
|
||
urlStr += "&store_id=" + this.data.store_id;
|
||
urlStr += "&ids=" + destroyCarts;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.getCart();
|
||
that.setData({
|
||
showCart: false,
|
||
popNum: 0,
|
||
});
|
||
} else {
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
gotoMemberGradeList(e) {
|
||
let o = e.currentTarget.dataset.o;
|
||
if (o == "1") {
|
||
wx.navigateTo({
|
||
url: "/packageB/member/MemberGradeList/MemberGradeList",
|
||
});
|
||
}
|
||
},
|
||
streetClose() {
|
||
this.setData({
|
||
streetShow: false,
|
||
});
|
||
},
|
||
goKb() {
|
||
console.log("打开全部口碑");
|
||
this.setData({
|
||
streetShow: true,
|
||
});
|
||
this.getCommentData();
|
||
},
|
||
closeCs() {
|
||
this.setData({
|
||
showCs: false,
|
||
});
|
||
},
|
||
showCan() {
|
||
console.log("开启参数弹窗");
|
||
this.setData({
|
||
showCs: true,
|
||
is_second_content: true,
|
||
second_content: this.data.goodsInfo.has_many_params,
|
||
});
|
||
this.getCommentData();
|
||
},
|
||
getTap(e) {
|
||
console.log(e.currentTarget.id);
|
||
let pid = e.currentTarget.id;
|
||
this.setData({
|
||
current: pid,
|
||
getTapNoObsever:true
|
||
});
|
||
if (pid == 1) {
|
||
wx.pageScrollTo({
|
||
scrollTop: 0,
|
||
duration: 300,
|
||
success:(res)=>{
|
||
setTimeout(() => {
|
||
this.setData({
|
||
getTapNoObsever:false
|
||
});
|
||
}, 300);
|
||
}
|
||
});
|
||
} else if (pid == 2) {
|
||
wx.pageScrollTo({
|
||
scrollTop: this.data.pjtop + 50,
|
||
duration: 300,
|
||
success:(res)=>{
|
||
setTimeout(() => {
|
||
this.setData({
|
||
getTapNoObsever:false
|
||
});
|
||
}, 300);
|
||
}
|
||
});
|
||
} else if (pid == 3) {
|
||
this.setData({
|
||
xqBoxShow: true,
|
||
});
|
||
wx.pageScrollTo({
|
||
scrollTop: this.data.xqtop +100,
|
||
duration: 300,
|
||
success:(res)=>{
|
||
setTimeout(() => {
|
||
this.setData({
|
||
getTapNoObsever:false
|
||
});
|
||
}, 300);
|
||
}
|
||
});
|
||
}
|
||
},
|
||
//获取时间-限时购
|
||
_timeCompare(begin) {
|
||
let beginTime = new Date(parseInt(begin) * 1000);
|
||
let now = new Date();
|
||
if (now >= beginTime) {
|
||
this.setData({
|
||
isTime: true,
|
||
});
|
||
//开启倒计时
|
||
this._countDown();
|
||
} else {
|
||
this.setData({
|
||
isTime: false,
|
||
isBegTime: true,
|
||
begTimeStr: begin * 1000,
|
||
});
|
||
//开启距离开始倒计时
|
||
this.beginDown();
|
||
}
|
||
},
|
||
//倒计时
|
||
_countDown: function () {
|
||
let newTime = new Date().getTime();
|
||
let endTime = this.data.endTime;
|
||
let obj = null;
|
||
if (endTime - newTime > 0) {
|
||
let time = (endTime - newTime) / 1000;
|
||
// 获取天、时、分、秒
|
||
let day = parseInt(time / (60 * 60 * 24));
|
||
let hou = parseInt((time % (60 * 60 * 24)) / 3600);
|
||
let min = parseInt(((time % (60 * 60 * 24)) % 3600) / 60);
|
||
let sec = parseInt(((time % (60 * 60 * 24)) % 3600) % 60);
|
||
obj = {
|
||
day: this._timeFormat(day),
|
||
hou: this._timeFormat(hou),
|
||
min: this._timeFormat(min),
|
||
sec: this._timeFormat(sec),
|
||
};
|
||
} else {
|
||
//活动已结束,全部设置为'00'
|
||
obj = {
|
||
day: "00",
|
||
hou: "00",
|
||
min: "00",
|
||
sec: "00",
|
||
};
|
||
}
|
||
this.setData({
|
||
countDownObj: obj,
|
||
});
|
||
if (endTime - newTime < 0) {
|
||
this.setData({
|
||
countDownObj: {
|
||
day: "00",
|
||
hou: "00",
|
||
min: "00",
|
||
sec: "00",
|
||
},
|
||
});
|
||
} else {
|
||
setTimeout(this._countDown.bind(this), 1000);
|
||
}
|
||
},
|
||
//倒计时
|
||
beginDown: function () {
|
||
let newTime = new Date().getTime();
|
||
let endTime = this.data.begTimeStr;
|
||
let obj = null;
|
||
if (endTime - newTime > 0) {
|
||
let time = (endTime - newTime) / 1000;
|
||
// 获取天、时、分、秒
|
||
let day = parseInt(time / (60 * 60 * 24));
|
||
let hou = parseInt((time % (60 * 60 * 24)) / 3600);
|
||
let min = parseInt(((time % (60 * 60 * 24)) % 3600) / 60);
|
||
let sec = parseInt(((time % (60 * 60 * 24)) % 3600) % 60);
|
||
obj = {
|
||
day: this._timeFormat(day),
|
||
hou: this._timeFormat(hou),
|
||
min: this._timeFormat(min),
|
||
sec: this._timeFormat(sec),
|
||
};
|
||
} else {
|
||
//活动已结束,全部设置为'00'
|
||
this.setData({
|
||
isTime: true,
|
||
isBegTime: false,
|
||
});
|
||
obj = {
|
||
day: "00",
|
||
hou: "00",
|
||
min: "00",
|
||
sec: "00",
|
||
};
|
||
}
|
||
this.setData({
|
||
beginDownObj: obj,
|
||
});
|
||
if (endTime - newTime < 0) {
|
||
this.setData({
|
||
isTime: true,
|
||
isBegTime: false,
|
||
});
|
||
this.setData({
|
||
beginDownObj: {
|
||
day: "00",
|
||
hou: "00",
|
||
min: "00",
|
||
sec: "00",
|
||
},
|
||
});
|
||
} else {
|
||
setTimeout(this.beginDown.bind(this), 1000);
|
||
}
|
||
},
|
||
//小于10的格式化函数
|
||
_timeFormat(param) {
|
||
//小于10的格式化函数
|
||
return param < 10 ? "0" + param : param;
|
||
},
|
||
getCart() {
|
||
var that = this;
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.index");
|
||
urlStr += "&store_id=" + this.data.goodsInfo.store_goods.store_id;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.setData({
|
||
carts: res.data,
|
||
goodsCarts: {},
|
||
cartsNum: 0,
|
||
cartsTotal: 0,
|
||
});
|
||
that.data.carts.forEach((item) => {
|
||
that.setData({
|
||
["goodsCarts[" + item.goods_id + "]"]: item,
|
||
});
|
||
that.setData({
|
||
cartsNum: that.data.cartsNum + item.total,
|
||
cartsTotal: that.data.cartsTotal + item.total * item.goods.price,
|
||
});
|
||
});
|
||
//计算当前商品数量
|
||
let good = that.data.carts.find((item) => item.goods_id == that.data.goodsId);
|
||
if (good == undefined) {
|
||
that.setData({
|
||
o2oCount: 0,
|
||
});
|
||
}
|
||
that.data.carts.forEach((item) => {
|
||
if (item.goods_id == that.data.goodsId) {
|
||
that.setData({
|
||
o2oCount: item.total,
|
||
});
|
||
}
|
||
if (item.goods_id === that.data.goodsInfo.id && item.option_id === optionsId) {
|
||
that.setData({
|
||
popNum: item.total,
|
||
popCard: item,
|
||
});
|
||
}
|
||
});
|
||
that.setData({
|
||
goodsCartsTotal: that.calculateTotal1(that.data.carts),
|
||
cartsTotal: parseFloat(that.data.cartsTotal).toFixed(2),
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
//不同规格的同一商品求和
|
||
calculateTotal1(arr) {
|
||
let newArr = []; // 保存求和后的购物车数量列表
|
||
let temp = {};
|
||
let newArr2 = [];
|
||
for (let i in arr) {
|
||
let key = arr[i].goods_id;
|
||
if (temp[key]) {
|
||
temp[key].total = temp[key].total + arr[i].total; //id相同则把数量相加
|
||
} else {
|
||
temp[key] = {};
|
||
temp[key].goods_id = arr[i].goods_id;
|
||
temp[key].total = arr[i].total;
|
||
}
|
||
}
|
||
for (let k in temp) {
|
||
newArr.push(temp[k]);
|
||
}
|
||
newArr.forEach((item) => {
|
||
newArr2[item.goods_id] = item;
|
||
});
|
||
return newArr2;
|
||
},
|
||
//tab 点击
|
||
handleClick(event) {
|
||
let idx = event.detail.index;
|
||
if (this.data.currentTabIndex == idx) {
|
||
return;
|
||
} else {
|
||
this.setData({
|
||
currentTabIndex: idx,
|
||
});
|
||
}
|
||
this.setDataByTabIndex();
|
||
},
|
||
//设置选择后的数据
|
||
setDataByTabIndex() {
|
||
if (this.data.currentTabIndex == "0" && !this.data.is_first_content) {
|
||
this.setData({
|
||
is_first_content: true,
|
||
first_content: this.data.goodsInfo.content,
|
||
});
|
||
let article = this.data.first_content;
|
||
/**
|
||
* WxParse.wxParse(bindName , type, data, target,imagePadding)
|
||
* 1.bindName绑定的数据名(必填)
|
||
* 2.type可以为html或者md(必填)
|
||
* 3.data为传入的具体数据(必填)
|
||
* 4.target为Page对象,一般为this(必填)
|
||
* 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选)
|
||
*/
|
||
try {
|
||
// if (article.indexOf('span') > -1) {
|
||
// } else
|
||
if (article.indexOf("&#") <= -1) {
|
||
WxParse.wxParse("article", "html", article, this);
|
||
}
|
||
} catch (e) {
|
||
//TODO handle the exception
|
||
}
|
||
} else if (this.data.currentTabIndex == "1" && !this.data.is_second_content) {
|
||
this.setData({
|
||
is_second_content: true,
|
||
second_content: this.data.goodsInfo.has_many_params,
|
||
});
|
||
} else if (this.data.currentTabIndex == "2" && !this.data.is_third_content) {
|
||
this.setData({
|
||
is_third_content: true,
|
||
});
|
||
//获取评论
|
||
this.getCommentData();
|
||
}
|
||
},
|
||
toTokerList(evt) {
|
||
this.setData({ active: evt.detail.index });
|
||
},
|
||
//获取评论数据
|
||
getCommentData() {
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("goods.comment.get-comment");
|
||
urlStr += "&goods_id=" + this.data.goodsId;
|
||
urlStr += "&page=1";
|
||
app._getNetWork({
|
||
showToastIn: false,
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.setData({
|
||
third_content: res.data.data,
|
||
});
|
||
} else {
|
||
that.setData({
|
||
is_third_content: false,
|
||
});
|
||
}
|
||
if (app._isTextEmpty(that.data.third_content)) {
|
||
console.log("空没评论");
|
||
that.setData({
|
||
thirKong: false,
|
||
});
|
||
} else {
|
||
console.log("不空");
|
||
that.setData({
|
||
thirKong: true,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
that.setData({
|
||
is_third_content: false,
|
||
});
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
toBuy() {
|
||
wx.navigateTo({
|
||
url: "/packageD/buy/myOrder_v2/myOrder_v2?tag=-2&store_id=" + this.data.goodsInfo.store_goods.store_id + "&goodsId=" + this.data.goodsInfo.id + "&optionsId=" + optionsId + "&total=" + 1,
|
||
});
|
||
},
|
||
addCart(e) {
|
||
let item = e.currentTarget.dataset.item;
|
||
let that = this;
|
||
if (item.vip_level_status && item.vip_level_status.status == 1) {
|
||
wx.showToast({
|
||
title: item.vip_level_status.tips,
|
||
icon: "none",
|
||
duration: 2000,
|
||
});
|
||
return false;
|
||
}
|
||
app._getNetWork({
|
||
showToastIn: false,
|
||
url: app.getNetAddresss("member.member.isValidatePageGoods"),
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
if (that.data.goodsInfo.has_one_invite_page && that.data.goodsInfo.has_one_invite_page.status === 1 && res.data.is_invite === 0) {
|
||
wx.navigateTo({
|
||
url: "/packageC/member/visit/Inviter/Inviter?fromGood=" + 1,
|
||
});
|
||
return;
|
||
} else {
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.store");
|
||
urlStr += "&goods_id=" + item.id;
|
||
urlStr += "&total=1";
|
||
urlStr += "&store_id=" + that.data.goodsInfo.store_goods.store_id;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.getCart();
|
||
} else {
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
}
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
});
|
||
},
|
||
updateCartRequest(id, num) {
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.updateNum");
|
||
urlStr += "&id=" + id;
|
||
urlStr += "&num=" + num;
|
||
urlStr += "&store_id=" + this.data.goodsInfo.store_goods.store_id;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
if (num < 0) {
|
||
that.setData({
|
||
popNum: that.data.popNum - 1,
|
||
});
|
||
} else {
|
||
that.setData({
|
||
popNum: that.data.popNum + 1,
|
||
});
|
||
}
|
||
that.getCart();
|
||
} else {
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
//添加有规格商品到购物车
|
||
addGood(e) {
|
||
// let good = e.currentTarget.dataset.item;
|
||
//价格权限
|
||
if (this.data.goodsInfo.vip_level_status && this.data.goodsInfo.vip_level_status.status == 1) {
|
||
wx.showToast({
|
||
title: this.data.goodsInfo.vip_level_status.tips,
|
||
icon: "none",
|
||
duration: 2000,
|
||
});
|
||
return false;
|
||
}
|
||
|
||
this.setData({
|
||
show2: true,
|
||
});
|
||
this.initPopView1(); //初始化弹窗view
|
||
},
|
||
//初始化弹窗view
|
||
initPopView1() {
|
||
optionsId = "";
|
||
specsManage = [];
|
||
this.setData({
|
||
specid: "",
|
||
popNum: 0,
|
||
});
|
||
if (this.data.goodsInfo.has_option === 1) {
|
||
this.isShowMultiSpecsMemPrice(); //是否需要显示多规格会员价
|
||
//是否有规格
|
||
this.setData({
|
||
popTitle: this.data.goodsInfo.title,
|
||
popThumb: this.data.goodsInfo.thumb,
|
||
popStock: this.data.goodsInfo.stock,
|
||
popCard: {},
|
||
});
|
||
if (!this.data.specid.length) {
|
||
this.setData({
|
||
popPrice: this.data.goodsInfo.min_price + "-" + this.data.goodsInfo.max_price,
|
||
});
|
||
}
|
||
this.setData({
|
||
goodsDescription: "请选择",
|
||
});
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
this.setData({
|
||
goodsDescription: this.data.goodsDescription + " " + this.data.goodsInfo.has_many_specs[i].title,
|
||
});
|
||
}
|
||
|
||
if (!this.data.optionsId) {
|
||
// 默认选择第一个
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
this.selectSpecs(this.data.goodsInfo.has_many_specs[i].specitem[0], "first", i);
|
||
}
|
||
}
|
||
} else {
|
||
this.setData({
|
||
goodsDescription: "",
|
||
});
|
||
optionsMaxCount = this.data.goodsInfo.stock; //设置最大购买量
|
||
}
|
||
},
|
||
isShowMultiSpecsMemPrice() {
|
||
//判断是否需要显示多规格会员价【#70785】
|
||
//注释代码 this.goodsInfo.is_open_micro && Number(this.goodsInfo.is_open_micro) == 1
|
||
//注释原因:后端解释和价格权限插件冲突了 [#80547]
|
||
let _is_open_micro = 0;
|
||
if (this.data.goods_plugin) _is_open_micro = this.data.goods_plugin?.member_price?.is_open_micro || 0;
|
||
if (Number(_is_open_micro) == 1 && this.data.goodsInfo.has_option == 1) {
|
||
this.setData({
|
||
isMultiSpecs: true
|
||
});
|
||
} else {
|
||
this.setData({
|
||
isMultiSpecs: false
|
||
});
|
||
}
|
||
},
|
||
// 关闭弹窗
|
||
close() {
|
||
this.setData({
|
||
show2: false,
|
||
specid: "",
|
||
popNum: 0,
|
||
});
|
||
//确认后清空数值
|
||
optionsId = "";
|
||
specsManage = [];
|
||
},
|
||
//界面选择规格触发事件
|
||
selectSpecs(e, str, i) {
|
||
let id = 0;
|
||
let index = 0;
|
||
let indexl = 0;
|
||
// let data = {};
|
||
if (str == "first") {
|
||
id = e.id;
|
||
index = 0;
|
||
indexl = i;
|
||
// data = e;
|
||
} else {
|
||
id = e.currentTarget.dataset.itemid;
|
||
index = e.currentTarget.dataset.index;
|
||
indexl = e.currentTarget.dataset.indexl;
|
||
// data = e.currentTarget.dataset.item;
|
||
}
|
||
|
||
//处理选择池
|
||
this.manageSpecs(indexl, index);
|
||
//处理规格组合选择状态
|
||
this.setGoodsSpecs(indexl, index);
|
||
//设置选择规格后的 价格、照片、库存
|
||
this.setGoodsSpecsChangeInfo(id);
|
||
//判断当前购买总量与库存的关系
|
||
this.getMaxCount();
|
||
console.log(this.data.specid);
|
||
if (this.data.reserve_goods) {
|
||
// 预约商品选择规格
|
||
let json = this.data.reserveJson;
|
||
let arrjson = [];
|
||
// let checkStatus = false;
|
||
for (let i = 0; i < json.length; i++) {
|
||
if (json[i].option_id == optionsId) {
|
||
arrjson = json[i];
|
||
}
|
||
}
|
||
console.log(arrjson);
|
||
this.setData({
|
||
arrjson:arrjson
|
||
});
|
||
}
|
||
},
|
||
//处理选择池
|
||
manageSpecs(indexl, index) {
|
||
let data = this.data.goodsInfo.has_many_specs[indexl].specitem[index];
|
||
var specsObject = new Object();
|
||
specsObject.id = data.id;
|
||
specsObject.specid = data.specid;
|
||
specsObject.title = data.title;
|
||
|
||
if (specsManage.length > 0) {
|
||
for (let i = 0; i < specsManage.length; i++) {
|
||
if (specsManage[i].specid == specsObject.specid) {
|
||
specsManage.splice(i, 1);
|
||
}
|
||
}
|
||
specsManage.push(specsObject);
|
||
} else {
|
||
specsManage.push(specsObject);
|
||
}
|
||
|
||
//排序
|
||
if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
|
||
var newSpecsManage = [];
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
for (let j = 0; j < specsManage.length; j++) {
|
||
if (this.data.goodsInfo.has_many_specs[i].id == specsManage[j].specid) {
|
||
newSpecsManage.push(specsManage[j]);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
specsManage = newSpecsManage;
|
||
}
|
||
this.setGoodsDescription();
|
||
},
|
||
//处理goodsDescription 数据
|
||
setGoodsDescription() {
|
||
var description = "";
|
||
//相等代表全选了 体现语句
|
||
if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
|
||
description = "已选择 ";
|
||
for (let i = 0; i < specsManage.length; i++) {
|
||
description += specsManage[i].title + " ";
|
||
}
|
||
this.setData({
|
||
goodsDescription: description,
|
||
});
|
||
} else {
|
||
description = "请选择 ";
|
||
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
for (let j = 0; j < specsManage.length; j++) {
|
||
if (this.data.goodsInfo.has_many_specs[i].id != specsManage[j].specid) {
|
||
description += this.data.goodsInfo.has_many_specs[i].title + " ";
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
this.setData({
|
||
goodsDescription: description,
|
||
});
|
||
}
|
||
},
|
||
//处理规格组合选择状态 过滤数据
|
||
setGoodsSpecs(indexl, index) {
|
||
let specs = this.data.goodsInfo.has_many_specs[indexl].specitem[index];
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
if (specs.specid != this.data.goodsInfo.has_many_specs[i].id) {
|
||
this.setGoodsSpecsStatus(i, specs.id);
|
||
}
|
||
}
|
||
},
|
||
//处理规格组合选择状态 处理状态 specitem 组合数组(未选中的) id当前选中的ID 根据ID 组合算是否有当前组合
|
||
setGoodsSpecsStatus(index, id) {
|
||
let specitem = this.data.goodsInfo.has_many_specs[index].specitem;
|
||
let options = []; //数据池
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_options.length; i++) {
|
||
let _specs = this.data.goodsInfo.has_many_options[i].specs.split("_");
|
||
for (let j = 0; j < _specs.length; j++) {
|
||
if (_specs[j] == id) {
|
||
options.push(this.data.goodsInfo.has_many_options[i]);
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
for (let m = 0; m < options.length; m++) {
|
||
let _specs = options[m].specs.split("_");
|
||
for (let y = 0; y < _specs.length; y++) {
|
||
if (_specs[y] != id && options[m].stock == 0) {
|
||
for (let n = 0; n < specitem.length; n++) {
|
||
if (_specs[y] == specitem[n].id) {
|
||
this.setData({
|
||
["data.goodsInfo.has_many_specs[" + index + "].specitem[" + n + "].c"]: true,
|
||
});
|
||
return;
|
||
}
|
||
}
|
||
} else if (_specs[y] != id && options[m].stock > 0) {
|
||
for (let n = 0; n < specitem.length; n++) {
|
||
if (_specs[y] == specitem[n].id) {
|
||
this.setData({
|
||
["data.goodsInfo.has_many_specs[" + index + "].specitem[" + n + "].c"]: false,
|
||
});
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
//设置选择规格后的 价格、照片、库存
|
||
setGoodsSpecsChangeInfo(id) {
|
||
//根据ID 排序 specsManage.sort();
|
||
specsManage.sort(function (a, b) {
|
||
return a.id - b.id;
|
||
});
|
||
if (specsManage.length === this.data.goodsInfo.has_many_specs.length) {
|
||
let goodsSpecs = "";
|
||
for (let j = 0; j < specsManage.length; j++) {
|
||
goodsSpecs += specsManage[j].id + "_";
|
||
}
|
||
goodsSpecs = goodsSpecs.substring(0, goodsSpecs.length - 1); //处理"_"
|
||
this.setData({
|
||
specid: goodsSpecs,
|
||
});
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_options.length; i++) {
|
||
if (goodsSpecs === this.setGoodsSpecsBySort(this.data.goodsInfo.has_many_options[i].specs)) {
|
||
this.setData({
|
||
popmPrice: this.data.goodsInfo.has_many_options[i].market_price, //设置价格
|
||
popPrice: this.data.goodsInfo.has_many_options[i].product_price, //设置价格
|
||
popThumb: app._isTextEmpty(this.data.goodsInfo.has_many_options[i].thumb) ? this.data.goodsInfo.thumb : this.data.goodsInfo.has_many_options[i].thumb, //设置图片
|
||
popStock: this.data.goodsInfo.has_many_options[i].stock,
|
||
});
|
||
optionsId = this.data.goodsInfo.has_many_options[i].id; //设置规格ID,用于生成订单
|
||
optionsMaxCount = this.data.goodsInfo.has_many_options[i].stock; //库存最大数 用于切换更改买家购买数量
|
||
if (optionsMaxCount > 0) {
|
||
this.setData({
|
||
popNum: 0,
|
||
});
|
||
}
|
||
if (this.data.isMultiSpecs) this.getMemberPrice(optionsId);
|
||
break;
|
||
}
|
||
}
|
||
for (let i = 0; i < this.data.carts.length; i++) {
|
||
if (this.data.carts[i].goods_id === this.data.goodsInfo.id && this.data.carts[i].option_id === optionsId) {
|
||
this.setData({
|
||
popNum: this.data.carts[i].total,
|
||
popCard: this.data.carts[i],
|
||
});
|
||
break;
|
||
}
|
||
this.setData({
|
||
popNum: 0,
|
||
popCard: {},
|
||
});
|
||
}
|
||
} else {
|
||
let goodsSpecs = "";
|
||
for (let j = 0; j < specsManage.length; j++) {
|
||
goodsSpecs += specsManage[j].id + "_";
|
||
}
|
||
this.setData({
|
||
specid: goodsSpecs,
|
||
});
|
||
}
|
||
},
|
||
//处理商品goodsSpecs 并排序 新方法
|
||
setGoodsSpecsBySort(specs) {
|
||
let _specs = specs.split("_"); //先变成数组
|
||
//_specs.sort();//排序
|
||
_specs.sort(function (a, b) {
|
||
return a - b;
|
||
});
|
||
// 在组装回去
|
||
let goodsSpecs = "";
|
||
for (let j = 0; j < _specs.length; j++) {
|
||
goodsSpecs += _specs[j] + "_";
|
||
}
|
||
goodsSpecs = goodsSpecs.substring(0, goodsSpecs.length - 1); //处理"_"
|
||
|
||
return goodsSpecs;
|
||
},
|
||
//判断当前购买总量与库存的关系
|
||
getMaxCount() {
|
||
if (specsManage.length == this.data.goodsInfo.has_many_specs.length) {
|
||
if (optionsMaxCount == 0) {
|
||
//库存不足
|
||
this.setData({
|
||
popNum: 0,
|
||
});
|
||
}
|
||
if (this.data.popNum > optionsMaxCount) {
|
||
this.setData({
|
||
popNum: optionsMaxCount,
|
||
});
|
||
}
|
||
}
|
||
},
|
||
//弹窗提交确认
|
||
submitAction() {
|
||
// 判断宠物医院插件是否有绑定手机号码
|
||
// if (app._isTextEmpty(wx.getStorageSync('pet_status'))) {
|
||
|
||
// } else {
|
||
// console.log(wx.getStorageSync('pet_status'))
|
||
// if (wx.getStorageSync('pet_status') == 1) {
|
||
// wx.navigateTo({
|
||
// // url: '/packageA/member/editmobile/editmobile',
|
||
// url: '/packageC/hospital/bindMobile/bindMobile',
|
||
// success: function (res) {
|
||
// wx.showToast({
|
||
// title: '购买前请绑定手机号',
|
||
// icon: 'none'
|
||
// })
|
||
// }
|
||
// })
|
||
// return
|
||
// }
|
||
// }
|
||
if (specsManage.length < this.data.goodsInfo.has_many_specs.length) {
|
||
//请选择规格
|
||
this.setData({
|
||
show2: false,
|
||
});
|
||
wx.showToast({
|
||
title: this.data.goodsDescription,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
return;
|
||
}
|
||
//处理参数
|
||
this.addCartRequest(this.data.goodsInfo.id, optionsId);
|
||
},
|
||
//加入购物车网络操作
|
||
addCartRequest(_goodsId, _optionsId) {
|
||
if (optionsMaxCount === 0) {
|
||
//库存不足
|
||
wx.showToast({
|
||
title: "商品库存不足",
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
return;
|
||
}
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.store");
|
||
urlStr += "&goods_id=" + _goodsId;
|
||
urlStr += "&total=1";
|
||
urlStr += "&option_id=" + _optionsId;
|
||
urlStr += "&store_id=" + this.data.goodsInfo.store_goods.store_id;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.setData({
|
||
popNum: that.data.popNum + 1,
|
||
});
|
||
that.getCart();
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
} else {
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
gotoList() {
|
||
wx.navigateTo({
|
||
url: "/packageC/o2o/o2oStore/o2oStore?store_id=" + this.data.goodsInfo.store_goods.store_id,
|
||
});
|
||
},
|
||
gophone(e) {
|
||
let mobile = e.currentTarget.dataset.mobile;
|
||
wx.makePhoneCall({
|
||
phoneNumber: mobile,
|
||
});
|
||
},
|
||
goToAdress() {
|
||
let latitude = this.data.o2oLat;
|
||
let longitude = this.data.o2oLng;
|
||
let store_name = this.data.o2oName;
|
||
let point = app.BMapTransqqMap(parseFloat(longitude), parseFloat(latitude));
|
||
wx.openLocation({
|
||
latitude: point.lat,
|
||
longitude: point.lng,
|
||
scale: 18,
|
||
name: store_name,
|
||
});
|
||
},
|
||
goShowCart() {
|
||
if (!this.data.showCart && this.data.cartsNum > 0) {
|
||
this.setData({
|
||
showCart: true,
|
||
});
|
||
} else {
|
||
this.setData({
|
||
showCart: false,
|
||
});
|
||
}
|
||
this.getminicartStyle();
|
||
},
|
||
goodsOrder(e) {
|
||
let that = this;
|
||
app._getNetWork({
|
||
showToastIn: false,
|
||
url: app.getNetAddresss("member.member.isValidatePageGoods"),
|
||
success: async (resdata) => {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
if (that.data.goodsInfo.has_one_invite_page && that.data.goodsInfo.has_one_invite_page.status === 1 && res.data.is_invite === 0) {
|
||
wx.navigateTo({
|
||
url: "/packageC/member/visit/Inviter/Inviter?fromGood=" + 1,
|
||
});
|
||
return;
|
||
} else {
|
||
//判断是否上面安装的商品
|
||
let confirmFlag = await this.isHasDifferType(that.data.goodsCarts);
|
||
if (!confirmFlag) {
|
||
return;
|
||
}
|
||
console.log("执行");
|
||
let cartLength = that.data.goodsCarts.length;
|
||
let sum = 0;
|
||
that.data.carts.forEach((val) => {
|
||
sum += val.total;
|
||
});
|
||
if (sum == 0) {
|
||
return;
|
||
}
|
||
if (cartLength.length == 0 || that.data.carts.length == 0) {
|
||
return;
|
||
} else {
|
||
wx.navigateTo({
|
||
url: "/packageD/buy/myOrder_v2/myOrder_v2?tag=store&store_id=" + that.data.goodsInfo.store_goods.store_id,
|
||
});
|
||
}
|
||
}
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
});
|
||
},
|
||
async isHasDifferType(data) {
|
||
//门店购物车提交结算的时候,要判断当前购物车中是否同时存在普通商品和安装服务商品,如果同时存在,要弹框提示
|
||
// 商品不是安装服务商品,直接没有live_install这个字段
|
||
let open_state = 0; //有安装服务的商品
|
||
let clone_state = 0; //没安装服务的商品
|
||
let plugin_name = "";
|
||
data.forEach((item) => {
|
||
if (item.live_install && item.live_install.open_state == 1) {
|
||
open_state += 1;
|
||
plugin_name = item.live_install.plugin_name;
|
||
} else {
|
||
clone_state += 1;
|
||
}
|
||
});
|
||
if (open_state != 0 && clone_state != 0) {
|
||
let confirm = await app.confirm(`普通商品与${plugin_name}商品一同下单将无法享受${plugin_name},是否继续下单?`);
|
||
return confirm;
|
||
//都有值说明存在 两种 不同商品类型,提示框显示
|
||
// wx.showModal({
|
||
// title: '提示',
|
||
// content: `普通商品与${plugin_name}商品一同下单将无法享受${plugin_name},是否继续下单?`,
|
||
// success:(res)=> {
|
||
// if (res.confirm) {
|
||
// this._goodsOrder(data, true);
|
||
// } else if (res.cancel) {
|
||
|
||
// }
|
||
// }
|
||
// });
|
||
}
|
||
return true;
|
||
},
|
||
//跳转门店商品的详情
|
||
goToGoodsO2O(e) {
|
||
let goods = e.currentTarget.dataset.item;
|
||
if (this.data.store.operating_state !== 1) {
|
||
wx.redirectTo({
|
||
url: "/packageA/detail_v2/detail_v2?id=" + goods.goods_id + "&tag=o2o" + "&store_id=" + this.data.goodsInfo.store_goods.store_id,
|
||
});
|
||
}
|
||
},
|
||
//海报生成
|
||
postShow() {
|
||
this.setData({
|
||
posterShow: true,
|
||
showSahre: false,
|
||
});
|
||
return;
|
||
// let that = this;
|
||
// if (that.data.posterImg) {
|
||
// this.setData({
|
||
// posterShow: true
|
||
// });
|
||
// } else {
|
||
// wx.showLoading({
|
||
// title: '海报生成中',
|
||
// });
|
||
// let urlStr = app.getNetAddresss("goods.goods-poster.generate-goods-poster");
|
||
// urlStr += "&id=" + this.data.goodsId;
|
||
// app._getNetWork({
|
||
// showToastIn: false,
|
||
// url: urlStr,
|
||
// success: function (resdata) {
|
||
// var res = resdata.data;
|
||
// if (res.result == 1) {
|
||
// that.setData({
|
||
// posterImg: res.data,
|
||
// posterShow: true
|
||
// });
|
||
// } else {
|
||
// that.setData({
|
||
// posterShow: false
|
||
// });
|
||
// wx.showToast({
|
||
// icon: 'none',
|
||
// title: res.msg,
|
||
// duration: 1500
|
||
// });
|
||
// }
|
||
// wx.hideLoading();
|
||
// },
|
||
// fail: function (res) {
|
||
// wx.hideLoading();
|
||
// console.log(res);
|
||
// }
|
||
// });
|
||
// setTimeout(function () {
|
||
// wx.hideLoading();
|
||
// }, 5000);
|
||
// }
|
||
},
|
||
posterClose() {
|
||
this.setData({
|
||
posterShow: false,
|
||
});
|
||
},
|
||
//点击开始时的时间
|
||
timestart: function (e) {
|
||
var _this = this;
|
||
_this.setData({
|
||
timestart: e.timeStamp,
|
||
});
|
||
},
|
||
|
||
//点击结束的时间
|
||
timeend: function (e) {
|
||
var _this = this;
|
||
_this.setData({
|
||
timeend: e.timeStamp,
|
||
});
|
||
},
|
||
saveImg() {
|
||
// var times = _this.data.timeend - _this.data.timestart;
|
||
wx.getSetting({
|
||
success(res) {
|
||
if (!res.authSetting["scope.writePhotosAlbum"]) {
|
||
wx.authorize({
|
||
scope: "scope.writePhotosAlbum",
|
||
success() {
|
||
console.log("授权成功");
|
||
},
|
||
});
|
||
}
|
||
},
|
||
});
|
||
var imgSrc = this.data.posterImg.image_url;
|
||
wx.downloadFile({
|
||
url: imgSrc,
|
||
success: function (res) {
|
||
console.log(res);
|
||
//图片保存到本地
|
||
wx.saveImageToPhotosAlbum({
|
||
filePath: res.tempFilePath,
|
||
success: function (data) {
|
||
wx.showToast({
|
||
title: "保存成功",
|
||
icon: "none",
|
||
duration: 2000,
|
||
});
|
||
},
|
||
fail: function (err) {
|
||
console.log(err);
|
||
if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
|
||
console.log("当初用户拒绝,再次发起授权");
|
||
wx.openSetting({
|
||
success(settingdata) {
|
||
if (settingdata.authSetting["scope.writePhotosAlbum"]) {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: "获取权限成功,再次长按保存图片",
|
||
duration: 1500,
|
||
});
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: "获取权限失败,保存图片需要用户授权",
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
});
|
||
}
|
||
},
|
||
complete(res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
});
|
||
},
|
||
gotoMember() {
|
||
wx.reLaunch({
|
||
url: "/packageG/member_v2/member_v2",
|
||
});
|
||
},
|
||
gotoindex() {
|
||
wx.reLaunch({
|
||
url: "/packageG/index/index",
|
||
});
|
||
},
|
||
//推广商品跳转
|
||
pushGoodGoto(e) {
|
||
let itemdata = e.currentTarget.dataset.itemdata;
|
||
wx.navigateTo({
|
||
url: "/packageA/detail_v2/detail_v2?id=" + itemdata.id,
|
||
});
|
||
},
|
||
gotoChat(evt){
|
||
let url = evt.currentTarget.dataset.cservice+"&goods_id="+this.data.goodsId;
|
||
wx.navigateTo({
|
||
url: url,
|
||
fail:(err)=>{
|
||
app.tips("客服路由出错");
|
||
}
|
||
});
|
||
},
|
||
getGoodsPage(data) {
|
||
// data全部数据
|
||
let that = this;
|
||
if(data.reserve_goods){
|
||
//是否是预约商品
|
||
this.setData({
|
||
reserve_goods:data.reserve_goods
|
||
});
|
||
}
|
||
if (data && data.get_goods) {
|
||
|
||
that.init(data.get_store_info);
|
||
if(data.member_cart){
|
||
that.getFirstCart(data.member_cart);
|
||
}
|
||
that.setData({
|
||
broadcast_data: data.plugin.broadcast_data,
|
||
customer_development: data.plugin.customer_development,
|
||
// customer_open: data.customer_open == '1' ? true : false,
|
||
service_QRcode: data.customer_service.service_QRcode,
|
||
service_mobile: data.customer_service.service_mobile,
|
||
cservice: data.customer_service.cservice,
|
||
// favorite: (data.is_favorite.status == 1 ? true : false),
|
||
showMember: data.display_page == "1" ? true : false,
|
||
goods_plugin: data.plugin || {},
|
||
});
|
||
if(data.is_favorite){
|
||
this.setData({
|
||
favorite : (data.is_favorite.status == 1 ? true : false)
|
||
});
|
||
}
|
||
that.getData(data.get_goods);
|
||
// console.log(that.data.service_mobile,that.data.service_QRcode);
|
||
|
||
if(this.data.customer_development) {
|
||
setTimeout(()=>{
|
||
this.setData({
|
||
toker: true,
|
||
});
|
||
// tab的下划线问题
|
||
},500);
|
||
}
|
||
// 自购省
|
||
if (data.plugin.selfbuy_discount) {
|
||
that.setData({
|
||
selfbuy_discount: data.plugin.selfbuy_discount,
|
||
});
|
||
}
|
||
|
||
// 租赁商品
|
||
if (!app._isTextEmpty(data.plugin.lease_toy)) {
|
||
this.setData({
|
||
isRent: data.plugin.lease_toy.is_lease == 1 ? true : false,
|
||
isRentBuyShow: data.plugin.lease_toy.immed_goods_id == 0 ? false : true,
|
||
});
|
||
if (!app._isTextEmpty(data.plugin.lease_toy.is_rights)) {
|
||
this.setData({
|
||
isRight: data.plugin.lease_toy.is_rights == 1 ? true : false,
|
||
});
|
||
}
|
||
}
|
||
|
||
// 是否开启好物圈插件
|
||
if (data.plugin.wechatcircle_open && data.plugin.wechatcircle_open == 1) {
|
||
that.setData({
|
||
wechatcircle_open: 1,
|
||
});
|
||
}
|
||
|
||
// 视频号链接
|
||
if (data.plugin && data.plugin.wx_video_link) {
|
||
that.setData({
|
||
wx_video_link: data.plugin.wx_video_link,
|
||
});
|
||
}
|
||
} else {
|
||
that.setData({
|
||
showDis: false,
|
||
show8: true,
|
||
});
|
||
}
|
||
},
|
||
//收藏操作
|
||
onFavorite(e) {
|
||
let favorite = e.currentTarget.dataset.favorite;
|
||
console.log(favorite);
|
||
favorite ? this.removeFavorite() : this.addFavorite();
|
||
},
|
||
closeCalendar(){
|
||
this.setData({
|
||
showCalendar:false
|
||
});
|
||
},
|
||
formatDate(date) {
|
||
return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
|
||
},
|
||
onConfirmCalendar(date) {
|
||
this.setData({
|
||
calendar_data:this.formatDate(date.detail)
|
||
});
|
||
let selectTime = Date.parse(this.data.calendar_data) / 1000;
|
||
let timeArr = this.data.reserveDayArr;
|
||
let selectStatus = false;
|
||
let obj = [];
|
||
for (let i = 0; i < timeArr.length; i++) {
|
||
if (selectTime == timeArr[i].time) {
|
||
obj.push(timeArr[i]);
|
||
selectStatus = true;
|
||
}
|
||
}
|
||
// 可以选的时间
|
||
if (selectStatus) {
|
||
this.setData({
|
||
showCalendar:false,
|
||
reserveJson:obj,
|
||
show2:true
|
||
});
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
this.selectSpecs(this.data.goodsInfo.has_many_specs[i].specitem[0], "first", i);
|
||
}
|
||
} else {
|
||
// 不可以预约的时间
|
||
this.calendar_data = "";
|
||
wx.showToast({
|
||
title: '所选日期不可预约',
|
||
icon:'none'
|
||
});
|
||
}
|
||
},
|
||
confirmTap(){
|
||
let that = this;
|
||
let json = this.data.reserveJson;
|
||
this.data.arrjson = [];
|
||
for (let i = 0; i < json.length; i++) {
|
||
if (json[i].option_id == optionsId) {
|
||
// this.data.arrjson = json[i];
|
||
this.setData({
|
||
arrjson:json[i]
|
||
});
|
||
}
|
||
}
|
||
|
||
if (!this.data.arrjson.id) {
|
||
Toast("请选择日期");
|
||
return;
|
||
}
|
||
if (!optionsId) {
|
||
Toast("请选择规格");
|
||
return;
|
||
}
|
||
console.log(json);
|
||
let urlStr = app.getNetAddresss("plugin.store-reserve.frontend.goods.verify");
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
data:{
|
||
option_id:optionsId,
|
||
goods_id:that.data.goodsInfo.id
|
||
},
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
wx.navigateTo({
|
||
url: "/packageD/buy/myOrder_v2/myOrder_v2?tag=reserve&store_id=" + that.data.goodsInfo.store_goods.store_id + "&goodsId=" + that.data.goodsInfo.id + "&optionsId=" + optionsId + "&total=" + 1+"&date_id="+that.data.arrjson.id,
|
||
});
|
||
}else{
|
||
wx.showModal({
|
||
icon: "none",
|
||
showCancel:false,
|
||
content: res.msg,
|
||
duration: 1500
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
tapReserve(){
|
||
let urlStr = app.getNetAddresss("plugin.store-reserve.frontend.date.getOptionDate");
|
||
urlStr += "&goods_id=" + this.data.goodsId;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success:(resdata)=>{
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
console.log(res);
|
||
this.setData({
|
||
showCalendar:true, // 预约日历显示
|
||
reserveDayArr:res.data,
|
||
});
|
||
let arr = [];
|
||
let strArr = [];
|
||
let no = 0;
|
||
if (this.data.reserveDayArr.length > 0) {
|
||
this.data.reserveDayArr.forEach((element, ind, arrs) => {
|
||
if (arr.length == 0) {
|
||
arr.push(element);
|
||
} else {
|
||
// arr数组有存在time一样的对象时,比较一下is_reserve看他是不是false
|
||
if (arr[no].time == element.time) {
|
||
if (arr[no].is_reserve) {
|
||
// 如果原来存在数组is_reserve为true的话,这个天数默认为true
|
||
arr[no] = element;
|
||
arr[no].is_reserve = true;
|
||
} else {
|
||
//如果原来的数组is_reserve为false的话还有机会
|
||
if (element.is_reserve == false) {
|
||
// 传进来的数组为false保持为false
|
||
arr[no] = element;
|
||
} else {
|
||
// 传进来的数组为true的话没有机会了
|
||
arr[no] = element;
|
||
arr[no].is_reserve = true;
|
||
}
|
||
}
|
||
} else {
|
||
no = no + 1;
|
||
arr.push(element);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
for (let k = 0; k < arr.length; k++) {
|
||
if (arr[k].is_reserve) {
|
||
strArr.push(String(arr[k].date));
|
||
}
|
||
}
|
||
let that = this;
|
||
this.setData({
|
||
noneArr:strArr,
|
||
show2:false,
|
||
formatter(day){
|
||
return that.formatters(day);
|
||
}
|
||
});
|
||
}else{
|
||
if(res.msg == '没有规格id'){
|
||
wx.showToast({
|
||
title: '请选择规格',
|
||
icon:'none'
|
||
});
|
||
}else{
|
||
wx.showToast({
|
||
title: res.msg,
|
||
icon:'none'
|
||
});
|
||
}
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
formatters(day) {
|
||
let month = day.date.getMonth() + 1;
|
||
let date = day.date.getDate();
|
||
if (month < 10) {
|
||
month = `0${month}`;
|
||
}
|
||
if (date < 10) {
|
||
date = `0${date}`;
|
||
}
|
||
if (!day.type) {
|
||
// 默认日期
|
||
day.bottomInfo = "不可预约";
|
||
day.className = "calendar_data";
|
||
}
|
||
if (this.data.noneArr) {
|
||
for (let k = 0; k < this.data.noneArr.length; k++) {
|
||
if (`${month}-${date}` == this.data.noneArr[k]) {
|
||
day.bottomInfo = "可预约";
|
||
day.className = "calendar_data";
|
||
}
|
||
}
|
||
}
|
||
if (day.bottomInfo != "可预约") {
|
||
day.bottomInfo = "不可预约";
|
||
day.type = "disabled";
|
||
}
|
||
return day;
|
||
},
|
||
//移除收藏
|
||
removeFavorite() {
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("member.member-favorite.destroy");
|
||
urlStr += "&goods_id=" + this.data.goodsId;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.setData({
|
||
favorite: false,
|
||
});
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
} // else {
|
||
|
||
//}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
//添加收藏
|
||
addFavorite() {
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("member.member-favorite.store");
|
||
urlStr += "&goods_id=" + this.data.goodsId;
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.setData({
|
||
favorite: true,
|
||
});
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
//获取数据
|
||
getData(data) {
|
||
// get_goods数据
|
||
try {
|
||
if (Number(data.market_price) == 0) {
|
||
data.notMarket_price = 0;
|
||
} else {
|
||
data.notMarket_price = 1;
|
||
}
|
||
} catch (err) {
|
||
console.log(err);
|
||
}
|
||
this.setData({
|
||
goodsInfo: data,
|
||
commentLimit: data.get_comment.data ? data.get_comment.data.slice(0, 5) : [],
|
||
});
|
||
// 分享的自定义图片
|
||
wx.setStorageSync("GoddsShareImg", data.thumb);
|
||
//* 限时购自定义名称
|
||
if(data.has_one_goods_limit_buy&&data.has_one_goods_limit_buy.status&&data.has_one_goods_limit_buy.display_name){
|
||
this.setData({
|
||
limitedTimeCustomName:data.has_one_goods_limit_buy.display_name
|
||
});
|
||
}
|
||
this.setData({
|
||
salesCount: this.data.goodsInfo.show_sales + this.data.goodsInfo.virtual_sales,
|
||
});
|
||
if (this.data.goodsInfo.member_discount) {
|
||
if (app._isTextEmpty(this.data.goodsInfo.member_discount.discount)) {
|
||
this.setData({
|
||
openVip: 1,
|
||
});
|
||
} else {
|
||
this.setData({
|
||
openVip: this.data.goodsInfo.member_discount.discount,
|
||
});
|
||
}
|
||
}
|
||
this.initPopView(); //初始化弹窗view
|
||
this.initPopView2(); //初始化弹窗view2 无规格
|
||
this.setDataByTabIndex(); //设置商品详情
|
||
this.setIsAddCart(); //判断是否能加入购物车
|
||
this.setIsLove(); //判断是否有爱心值
|
||
this.setData({
|
||
isGoods: true,
|
||
});
|
||
|
||
this.setData({
|
||
store_id: this.data.goodsInfo.store_goods.store_id,
|
||
isMarginBottom: app._isTextEmpty(data.show_push) ? false : true,
|
||
});
|
||
|
||
//限时购
|
||
if (!app._isTextEmpty(data.has_one_goods_limit_buy)) {
|
||
this.setData({
|
||
isBuy: data.has_one_goods_limit_buy.status == 1 ? true : false,
|
||
});
|
||
this.data.beginTime = data.has_one_goods_limit_buy.start_time;
|
||
this.data.endTime = data.has_one_goods_limit_buy.end_time * 1000;
|
||
//判断倒计时模块是否开启
|
||
this._timeCompare(this.data.beginTime);
|
||
}
|
||
if (data.goods_sale && data.goods_sale.sale_count != 0) {
|
||
this.setData({
|
||
firstActivityBtn: data.goods_sale.first_strip_key.name,
|
||
});
|
||
if (data.goods_sale.first_strip_key.type == "array") {
|
||
data.goods_sale.first_strip_key.value.forEach((item, index) => {
|
||
if (index == 0) {
|
||
this.setData({
|
||
firstActivityCon: item,
|
||
});
|
||
} else {
|
||
this.setData({
|
||
firstActivityCon: this.data.firstActivityCon + "," + item,
|
||
});
|
||
}
|
||
});
|
||
} else {
|
||
this.setData({
|
||
firstActivityCon: data.goods_sale.first_strip_key.value,
|
||
});
|
||
}
|
||
this.setData({
|
||
activitySwitch: true,
|
||
activityItem: data.goods_sale,
|
||
});
|
||
this.showDefaultActivity(data.goods_sale);
|
||
} else {
|
||
this.setData({
|
||
activitySwitch: false,
|
||
});
|
||
}
|
||
},
|
||
//初始化弹窗view
|
||
initPopView() {
|
||
this.setData({
|
||
popThumb: this.data.goodsInfo.thumb, //设置默认图片
|
||
popStock: this.data.goodsInfo.stock, //设置默认库存
|
||
});
|
||
if (this.data.goodsInfo.has_option == 1) {
|
||
this.setData({
|
||
popPrice: this.data.goodsInfo.min_price + "-" + this.data.goodsInfo.max_price, //设置默认价格
|
||
});
|
||
} else {
|
||
this.setData({
|
||
popPrice: this.data.goodsInfo.price,
|
||
});
|
||
}
|
||
this.setData({
|
||
goodsDescription: "选择",
|
||
});
|
||
for (let i = 0; i < this.data.goodsInfo.has_many_specs.length; i++) {
|
||
this.setData({
|
||
goodsDescription: this.data.goodsDescription + " " + this.data.goodsInfo.has_many_specs[i].title,
|
||
});
|
||
}
|
||
},
|
||
initPopView2() {
|
||
if (this.data.goodsInfo.has_option != 1) {
|
||
this.setData({
|
||
popThumb: this.data.goodsInfo.thumb, //设置默认图片
|
||
popStock: this.data.goodsInfo.stock, //设置默认库存
|
||
popPrice: this.data.goodsInfo.price, //设置默认价格
|
||
goodsDescription: "",
|
||
});
|
||
optionsMaxCount = this.data.goodsInfo.stock; //设置最大购买量
|
||
}
|
||
},
|
||
//判断是否能加入购物车
|
||
setIsAddCart() {
|
||
//为空是老数据默认值问题
|
||
if (app._isTextEmpty(this.data.goodsInfo.buy_way) || this.data.goodsInfo.buy_way == "0") {
|
||
this.setData({
|
||
isAddCart: true,
|
||
});
|
||
}
|
||
//不能加入 金币产品
|
||
if (this.data.goodsInfo.buy_way == 1) {
|
||
this.setData({
|
||
isAddCart: false,
|
||
});
|
||
}
|
||
},
|
||
|
||
//跳转评论详情
|
||
toContentInfo(e) {
|
||
let jsondata = e.currentTarget.dataset.jsondata;
|
||
wx.navigateTo({
|
||
url: "/packageD/member/CommentDetails/CommentDetails?order_id=" + jsondata.order_id + "&goods_id=" + jsondata.goods_id + "&uid=" + jsondata.uid + "&comment_id=" + jsondata.id,
|
||
});
|
||
},
|
||
//是否有爱心值
|
||
setIsLove() {
|
||
if (this.data.goods_plugin.goods_love) {
|
||
this.setData({
|
||
isGoodsLove: true,
|
||
});
|
||
let love_cash = this.data.goodsInfo.price - this.data.goods_plugin.goods_love.amountOfMoney;
|
||
this.setData({
|
||
goods_love_cash: Number(love_cash.toString().match(/^\d+(?:\.\d{0,2})?/)),
|
||
});
|
||
this.setData({
|
||
goods_love_deduction: this.data.goods_plugin.goods_love.amountOfCoin,
|
||
goods_love_name: this.data.goods_plugin.goods_love.name,
|
||
});
|
||
} else {
|
||
this.setData({
|
||
isGoodsLove: false,
|
||
});
|
||
}
|
||
},
|
||
//跳转优惠券领取
|
||
gotoCoupon() {
|
||
wx.navigateTo({
|
||
url: "/packageC/o2o/store_coupon/store_coupon?id=" + this.data.goodsInfo.store_goods.store_id,
|
||
});
|
||
},
|
||
activityShowFun() {
|
||
this.setData({
|
||
activityShow: true,
|
||
});
|
||
},
|
||
activityShowBtn() {
|
||
this.setData({
|
||
activityShow: false,
|
||
});
|
||
},
|
||
//显示商城活动默认活动
|
||
showDefaultActivity(val) {
|
||
if (val.first_strip_key == "coupon") {
|
||
this.setData({
|
||
firstActivityBtn: "购买返券",
|
||
firstActivityCon: "商品订单完成返优惠券",
|
||
});
|
||
} else if (val.first_strip_key == "deduction_proportion" || val.first_strip_key == "award_proportion") {
|
||
this.setData({
|
||
firstActivityBtn: val.love_name,
|
||
firstActivityCon: "最高抵扣" + val.love_name + val.deduction_proportion + ",购买赠送" + val.award_proportion + val.love_name,
|
||
});
|
||
} else if (val.first_strip_key == "max_point_deduct" || val.first_strip_key == "point") {
|
||
this.setData({
|
||
firstActivityBtn: val.point_name,
|
||
firstActivityCon: "最高抵扣" + val.point_name + val.max_point_deduct + ",购买赠送" + val.point + val.point_name,
|
||
});
|
||
} else if (val.first_strip_key == "ed_full") {
|
||
this.setData({
|
||
firstActivityBtn: "满减",
|
||
firstActivityCon: "本商品满" + this.data.language["money"] + val.ed_full + "立减" + this.data.language["money"] + val.ed_reduction + "",
|
||
});
|
||
} else if (val.first_strip_key == "ed_money" || val.first_strip_key == "ed_num") {
|
||
this.setData({
|
||
firstActivityBtn: "包邮",
|
||
});
|
||
if (val.first_strip_key == "ed_money" && val.ed_num == 0) {
|
||
this.setData({
|
||
firstActivityCon: "本商品满" + this.data.language["money"] + val.ed_money + this.data.language["元"] + "包邮",
|
||
});
|
||
} else if (val.first_strip_key == "ed_num" && val.ed_money == 0) {
|
||
this.setData({
|
||
firstActivityCon: "本商品满" + val.ed_num + "件包邮",
|
||
});
|
||
} else {
|
||
this.setData({
|
||
firstActivityCon: "本商品满" + this.data.language["money"] + val.ed_money + this.data.language["元"] + "包邮" + ",满" + val.ed_num + "件包邮",
|
||
});
|
||
}
|
||
} else if (val.first_strip_key == "award_balance") {
|
||
this.setData({
|
||
firstActivityBtn: "余额",
|
||
firstActivityCon: "购买赠送余额" + val.award_balance + this.data.language["元"],
|
||
});
|
||
} else {
|
||
return;
|
||
}
|
||
},
|
||
init(data) {
|
||
// get_store_info门店数据
|
||
this.setData({
|
||
o2oName: data.store_name,
|
||
o2oPhone: data.store_mobile,
|
||
o2oLat: data.lat,
|
||
o2oLng: data.lng,
|
||
});
|
||
},
|
||
getFirstCart(data) {
|
||
// member_cart数据
|
||
this.setData({
|
||
carts: data,
|
||
goodsCarts: [],
|
||
cartsNum: 0,
|
||
cartsTotal: 0,
|
||
});
|
||
console.log(this.data.carts);
|
||
this.data.carts.forEach((item) => {
|
||
this.setData({
|
||
["goodsCarts[" + item.goods_id + "]"]: item,
|
||
cartsNum: this.data.cartsNum + item.total,
|
||
cartsTotal: this.data.cartsTotal + item.total * item.goods.price,
|
||
});
|
||
});
|
||
let good = this.data.carts.find((item) => item.goods_id == this.data.goodsId);
|
||
if (good == undefined) {
|
||
this.setData({
|
||
o2oCount: 0,
|
||
});
|
||
}
|
||
this.data.carts.forEach((item) => {
|
||
if (item.goods_id == this.data.goodsId) {
|
||
this.setData({
|
||
o2oCount: item.total,
|
||
});
|
||
}
|
||
if (item.goods_id === this.data.goodsInfo.id && item.option_id === optionsId) {
|
||
this.setData({
|
||
popNum: item.total,
|
||
popCard: item,
|
||
});
|
||
}
|
||
});
|
||
this.setData({
|
||
goodsCartsTotal: this.calculateTotal1(this.data.carts),
|
||
cartsTotal: parseFloat(this.data.cartsTotal).toFixed(2),
|
||
});
|
||
},
|
||
//足迹记录
|
||
footSet() {
|
||
if (!this.data.isGoods) {
|
||
return;
|
||
}
|
||
|
||
let urlStr = app.getNetAddresss("member.member-history.store");
|
||
urlStr += "&goods_id=" + this.properties.goodsId + "&mark=" + this.properties.mark + "&mark_id=" + this.properties.markId;
|
||
app._getNetWork({
|
||
showToastIn: false,
|
||
url: urlStr,
|
||
success: (resdata) => {},
|
||
fail: function (res) {},
|
||
});
|
||
},
|
||
goTOHome() {
|
||
wx.redirectTo({
|
||
url: "/packageC/o2o/o2oHome/o2oHome",
|
||
});
|
||
},
|
||
trggleCart() {
|
||
if (this.data.carts.length === 0 && !this.data.showCart) {
|
||
return;
|
||
}
|
||
this.setData({
|
||
showCart: !this.data.showCart,
|
||
});
|
||
this.getminicartStyle();
|
||
},
|
||
getminicartStyle() {
|
||
if (this.data.showCart) {
|
||
this.setData({
|
||
minicartStyle: "display: none;transform: translateY(-100%)",
|
||
leftPrice: "transform: translateX(-60px);",
|
||
});
|
||
} else {
|
||
this.setData({
|
||
minicartStyle: "display: block;transform: translateY(0)",
|
||
leftPrice: "",
|
||
});
|
||
}
|
||
},
|
||
updateCart1btn(e) {
|
||
let id = e.currentTarget.dataset.id;
|
||
let num = e.currentTarget.dataset.num;
|
||
this.updateCart1(id, num);
|
||
},
|
||
updateCart1(id, num) {
|
||
// id是购物车id
|
||
if (num < 0) {
|
||
var total = 0;
|
||
this.data.carts.forEach((item) => {
|
||
if (item.id == id) {
|
||
total = item.total;
|
||
}
|
||
});
|
||
|
||
if (total + num <= 0) {
|
||
if (clicktag === 0) {
|
||
clicktag = 1;
|
||
this.delItemByCart1(id);
|
||
setTimeout(function () {
|
||
clicktag = 0;
|
||
}, 500);
|
||
}
|
||
return;
|
||
}
|
||
if (clicktag === 0) {
|
||
clicktag = 1;
|
||
this.updateCartRequest(id, num);
|
||
setTimeout(function () {
|
||
clicktag = 0;
|
||
}, 500);
|
||
}
|
||
} else {
|
||
if (specsManage.length == this.data.goodsInfo.has_many_specs.length && this.data.popNum == optionsMaxCount) {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: "数量超出范围",
|
||
duration: 1500,
|
||
});
|
||
return;
|
||
}
|
||
if (clicktag === 0) {
|
||
clicktag = 1;
|
||
this.updateCartRequest(id, num);
|
||
setTimeout(function () {
|
||
clicktag = 0;
|
||
}, 500);
|
||
}
|
||
}
|
||
},
|
||
delItemByCart1(cart_id) {
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.destroy");
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
store_id: this.data.store_id,
|
||
ids: cart_id,
|
||
},
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.getCart();
|
||
that.setData({
|
||
popNum: that.data.popNum - 1,
|
||
showCart: false,
|
||
minicartStyle: "display: block;transform: translateY(0)",
|
||
leftPrice: "",
|
||
});
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
updateCartbtn(e) {
|
||
let id = e.currentTarget.dataset.id;
|
||
let num = e.currentTarget.dataset.num;
|
||
this.updateCart(id, num);
|
||
},
|
||
updateCart(id, num) {
|
||
// id是goods_id
|
||
if (num < 0) {
|
||
var total = 0;
|
||
this.data.carts.forEach((item) => {
|
||
if (item.goods_id == id) {
|
||
total = item.total;
|
||
}
|
||
});
|
||
if (total + num <= 0) {
|
||
this.delItemByCart(id);
|
||
return;
|
||
}
|
||
}
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.updateNum");
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
num: num,
|
||
store_id: this.data.store_id,
|
||
goods_id: id,
|
||
},
|
||
success: function (resdata) {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
that.getCart();
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
that.getCart();
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
delItemByCart(cart_id) {
|
||
let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.shoppingCart.member-cart.destroy");
|
||
app._getNetWork({
|
||
url: urlStr,
|
||
data: {
|
||
store_id: this.data.store_id,
|
||
goods_id: cart_id,
|
||
},
|
||
success: (resdata)=> {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
this.getCart();
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {
|
||
console.log(res);
|
||
},
|
||
});
|
||
},
|
||
clickCount(e) {
|
||
let total = e.currentTarget.dataset.total;
|
||
this.setData({
|
||
OldGoodsNum: total,
|
||
});
|
||
},
|
||
changeCount(e) {
|
||
let data = e.detail.value;
|
||
let id = e.currentTarget.dataset.id;
|
||
if (data < 0) {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: "商品数量不能为负数",
|
||
duration: 1500,
|
||
});
|
||
this.setData({
|
||
o2oCount: this.data.OldGoodsNum,
|
||
});
|
||
this.getCart();
|
||
return;
|
||
}
|
||
|
||
if (data == this.data.OldGoodsNum) {
|
||
return;
|
||
}
|
||
|
||
if (data < this.data.OldGoodsNum) {
|
||
let lowerNum = this.data.OldGoodsNum - data;
|
||
this.updateCart(id, -lowerNum);
|
||
} else if (data > this.data.OldGoodsNum) {
|
||
let addNum = data - this.data.OldGoodsNum;
|
||
this.updateCart(id, addNum);
|
||
}
|
||
},
|
||
getVideoLink() {
|
||
wx.showLoading({
|
||
title: "正在生成中...",
|
||
});
|
||
// 生成视频号链接
|
||
let that = this;
|
||
let urlStr = app.getNetAddresss("plugin.wx-video-link.frontend.index.index");
|
||
urlStr += "&id=" + this.properties.goodsId;
|
||
app._getNetWork({
|
||
showToastIn: false,
|
||
url: urlStr,
|
||
success: (resdata) => {
|
||
var res = resdata.data;
|
||
if (res.result == 1) {
|
||
if (res.data.article_url == "" || res.data.article_url == null || res.data.article_url == undefined) {
|
||
setTimeout(() => {
|
||
that.getVideoLink();
|
||
}, 3000);
|
||
} else {
|
||
that.setData({
|
||
article_url: res.data.article_url,
|
||
showVideoLink: true,
|
||
showSahre: false,
|
||
});
|
||
setTimeout(function () {
|
||
wx.hideLoading();
|
||
}, 800);
|
||
}
|
||
} else {
|
||
wx.showToast({
|
||
icon: "none",
|
||
title: res.msg,
|
||
duration: 1500,
|
||
});
|
||
}
|
||
},
|
||
fail: function (res) {},
|
||
});
|
||
},
|
||
// 复制链接
|
||
onCopy() {
|
||
wx.setClipboardData({
|
||
data: this.data.article_url,
|
||
success(res) {
|
||
wx.showToast({
|
||
title: "复制成功",
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
},
|
||
fail() {
|
||
wx.showToast({
|
||
title: "复制失败",
|
||
icon: "none",
|
||
duration: 1500,
|
||
});
|
||
},
|
||
});
|
||
this.setData({
|
||
showVideoLink: false,
|
||
article_url: "",
|
||
});
|
||
},
|
||
getMemberPrice(_optionsId) {
|
||
if (!_optionsId) return;
|
||
let specsVIPPrc = 0;
|
||
this.setData({specsVIPPrc});
|
||
let urlStr = app.getNetAddresss("goods.other-info.option-vpi-price");
|
||
urlStr += "&option_id=" + _optionsId;
|
||
app._getNetWork({
|
||
showToastIn: false,
|
||
url: urlStr,
|
||
success: (resdata) => {
|
||
let res = resdata.data;
|
||
if (res.result == 1) {
|
||
specsVIPPrc = res.data.vip_price || null;
|
||
} else {
|
||
specsVIPPrc = null;
|
||
}
|
||
this.setData({specsVIPPrc});
|
||
},
|
||
fail: function (res) {
|
||
specsVIPPrc = null;
|
||
this.setData({specsVIPPrc});
|
||
},
|
||
});
|
||
|
||
},
|
||
},
|
||
observers:{
|
||
'datop':function(obs){
|
||
let that = this;
|
||
if(that.data.getTapNoObsever){
|
||
return;
|
||
}
|
||
this.createSelectorQuery()
|
||
.select(".sift")
|
||
.boundingClientRect(function (rect) {
|
||
if(rect) {
|
||
siftTop = rect.top -50;
|
||
}
|
||
})
|
||
.exec();
|
||
this.createSelectorQuery()
|
||
.select(".foShowBox")
|
||
.boundingClientRect(function (rect) {
|
||
if(rect) {
|
||
foshowTop = rect.top - 150;
|
||
}
|
||
})
|
||
.exec();
|
||
// console.log(foshowTop,siftTop)
|
||
if(foshowTop < 0 && siftTop < 0){
|
||
that.setData({
|
||
current:3
|
||
});
|
||
}else if(siftTop <=0 && foshowTop>0){
|
||
that.setData({
|
||
current:2
|
||
});
|
||
}else if(foshowTop >0 && siftTop > 0){
|
||
that.setData({
|
||
current:1
|
||
});
|
||
}
|
||
}
|
||
}
|
||
});
|