// packageC/mycomponent/option_menu/option_menu.js var app = getApp(); Component({ /** * 组件的属性列表 */ properties: { ok_subs_select:{ value:null, type:Number }, successLocation:{ value:false,//有定位信息 type: Boolean }, }, observers: { 'successLocation': function(res) { this.setData({ _successLocation: res }); }, }, /** * 组件的初始数据 */ data: { parentActive: null, _successLocation: false, subs_select: null, activeType: "", isshowO2oOptionMenu: false, //是否开启组件 option: [], selectOption: [], //二级筛选器选项 isShowSubContent: false, //二级筛选器选项显隐, }, lifetimes: { attached: function () { // 在组件实例进入页面节点树时执行 console.log("筛选器==========="); this.getStoreSearchMenu(); }, detached: function () { // 在组件实例被从页面节点树移除时执行 }, }, /** * 组件的方法列表 */ methods: { onOptionsItemClick(e) { // console.log(e.currentTarget.dataset.item) let item = e.currentTarget.dataset.item; if (!this.data._successLocation) { wx.showToast({ duration: 3000, title: '定位中,请稍等...', icon: 'none' }); return; } if (!item.subs && this.data.parentActive == item.value) { //取消筛选 this.resetFilter(); return; } if (item.subs) { if (this.data.activeType == item.value && this.data.isShowSubContent) { this.cloneFilter(); return; } this.setData({ selectOption: item.child, isShowSubContent: true, subs_select: this.data.ok_subs_select }); } else { this.setData({ isShowSubContent: false, subs_select: null }); } this.setData({ activeType: item.value }); if (!item.subs && item.value != "goods_show") { this.setData({ parentActive: this.data.activeType }); // this.getData(); this.triggerEvent('changeOptiones',{ tag: false, activeType: this.data.activeType, subs_select: this.data.subs_select }); } else if (item.value == "goods_show") { this.setData({ parentActive: this.data.activeType }); // this.getData(true); this.triggerEvent('changeOptiones',{ tag: true, activeType: this.data.activeType, subs_select: this.data.subs_select }); } }, getStoreSearchMenu() { var that = this; var urlStr = app.getNetAddresss('plugin.store-cashier.frontend.store.goods.get-store-search-praise'); app._getNetWork({ showToastIn: false, url: urlStr, success: function (resdata) { var response = resdata.data; if (response.result == 1) { let option = []; if (response.data.is_category_ids == 1) { option.push({ text: "门店分类", value: "classify", subs: true, child: response.data.categories }); } if (response.data.is_distance == 1) { option.push({ text: "离我最近", value: "distance", subs: true, child: [{ name: "1km内", id: 1 }, { name: "3km内", id: 3 }, { name: "5km内", id: 5 }, { name: "10km内", id: 10 } ] }); } if (response.data.is_open_praise == 1) { option.push({ text: "好评优先", value: "is_open_praise", subs: false }); } if (response.data.is_open_sales_volume == 1) { option.push({ text: "销量最高", value: "is_open_sales_volume", subs: false }); } if (response.data.goods_show == 1) { option.push({ text: "优惠力度", value: "goods_show", subs: false }); } that.setData({ option, isshowO2oOptionMenu: true }); } }, fail: function (res) {} }); }, onSubOptionsItemClick(e) { let subs_select = this.data.subs_select == e.currentTarget.dataset.items.id ? null : e.currentTarget.dataset.items.id; this.setData({ subs_select }); }, cloneFilter() { this.setData({ isShowSubContent: false }); }, resetFilter() { this.setData({ subs_select: null, parentActive: null, isShowSubContent: false }); this.triggerEvent('resetFilter',{}); }, filterData() { if (this.data.subs_select) { this.setData({ parentActive: this.data.activeType }); } this.triggerEvent('changeOptiones',{ tag: false, activeType: this.data.activeType, subs_select: this.data.subs_select }); this.setData({ isShowSubContent: false }); }, } });