Просмотр исходного кода

【交互】【新增】C端增加门店按楼层及楼座筛选-

tags/C.10.02
meo 5 лет назад
Родитель
Сommit
6f016bf1b8
6 измененных файлов: 401 добавлений и 222 удалений
  1. +3
    -1
      config/config.js
  2. +4
    -4
      index/searchbar.js
  3. +7
    -6
      index/searchbar.wxss
  4. +350
    -195
      pages/searchbar/searchbar.js
  5. +3
    -12
      pages/searchbar/searchbar.wxml
  6. +34
    -4
      pages/searchbar/searchbar.wxss

+ 3
- 1
config/config.js Просмотреть файл

@@ -312,7 +312,9 @@ var config = {
getCouponOrderByPassword:'/couponPassword/getCouponOrderByPassword', getCouponOrderByPassword:'/couponPassword/getCouponOrderByPassword',
getbuildingfloorlist:'/wxMallBuilding/getbuildingfloorlist', getbuildingfloorlist:'/wxMallBuilding/getbuildingfloorlist',
//商场信息接口 //商场信息接口
getMallInfo: "/mall/mallInfo"
getMallInfo: "/mall/mallInfo",
// 获取楼层楼座数据
getbuildingfloorlist:"/wxMallBuilding/getbuildingfloorlist"
}, },
weapp: { weapp: {
AppId: weappId AppId: weappId


+ 4
- 4
index/searchbar.js Просмотреть файл

@@ -58,13 +58,13 @@ Page({
}) })
}, },
onShow(){ onShow(){
let that = this;
if (typeof this.getTabBar === 'function' && if (typeof this.getTabBar === 'function' &&
this.getTabBar()) {
this.getTabBar().setData({
that.getTabBar()) {
that.getTabBar().setData({
selected: 1 selected: 1
}) })
}
let that = this;
};
wx.getSystemInfo({ wx.getSystemInfo({
success: function (res) { success: function (res) {
that.setData({ that.setData({


+ 7
- 6
index/searchbar.wxss Просмотреть файл

@@ -116,6 +116,12 @@
padding-right:5%; padding-right:5%;
overflow: hidden; overflow: hidden;
} }
.merchants view:nth-child(1) image {
display: block;
width: 120rpx;
height: 120rpx;
border-radius: 16rpx;
}
.position{ .position{
text-align: center; text-align: center;
margin-top: 100rpx; margin-top: 100rpx;
@@ -124,12 +130,7 @@
.leftBox{ .leftBox{
padding: 20rpx 0; padding: 20rpx 0;
} }
.merchants view:nth-child(1) image {
display: block;
width: 120rpx;
height: 120rpx;
border-radius: 16rpx;
}

.shopVo{ .shopVo{
margin-left: 20rpx; margin-left: 20rpx;
} }


+ 350
- 195
pages/searchbar/searchbar.js Просмотреть файл

@@ -1,249 +1,404 @@
const navigationBarHeight = (getApp().statusBarHeight + 44)*2;
const navigationBarHeight = (getApp().statusBarHeight + 44) * 2;
const config = require("../../config/config");
const Http = require("../../utils/HttpBasics");
const imgurl = require("../../utils/imgurl");
module.exports = module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 19);
/******/ })
/******/
(function(modules) { // webpackBootstrap
/******/ // The module cache
/******/
var installedModules = {};
/******/
/******/ // The require function
/******/
function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/
if (installedModules[moduleId]) {
/******/
return installedModules[moduleId].exports;
/******/
}
/******/ // Create a new module (and put it into the cache)
/******/
var module = installedModules[moduleId] = {
/******/
i: moduleId,
/******/
l: false,
/******/
exports: {}
/******/
};
/******/
/******/ // Execute the module function
/******/
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/
module.l = true;
/******/
/******/ // Return the exports of the module
/******/
return module.exports;
/******/
}
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/
__webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/
__webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/
__webpack_require__.d = function(exports, name, getter) {
/******/
if (!__webpack_require__.o(exports, name)) {
/******/
Object.defineProperty(exports, name, {
enumerable: true,
get: getter
});
/******/
}
/******/
};
/******/
/******/ // define __esModule on exports
/******/
__webpack_require__.r = function(exports) {
/******/
if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/
Object.defineProperty(exports, Symbol.toStringTag, {
value: 'Module'
});
/******/
}
/******/
Object.defineProperty(exports, '__esModule', {
value: true
});
/******/
};
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/
__webpack_require__.t = function(value, mode) {
/******/
if (mode & 1) value = __webpack_require__(value);
/******/
if (mode & 8) return value;
/******/
if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/
var ns = Object.create(null);
/******/
__webpack_require__.r(ns);
/******/
Object.defineProperty(ns, 'default', {
enumerable: true,
value: value
});
/******/
if (mode & 2 && typeof value != 'string')
for (var key in value) __webpack_require__.d(ns, key, function(key) {
return value[key];
}.bind(null, key));
/******/
return ns;
/******/
};
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/
__webpack_require__.n = function(module) {
/******/
var getter = module && module.__esModule ?
/******/
function getDefault() {
return module['default'];
} :
/******/
function getModuleExports() {
return module;
};
/******/
__webpack_require__.d(getter, 'a', getter);
/******/
return getter;
/******/
};
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/
__webpack_require__.o = function(object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
/******/
/******/ // __webpack_public_path__
/******/
__webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/
return __webpack_require__(__webpack_require__.s = 19);
/******/
})
/************************************************************************/ /************************************************************************/
/******/ ({
/******/
({


/***/ 19:
/***/ (function(module, exports, __webpack_require__) {
/***/
19:
/***/
(function(module, exports, __webpack_require__) {


"use strict";
"use strict";




Component({
options: {
addGlobalClass: true
},
properties: {
extClass: {
Component({
options: {
addGlobalClass: true
},
properties: {
extClass: {
type: String, type: String,
value: '' value: ''
},
focus: {
},
focus: {
type: Boolean, type: Boolean,
value: false value: false
},
placeholder: {
},
placeholder: {
type: String, type: String,
value: '请输入' value: '请输入'
},
value: {
},
value: {
type: String, type: String,
value: '' value: ''
},
search: {
},
search: {
type: Function, type: Function,
value: null value: null
},
throttle: {
},
throttle: {
type: Number, type: Number,
value: 500 value: 500
},
cancelText: {
},
cancelText: {
type: String, type: String,
value: '取消' value: '取消'
},
cancel: {
},
cancel: {
type: Boolean, type: Boolean,
value: true value: true
}
},
data: {
result: [],
navigationBarHeight,
multiArray: [['无脊柱动物', '脊柱动物'], ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物']]
},
lastSearch: Date.now(),
lifetimes: {
attached: function attached() {
}
},
data: {
result: [],
navigationBarHeight,
multiArray: [
[],[]
],
multiIndex:0,
buildingFloor: [],
building: null,
floor:null,
teljpgUrl: imgurl.teljpg.url
},
lastSearch: Date.now(),
lifetimes: {
attached: function attached() {
this.getbuildingfloorlist();
if (this.data.focus) { if (this.data.focus) {
this.setData({
searchState: true
});
this.setData({
searchState: true
});
} }
}
},
methods: {
getList: function () {
let that = this;
let data = {
pageNum: page,
pageSize: 8
};
Http.get({
url: config.api.merchantList,
data: data
}).then(res => {
wx.hideLoading();
if (page == 1) {
that.setData({
merchantVoList: [],
})
} }
var tmpArr = that.data.merchantVoList;
tmpArr.push.apply(tmpArr, res.data.list);
that.setData({
merchantVoList: tmpArr
})
})
.catch(err => {
wx.hideLoading();
wx.showToast({
title: err.errMsg,
icon: 'none',
duration: 2000,
mask: false
});
})
},
bindMultiPickerChange(e){
this.setData({
value: this.data.multiArray[0][e.detail.value[0]] + this.data.multiArray[1][e.detail.value[1]]
})
}, },
clearInput: function clearInput() {
methods: {
phone: function (e) {
let that = this;
if (e.currentTarget.dataset.merchantlinkphone) {
wx.makePhoneCall({
phoneNumber: e.currentTarget.dataset.merchantlinkphone
})
}
},
gotoDetail(e) {
wx.navigateTo({
url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}`
})
},
bindMultiPickerColumnChange: function (e) {
var data = {
multiArray: this.data.multiArray,
multiIndex: this.data.multiIndex
};
console.log(e)
data.multiIndex[e.detail.column] = e.detail.value;
switch (e.detail.column) {
case 0:
data.multiArray[1] = this.data.buildingFloor[e.detail.value].floors;
break;
}
this.setData({
multiArray: this.data.multiArray,
multiIndex: this.data.multiIndex
})
},
bindMultiPickerChange: function (e) {
// 楼座 building
// 楼层 floor
this.setData({
multiIndex: e.detail.value,
building: this.data.multiArray[0][e.detail.value[0]],
floor: this.data.multiArray[1][e.detail.value[1]],
})
this.getList(this.data.building.id, this.data.floor.id,1);
},
//获取楼层楼座
getbuildingfloorlist() {
Http.get({
url: config.api.getbuildingfloorlist,
data: {
}
}).then(res => {
if(res.data.length>0){
res.data.map(file=>{
if (file.floors.length>0){
file.floors.map(ever=>{
ever.name = ever.floorName
})
}
})
}
this.setData({
buildingFloor:res.data
})
this.setData({
multiArray: [[...this.data.buildingFloor], [...this.data.buildingFloor[0].floors]]
})
})
.catch(err => {
wx.showToast({
title: err.errMsg,
icon: 'none',
duration: 2000,
mask: false
});
})
},
getList: function (building, floor,page) {
let that = this;
let data = {
pageNum: 1,
pageSize: 10,
building: building,
floor: floor,
};
Http.get({
url: config.api.merchantList,
data: data
}).then(res => {
if (page == 1) {
that.setData({
merchantVoList: [],
})
}
var tmpArr = that.data.merchantVoList;
tmpArr.push.apply(tmpArr, res.data.list);
that.setData({
merchantVoList: tmpArr
})
})
.catch(err => {
wx.showToast({
title: err.errMsg,
icon: 'none',
duration: 2000,
mask: false
});
})
},
clearInput: function clearInput() {
this.setData({ this.setData({
value: ''
value: ''
}); });
this.triggerEvent('clear'); this.triggerEvent('clear');
},
inputFocus: function inputFocus(e) {
this.triggerEvent('focus', e.detail);
},
inputBlur: function inputBlur(e) {
},
inputFocus: function inputFocus(e) {
this.triggerEvent('focus', e.detail);
},
inputBlur: function inputBlur(e) {
this.setData({ this.setData({
focus: false
focus: false
}); });
this.triggerEvent('blur', e.detail); this.triggerEvent('blur', e.detail);
},
showInput: function showInput() {
},
showInput: function showInput() {
this.setData({ this.setData({
focus: true,
searchState: true
focus: true,
searchState: true
}); });
},
hideInput: function hideInput() {
},
hideInput: function hideInput() {
this.setData({ this.setData({
searchState: false
searchState: false
}); });
},
inputChange: function inputChange(e) {
},
inputChange: function inputChange(e) {
var _this = this; var _this = this;


this.setData({ this.setData({
value: e.detail.value
value: e.detail.value
}); });
this.triggerEvent('input', e.detail); this.triggerEvent('input', e.detail);
if (Date.now() - this.lastSearch < this.data.throttle) { if (Date.now() - this.lastSearch < this.data.throttle) {
return;
return;
} }
if (typeof this.data.search !== 'function') { if (typeof this.data.search !== 'function') {
return;
return;
} }
this.lastSearch = Date.now(); this.lastSearch = Date.now();
this.timerId = setTimeout(function () {
_this.data.search(e.detail.value).then(function (json) {
_this.setData({
result: json
});
}).catch(function (err) {
console.log('search error', err);
this.timerId = setTimeout(function() {
_this.data.search(e.detail.value).then(function(json) {
_this.setData({
result: json
}); });
}).catch(function(err) {
console.log('search error', err);
});
}, this.data.throttle); }, this.data.throttle);
},
selectResult: function selectResult(e) {
},
selectResult: function selectResult(e) {
var index = e.currentTarget.dataset.index; var index = e.currentTarget.dataset.index;


var item = this.data.result[index]; var item = this.data.result[index];
this.triggerEvent('selectresult', { index: index, item: item });
this.triggerEvent('selectresult', {
index: index,
item: item
});
}
} }
}
});
});


/***/ })
/***/
})


/******/ });
/******/
});

+ 3
- 12
pages/searchbar/searchbar.wxml Просмотреть файл

@@ -4,7 +4,7 @@
<view class="weui-search-bar__box" style="position:relative;"> <view class="weui-search-bar__box" style="position:relative;">
<icon class="weui-icon-search_in-box" type="search" size="12"></icon> <icon class="weui-icon-search_in-box" type="search" size="12"></icon>
<input type="text" class="weui-search-bar__input" placeholder="{{placeholder}}" value="{{value}}" bindfocus="inputFocus" bindinput="inputChange" disabled /> <input type="text" class="weui-search-bar__input" placeholder="{{placeholder}}" value="{{value}}" bindfocus="inputFocus" bindinput="inputChange" disabled />
<picker class="pickers" mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}">
<picker class="pickers" mode="multiSelector" bindchange="bindMultiPickerChange" bindcolumnchange="bindMultiPickerColumnChange" value="{{multiIndex}}" range="{{multiArray}}" range-key="name">
<view class="picker"> <view class="picker">
搜索搜索搜索搜索搜索搜索搜索搜索搜索搜索 搜索搜索搜索搜索搜索搜索搜索搜索搜索搜索
</view> </view>
@@ -20,11 +20,6 @@
</view> </view>
<view wx:if="{{cancel && searchState}}" class="weui-search-bar__cancel-btn" bindtap="hideInput">{{cancelText}}</view> <view wx:if="{{cancel && searchState}}" class="weui-search-bar__cancel-btn" bindtap="hideInput">{{cancelText}}</view>
</view> </view>
<!-- <mp-cells class="searchbar-result {{extClass}}" wx:if="{{searchState && result.length > 0}}">
<mp-cell bindtap="selectResult" data-index="{{index}}" wx:for="{{result}}" hover>
<view>{{item.text}}</view>
</mp-cell>
</mp-cells> -->
<view class='lists'> <view class='lists'>
<view class='posi' wx:if="{{merchantVoList.length>0}}" style="padding-bottom:100rpx;"> <view class='posi' wx:if="{{merchantVoList.length>0}}" style="padding-bottom:100rpx;">
<view class='posi_logo' wx:for="{{merchantVoList}}" wx:key="index"> <view class='posi_logo' wx:for="{{merchantVoList}}" wx:key="index">
@@ -33,12 +28,8 @@
<image src='{{item.merchantImgUrl}}'></image> <image src='{{item.merchantImgUrl}}'></image>
</view> </view>
<view class='leftBox'> <view class='leftBox'>
<view class='merchantName'>{{item.merchantName}}</view>
<view class='shopVo'>
<view class='shopVoList' >
<text wx:for="{{item.shopVoList}}" wx:key="{{index}}" wx:for-item="itemName">{{itemName.buildingName}}{{itemName.floorName}}--{{itemName.shopNumber}}</text>
</view>
</view>
<view class='merchantName' style="margin-top:20px;">{{item.merchantName}}</view>
<view class='merchantName' style="color:#999;">{{item.businessName}}</view>
</view> </view>
</view> </view>
<image wx:if="{{item.linkLinePhone}}" bindtap='phone' data-merchantLinkPhone='{{item.linkLinePhone}}' class="tel" src="{{teljpgUrl}}" mode="widthFix" /> <image wx:if="{{item.linkLinePhone}}" bindtap='phone' data-merchantLinkPhone='{{item.linkLinePhone}}' class="tel" src="{{teljpgUrl}}" mode="widthFix" />


+ 34
- 4
pages/searchbar/searchbar.wxss Просмотреть файл

@@ -20,8 +20,8 @@


.posi { .posi {
position: relative; position: relative;
width: 616rpx;
float: right;
width: 716rpx;
margin: 0 auto;
} }


.posi>view:nth-child(2) { .posi>view:nth-child(2) {
@@ -40,14 +40,44 @@
font-size: 30rpx; font-size: 30rpx;
color: #a9a9a9; color: #a9a9a9;
} }

.tel {
position: absolute;
right: 3%;
top: 0;
bottom: 0;
margin: auto;
width: 50rpx;
height: 50rpx;
}
.posi_logo { .posi_logo {
position: relative; position: relative;
width:576rpx!important;
height:176rpx; height:176rpx;
background:rgba(255,255,255,1); background:rgba(255,255,255,1);
box-shadow:0px 4rpx 8rpx 0px rgba(0,0,0,0.04); box-shadow:0px 4rpx 8rpx 0px rgba(0,0,0,0.04);
border-radius:16rpx; border-radius:16rpx;
margin: 20rpx; margin: 20rpx;
overflow: hidden; overflow: hidden;
}
.merchants{
width: 90%;
display: flex;
background: #fff;
padding-right:5%;
overflow: hidden;
}
.merchantName{
display: block;
color: #3C3C3C;
font-size: 32rpx;
margin-left: 20rpx;
width: 90%;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.merchants view:nth-child(1) image {
display: block;
width: 120rpx;
height: 120rpx;
border-radius: 16rpx;
} }

Загрузка…
Отмена
Сохранить