// packageE/goods/goods.js var app = getApp(); Component({ properties: { datas: { type: null, }, component_id: { type: null, }, page_id: { type: null, }, index: { type: null, }, U_tabcontrol: { type: null, }, bottomShowBol: { type: null, }, bottomShowBolIndex: { type: null, }, isLast: { type: null, }, plugin_active: { // 会员中心商品加载 type: null, }, store_alone_temp: { // 门店独立判断 type: null, }, childComponent: { type: null, value: 'goods' }, // 多项选项卡 start childStyle: { type: null, value: '' }, indTab: { type: null }, indexTab: { type: null }, infoTab: { type: null }, second_list_key: { type: null }, all: { type: null }, totalAll: { type: null } // 多项选项卡 start }, // 私有数据,可用于模板渲染 data: { integral: "积分", showList: false, emptyImage: "https://mini-app-img-1251768088.cos.ap-guangzhou.myqcloud.com/image.png", clientWidth: "375", list: [], language: "", alreadyHandleArray: [], arrIndex: 1, market_price_text: '', price_text: '', goods_cofig: [], per_page: 12, page: 1, total_page: 0, isLoadMore: true, allLoaded: false, // 全部数据已经加载完成 }, lifetimes: { // 生命周期函数,可以为函数,或一个在methods段中定义的方法名 attached() { let language = wx.getStorageSync("langIndex"); this.setData({ language: language.en }); let price_text = wx.getStorageSync("yz_basic_info").lang.goods && wx.getStorageSync("yz_basic_info").lang.goods.price ? wx.getStorageSync("yz_basic_info").lang.goods.price : "现价"; let market_price_text = wx.getStorageSync("yz_basic_info").lang.goods && wx.getStorageSync("yz_basic_info").lang.goods.market_price ? wx.getStorageSync("yz_basic_info").lang.goods.market_price : "原价"; this.setData({ price_text: price_text, market_price_text: market_price_text, }); let value = wx.getStorageSync("integral"); if (value) { this.setData({ integral: value, }); } }, moved() {}, detached() {}, }, // 生命周期函数,可以为函数,或一个在methods段中定义的方法名 attached() {}, // 此处attached的声明会被lifetimes字段中的声明覆盖 ready() { this.setData({ clientWidth: wx.getSystemInfoSync().windowWidth, }); let basic_info = wx.getStorageSync("yz_basic_info"); if (basic_info.home.plugin && basic_info.home.plugin.goods_show) { this.setData({ goods_cofig: basic_info.home.plugin.goods_show.goods_group, }); } if (this.data.childComponent == 'goods') { if (this.data.datas.list.data) { this.setData({ total_page: this.data.datas.list.last_page, page: this.data.datas.list.current_page, per_page: this.data.datas.list.per_page, alreadyHandleArray: this.data.datas.list.data, list: this.data.datas.list.data.slice(0, this.data.per_page) }); if (this.data.total_page <= this.data.page) { this.setData({ isLoadMore: false, allLoaded: true, }); } // this.datas.get_number 限制数量 if (this.data.datas.get_number && this.data.datas.get_number <= this.data.per_page) { this.setData({ isLoadMore: false, allLoaded: true, list: this.data.datas.list.data.slice(0, this.data.datas.get_number) }); } } else { this.setData({ isLoadMore: false, allLoaded: true, list: this.data.datas.list, }); } } this.setData({ showList: true, }); }, pageLifetimes: { // 组件所在页面的生命周期函数 show() {}, hide() {}, resize() {}, }, methods: { // 多项选项卡 加载更多 getKeyInd(allinfo, info) { return new Promise((resove, reject) => { let ainfo = allinfo[this.data.indexTab]; ainfo.forEach((element, i) => { if (element.tabSelectShow == element.id) { resove(element); } }); }); }, getAllKey(list, totalAll) { return new Promise((resove, reject) => { let all = totalAll.second_list; all.forEach((element, i) => { if (element.id == list.id) { resove(i); } }); }); }, async getMoreDataTest(e) { let index = this.data.indexTab; // 点击是第几个一级导航 let ind = this.data.indTab; //点击的是第几个商品组模块 let info = this.data.infoTab; let json = { page: info.remote_data.list.current_page + 1, decorate_id: this.data.page_id, component_id: this.data.component_id, component_key: "U_moretabcontrol" }; let secondList = await this.getKeyInd(this.data.all, info); let secondkey = await this.getAllKey(secondList, this.data.totalAll); json.component_info = { list_key: index, second_list_key: secondkey, components_key: ind }; json.component_info = JSON.stringify(json.component_info); console.log(json); wx.showLoading({ title: '加载中', }); let urlStr = app.getNetAddresss("home-page.get-decorate-page"); app._getNetWork({ url: urlStr, data: json, success: (resdata) => { if (resdata.data.result == 1) { let res = resdata.data.data; let arr = []; arr = this.data.list.concat(res.data); console.log(resdata); this.setData({ total_page: res.last_page, page: res.current_page, ['infoTab.remote_data.list.current_page']: res.current_page, ['infoTab.remote_data.list.last_page']: res.last_page, list: arr }); } wx.hideLoading({ success: (res) => {}, }); }, fail: (res) => { wx.hideLoading({ success: (res) => {}, }); console.log(res); }, }); }, gotoDetail(e) { let id = e.currentTarget.dataset.item.id; let option_id = e.currentTarget.dataset.item.category_option_id?`&coid=${e.currentTarget.dataset.item.category_option_id}`:''; if (e.currentTarget.dataset.item.plugin_id == 69) { wx.navigateTo({ url: "/packageA/detail_v2/detail_v2?id=" + id + "&name=69" +option_id }); } else if (e.currentTarget.dataset.item.plugin_id == 78) { wx.navigateTo({ url: '/packageA/detail_v2/detail_v2?id=' + id + '&md=1'+option_id }); } else { wx.navigateTo({ url: "/packageA/detail_v2/detail_v2?id=" + id+option_id, }); } }, openShare(e) { let item = e.target.dataset.item || e.currentTarget.dataset.item; this.triggerEvent("componentGoodShare", item); }, // 获取更多数据 getMoreData() { let that = this; if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length >= this.data.per_page) { that.setData({ list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1 }); if (this.data.datas.get_number && this.data.list.length > this.data.datas.get_number) { this.setData({ isLoadMore: false, allLoaded: true, list: this.data.list.slice(0, this.data.datas.get_number) }); } return; } this.setData({ isLoadMore: false, }); if (that.data.page >= that.data.total_page) { if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0) { that.setData({ list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1 }); } if (this.data.datas.get_number && this.data.list.length > this.data.datas.get_number) { this.setData({ list: this.data.list.slice(0, this.data.datas.get_number) }); } } else { that.setData({ page: that.data.page + 1, }); let urlStr = app.getNetAddresss("home-page.get-decorate-page"); urlStr += "&page=" + that.data.page; urlStr += "&decorate_id=" + that.data.page_id; urlStr += "&component_id=" + that.data.component_id; if (this.data.U_tabcontrol) { urlStr += "&component_key=U_tabcontrol"; urlStr += "&component_info=" + JSON.stringify({ list_key: this.data.index }); } else { urlStr += "&component_key=U_goods"; } app._getNetWork({ url: urlStr, success: (resdata) => { var res = resdata.data; if (res.result == 1) { let data = that.data.list; if (this.data.U_tabcontrol) { that.setData({ page: res.data[0].remote_data.list.current_page || this.data.page, alreadyHandleArray: this.data.alreadyHandleArray.concat(res.data[0].remote_data.list.data), }); that.setData({ list: data.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1 }); if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0 || that.data.page < that.data.total_page) { that.setData({ isLoadMore: true, }); } else { that.setData({ allLoaded: true, }); } } else { that.setData({ page: res.data.current_page || this.data.page, alreadyHandleArray: this.data.alreadyHandleArray.concat(res.data.data), }); that.setData({ list: data.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1 }); if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0 || that.data.page < that.data.total_page) { // 判断是否最后一页 和 是否数据都加载完 that.setData({ isLoadMore: true, }); } else { that.setData({ allLoaded: true, }); } } if (this.data.datas.get_number && this.data.list.length > this.data.datas.get_number) { this.setData({ isLoadMore: false, allLoaded: true, list: this.data.list.slice(0, this.data.datas.get_number) }); } } else { that.setData({ page: that.data.page - 1, isLoadMore: false, allLoaded: true, }); } }, fail: function (res) { console.log(res); }, }); } }, // 会员中心用的 loadMoreMemberData() { let that = this; that.setData({ isLoadMore: false, }); if (that.data.page >= that.data.total_page) { if (this.data.alreadyHandleArray.slice(12 * this.data.arrIndex).length > 0) { that.setData({ list: this.data.list.concat(this.data.alreadyHandleArray.slice(12 * this.data.arrIndex, 12 * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1, }); } return; } else { that.setData({ page: that.data.page + 1, }); let urlStr = app.getNetAddresss("member.member.plugin-data"); if (this.data.store_alone_temp == 1) { // 门店独立 urlStr = app.getNetAddresss("plugin.store-alone-temp.frontend.member.nav-data"); } else if (this.data.store_alone_temp == 2) { // 门店独立 urlStr = app.getNetAddresss("plugin.store-alone-temp.frontend.home.nav-data"); } urlStr += "&page=" + that.data.page; urlStr += "&code=" + that.data.plugin_active; app._getNetWork({ url: urlStr, success: (resdata) => { var res = resdata.data; if (res.result == 1) { let data = that.data.list; that.setData({ page: res.data.data.current_page || this.data.page, alreadyHandleArray: this.data.alreadyHandleArray.concat(res.data.data.data), }); that.setData({ list: data.concat(this.data.alreadyHandleArray.slice(12 * this.data.arrIndex, 12 * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1, }); if (that.data.page < that.data.total_page) { that.setData({ isLoadMore: true, }); } else { that.setData({ allLoaded: true, }); } that.triggerEvent("setLoadMore", { isLoadMore: that.data.isLoadMore, }); } else { that.setData({ page: that.data.page - 1, isLoadMore: false, allLoaded: true, }); } }, fail: function (res) { console.log(res); }, }); } }, }, observers: { datas: function (data) { if (this.data.childComponent == 'tab') { this.setData({ total_page: this.data.datas.list.last_page, page: this.data.datas.list.current_page, per_page: this.data.datas.list.per_page, alreadyHandleArray: this.data.datas.list.data, list: this.data.datas.list.data }); if (this.data.total_page <= this.data.page) { this.setData({ isLoadMore: false, allLoaded: true, }); } } }, // page_id: function (id) { // console.log(id, 'aaa'); // }, bottomShowBol: function (flag) { if (this.data.U_tabcontrol) { // 选项卡this.isLast判断商品列表是最后一个组件 if (flag && this.data.isLast && this.data.datas.sort_style.choose_icon != 5 && this.data.isLoadMore) { this.getMoreData(); } else if (this.data.page >= this.data.total_page) { if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0) { this.setData({ list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1 }); } } } else { if (flag && this.data.bottomShowBolIndex == this.data.index && this.data.datas.sort_style.choose_icon != 5 && this.data.isLoadMore) { this.getMoreData(); } else if (this.data.page >= this.data.total_page) { if (this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex).length > 0) { this.setData({ list: this.data.list.concat(this.data.alreadyHandleArray.slice(this.data.per_page * this.data.arrIndex, this.data.per_page * (this.data.arrIndex + 1))), arrIndex: this.data.arrIndex + 1 }); } } } }, }, });