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, }, onShow() { my.setNavigationBar({ title: app.data.common_pages_title.cart }); this.init(); }, init(e) { var user = app.GetUserInfo(this, "init"); if (user != false) { // 用户未绑定用户则转到登录页面 var msg = (user == false) ? '授权用户信息' : '绑定手机号码'; if ((user.mobile || null) == null) { my.confirm({ title: '温馨提示', content: msg, confirmButtonText: '确认', cancelButtonText: '暂不', success: (result) => { if (result.confirm) { my.navigateTo({ url: "/pages/login/login?event_callback=init" }); } else { my.stopPullDownRefresh(); this.setData({ data_list_loding_status: 0, data_bottom_line_status: false, data_list_loding_msg: '请先' + msg, }); } }, }); } else { this.get_data(); } } else { my.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, }); 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.target.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.target.dataset.index || 0; var type = parseInt(e.target.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.target.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.target.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']; 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) { 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) { my.showToast({ type: "fail", content: '请选择商品' }); return false } // 进入订单确认页面 var data = { "buy_type": "cart", "ids": ids.join(',') }; my.navigateTo({ url: '/pages/buy/buy?data=' + JSON.stringify(data) }); } });