yuminge-app/yun-min-program-plugin-master/packageE/community_solitaire/community_solitaire.js

667 lines
16 KiB
JavaScript

// packageE/solitaire/solitaire.js
var app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
activity_id: 0,
activity_data: {},
hand_goods_obj: {},
hand_goods_id: 0,
shareShow: false,
specsShow: false,
goodsPopupShow: false,
cartListShow: false,
currentTime: parseInt(new Date().getTime() / 1000),
timeData: {},
shareOptions: [
{ name: "生成海报", icon: "poster" },
{ name: "分享给好友", icon: "wechat", openType: "share" },
],
goods_list: [],
buyerListData: [],
carList: [],
goodsCartsTotal: {},
language: {},
posterShow: false,
cartsNum: 0,
cartsTotal: 0,
cart_ids: [],
good_ids: [],
showChoose: false,
radioChoose: "",
dispatch_types: [],
networkLoading: false, //网络请求
buyerListDataLimit: [],
page: 1, //分页数,当前页数
isLoadMore: true, //判断是否要加载更多的标志
total_page: 0, //总页
end_time: "",
},
onChangeTime(e) {
this.setData({
timeData: e.detail,
});
},
onCloseShare() {
this.setData({ shareShow: false });
},
close_yz_cartList_popup() {
this.setData({
cartListShow: false,
});
},
typeChange(event) {
this.setData({
radioChoose: Number(event.detail),
});
},
close_yz_specs_popup(e) {
console.log(e);
if (e.detail.clicktype == 1) {
//点击确认按钮
this.addCartRequest({
goods: { id: e.detail.goodsId },
cartid: e.detail.cartid,
total: e.detail.goodsCount,
optionsId: e.detail.optionsId,
});
this.setData({
specsShow: false,
// optionsId: e.detail.optionsId,
// goodsCount: e.detail.goodsCount
});
} else {
this.setData({
specsShow: false,
});
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
let activity_id = options.activity_id;
let scene = decodeURIComponent(options.scene);
if (scene) {
var info_arr = [];
info_arr = scene.split("&");
console.log(info_arr);
for (let i = 0; i < info_arr.length; i++) {
let chil_arr = [];
chil_arr = info_arr[i].split("=");
console.log(chil_arr);
if (chil_arr[0] == "activity_id") {
activity_id = chil_arr[1];
}
if(chil_arr[0] == "mid"){
app._setMid(chil_arr[1]);
}
}
console.log(info_arr);
}
if (options.mid) {
app._setMid(options.mid);
}
if (activity_id && activity_id != 0) {
this.setData({ activity_id });
this.getData(activity_id);
this.getBuyerData(activity_id);
this.getCartList();
} else this.tips("参数错误");
},
initData() {
this.data.page = 1;
this.data.isLoadMore = true;
this.data.total_page = 0;
},
getData(activity_id) {
this.initData();
let urlStr = app.getNetAddresss(
"plugin.community-relay.frontend.activity.activity-detail"
);
app._postNetWork({
url: urlStr,
data: { activity_id },
success: (resdata) => {
let res = resdata.data;
if (res.result !== 1) return this.tips(res.msg);
// let date = new Date();
this.data.end_time = (res.data.end_time - this.data.currentTime) * 1000;
this.setData({
goods_list: res.data.goods_list,
networkLoading: true,
activity_data: res.data,
});
},
});
},
getBuyerData(activity_id) {
let urlStr = app.getNetAddresss(
"plugin.community-relay.frontend.activity.activity-buyer"
);
app._postNetWork({
url: urlStr,
data: { activity_id },
success: (resdata) => {
let res = resdata.data;
if (res.result !== 1) return this.tips(res.msg);
console.log(res);
this.setData({
buyerListDataLimit: res.data.data,
buyerListData: res.data.data,
});
this.data.isLoadMore = true;
this.data.total_page = res.data.last_page;
if (!this.data.total_page) {
this.data.total_page = 0;
}
},
});
},
_getMoreData() {
this.data.isLoadMore = false; // 防止多次请求分页数据
if (this.data.page >= this.data.total_page) {
// that.loading = true;
return;
} else {
this.data.page += 1;
let urlStr = app.getNetAddresss(
"plugin.community-relay.frontend.activity.activity-buyer"
);
app._postNetWork({
url: urlStr,
data: {
page: this.data.page,
activity_id: this.options.activity_id,
},
success: (resdata) => {
let res = resdata.data;
this.data.isLoadMore = true;
if (res.result === 1) {
var nextPageData = res.data.data;
let buyerListData = this.data.buyerListData.concat(nextPageData);
this.setData({ buyerListData });
} else {
this.data.page = this.data.page - 1;
this.data.isLoadMore = false;
}
},
});
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
let language = wx.getStorageSync("langIndex");
this.setData({ language: language.en });
},
gotoOrder() {
wx.navigateTo({
url: "/packageA/member/myOrder_v2/myOrder_v2?status=0",
});
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
openGoodsDetail(e) {
let item = e.currentTarget.dataset.item;
if (item.id == this.data.hand_goods_id) {
this.setData({
goodsPopupShow: true,
});
} else {
this.data.hand_goods_id = item.id;
this.getGoodsDetails(item.id, "goodsDetails");
}
},
//不同规格的同一商品求和
calculateTotal(arr) {
let temp = {};
for (let i in arr) {
let key = arr[i].goods_id;
this.data.good_ids.push(key);
this.data.cart_ids.push(arr[i].id);
if (temp[key]) {
// temp[key].goods_id = temp[key].goods_id;
temp[key].total = temp[key].total + arr[i].total;
} else {
temp[key] = {};
temp[key].goods_id = arr[i].goods_id;
temp[key].total = arr[i].total;
temp[key].id = arr[i].id;
}
}
this.setData({
goodsCartsTotal: temp,
});
},
//统计购物车的总价格和总数量
getFirstCart(data) {
this.data.carts = data;
let cartsNum = 0;
let cartsTotal = 0;
this.data.carts.forEach((item) => {
cartsNum += item.total;
cartsTotal += item.total * item.goods.price;
});
cartsTotal = parseFloat(cartsTotal).toFixed(2);
this.setData({
cartsNum,
cartsTotal,
});
this.calculateTotal(this.data.carts);
},
openShareShow() {
this.setData({
shareShow: true,
});
},
openCartListPopup() {
this.setData({
cartListShow: !this.data.cartListShow,
});
},
onSelectShare(evt) {
this.onCloseShare();
if (evt.detail.index == 0) {
this.setData({
posterShow: true,
});
}
console.log(evt.detail.index);
},
openSpecs(e) {
let item = e.currentTarget.dataset.item;
if (item.id == this.data.hand_goods_id) {
this.setData({
specsShow: true,
});
} else {
this.data.hand_goods_id = item.id;
this.getGoodsDetails(item.id, "specs");
}
},
getGoodsDetails(id, type) {
let urlStr = app.getNetAddresss("goods.goods.get-goods-page");
app._postNetWork({
url: urlStr,
data: { id: Number(id) },
success: (resdata) => {
let res = resdata.data;
if (res.result !== 1) return this.tips(res.msg);
let name = "";
if (type == "goodsDetails") {
name = "goodsPopupShow";
} else if (type == "specs") {
name = "specsShow";
}
res.data.get_goods.end_time = this.data.end_time;
console.log("1111111111111111", this.data.end_time);
this.setData({
[name]: true,
hand_goods_obj: res.data.get_goods,
});
},
});
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
getCartList() {
let activity_id = this.data.activity_id;
let urlStr = app.getNetAddresss(
"plugin.community-relay.frontend.activity.activity-cart"
);
app._postNetWork({
url: urlStr,
data: { activity_id },
success: (resdata) => {
let res = resdata.data;
if (res.result !== 1) return this.tips(res.msg);
let carList = res.data;
this.setData({
carList,
});
this.getFirstCart(carList);
// this.calculateTotal(carList);
console.log(carList);
},
});
},
updateCartNum(evt) {
console.log(evt);
let item = evt.target.dataset.item;
let cartid = evt.target.dataset.cartid;
let value = evt.detail.value;
let total = value;
if (value == "" || value == 0) {
total = 0;
}
if (this.data.goodsCartsTotal[item.id].total == total) return;
this.reduceCartRequest({
goods: item,
cartid,
total,
});
},
reduceCartNum(evt) {
let item = evt.currentTarget.dataset.item;
let cartid = evt.currentTarget.dataset.cartid;
this.reduceCartRequest({ goods: item, cartid });
},
reduceCartRequest(obj) {
let { goods, cartid, total } = obj;
let id = goods.id;
let num = 0;
if (total || total === 0) {
num = total;
} else {
let obj = this.data.goodsCartsTotal;
num = Number(obj[id].total) - 1;
this.data.goodsCartsTotal[id].total = num;
}
let urlStr = "";
let json = {};
if (num <= 0) {
//清楚购物车
urlStr = app.getNetAddresss("member.member-cart.destroy");
json = {
ids: cartid,
};
} else {
urlStr = app.getNetAddresss("member.member-cart.updateNumV2");
json = {
id: cartid,
num: num,
};
}
app._getNetWork({
url: urlStr,
data: json,
success: (resdata) => {
var res = resdata.data;
this.tips(res.msg);
if (res.result == 1) {
this.getCartList();
}
},
});
},
addCartNum(evt) {
let item = evt.currentTarget.dataset.item;
let cartid = evt.currentTarget.dataset.cartid;
console.log(item);
this.addCartRequest({ goods: item, cartid });
},
//加入购物车
addCartRequest(obj) {
let { goods, cartid, total, optionsId } = obj;
console.log("加入购物车");
if (goods.vip_level_status && goods.vip_level_status.status == 1) {
return this.tips(goods.vip_level_status.tips);
}
if (goods.stock == 0) {
return this.tips("库存为零");
}
let num = 1;
let urlStr = "";
let jsons = {};
if (!app._isTextEmpty(this.data.goodsCartsTotal[goods.id]) && cartid != 0) {
if (this.data.goodsCartsTotal[goods.id].total >= goods.stock) {
return this.tips("库存不足");
}
let obj = this.data.goodsCartsTotal;
num = Number(obj[goods.id].total) + 1;
if (total && total > 0) {
num = total;
}
this.data.goodsCartsTotal[goods.id].total = num;
urlStr = app.getNetAddresss("member.member-cart.updateNumV2");
jsons = {
id: cartid,
num: num,
};
} else {
urlStr = app.getNetAddresss("member.member-cart.store");
if (total && total > 0) {
num = total;
}
jsons = {
goods_id: goods.id,
total: num,
};
if (optionsId && optionsId > 0) jsons.option_id = optionsId;
}
app._getNetWork({
url: urlStr,
data: jsons,
success: (resdata) => {
var res = resdata.data;
this.tips(res.msg);
if (res.result == 1) {
this.getCartList();
}
},
});
},
cartListAdd(item) {
console.log(item.detail);
console.log(this.data.goodsCartsTotal);
this.addCartRequest({
goods: item.detail.goods,
cartid: item.detail.id,
total: item.detail.total + 1,
});
},
cartListReduce(item) {
console.log(item.detail);
this.reduceCartRequest({
goods: item.detail.goods,
cartid: item.detail.id,
total: item.detail.total - 1,
});
},
cartListInputBlur(item) {
let cartList = this.data.carList;
for (let obj of cartList) {
console.log(item);
if (obj.id == item.detail.id) {
if (obj.total == item.detail.total) return;
}
}
this.reduceCartRequest({
goods: item.detail.goods,
cartid: item.detail.id,
total: item.detail.total,
});
},
goodsDetailCartAdd(evt) {
this.setData({
goodsPopupShow: false,
specsShow: true,
});
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {},
closeChoose() {
this.setData({
showChoose: false,
});
},
checkGoods() {
let urlStr = app.getNetAddresss("memberCart.checkout");
app._getNetWork({
url: urlStr,
data: {
cart_ids: this.data.cart_ids.join(","),
},
success: (resdata) => {
let res = resdata.data;
if (res.result !== 1) return this.tips(res.msg);
if (res.data.need_choose == 1) {
this.setData({
dispatch_types: res.data.dispatch_types,
showChoose: true,
});
} else {
this.submitGoods();
}
},
});
},
submitGoods() {
if (this.data.showChoose && !this.data.radioChoose) {
return this.tips("请先选择配送方式");
}
if (this.data.showChoose) {
// 配送方式有冲突
this.data.cart_ids = [];
for (
let i = 0;
i < this.data.dispatch_types[this.data.radioChoose].member_carts.length;
i++
) {
this.data.cart_ids.push(
this.data.dispatch_types[this.data.radioChoose].member_carts[i].id
);
}
}
this.verifyFrom();
// wx.navigateTo({
// url: '/packageD/buy/myOrder_v2/myOrder_v2?tag=-1' + '&cart_ids=' + JSON.stringify(this.data.cart_ids)
// })
},
//下单前验证
verifyFrom() {
let that = this;
let goods = [];
goods.push(that.data.good_ids);
let urlStr = app.getNetAddresss("from.div-from.isDisplay");
urlStr += "&goods_ids=" + JSON.stringify(goods);
app._getNetWork({
showToastIn: false,
url: urlStr,
success: function (resdata) {
var res = resdata.data;
if (res.result == 1) {
var _data = res.data;
console.log("xxxx", _data);
if (res.data.status && !res.data.member_status) {
wx.showModal({
title: "提示",
content: "购买此商品,请补充您的个人信息",
success(res) {
if (res.confirm) {
//保税真实信息添加
// wx.navigateTo({
// url: '/packageB/member/address/myinfo/myinfo?tag=-1&cart_ids=' + JSON.stringify(that.data.cart_ids)
// })
wx.navigateTo({
url: "/packageB/member/address/myinfo/myinfo?tag=delta",
});
} else if (res.cancel) {
console.log("用户点击取消");
}
},
});
} else {
wx.navigateTo({
url:
"/packageD/buy/myOrder_v2/myOrder_v2?tag=-1" +
"&cart_ids=" +
JSON.stringify(that.data.cart_ids),
});
}
} else {
wx.showToast({
icon: "none",
title: res.msg,
duration: 1500,
});
}
},
fail: function (res) {},
});
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if (this.data.isLoadMore) {
this._getMoreData();
} else {
console.log("没有更多数据");
}
},
tips(msg) {
wx.showToast({
title: msg,
icon: "none",
});
return false;
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
var value = wx.getStorageSync('yz_uid');
var mid = '';
if (value) {
mid = value;
}
return {
title: this.data.activity_data.activity_name,
path:
"/packageE/community_solitaire/community_solitaire?activity_id=" +
this.data.activity_id+ '&mid=' + mid,
};
},
});