305 lines
7.3 KiB
JavaScript
305 lines
7.3 KiB
JavaScript
// packageC/o2o/o2oSearchMultiple/o2oSearchMultiple.js
|
|
var location = require("../../../mybehaviors/location/location");
|
|
var app = getApp();
|
|
Page({
|
|
behaviors: [location],
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
city: '',
|
|
point: {
|
|
lat: '',
|
|
lng: ''
|
|
},
|
|
stores: [],
|
|
inputs: "",
|
|
|
|
//more
|
|
page: 1, //分页数,当前页数
|
|
isLoadMore: true, //判断是否要加载更多的标志
|
|
total_page: 0, //总页数
|
|
listData: [],
|
|
networkLoading: false,
|
|
|
|
screenMenu: [{
|
|
name: '商品',
|
|
api: 'goods.goods.search-goods'
|
|
}],
|
|
screenType: ["good"],
|
|
screenIndex: 0,
|
|
screenShow: false,
|
|
|
|
goods_template: {
|
|
name: '02'
|
|
},
|
|
openTemplate: 0 //门店列表样式
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: async function (options) {
|
|
await this.getScreenList(options.search_type);
|
|
if (options.city && options.city !== '1') {
|
|
if (options.city) {
|
|
this.setData({
|
|
city: options.city
|
|
});
|
|
}
|
|
if (options.point) {
|
|
this.setData({
|
|
point: JSON.parse(options.point)
|
|
});
|
|
}
|
|
this.getListData();
|
|
} else {
|
|
this._getLocation(() => {
|
|
this.getListData();
|
|
});
|
|
}
|
|
|
|
},
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function () {
|
|
if (this.data.isLoadMore) {
|
|
console.log("111111111111111");
|
|
this.getMoreData();
|
|
} else {
|
|
console.log('没有更多数据');
|
|
}
|
|
},
|
|
|
|
setScreenShow() {
|
|
this.setData({
|
|
screenShow: !this.data.screenShow
|
|
});
|
|
},
|
|
setScreenIndex(evt) {
|
|
|
|
let index = evt.currentTarget.dataset.index;
|
|
if (index == this.data.screenIndex) return;
|
|
this.setData({
|
|
screenIndex: index,
|
|
screenShow: false
|
|
});
|
|
this.getListData();
|
|
},
|
|
|
|
gotoGoods(evt) {
|
|
let id = evt.currentTarget.dataset.id;
|
|
wx.navigateTo({
|
|
url: '/packageA/detail_v2/detail_v2?id=' + id
|
|
});
|
|
},
|
|
|
|
gotoSupplier(evt) {
|
|
let id = evt.currentTarget.dataset.id;
|
|
wx.navigateTo({
|
|
url: '/packageA/member/supplier/SupplierShop/SupplierShop?id=' + id,
|
|
});
|
|
},
|
|
|
|
/**
|
|
* 用户点击右上角分享
|
|
*/
|
|
onShareAppMessage: function () {
|
|
let point = JSON.stringify(this.data.point);
|
|
return {
|
|
title: '',
|
|
path: '/packageC/o2o/o2oSearchMultiple/o2oSearchMultiple?city=' + this.data.city + '&point=' + point,
|
|
};
|
|
},
|
|
initPage() {
|
|
this.setData({
|
|
listData: [],
|
|
networkLoading: false
|
|
});
|
|
this.data.page = 1;
|
|
this.data.total_page = 0;
|
|
this.data.isLoadMore = true;
|
|
|
|
},
|
|
getListData() {
|
|
this.initPage();
|
|
let urlStr = app.getNetAddresss(this.data.screenMenu[this.data.screenIndex].api);
|
|
let point = app.qqMapTransBMap(parseFloat(this.data.point.lng), parseFloat(this.data.point.lat));
|
|
urlStr += '&lng=' + point.lng;
|
|
urlStr += '&lat=' + point.lat;
|
|
urlStr += '&city_name=' + this.data.city;
|
|
urlStr += '&page=' + this.data.page;
|
|
let json = {};
|
|
if (this.data.screenIndex == 0) {
|
|
json["search[keyword]"] = this.data.inputs;
|
|
} else if (this.data.screenMenu[this.data.screenIndex].name == '门店商品') {
|
|
json["goods_title"] = this.data.inputs;
|
|
} else {
|
|
json.kwd = this.data.inputs;
|
|
}
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
data: json,
|
|
success: (resdata) => {
|
|
var res = resdata.data;
|
|
this.setData({
|
|
networkLoading: true
|
|
});
|
|
if (res.result != 1) return app.tips(res.msg);
|
|
this.setData({
|
|
isLoadMore: true,
|
|
total_page: res.data.last_page,
|
|
listData: res.data.data,
|
|
});
|
|
if (!this.data.total_page) {
|
|
this.data.total_page = 0;
|
|
}
|
|
|
|
if (res.data.hasOwnProperty("store_list_style")) {
|
|
this.setData({
|
|
openTemplate: res.data.store_list_style || 0
|
|
});
|
|
}
|
|
|
|
}
|
|
});
|
|
},
|
|
//获取更多数据
|
|
getMoreData() {
|
|
let urlStr = app.getNetAddresss(this.data.screenMenu[this.data.screenIndex].api);
|
|
let point = app.qqMapTransBMap(parseFloat(this.data.point.lng), parseFloat(this.data.point.lat));
|
|
urlStr += '&lng=' + point.lng;
|
|
urlStr += '&lat=' + point.lat;
|
|
urlStr += '&city_name=' + this.data.city;
|
|
|
|
// 防止多次请求分页数据
|
|
this.data.isLoadMore = false;
|
|
if (this.data.page >= this.data.total_page) {
|
|
console.log("111111111111111", this.data.page, this.data.total_page);
|
|
return;
|
|
} else {
|
|
this.data.page++;
|
|
let json = {
|
|
page: this.data.page
|
|
};
|
|
if (this.data.screenIndex == 0) {
|
|
json["search[keyword]"] = this.data.inputs;
|
|
} else if (this.data.screenMenu[this.data.screenIndex].name == '门店商品') {
|
|
json["goods_title"] = this.data.inputs;
|
|
} else {
|
|
json.kwd = this.data.inputs;
|
|
}
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: (resdata) => {
|
|
var res = resdata.data;
|
|
|
|
if (res.result == 1) {
|
|
this.data.isLoadMore = true;
|
|
var myData = res.data.data;
|
|
this.setData({
|
|
listData: this.data.listData.concat(myData)
|
|
});
|
|
} else {
|
|
this.data.isLoadMore = false;
|
|
this.data.page--;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
|
|
getScreenList(search_type = "good") {
|
|
return new Promise((resolve, reject) => {
|
|
let urlStr = app.getNetAddresss('plugins.get-enabled-plugins');
|
|
app._getNetWork({
|
|
url: urlStr,
|
|
success: resdata => {
|
|
let res = resdata.data;
|
|
|
|
let screenMenu = this.data.screenMenu;
|
|
let screenType = this.data.screenType;
|
|
|
|
if (res.data.is_supplier == 1) {
|
|
screenMenu.push({
|
|
name: "供应商",
|
|
api: "plugin.supplier.frontend.supplier.get-supplier-list"
|
|
});
|
|
screenType.push("supplier");
|
|
}
|
|
|
|
if (res.data.is_store == 1) {
|
|
screenMenu.push({
|
|
name: "门店",
|
|
api: "plugin.store-cashier.frontend.store.store.get-store-list-to-page"
|
|
});
|
|
screenType.push("store");
|
|
screenMenu.push({
|
|
name: "门店商品",
|
|
api: "plugin.store-cashier.frontend.store.store.get-store-list-to-page"
|
|
});
|
|
screenType.push("store");
|
|
}
|
|
|
|
if (res.data.is_hotel == 1) {
|
|
screenMenu.push({
|
|
name: "酒店",
|
|
api: "plugin.hotel.frontend.hotel.goods.get-hotel-goods-by-title"
|
|
});
|
|
screenType.push("hotel");
|
|
}
|
|
|
|
this.setData({
|
|
screenMenu,
|
|
screenType
|
|
});
|
|
let index = screenType.indexOf(search_type);
|
|
if (this.data.screenMenu[index]) {
|
|
this.setData({
|
|
screenIndex: index
|
|
});
|
|
}
|
|
resolve();
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
}); |