vr-shopxo-source/sourcecode/weixin/default/pages/cart/cart.js

406 lines
11 KiB
JavaScript
Executable File

const app = getApp();
Page({
data: {
data_list_loding_status: 1,
data_list_loding_msg: '',
data_bottom_line_status: false,
data_list: [],
swipe_index: null,
total_price: '0.00',
is_selected_all: false,
buy_submit_disabled_status: true,
// 基础配置
currency_symbol: app.data.currency_symbol,
common_site_type: 0,
common_is_exhibition_mode_btn_text: null,
common_app_customer_service_tel: null,
},
onShow() {
wx.setNavigationBarTitle({ title: app.data.common_pages_title.cart });
// 数据加载
this.init();
// 初始化配置
this.init_config();
},
// 初始化配置
init_config(status) {
if((status || false) == true) {
this.setData({
currency_symbol: app.get_config('currency_symbol'),
common_site_type: app.get_config('config.common_site_type'),
common_is_exhibition_mode_btn_text: app.get_config('config.common_is_exhibition_mode_btn_text', '立即咨询'),
common_app_customer_service_tel: app.get_config('config.common_app_customer_service_tel'),
});
} else {
app.is_config(this, 'init_config');
}
},
// 获取数据
init(e) {
var user = app.get_user_info(this, "init");
if (user != false) {
// 用户未绑定用户则转到登录页面
if (app.user_is_need_login(user)) {
wx.showModal({
title: '温馨提示',
content: '绑定手机号码',
confirmText: '确认',
cancelText: '暂不',
success: (result) => {
if (result.confirm) {
wx.navigateTo({
url: "/pages/login/login?event_callback=init"
});
} else {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false,
data_list_loding_msg: '请绑定手机号码',
});
}
},
});
} else {
this.get_data();
}
} else {
wx.stopPullDownRefresh();
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false,
data_list_loding_msg: '请先授权用户信息',
});
}
},
// 获取数据
get_data() {
this.setData({
data_list_loding_status: 1,
total_price: '0.00',
is_selected_all: false,
buy_submit_disabled_status: true,
});
wx.request({
url: app.get_request_url("index", "cart"),
method: "POST",
data: {},
dataType: "json",
success: res => {
wx.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
// 数据赋值
this.setData({
data_list: data.data,
data_list_loding_status: data.data.length == 0 ? 0 : 3,
data_bottom_line_status: true,
data_list_loding_msg: '购物车空空如也',
});
// 导航购物车处理
var cart_total = data.common_cart_total || 0;
if (cart_total <= 0) {
app.set_tab_bar_badge(2, 0);
} else {
app.set_tab_bar_badge(2, 1, cart_total);
}
} else {
this.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg,
});
if (app.is_login_check(res.data, this, 'get_data')) {
app.showToast(res.data.msg);
}
}
},
fail: () => {
wx.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错',
});
app.showToast("服务器请求出错");
}
});
},
// 下拉刷新
onPullDownRefresh() {
this.init();
},
// 数量输入事件
goods_buy_number_blur(e) {
var index = e.currentTarget.dataset.index || 0;
var buy_number = parseInt(e.detail.value) || 1;
this.goods_buy_number_func(index, buy_number);
},
// 数量操作事件
goods_buy_number_event(e) {
var index = e.currentTarget.dataset.index || 0;
var type = parseInt(e.currentTarget.dataset.type) || 0;
var temp_buy_number = parseInt(this.data.data_list[index]['stock']);
if (type == 0) {
var buy_number = temp_buy_number - 1;
} else {
var buy_number = temp_buy_number + 1;
}
this.goods_buy_number_func(index, buy_number);
},
// 数量处理方法
goods_buy_number_func(index, buy_number) {
var temp_data_list = this.data.data_list;
var buy_min_number = parseInt(temp_data_list[index]['buy_min_number']) || 1;
var buy_max_number = parseInt(temp_data_list[index]['buy_max_number']) || 0;
var inventory = parseInt(temp_data_list[index]['inventory']);
var inventory_unit = temp_data_list[index]['inventory_unit'];
if (buy_number < buy_min_number) {
buy_number = buy_min_number;
if (buy_min_number > 1) {
app.showToast('起购' + buy_min_number + inventory_unit );
return false;
}
}
if (buy_max_number > 0 && buy_number > buy_max_number) {
buy_number = buy_max_number;
app.showToast('限购' + buy_max_number + inventory_unit );
return false;
}
if (buy_number > inventory) {
buy_number = inventory;
app.showToast( '库存数量' + inventory + inventory_unit );
return false;
}
if (temp_data_list[index]['stock'] == 1 && buy_number == 1)
{
return false;
}
// 更新数据库
wx.request({
url: app.get_request_url("stock", "cart"),
method: "POST",
data: { "id": temp_data_list[index]['id'], "goods_id": temp_data_list[index]['goods_id'], "stock": buy_number},
dataType: "json",
success: res => {
wx.stopPullDownRefresh();
if (res.data.code == 0) {
temp_data_list[index]['stock'] = buy_number;
this.setData({ data_list: temp_data_list });
// 选择处理
this.selected_calculate();
} else {
if (app.is_login_check(res.data)) {
app.showToast(res.data.msg);
} else {
app.showToast('提交失败,请重试!');
}
}
},
fail: () => {
app.showToast("服务器请求出错");
}
});
},
// 收藏+删除
goods_favor_delete(id, goods_id, type) {
wx.request({
url: app.get_request_url('favor', 'goods'),
method: 'POST',
data: { "id": goods_id, "is_mandatory_favor": 1 },
dataType: 'json',
success: (res) => {
if (res.data.code == 0) {
this.cart_delete(id, type);
} else {
if (app.is_login_check(res.data)) {
app.showToast(res.data.msg);
} else {
app.showToast('提交失败,请重试!');
}
}
},
fail: () => {
app.showToast("服务器请求出错");
}
});
},
// 移除操作事件
cart_remove_event(e) {
var id = e.currentTarget.dataset.id || null;
var index = e.currentTarget.dataset.index || 0;
var goods_id = e.currentTarget.dataset.goodsid || 0;
var self = this;
if (id !== null) {
self.setData({ swipe_index: index})
wx.showActionSheet({
itemList: ['加入收藏', '删除'],
success(res) {
if (res.tapIndex == 0)
{
self.goods_favor_delete(id, goods_id, 'favor')
} else {
self.cart_delete(id, 'delete');
}
}
});
} else {
app.showToast("参数有误");
}
},
// 购物车删除
cart_delete(id, type) {
wx.request({
url: app.get_request_url('delete', 'cart'),
method: 'POST',
data: { "id": id },
dataType: 'json',
success: (res) => {
if (res.data.code == 0) {
var temp_data_list = this.data.data_list;
temp_data_list.splice(this.data.swipe_index, 1);
this.setData({
data_list: temp_data_list,
swipe_index: null,
data_list_loding_status: temp_data_list.length == 0 ? 0 : this.data.data_list_loding_status,
});
// 导航购物车处理
var cart_total = res.data.data || 0;
if (cart_total <= 0) {
app.set_tab_bar_badge(2, 0);
} else {
app.set_tab_bar_badge(2, 1, cart_total);
}
app.showToast(((type == 'delete') ? '删除成功' : '收藏成功'), 'success');
} else {
if (app.is_login_check(res.data)) {
app.showToast((type == 'delete') ? '删除失败' : '收藏失败');
} else {
app.showToast('提交失败,请重试!');
}
}
},
fail: () => {
app.showToast("服务器请求出错");
}
});
},
// 选中处理
selected_event(e) {
var type = e.currentTarget.dataset.type || null;
if (type != null)
{
var temp_data_list = this.data.data_list;
var temp_is_selected_all = this.data.is_selected_all;
switch(type) {
// 批量操作
case 'all' :
temp_is_selected_all = (temp_is_selected_all == true) ? false : true;
for (var i in temp_data_list) {
if (temp_data_list[i]['is_error'] != 1)
{
temp_data_list[i]['selected'] = temp_is_selected_all;
}
}
break;
// 节点操作
case 'node' :
var index = e.currentTarget.dataset.index || 0;
if (temp_data_list[index]['is_error'] != 1)
{
temp_data_list[index]['selected'] = (temp_data_list[index]['selected'] == true) ? false : true;
}
break;
}
this.setData({
data_list: temp_data_list,
is_selected_all: temp_is_selected_all,
});
// 选择处理
this.selected_calculate();
}
},
// 选中计算
selected_calculate() {
var total_price = 0;
var data_count = 0;
var selected_count = 0;
var temp_data_list = this.data.data_list;
for (var i in temp_data_list) {
if ((temp_data_list[i]['is_error'] || 0) == 0) {
data_count++;
}
if ((temp_data_list[i]['selected'] || false) == true) {
total_price += temp_data_list[i]['stock'] * temp_data_list[i]['price'];
selected_count++;
}
}
this.setData({
total_price: total_price.toFixed(2),
buy_submit_disabled_status: (selected_count <= 0),
is_selected_all: (selected_count > 0 && selected_count >= data_count),
});
},
// 结算
buy_submit_event(e) {
var selected_count = 0;
var ids = [];
var temp_data_list = this.data.data_list;
for (var i in temp_data_list) {
if ((temp_data_list[i]['selected'] || false) == true) {
ids.push(temp_data_list[i]['id']);
selected_count++;
}
}
if (selected_count <= 0) {
app.showToast("请选择商品");
return false
}
// 进入订单确认页面
var data = {
"buy_type": "cart",
"ids": ids.join(',')
};
wx.navigateTo({
url: '/pages/buy/buy?data=' + encodeURIComponent(JSON.stringify(data))
});
},
// 展示型事件
exhibition_submit_event(e) {
app.call_tel(this.data.common_app_customer_service_tel);
},
});