diff --git a/pages/plugins/realstore/detail/detail.vue b/pages/plugins/realstore/detail/detail.vue index db68224a..4e6b1741 100644 --- a/pages/plugins/realstore/detail/detail.vue +++ b/pages/plugins/realstore/detail/detail.vue @@ -74,75 +74,62 @@ - - - - 全部 - - + + + + 全部 + + + {{item.name}} - - - - - - - - - {{item.name}} - - - - - - {{goods.title}} - {{goods.simple_desc}} - - - {{currency_symbol}}{{goods.min_price}} - - - - - - {{goods.buy_number}} - - - - - - {{goods.is_error_msg}} - - - + + + + + + + + + + + + + {{item.title}} + {{item.simple_desc}} + + + {{currency_symbol}}{{item.min_price}} + + + + - + {{item.buy_number}} + + + + + + {{item.is_error_msg}} + - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + @@ -235,9 +222,14 @@ cache_buy_use_type_index_key: 'cache_plugins_realstore_buy_use_type_index', buy_use_type_index: 0, params: null, + is_first: 1, user: null, info: null, - data: [], + goods_category: [], + data_list: [], + data_total: 0, + data_page_total: 0, + data_page: 1, cart: null, goods_count: 0, data_base: null, @@ -295,6 +287,9 @@ // 下拉刷新 onPullDownRefresh() { + this.setData({ + data_page: 1 + }); this.get_detail_init(); }, @@ -326,6 +321,8 @@ var upd_data = { data_base: data.base || null, info: data.info || null, + goods_category: data.goods_category || [], + cart: data.cart || null, favor_user: data.favor_user || [], tablecode: data.tablecode || null }; @@ -362,8 +359,14 @@ title: this.info.name }); - // 获取数据 - this.get_detail_data(); + // 获取数据、仅首次调用列表接口 + if(this.is_first == 1) { + this.setData({is_first: 0}); + this.get_data_list(); + } else { + // 购物车更新列表数据处理 + this.cart_data_list_handle(); + } } } else { this.setData({ @@ -385,42 +388,84 @@ } }); }, - + // 获取数据-获取数据 - get_detail_data() { + get_data_list(is_mandatory) { + // 分页是否还有数据 + if ((is_mandatory || 0) == 0) { + if (this.data_bottom_line_status == true) { + uni.stopPullDownRefresh(); + return false; + } + } + + // 加载loding + uni.showLoading({ + title: "加载中..." + }); + + // 分类id + var category_id = (this.nav_active_index == -1) ? 0 : this.goods_category[this.nav_active_index]['id']; + + // 获取数据 uni.request({ - url: app.globalData.get_request_url("data", "detail", "realstore"), + url: app.globalData.get_request_url("datalist", "detail", "realstore"), method: "POST", data: this.request_params_merge({ id: this.params.id || 0, - keywords: this.search_keywords_value + page: this.data_page, + keywords: this.search_keywords_value, + category_id: category_id }, 'data'), dataType: "json", success: res => { + uni.hideLoading(); uni.stopPullDownRefresh(); if (res.data.code == 0) { var data = res.data.data; - var upd_data = { - info: data.info || null, - data: data.data || [], - cart: data.cart || null, - goods_count: data.goods_count || 0, - data_list_loding_msg: '', - data_list_loding_status: 0 - }; - // 购物车窗口打开、没有购物车数据则关闭 - if(this.cart_status && upd_data.cart != null && ((upd_data.cart.data || null) == null || upd_data.cart.data.length <= 0)) { - upd_data['cart_status'] = false; + if (data.data.length > 0) { + if (this.data_page <= 1) { + var temp_data_list = data.data; + } else { + var temp_data_list = this.data_list || []; + var temp_data = data.data; + for (var i in temp_data) { + temp_data_list.push(temp_data[i]); + } + } + this.setData({ + data_list: temp_data_list, + data_total: data.total, + data_page_total: data.page_total, + data_list_loding_status: 3, + data_page: this.data_page + 1 + }); + + // 是否还有数据 + this.setData({ + data_bottom_line_status: (this.data_page > 1 && this.data_page > this.data_page_total) + }); + } else { + this.setData({ + data_list_loding_status: 0 + }); + if (this.data_page <= 1) { + this.setData({ + data_list: [], + data_bottom_line_status: false + }); + } } - this.setData(upd_data); } else { this.setData({ - data_list_loding_status: 2, + data_list_loding_status: 0, data_list_loding_msg: res.data.msg }); + app.globalData.showToast(res.data.msg); } }, fail: () => { + uni.hideLoading(); uni.stopPullDownRefresh(); this.setData({ data_list_loding_status: 2, @@ -492,10 +537,8 @@ return false; } else { var index = e.currentTarget.dataset.index; - var gindex = e.currentTarget.dataset.gindex; var type = parseInt(e.currentTarget.dataset.type) || 0; - var temp_data = this.data; - var temp_goods = temp_data[index]['goods_list'][gindex]; + var temp_goods = this.data_list[index]; // 是否存在多规格 if((temp_goods.is_exist_many_spec || 0) != 0) { @@ -684,7 +727,7 @@ success: res => { uni.hideLoading(); if (res.data.code == 0) { - this.get_detail_data(); + this.get_cart_data(); } else { if (app.globalData.is_login_check(res.data)) { app.globalData.showToast(res.data.msg); @@ -716,7 +759,7 @@ success: res => { uni.hideLoading(); if (res.data.code == 0) { - this.get_detail_data(); + this.get_cart_data(); } else { if (app.globalData.is_login_check(res.data)) { app.globalData.showToast(res.data.msg); @@ -748,7 +791,7 @@ success: res => { uni.hideLoading(); if (res.data.code == 0) { - this.get_detail_data(); + this.get_cart_data(); } else { if (app.globalData.is_login_check(res.data)) { app.globalData.showToast(res.data.msg); @@ -764,6 +807,52 @@ }); }, + // 获取购物车数据 + get_cart_data() { + uni.request({ + url: app.globalData.get_request_url("cartdata", "detail", "realstore"), + method: 'POST', + data: this.request_params_merge({ + "id": this.params.id || 0 + }, 'init'), + dataType: 'json', + success: res => { + if (res.data.code == 0) { + this.setData({ + cart: res.data.data + }); + this.cart_data_list_handle(); + } else { + app.globalData.showToast('请求失败,请重试!'); + } + }, + fail: () => { + app.globalData.showToast("服务器请求出错"); + } + }); + }, + + // 购物车更新列表数据处理 + cart_data_list_handle() { + var temp_cart = this.cart; + var temp_data_list = this.data_list; + if(temp_data_list.length > 0) { + for(var i in temp_data_list) { + temp_data_list[i]['buy_number'] = 0; + if(temp_cart.data.length > 0) { + for(var k in temp_cart.data) { + if(temp_cart.data[k]['goods_id'] == temp_data_list[i]['id']) { + temp_data_list[i]['buy_number'] += parseInt(temp_cart.data[k]['stock']); + } + } + } + } + } + this.setData({ + data_list: temp_data_list + }); + }, + // 门店状态判断 is_status_check() { if((this.info || null) == null) { @@ -781,9 +870,10 @@ // 搜索事件 search_button_event(e) { this.setData({ - search_keywords_value: e || '' + search_keywords_value: e || '', + data_page: 1 }); - this.get_detail_data(); + this.get_data_list(1); }, // 搜索icon扫码事件、扫码商品id实现加入购物车 @@ -862,13 +952,6 @@ if(!this.is_status_check()) { return false; } - - // 起步价 - var starting_price = parseFloat(this.info.starting_price) || 0; - if(starting_price > 0 && this.cart.total_price < starting_price) { - app.globalData.showToast("起步价"+starting_price+"元"); - return false; - } // 获取购物车数据 var ids = []; @@ -881,6 +964,13 @@ return false; } + // 起步价 + var starting_price = parseFloat(this.info.starting_price) || 0; + if(starting_price > 0 && this.cart.total_price < starting_price) { + app.globalData.showToast("起步价"+starting_price+"元"); + return false; + } + // 进入订单确认页面 var data = this.request_params_merge({ "buy_type": "cart", @@ -921,10 +1011,16 @@ // 导航事件 nav_event(e) { - var index = e.currentTarget.dataset.index; this.setData({ - nav_active_index: index + nav_active_index: e.currentTarget.dataset.index, + data_page: 1 }); + this.get_data_list(1); + }, + + // 滚动加载 + scroll_lower(e) { + this.get_data_list(); }, // 顶部返回操作 @@ -963,10 +1059,11 @@ itemList: this.info.buy_use_type_list.map(function(v) {return v.name}), success: function (res) { self.setData({ - buy_use_type_index: res.tapIndex + buy_use_type_index: res.tapIndex, + data_page: 1 }); uni.setStorageSync(self.cache_buy_use_type_index_key, res.tapIndex); - self.get_detail_data(); + self.get_data_list(1); } }); },