vr-shopxo-source/alipay/pages/cart/cart.js

351 lines
9.4 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

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,
is_selected_all: false,
buy_submit_disabled_status: true,
},
onShow() {
my.setNavigationBar({ title: app.data.common_pages_title.cart });
this.init();
},
init(e) {
var user = app.GetUserInfo(this, "init");
if (user != false) {
// 用户未绑定用户则转到登录页面
if ((user.mobile || null) == null) {
my.confirm({
title: '温馨提示',
content: '绑定手机号码',
confirmButtonText: '确认',
cancelButtonText: '暂不',
success: (result) => {
if (result.confirm) {
my.navigateTo({
url: "/pages/login/login?event_callback=init"
});
}
this.get_data();
},
});
} else {
this.get_data();
}
}
},
// 获取数据
get_data() {
this.setData({
data_list_loding_status: 1,
total_price: 0,
is_selected_all: false,
buy_submit_disabled_status: true,
});
my.httpRequest({
url: app.get_request_url("Index", "Cart"),
method: "POST",
data: {},
dataType: "json",
success: res => {
my.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
if (data.length > 0) {
for (var i in data) {
data[i]['right'] = [{ type: 'edit', text: '加入收藏' }, { type: 'delete', text: '删除' }];
}
}
this.setData({
data_list: data,
data_list_loding_status: data.length == 0 ? 0 : 3,
data_bottom_line_status: true,
data_list_loding_msg: '',
});
} else {
this.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg,
});
my.showToast({
type: "fail",
content: res.data.msg
});
}
},
fail: () => {
my.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错',
});
my.showToast({
type: "fail",
content: "服务器请求出错"
});
}
});
},
// 下拉刷新
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) {
my.showToast({ content: '起购' + buy_min_number + inventory_unit });
return false;
}
}
if (buy_max_number > 0 && buy_number > buy_max_number) {
buy_number = buy_max_number;
my.showToast({ content: '限购' + buy_max_number + inventory_unit });
return false;
}
if (buy_number > inventory) {
buy_number = inventory;
my.showToast({ content: '库存数量' + inventory + inventory_unit });
return false;
}
if (temp_data_list[index]['stock'] == 1 && buy_number == 1)
{
return false;
}
// 更新数据库
my.httpRequest({
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 => {
my.stopPullDownRefresh();
if (res.data.code == 0) {
temp_data_list[index]['stock'] = buy_number;
this.setData({ data_list: temp_data_list });
// 选择处理
this.selected_calculate();
} else {
my.showToast({
type: "fail",
content: res.data.msg
});
}
},
fail: () => {
my.showToast({
type: "fail",
content: "服务器请求出错"
});
}
});
},
// 滑动操作
right_item_event(e) {
var type = e.detail.type;
var index = e.extra;
var id = this.data.data_list[index]['id'];
var goods_id = this.data.data_list[index]['goods_id'];
// 收藏
if (type == 'edit') {
this.goods_favor_event(id, goods_id, type);
} else {
my.confirm({
title: '温馨提示',
content: '删除后不可恢复,确定继续吗?',
confirmButtonText: '确定',
cancelButtonText: '取消',
success: (result) => {
if (result.confirm) {
this.cart_delete(id, type);
} else {
this.setData({ swipe_index: null });
}
}
});
}
},
// 滑动操作
swipe_start_event(e) {
this.setData({ swipe_index: e.index });
},
// 收藏事件
goods_favor_event(id, goods_id, type) {
my.httpRequest({
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 {
my.showToast({
type: 'fail',
content: res.data.msg
});
}
},
fail: () => {
my.showToast({
type: 'fail',
content: '服务器请求出错'
});
}
});
},
// 购物车删除
cart_delete(id, type) {
my.httpRequest({
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,
});
my.showToast({
type: 'success',
content: (type == 'delete') ? '删除成功' : '收藏成功'
});
} else {
my.showToast({
type: 'fail',
content: (type == 'delete') ? '删除失败' : '收藏失败'
});
}
},
fail: () => {
my.showToast({
type: 'fail',
content: '服务器请求出错'
});
}
});
},
// 选中处理
selectedt_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) {
temp_data_list[i]['selected'] = temp_is_selected_all;
}
break;
// 节点操作
case 'node' :
var index = e.currentTarget.dataset.index || 0;
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 selected_count = 0;
var temp_data_list = this.data.data_list;
for (var i in temp_data_list) {
if ((temp_data_list[i]['selected'] || false) == true) {
total_price += temp_data_list[i]['stock'] * temp_data_list[i]['price'];
if ((temp_data_list[i]['selected'] || false) == true) {
selected_count++;
}
}
}
this.setData({
total_price: total_price.toFixed(2),
buy_submit_disabled_status: (selected_count <= 0),
is_selected_all: (selected_count >= temp_data_list.length),
});
},
// 结算
buy_submit_event(e) {
my.showToast({content: "开发中..."});
// 进入订单确认页面
// var data = [{
// "buy_type": "goods",
// "goods_id": this.data.goods.id,
// "stock": this.data.temp_buy_number,
// "attr": attribute_all.join(',')
// }];
// my.navigateTo({
// url: '/pages/buy/buy?data=' + JSON.stringify(data)
// });
}
});