397 lines
9.2 KiB
JavaScript
397 lines
9.2 KiB
JavaScript
|
const app = getApp()
|
|||
|
var util = require('../../utils/util.js');
|
|||
|
var status = require('../../utils/index.js');
|
|||
|
|
|||
|
Page({
|
|||
|
mixins: [require('../../mixin/globalMixin.js')],
|
|||
|
data: {
|
|||
|
loadMore: true,
|
|||
|
classification: {
|
|||
|
menutabs: [],
|
|||
|
activeIndex: 0
|
|||
|
},
|
|||
|
tabTop: 0,
|
|||
|
showSubCate: true
|
|||
|
},
|
|||
|
handlerGobackClick(delta) {
|
|||
|
const pages = getCurrentPages();
|
|||
|
if (pages.length >= 2) {
|
|||
|
wx.navigateBack({
|
|||
|
delta: delta
|
|||
|
});
|
|||
|
} else {
|
|||
|
wx.switchTab({
|
|||
|
url: '/eaterplanet_ecommerce/pages/index/index'
|
|||
|
});
|
|||
|
}
|
|||
|
},
|
|||
|
handlerGohomeClick(url) {
|
|||
|
wx.switchTab({
|
|||
|
url: '/eaterplanet_ecommerce/pages/index/index'
|
|||
|
});
|
|||
|
},
|
|||
|
pageNum: 1,
|
|||
|
|
|||
|
onLoad: function() {
|
|||
|
app.setShareConfig();
|
|||
|
this.getInfo();
|
|||
|
this._doRefreshMasonry();
|
|||
|
},
|
|||
|
|
|||
|
onReady: function(){
|
|||
|
let that = this;
|
|||
|
const query = wx.createSelectorQuery();
|
|||
|
let searH = Math.round(app.globalData.systemInfo.windowWidth / 750 * 100) || 0;
|
|||
|
setTimeout(() => {
|
|||
|
query.select('#tab').boundingClientRect(function (res) {
|
|||
|
that.setData({ tabTop: res.top - searH });
|
|||
|
}).exec();
|
|||
|
}, 1000)
|
|||
|
},
|
|||
|
|
|||
|
onShow: function() {
|
|||
|
const that = this;
|
|||
|
util.check_login_new().then((res) => {
|
|||
|
let needAuth = !res;
|
|||
|
that.setData({ needAuth })
|
|||
|
if (res) {
|
|||
|
(0, status.cartNum)('', true).then((res) => {
|
|||
|
res.code == 0 && that.setData({
|
|||
|
cartNum: res.data
|
|||
|
})
|
|||
|
});
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
onPageScroll: function (event) {
|
|||
|
if (event.scrollTop > this.data.tabTop) {
|
|||
|
if (this.data.tabFix) {
|
|||
|
return
|
|||
|
} else {
|
|||
|
this.setData({
|
|||
|
oneFixed: "Fixed"
|
|||
|
})
|
|||
|
}
|
|||
|
} else {
|
|||
|
this.setData({
|
|||
|
oneFixed: ''
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
noLogin: function() {
|
|||
|
this.setData({
|
|||
|
needAuth: true,
|
|||
|
showAuthModal: true
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 授权成功回调
|
|||
|
*/
|
|||
|
authSuccess: function() {
|
|||
|
const that = this;
|
|||
|
this.pageNum = 1;
|
|||
|
this.setData({
|
|||
|
loadMore: true,
|
|||
|
showEmpty: 0,
|
|||
|
needAuth: false,
|
|||
|
showAuthModal: false
|
|||
|
}, () => {
|
|||
|
that._doRefreshMasonry()
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
authModal: function () {
|
|||
|
if (this.data.needAuth) {
|
|||
|
this.setData({ showAuthModal: !this.data.showAuthModal });
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 监控分类导航
|
|||
|
*/
|
|||
|
classificationChange: function (t) {
|
|||
|
var that = this;
|
|||
|
this.pageNum = 1;
|
|||
|
this.setData({
|
|||
|
loadMore: true,
|
|||
|
showEmpty: 0,
|
|||
|
"classification.activeIndex": t.detail.e,
|
|||
|
classificationId: t.detail.a
|
|||
|
}, function () {
|
|||
|
that._doRefreshMasonry()
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
onPullDownRefresh: function() {
|
|||
|
const that = this;
|
|||
|
this.pageNum = 1;
|
|||
|
this.setData({
|
|||
|
loadMore: true,
|
|||
|
showEmpty: 0
|
|||
|
}, () => {
|
|||
|
that.getInfo();
|
|||
|
that._doRefreshMasonry()
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
onReachBottom: function() {
|
|||
|
this.data.loadMore && this._doAppendMasonry()
|
|||
|
},
|
|||
|
|
|||
|
_doRefreshMasonry(keyword = '') {
|
|||
|
let that = this;
|
|||
|
this.masonryListComponent = this.selectComponent('#masonry');
|
|||
|
this.getData(keyword).then(res => {
|
|||
|
that.masonryListComponent.start(res).then(() => {})
|
|||
|
}).catch(()=>{
|
|||
|
that.masonryListComponent.start([]).then(() => {})
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
_doAppendMasonry() {
|
|||
|
let that = this;
|
|||
|
this.masonryListComponent = this.selectComponent('#masonry')
|
|||
|
// 获取接口数据后使用瀑布流组件append方法,当append完成后调用then,是否可触底价在的标志位可以在这里处理
|
|||
|
this.getData().then(res => {
|
|||
|
that.masonryListComponent.append(res).then(() => {
|
|||
|
console.log('refresh completed')
|
|||
|
})
|
|||
|
}).catch(() => {
|
|||
|
console.log('没有更多了')
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 获取列表
|
|||
|
*/
|
|||
|
getData: function(keyword = '') {
|
|||
|
return new Promise((resolve, reject) => {
|
|||
|
let that = this;
|
|||
|
let token = wx.getStorageSync('token');
|
|||
|
let gid = that.data.classificationId;
|
|||
|
|
|||
|
wx.showLoading();
|
|||
|
app.util.request({
|
|||
|
'url': 'entry/wxapp/index',
|
|||
|
'data': {
|
|||
|
controller: 'recipe.get_recipe_list',
|
|||
|
token: token,
|
|||
|
gid,
|
|||
|
pageNum: this.pageNum,
|
|||
|
keyword
|
|||
|
},
|
|||
|
dataType: 'json',
|
|||
|
success: function(res) {
|
|||
|
wx.stopPullDownRefresh();
|
|||
|
if (res.data.code == 0) {
|
|||
|
let list = res.data.data;
|
|||
|
that.pageNum++;
|
|||
|
resolve(list);
|
|||
|
} else {
|
|||
|
// 无数据
|
|||
|
let h = {
|
|||
|
loadMore: false
|
|||
|
}
|
|||
|
if (that.pageNum == 1) h.showEmpty = 1;
|
|||
|
that.setData(h);
|
|||
|
reject('');
|
|||
|
}
|
|||
|
wx.hideLoading();
|
|||
|
}
|
|||
|
})
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 获取信息
|
|||
|
*/
|
|||
|
getInfo: function() {
|
|||
|
let that = this;
|
|||
|
let token = wx.getStorageSync('token');
|
|||
|
|
|||
|
wx.showLoading();
|
|||
|
app.util.request({
|
|||
|
'url': 'entry/wxapp/index',
|
|||
|
'data': {
|
|||
|
controller: 'recipe.get_index_info'
|
|||
|
},
|
|||
|
dataType: 'json',
|
|||
|
success: function(res) {
|
|||
|
if (res.data.code) {
|
|||
|
let {
|
|||
|
adv_arr,
|
|||
|
cate_list,
|
|||
|
is_open_recipe,
|
|||
|
modify_recipe_name,
|
|||
|
modify_recipe_share_title,
|
|||
|
modify_vipcard_share_image
|
|||
|
} = res.data.code;
|
|||
|
if (is_open_recipe != 1) {
|
|||
|
app.util.message('未开启功能', 'switchTo:/eaterplanet_ecommerce/pages/index/index', 'error');
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
wx.setNavigationBarTitle({
|
|||
|
title: modify_recipe_name || '菜谱'
|
|||
|
})
|
|||
|
|
|||
|
// 菜单
|
|||
|
let params = {
|
|||
|
classification: {
|
|||
|
activeIndex: 0
|
|||
|
}
|
|||
|
};
|
|||
|
let index_type_first_name = '全部';
|
|||
|
if (cate_list.length > 0) {
|
|||
|
cate_list.unshift({
|
|||
|
name: index_type_first_name,
|
|||
|
id: 0
|
|||
|
})
|
|||
|
params.isShowClassification = true;
|
|||
|
params.classification.tabs = cate_list;
|
|||
|
} else {
|
|||
|
params.isShowClassification = false;
|
|||
|
}
|
|||
|
|
|||
|
that.setData({
|
|||
|
adv_arr: adv_arr || [],
|
|||
|
modify_recipe_share_title,
|
|||
|
modify_vipcard_share_image,
|
|||
|
modify_recipe_name: modify_recipe_name || '菜谱',
|
|||
|
...params
|
|||
|
})
|
|||
|
}
|
|||
|
wx.hideLoading();
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 搜索
|
|||
|
*/
|
|||
|
goResult: function(e) {
|
|||
|
let that = this;
|
|||
|
let keyword = e.detail.value.replace(/\s+/g, '');
|
|||
|
if (!keyword) {
|
|||
|
wx.showToast({
|
|||
|
title: '请输入关键词',
|
|||
|
icon: 'none'
|
|||
|
})
|
|||
|
return;
|
|||
|
}
|
|||
|
this.pageNum = 1;
|
|||
|
this.setData({
|
|||
|
loadMore: true,
|
|||
|
showEmpty: 0
|
|||
|
}, () => {
|
|||
|
that._doRefreshMasonry(keyword);
|
|||
|
})
|
|||
|
},
|
|||
|
|
|||
|
/**
|
|||
|
* 幻灯片跳转
|
|||
|
*/
|
|||
|
goBannerUrl: function(t) {
|
|||
|
let idx = t.currentTarget.dataset.idx;
|
|||
|
let {
|
|||
|
adv_arr,
|
|||
|
needAuth
|
|||
|
} = this.data;
|
|||
|
if (adv_arr.length > 0) {
|
|||
|
let url = adv_arr[idx].link;
|
|||
|
let type = adv_arr[idx].linktype;
|
|||
|
if (util.checkRedirectTo(url, needAuth)) {
|
|||
|
this.authModal();
|
|||
|
return;
|
|||
|
}
|
|||
|
if (type == 0) {
|
|||
|
// 跳转webview
|
|||
|
url && wx.navigateTo({
|
|||
|
url: '/eaterplanet_ecommerce/pages/web-view?url=' + encodeURIComponent(url)
|
|||
|
})
|
|||
|
} else if (type == 1) {
|
|||
|
if (url.indexOf('eaterplanet_ecommerce/pages/index/index') != -1 || url.indexOf('eaterplanet_ecommerce/pages/order/shopCart') != -1 || url.indexOf('eaterplanet_ecommerce/pages/user/me') != -1 || url.indexOf('eaterplanet_ecommerce/pages/type/index') != -1) {
|
|||
|
url && wx.switchTab({
|
|||
|
url: url
|
|||
|
})
|
|||
|
} else {
|
|||
|
url && wx.navigateTo({
|
|||
|
url: url
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
} else if (type == 2) {
|
|||
|
// 跳转小程序
|
|||
|
let appid = slider_list[idx].appid;
|
|||
|
appid && wx.navigateToMiniProgram({
|
|||
|
appId: slider_list[idx].appid,
|
|||
|
path: url,
|
|||
|
extraData: {},
|
|||
|
envVersion: 'release',
|
|||
|
success(res) {
|
|||
|
// 打开成功
|
|||
|
},
|
|||
|
fail(error) {
|
|||
|
console.log(error)
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
goLink: function (event) {
|
|||
|
if (!this.authModal()) return;
|
|||
|
let link = event.currentTarget.dataset.link;
|
|||
|
var pages_all = getCurrentPages();
|
|||
|
if (pages_all.length > 3) {
|
|||
|
wx.redirectTo({
|
|||
|
url: link
|
|||
|
})
|
|||
|
} else {
|
|||
|
wx.navigateTo({
|
|||
|
url: link
|
|||
|
})
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
onShareAppMessage: function() {
|
|||
|
var member_id = wx.getStorageSync('member_id');
|
|||
|
let {
|
|||
|
modify_recipe_share_title,
|
|||
|
modify_vipcard_share_image,
|
|||
|
modify_recipe_name
|
|||
|
} = this.data;
|
|||
|
return {
|
|||
|
title: modify_recipe_share_title || modify_recipe_name,
|
|||
|
path: "eaterplanet_ecommerce/moduleA/menu/index?share_id=" + member_id,
|
|||
|
imageUrl: modify_vipcard_share_image,
|
|||
|
success: function() {},
|
|||
|
fail: function() {}
|
|||
|
};
|
|||
|
},
|
|||
|
|
|||
|
onShareTimeline: function() {
|
|||
|
var member_id = wx.getStorageSync('member_id');
|
|||
|
let {
|
|||
|
modify_recipe_share_title,
|
|||
|
modify_vipcard_share_image,
|
|||
|
modify_recipe_name
|
|||
|
} = this.data;
|
|||
|
var query= `share_id=${member_id}`;
|
|||
|
|
|||
|
return {
|
|||
|
title: modify_recipe_share_title || modify_recipe_name,
|
|||
|
query,
|
|||
|
imageUrl: modify_vipcard_share_image,
|
|||
|
success: function() {},
|
|||
|
fail: function() {}
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
})
|