Files
2025-04-30 14:04:34 +08:00

1272 lines
38 KiB
Plaintext

<template>
<view class="page" :style="themeColor">
<!-- <view class="flex benben-position-layout flex flex-wrap align-center nearbyMerchants_flex_0"
:style="{height:(88+StatusBarRpx)+'rpx',paddingTop:StatusBarRpx+'rpx'}">
<view class='flex flex-wrap align-center justify-between flex-sub nearbyMerchants_fd0_0'>
<view class='flex flex-wrap align-stretch justify-center flex-sub'>
<text class='nearbyMerchants_fd0_0_c0_c0'>附近商家</text>
</view>
</view>
</view>
<view :style="{height: (88+StatusBarRpx)+'rpx'}"></view> -->
<!---flex布局flex布局开始-->
<view class="flex flex-direction flex-wrap align-stretch benben-flex-layout nearbyMerchants_flex_1">
<view class='flex flex-wrap align-center justify-between' style="flex-direction: row; align-items: center;">
<view class='flex flex-row flex-wrap align-center flex-sub nearbyMerchants_fd1_0_c0'>
<image class='nearbyMerchants_fd1_0_c0_c0' mode="aspectFill" :src='STATIC_URL+"53.png"'></image>
<input type="text" placeholder="请输入商家名称" confirm-type="done" :maxlength="-1"
v-model="keyword" style="width: 400rpx; font-size: 30rpx;" @confirm="handleSearch" />
</view>
<text class='nearbyMerchants_fd1_0_c1' @click="handleSearch">搜索</text>
</view>
<view class='flex flex-wrap align-center justify-around nearbyMerchants_fd1_1'>
<!-- @tap.stop="stateFunctionFunc()" -->
<view class='flex flex-wrap align-center justify-center nearbyMerchants_fd1_1_c0' @tap.stop="handleShowPopup(1)">
<text class='nearbyMerchants_fd1_1_c0_c0' :class="tabls == 1 ? 'active-tab' : ''"
>{{screeningMerchants_id}}</text>
<image class='nearbyMerchants_fd1_1_c0_c1' :src='STATIC_URL+"92.png"' v-if="state=='1'"></image>
<image class='nearbyMerchants_fd1_1_c0_c1_1' :src='STATIC_URL+"93.png"' v-if="state=='2'"></image>
</view>
<view class='flex nearbyMerchants_fd1_1_c1'></view>
<!-- @tap.stop="stateFunctionFunc()" -->
<view class='flex flex-wrap align-center justify-center nearbyMerchants_fd1_1_c2' @tap.stop="handleShowPopup(2)"
>
<text class='nearbyMerchants_fd1_1_c2_c0' :class="tabls == 2 ? 'active-tab' : ''"
>{{filterDistance_id}}</text>
<image class='nearbyMerchants_fd1_1_c2_c1' :src='STATIC_URL+"93.png"' v-if="state=='1'"></image>
<image class='nearbyMerchants_fd1_1_c2_c1_1' :src='STATIC_URL+"92.png"' v-if="state=='2'"></image>
</view>
</view>
</view>
<view v-if="isHandLocation && !lat" class="kaiqiweizhi flex align-center justify-between"
:style="{top:(70 + StatusBar ) + 'px'}" style="flex-direction: row; justify-content: center; align-items: center;">
<view class="flex align-center" style="flex-direction: row; justify-content: center; align-items: center;">
<text class="" style="font-size: 32upx;font-weight: 550; color: #fff; line-height: 80rpx;">开启定位权限,显示周边商家及商品</text>
<text class="kaiqiweizhi-button" @click="_getPermission">
去开启
</text>
</view>
<view class="text-df flex align-center" style="flex-direction: row; justify-content: center;">
<image src="/static/close.png" @click="isHandLocation = false" style="width:32rpx;height: 32rpx;"
mode="aspectFill"></image>
</view>
</view>
<!---flex布局flex布局结束-->
<!---flex布局flex布局开始-->
<!-- <view class="flex benben-flex-layout flex-wrap align-center nearbyMerchants_flex_2">
</view> -->
<block v-if="isPublish">
<map style="width: 750rpx; height: 200px;" :latitude="lat" :longitude="lng" scale="13" :markers="covers"></map>
</block>
<!---flex布局flex布局结束-->
<!---flex布局flex布局开始-->
<block v-if="permissionStatus == 1">
<fu-loading v-if="isShowLoading"></fu-loading>
<fu-empty-ui v-if="list.length === 0 && isInit"></fu-empty-ui>
<view class="flex flex-direction flex-wrap align-stretch benben-flex-layout nearbyMerchants_flex_3">
<view class='flex flex-wrap align-center nearbyMerchants_fd3_0' v-for="(item, index) in list" :key="index" >
<view class='flex flex-direction flex-wrap align-start' @click.stop="handleToDetail(item)" style="position: relative;">
<view class='flex flex-wrap align-center'>
<image class='nearbyMerchants_fd3_0_c0_c1_c0' mode="aspectFill" :src='item.logo'></image>
</view>
<image class="nearbyMerchants_fd3_0_c0_c0001" :src='STATIC_URL+"23.png"' mode="widthFix"></image>
<view class='flex flex-wrap align-center justify-center nearbyMerchants_fd3_0_c0_c0' style="flex-direction: row; justify-content: center;">
<text class='nearbyMerchants_fd3_0_c0_c0_c0'>积分</text>
<text class='nearbyMerchants_fd3_0_c0_c0_c1'>{{item.score_rate}}</text>
<text class='nearbyMerchants_fd3_0_c0_c0_c2'>%</text>
</view>
<image style="width: 50rpx; height: 50rpx; position: absolute; top: 0; right: 0; z-index: 100;" v-if="item.storelevel_thumb" :src="item.storelevel_thumb" mode="aspectFill"></image>
</view>
<view class='flex flex-direction flex-wrap align-stretch flex-sub nearbyMerchants_fd3_0_c1'>
<view class='flex align-center justify-between' style="flex-direction: row; align-items: center; width: 474rpx; justify-content: space-between;">
<view class='flex flex-wrap align-center' style="width: 320rpx;" @click="handleToDetail(item)">
<text class='nearbyMerchants_fd3_0_c1_c0_c0_c0'>{{item.store_name}}</text>
</view>
<view class='flex align-center justify-center nearbyMerchants_fd3_0_c1_c0_c1' @click.stop="handleToMap(item)">
<image class='nearbyMerchants_fd3_0_c1_c0_c1_c0' mode="aspectFill" :src='STATIC_URL+"95.png"'></image>
<text class='nearbyMerchants_fd3_0_c1_c0_c1_c1'>到这里</text>
</view>
</view>
<view @click.stop="handleToDetail(item)" class='flex flex-wrap align-center nearbyMerchants_fd3_0_c1_c1' style="flex-direction: row; align-items: center; width: 474rpx;">
<text class='storeDetails_fd2_0_c1_c1_c1' style="margin-right: 20rpx; color: #FF9D00;font-size: 26rpx;" v-if="item.store_type">{{item.store_type}}</text>
<image class='nearbyMerchants_fd3_0_c1_c1_c0' mode="aspectFit" :src='STATIC_URL+"31.png"'></image>
<text class='nearbyMerchants_fd3_0_c1_c1_c1'>{{item.score}}</text>
<text class='nearbyMerchants_fd3_0_c1_c1_c2'>分</text>
</view>
<view @click.stop="handleToDetail(item)" class='flex flex-wrap align-center justify-between nearbyMerchants_fd3_0_c1_c2' style="flex-direction: row; align-items: center; width: 474rpx; justify-content: space-between;">
<view class='flex flex-wrap align-center' style="flex-direction: row; align-items: center;">
<text class='nearbyMerchants_fd3_0_c1_c2_c0_c0'>关注人数</text>
<text class='nearbyMerchants_fd3_0_c1_c2_c0_c1'>{{item.collect_num}}</text>
</view>
<!-- <view class='flex flex-wrap align-center' style="flex-direction: row; align-items: center; padding-right: 24rpx;">
<text class='nearbyMerchants_fd3_0_c1_c2_c1_c0'>人均¥</text>
<text class='nearbyMerchants_fd3_0_c1_c2_c1_c1'>{{item.per_capita}}</text>
</view> -->
</view>
<view @click.stop="handleToDetail(item)" class='flex flex-wrap align-center justify-between nearbyMerchants_fd3_0_c1_c3' style="flex-direction: row; align-items: center; width: 474rpx; justify-content: space-between;">
<view class='flex flex-wrap align-center' style="flex-direction: row; align-items: center;">
<text class='nearbyMerchants_fd3_0_c1_c3_c0_c0'>起送¥</text>
<text class='nearbyMerchants_fd3_0_c1_c3_c0_c1'>{{item.start_price}} </text>
</view>
<view class='flex flex-wrap align-center' style="flex-direction: row; align-items: center; padding-right: 24rpx;">
<text class='nearbyMerchants_fd3_0_c1_c3_c1_c0'>{{item.distance}}</text>
<text class='nearbyMerchants_fd3_0_c1_c3_c1_c1'>km</text>
</view>
</view>
</view>
</view>
</view>
</block>
<block v-if="permissionStatus != 1">
<fu-empty-ui @permission="handlePermission" v-if="permissionStatus == 0" emptyImage="addr" pagingListNoListDataText="暂无开启位置权限"></fu-empty-ui>
<fu-empty-ui @permission="handlePermission" v-if="permissionStatus == -1" emptyImage="permission" pagingListNoListDataText="您已永久拒绝位置权限"></fu-empty-ui>
</block>
<view class="popup-mask" v-if="showPopup" @click="handleHidePopup"></view>
<view class="popup" v-if="showPopup">
<view class='flex flex-wrap align-center justify-around nearbyMerchants_fd1_1'>
<view class='flex flex-wrap align-center justify-center nearbyMerchants_fd1_1_c0'
@tap.stop="handleShowPopup(1)">
<text class='nearbyMerchants_fd1_1_c0_c0' :class="tabls == 1 ? 'active-tab' : ''"
>{{screeningMerchants_id}}</text>
<image class='nearbyMerchants_fd1_1_c0_c1' :src='STATIC_URL+"92.png"' v-if="state=='1'"></image>
<image class='nearbyMerchants_fd1_1_c0_c1_1' :src='STATIC_URL+"93.png"' v-if="state=='2'"></image>
</view>
<view class='flex nearbyMerchants_fd1_1_c1'></view>
<view class='flex flex-wrap align-center justify-center nearbyMerchants_fd1_1_c2'
@tap.stop="handleShowPopup(2)">
<text class='nearbyMerchants_fd1_1_c2_c0' :class="tabls == 2 ? 'active-tab' : ''"
>{{filterDistance_id}}</text>
<image class='nearbyMerchants_fd1_1_c2_c1' :src='STATIC_URL+"93.png"' v-if="state=='1'"></image>
<image class='nearbyMerchants_fd1_1_c2_c1_1' :src='STATIC_URL+"92.png"' v-if="state=='2'"></image>
</view>
</view>
<view class="list-wrap" v-if="tabls == 1">
<scroll-view scroll-y="true" class="list">
<view class="item" @tap="handleChooseSort(1, '')">
<text class="title">全部商家</text>
<image class="img-dui" v-if="selectCateId == ''" :src='STATIC_URL+"dui.png"' mode="widthFix"></image>
</view>
<view class="item" v-for="(item, index) in cateList" :key="index" @tap="handleChooseSort(1, item.aid)">
<text class="title">{{item.title}}</text>
<image class="img-dui" v-if="selectCateId == item.aid" :src='STATIC_URL+"dui.png"' mode="widthFix"></image>
</view>
</scroll-view>
</view>
<view class="list-wrap" v-if="tabls == 2">
<scroll-view scroll-y="true" class="list">
<view class="item" v-for="(item, index) in distanceList" :key="index" @tap="handleChooseSort(2, item.id)">
<text class="title">{{item.title}}</text>
<image v-if="selectDistance == item.id" class="img-dui" :src='STATIC_URL+"dui.png"' mode="widthFix"></image>
</view>
</scroll-view>
</view>
</view>
<!-- <view class="sure-btn" v-if="showPopup" @click="handleSure"><text class="sure">确定</text></view> -->
<!---flex布局flex布局结束-->
<!--筛选全部商家开始 -->
<!-- <benben-picker ref="benbenWritePickerCodepicker4" :visible.sync="pickerDiy1684578784573"
:label.sync='screeningMerchants_id' :options='screeningMerchants_list' mode='selector' :mask-show='true'
:timeout='true' :picker-height='88' default-type='value' :default-props='{"label":"name","value":"value"}'>
<template #picker-header>
<view class='flex flex-wrap align-center justify-between nearbyMerchants_picker4_0'>
<text @tap="$refs.benbenWritePickerCodepicker4.cancel()">取消</text>
<text>筛选全部商家</text>
<text class='nearbyMerchants_picker4_0_c2' @tap="$refs.benbenWritePickerCodepicker4.pickerConfirm()">确认</text>
</view>
</template>
</benben-picker> -->
<!--筛选全部商家结束 -->
<!--筛选距离开始 -->
<!-- <benben-picker ref="benbenWritePickerCodepicker5" :visible.sync="pickerDiy1684579546665"
:label.sync='filterDistance_id' :options='filterDistance_list' mode='selector' :mask-show='true' :timeout='true'
:picker-height='88' default-type='value' :default-props='{"label":"name","value":"value"}'>
<template #picker-header>
<view class='flex flex-wrap align-center justify-between nearbyMerchants_picker5_0'>
<text @tap="$refs.benbenWritePickerCodepicker5.cancel()">取消</text>
<text>筛选距离</text>
<text class='nearbyMerchants_picker5_0_c2' @tap="$refs.benbenWritePickerCodepicker5.pickerConfirm()">确认</text>
</view>
</template>
</benben-picker> -->
<!--筛选距离结束 -->
</view>
</template>
<script>
import { STATIC_URL, ACCEPT_PLATFORM, SYSTEM_CONFIG } from '@/common/config.js';
import amap from '@/common/amap-wx.js';
import {
API_BASE_URL
} from '@/common/config.js';
import {
message,
Router,
validate
} from '@/common/utils/index.js';
const _userInfo = uni.getStorageSync('USER_INFO');
import apiUrls from '@/common/api/url.js'
import permision from '@/common/permission.js'
export default {
components: {},
data() {
return {
tabls: 1,
showPopup: false,
STATIC_URL: STATIC_URL,
"pickerDiy1684579546665": false,
"pickerDiy1684578784573": false,
"fd1_0_c0_c1": "",
"data": [],
"screeningMerchants_id": "全部商家",
"screeningMerchants_list": [{
"name": "全部商家",
"value": "1",
"image": ""
}, {
"name": "美食",
"value": "2",
"image": ""
}, {
"name": "便利商超",
"value": "3",
"image": ""
}, {
"name": "生鲜水果",
"value": "4",
"image": ""
}, {
"name": "酒水饮料",
"value": "5",
"image": ""
}, {
"name": "蛋糕甜品",
"value": "6",
"image": ""
}],
"filterDistance_id": "距离筛选",
"filterDistance_list": [{
"name": "不限",
"value": "1",
"image": ""
}, {
"name": "0.5KM",
"value": "2",
"image": ""
}, {
"name": "1KM-2KM",
"value": "3",
"image": ""
}, {
"name": "2KM-3KM",
"value": "4",
"image": ""
}, {
"name": "3KM-4KM",
"value": "5",
"image": ""
}, {
"name": "5KM以上",
"value": "6",
"image": ""
}],
"state": "1",
lat: '',
lng: '',
list: [],
isShowLoading: false,
isInit: false,
status: 'more', // 表示是否有数据可以请求
page: 1,
covers: [],
amapPlugin: null, //new地图
key: '886bfe2d6c32bd8eac97c2e6d821ed0b',
post: null,
token: '',
cateList: [],
selectCateId: '',
selectDistance: '',
cateId: '',
distance: '',
keyword: '',
distanceList: [],
permissionStatus: 1,
isHandLocation: false,
isPublish: false
};
},
computed: {
themeColor() {
return this.$store.getters.themeColor
},
},
watch: {},
onLoad(options) {
this.amapPlugin = new amap.AMapWX({
key: this.key
});
if (_userInfo) {
this.token = _userInfo.user_token;
}
this.post = (url, postData = {}) => {
return new Promise((resolve, reject) => {
uni.request({
url: API_BASE_URL + url, //仅为示例,并非真实接口地址。
data: postData,
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'user-token': this.token,
'lang': uni.getStorageSync('LANGUAGE_TYPE'),
'group-id': 1
},
success: (res) => {
resolve(res)
}
})
})
}
this.judgeIsLocation()
// uni.$on('LOCATION_SUCCESS', () => {
// this.judgeIsLocation()
// })
// uni.$on('SELECT_ADDRESS', (data) => {
// console.log('监听到数据', data)
// this.lat = data.lat;
// this.lng = data.lng;
// this.city = data.city;
// this.address = data.address;
// global.lat = data.lat;
// global.lng = data.lng;
// global.city = data.city;
// global.address = data.address;
// this.status = 'more';
// this.page = 1;
// this.isInit = false;
// this.list = [];
// this.getRecommendList(true);
// })
// // #ifdef APP-PLUS
// this._getPermission()
// // #endif
// // #ifndef APP-PLUS
// this._getLocation()
// // #endif
},
onUnload() {
},
onReady() {
},
onShow() {
this.getPublishStatus()
this.getCateList();
this.getDistanceList();
// let lat = uni.getStorageSync('LVTAI_LAT') || '';
// let lng = uni.getStorageSync('LVTAI_LNG') || '';
// // 定位功能
// if (!lat) {
// // #ifndef MP-WEIXIN
// let platform = uni.getSystemInfoSync().platform == 'ios' ? 1 : 2
// console.log(platform)
// if (platform == 2) {
// this.isHandLocation = true;
// } else {
// this._getLocation()
// this.isHandLocation = false;
// }
// // #endif
// // #ifdef MP-WEIXIN
// this._getLocation()
// this.toppop = false;
// // #endif
// } else {
// this._getLocation()
// }
// if (this.permissionStatus == -1) {
// this.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');
// }
// console.log('LVTAI_LAT', uni.getStorageSync('LVTAI_LAT'));
// if (uni.getStorageSync('LVTAI_LAT') && uni.getStorageSync('LVTAI_LNG')) {
// this.lat = uni.getStorageSync('LVTAI_LAT')
// this.lng = uni.getStorageSync('LVTAI_LNG')
// this.status = 'more';
// this.page = 1;
// this.isInit = false;
// this.list = [];
// this.getRecommendList(true);
// } else {
// this._getLocation()
// }
},
onHide() {
},
onResize() {
},
onPullDownRefresh() {
// #ifdef APP-PLUS
this._getPermission()
// #endif
// #ifndef APP-PLUS
this._getLocation()
// #endif
// this.$refs.guess && this.$refs.guess.refresh();
setTimeout(() => {
uni.stopPullDownRefresh();
}, 1000);
},
onReachBottom(e) {
if (this.lat && this.lng) {
this.getRecommendList();
}
},
onPageScroll(e) {
},
methods: {
getPublishStatus() {
this.post(apiUrls.post673572b0bebd7, {app_version: SYSTEM_CONFIG.appVersion, type: ACCEPT_PLATFORM == 'IOS' ? 'ios' : 'android'}) .then(res => {
if (res.data.code == 1) {
this.isPublish = !res.data.data.is_listing;
console.log('上架状态', this.isPublish, res.data.data.is_listing);
}
})
},
judgeIsLocation() {
let lat = uni.getStorageSync('LVTAI_LAT') || '';
let lng = uni.getStorageSync('LVTAI_LNG') || '';
// 定位功能
if (!lat) {
// #ifndef MP-WEIXIN
let platform = uni.getSystemInfoSync().platform == 'ios' ? 1 : 2
console.log(platform)
if (platform == 2) {
this.isHandLocation = true;
} else {
this._getLocation()
this.isHandLocation = false;
}
// #endif
// #ifdef MP-WEIXIN
this._getLocation()
this.toppop = false;
// #endif
} else {
this._getLocation()
}
},
handleToDetail(item) {
uni.navigateTo({
url: `/pages/dpxq/storeDetails/storeDetails?id=${item.aid}`
})
},
handleToMap(item) {
console.log(123);
uni.openLocation({
latitude: item.address_lat - 0,
longitude: item.address_lng - 0,
name: item.address_address,
success: function () {
console.log('success');
},
fail: (err) => {
console.log(err);
}
});
},
handlePermission(type) {
console.log(123)
if (type ==1) {
this.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');
} else {
permision.gotoAppPermissionSetting()
}
},
async requestAndroidPermission(permisionID) {
console.log(123)
var result = await permision.requestAndroidPermission(permisionID);
var strStatus
if (result == 1) {
this._getLocation();
}
this.permissionStatus = result;
},
_getPermission() {
const that = this;
uni.getSystemInfo({
success: (res) => {
if (res.platform == 'android') {
let isLocation = uni.getStorageSync('LVTAI_USER_LOCATION') || false;
if (!isLocation) {
uni.showModal({
title:'提示',
content: '获取您的定位权限以展示附近推荐商家?',
success: res => {
if (res.confirm) {
that.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');
} else {
that.permissionStatus = 0;
}
}
});
} else {
this._getLocation();
}
} else {
this._getLocation();
}
}
});
},
handleSearch() {
// #ifdef APP-PLUS
this._getPermission()
// #endif
// #ifndef APP-PLUS
this._getLocation()
// #endif
},
handleShowPopup(type) {
this.tabls = type;
this.showPopup = true;
this.stateFunctionFunc()
},
handleHidePopup() {
this.showPopup = false;
},
handleChooseSort(type, value) {
console.log('type is', type)
console.log('value is', value)
if (type == 1) {
this.selectCateId = value;
} else {
this.selectDistance = value
}
this.handleSure()
},
handleSure() {
this.cateId = this.selectCateId;
let screeningMerchants_id = ''
this.cateList.map((item) => {
if (item.aid == this.cateId) {
screeningMerchants_id = item.title
}
})
if (!this.cateId) {
screeningMerchants_id = '全部商家'
}
this.screeningMerchants_id = screeningMerchants_id;
this.distance =this.selectDistance;
let filterDistance_id = ''
this.distanceList.map((item) => {
if (item.id == this.distance) {
filterDistance_id = item.title
}
})
this.filterDistance_id = filterDistance_id
if (this.tabls == 1) {
} else {
}
this.showPopup = false;
// #ifdef APP-PLUS
this._getPermission()
// #endif
// #ifndef APP-PLUS
this._getLocation()
// #endif
},
getCateList() {
this.post(apiUrls.getCateList).then(res => {
if (res.data.code == 1) {
let cateList = res.data.data;
this.cateList = cateList;
}
})
.catch(err => {
console.log(err);
});
},
getDistanceList() {
this.post(apiUrls.getDistanceList).then(res => {
if (res.data.code == 1) {
let distanceList = res.data.data;
this.distanceList = distanceList;
}
})
.catch(err => {
console.log(err);
});
},
/**
* 获取附近商家列表
* @param {Object} value
*/
getRecommendList(value) {
if (this.status != 'more') return;
this.status = 'loading';
let data = {
store_name: this.keyword,
list_rows: 20,
page: this.page,
lat: this.lat,
lng: this.lng,
is_recommend: 0,
cate_id: this.cateId,
range_id: this.distance
};
// console.log('请求的数据', data);
if (this.page == 1 && value) {
this.isShowLoading = true;
}
this.post(apiUrls.getShopList, data)
.then(res => {
console.log('订单列表', res);
this.isShowLoading = false;
if (res.data.code == 1) {
var curPageData = res.data.data.data;
let covers = [{
id: -999,
latitude: this.lat,
longitude: this.lng,
width: 36,
height: 36,
iconPath: 'https://lvtai-files.oss-cn-beijing.aliyuncs.com/mini/Location.png'
}];
curPageData.map((item) => {
covers.push({
id: item.aid,
latitude: item.address_lat,
longitude: item.address_lng,
width: 36,
height: 36,
// iconPath: 'https://nongmangmang.oss-cn-qingdao.aliyuncs.com/uploads/images/20230522/2b835a1b9e763b62c44ae4b8b727a604.png?x-oss-process=image/resize,m_fixed,h_60,w_60/rounded-corners,r_40/format,png',
iconPath: item.logo,
// label: {
// content: item.store_name,
// color: '#ffffff',
// bgColor: '#FF9D00',
// padding: 12,
// borderRadius: 30
// },
callout: {
content: item.store_name,
color: '#ffffff',
fontSize: 14,
borderRadius: 16,
bgColor: '#FF9D00',
padding: 6,
display: 'ALWAYS',
textAlign: 'center',
anchorY: 10
}
})
})
this.covers = covers;
console.log('covers', covers);
if (this.page == 1) this.list = [];
this.list = this.list.concat(curPageData);
console.log('上拉加载', curPageData.length, this.size);
if (res.data.data.last_page > this.page) {
this.status = 'more';
this.page++;
} else {
this.status = 'noMore';
}
} else {
this.$message.info(res.data.msg);
}
this.isInit = true;
uni.stopPullDownRefresh();
})
.catch(err => {
this.isShowLoading = false;
uni.stopPullDownRefresh();
});
},
_getLocation() {
// #ifdef H5
this.lat = '34.738695';
this.lng = '113.64328';
uni.setStorageSync('LVTAI_LAT', this.lat)
uni.setStorageSync('LVTAI_LNG', this.lng)
uni.setStorageSync('LVTAI_USER_LOCATION', true);
this.status = 'more';
this.page = 1;
this.isInit = false;
this.list = [];
this.address = '华城国际中心'
this.getRecommendList(true);
// #endif
// #ifndef H5
this.amapPlugin.getRegeo({
success: res => {
console.log(res[0]);
// uni.$off('LOCATION_SUCCESS', ()=>{})
// uni.$emit('LOCATION_SUCCESS', {})
uni.setStorageSync('LVTAI_USER_LOCATION', true);
this.address = res[0].regeocodeData.addressComponent.city;
this.lat = res[0].latitude;
this.lng = res[0].longitude;
uni.setStorageSync('LVTAI_LAT', this.lat)
uni.setStorageSync('LVTAI_LNG', this.lng)
this.isShowLoading = false;
this.status = 'more';
this.page = 1;
this.isInit = false;
this.list = [];
this.getRecommendList(true);
},
fail: err => {
}
});
// #endif
},
//切换状态
stateFunctionFunc() {
if (this.state == '1') {
this.state = '2';
} else if (this.state == '2') {
this.state = '1';
}
return
}
}
};
</script>
<style lang="scss" scoped>
.kaiqiweizhi-button {
height: 48rpx;
line-height: 48rpx;
padding-left: 8rpx;
padding-right: 8rpx;
background-color: #64BF1D;
color: #fff;
font-size: 24rpx;
border-radius: 12rpx;
margin-left: 18rpx;
margin-right: 18rpx;
}
.kaiqiweizhi {
position: fixed;
left: 24rpx;
right: 24rpx;
width: calc(100% - 48rpx);
height: 80rpx;
border-radius: 18rpx;
padding: 0 24rpx;
background: rgba(0, 0, 0, 0.8);
z-index: 999;
font-size: 24rpx;
color: #fff;
}
.page {
width: 750rpx;
overflow-x: hidden;
min-height: calc(100vh - var(--window-bottom));
// background: rgba(246, 247, 249, 1);
background-size: 100% auto !important;
}
.nearbyMerchants_flex_0 {
background: rgba(255, 147, 0, 1);
width: 750rpx;
height: 88rpx;
overflow: hidden;
z-index: 10;
top: 0rpx;
background-size: 100% auto !important;
}
.nearbyMerchants_fd0_0_c0_c0 {
font-size: 36rpx;
font-weight: 500;
color: rgba(255, 255, 255, 1);
line-height: 88rpx;
}
.nearbyMerchants_fd0_0 {
margin: 0rpx 32rpx 0rpx 32rpx;
}
.nearbyMerchants_flex_1 {
background: rgba(255, 255, 255, 1);
padding: 24rpx 32rpx 0rpx 32rpx;
background-size: 100% auto !important;
}
.nearbyMerchants_fd1_1_c2_c1_1 {
width: 10rpx;
height: 6rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 0rpx 0rpx 8rpx;
}
.nearbyMerchants_fd1_1_c2_c1 {
width: 10rpx;
height: 6rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 0rpx 0rpx 8rpx;
}
.nearbyMerchants_fd1_1_c2_c0_1 {
color: #666;
font-size: 28rpx;
font-weight: 400;
line-height: 30rpx;
}
.nearbyMerchants_fd1_1_c2_c0 {
color: #666;
font-size: 28rpx;
font-weight: 400;
line-height: 30rpx;
}
.nearbyMerchants_fd1_1_c2 {
width: 300rpx;
// height: 51rpx;
flex-direction: row;
align-items: center;
justify-content: center;
}
.nearbyMerchants_fd1_1_c1 {
background: rgba(238, 238, 238, 1);
width: 1rpx;
height: 30rpx;
transform: scaleX(0.5);
}
.nearbyMerchants_fd1_1_c0_c1_1 {
width: 10rpx;
height: 6rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 0rpx 0rpx 8rpx;
}
.nearbyMerchants_fd1_1_c0_c1 {
width: 10rpx;
height: 6rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 0rpx 0rpx 8rpx;
}
.nearbyMerchants_fd1_1_c0_c0_1 {
color: #666;
font-size: 28rpx;
font-weight: 500;
line-height: 30rpx;
}
.nearbyMerchants_fd1_1_c0_c0 {
color: #666;
font-size: 28rpx;
font-weight: 500;
line-height: 30rpx;
}
.active-tab {
color: #333333;
}
.nearbyMerchants_fd1_1_c0 {
width: 300rpx;
// height: 51rpx;
flex-direction: row;
align-items: center;
justify-content: center;
}
.nearbyMerchants_fd1_1 {
padding: 32rpx 0rpx 28rpx 0rpx;
flex-direction: row;
justify-content: center;
}
.nearbyMerchants_fd1_0_c1 {
color: #333333;
font-size: 32rpx;
font-weight: 400;
line-height: 32rpx;
}
.nearbyMerchants_fd1_0_c0_c0 {
width: 28rpx;
height: 28rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 16rpx 0rpx 0rpx;
}
.nearbyMerchants_fd1_0_c0 {
width: 580rpx;
flex-direction: row;
align-items: center;
background: rgba(246, 247, 249, 1);
margin: 0rpx 32rpx 0rpx 0rpx;
border-radius: 32rpx 32rpx 32rpx 32rpx;
background-size: 100% auto !important;
padding: 12rpx 24rpx 12rpx 24rpx;
}
.nearbyMerchants_flex_2 {
background: url(https://lvtai-files.oss-cn-beijing.aliyuncs.com/mini/49.png) no-repeat, #eee;
background-size: 100% auto !important;
width: 750rpx;
height: 400rpx;
}
.nearbyMerchants_flex_3 {
padding: 32rpx 24rpx 0rpx 24rpx;
}
.nearbyMerchants_fd3_0_c1_c3_c1_c1 {
color: #999999;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c3_c1_c0 {
color: #999999;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c3_c0_c1 {
color: #333333;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c3_c0_c0 {
color: #333333;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c3 {
margin: 18rpx 20rpx 0rpx 0rpx;
}
.nearbyMerchants_fd3_0_c1_c2_c1_c1 {
color: #333333;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c2_c1_c0 {
color: #333333;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c2_c0_c1 {
color: #333333;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c2_c0_c0 {
color: #333333;
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.nearbyMerchants_fd3_0_c1_c2 {
margin: 18rpx 20rpx 0rpx 0rpx;
}
.nearbyMerchants_fd3_0_c1_c1_c2 {
color: #FF9D00;
font-size: 28rpx;
font-weight: 700;
line-height: 30rpx;
}
.nearbyMerchants_fd3_0_c1_c1_c1 {
color: #FF9D00;
font-size: 28rpx;
font-weight: 700;
line-height: 30rpx;
}
.nearbyMerchants_fd3_0_c1_c1_c0 {
width: 20rpx;
height: 19rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 8rpx 0rpx 0rpx;
}
.nearbyMerchants_fd3_0_c1_c1 {
margin: 18rpx 0rpx 0rpx 0rpx;
}
.nearbyMerchants_fd3_0_c1_c0_c1_c1 {
color: #FFFFFF;
font-size: 24rpx;
font-weight: 400;
line-height: 40rpx;
}
.nearbyMerchants_fd3_0_c1_c0_c1_c0 {
width: 24rpx;
height: 24rpx;
border-radius: 0rpx 0rpx 0rpx 0rpx;
margin: 0rpx 4rpx 0rpx 0rpx;
}
.nearbyMerchants_fd3_0_c1_c0_c1001 {
position: relative;
width: 128rpx;
height: 40rpx;
}
.nearbyMerchants_fd3_0_c1_c0_c1 {
// position: relative;
background-color: #64CBE3;
// background: url(https://lvtai-files.oss-cn-beijing.aliyuncs.com/mini/94.png) no-repeat, #eee;
width: 128rpx;
height: 40rpx;
border-radius: 50rpx 0rpx 0rpx 50rpx;
// background-size: 100% auto !important;
justify-content: center;
flex-direction: row;
display: flex;
align-items: center;
}
.nearbyMerchants_fd3_0_c1_c0_c0_c0 {
color: #333333;
font-size: 32rpx;
font-weight: 600;
line-height: 32rpx;
}
.nearbyMerchants_fd3_0_c1 {
width: 474rpx;
margin: 0rpx 0rpx 0rpx 24rpx;
}
.nearbyMerchants_fd3_0_c0_c1_c0 {
width: 180rpx;
height: 180rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
}
.nearbyMerchants_fd3_0_c0_c0_c2 {
color: #FFFFFF;
font-size: 20rpx;
font-weight: 500;
line-height: 36rpx;
}
.nearbyMerchants_fd3_0_c0_c0_c1 {
color: #FFFFFF;
font-size: 20rpx;
font-weight: 500;
line-height: 36rpx;
}
.nearbyMerchants_fd3_0_c0_c0_c0 {
color: #FFFFFF;
font-size: 20rpx;
font-weight: 500;
line-height: 36rpx;
}
.nearbyMerchants_fd3_0_c0_c0001 {
position: absolute;
width: 128rpx;
height: 36rpx;
}
.nearbyMerchants_fd3_0_c0_c0 {
background-image: url(https://lvtai-files.oss-cn-beijing.aliyuncs.com/mini/23.png) no-repeat, rgba(255, 162, 31, 1);
width: 128rpx;
height: 36rpx;
background-size: 100% auto !important;
border-radius: 16rpx 0rpx 24rpx 0rpx;
position: absolute;
z-index: 10;
}
.nearbyMerchants_fd3_0 {
width: 702rpx;
flex-direction: row;
background: rgba(255, 255, 255, 1);
margin: 0rpx 0rpx 24rpx 0rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
background-size: 100% auto !important;
padding: 24rpx 0rpx 24rpx 24rpx;
}
.nearbyMerchants_picker4_0_c2 {
color: #4781f5;
}
.nearbyMerchants_picker4_0 {
border-bottom: 1px solid #eee;
background: #fff;
padding: 0rpx 32rpx 0rpx 32rpx;
line-height: 88rpx;
border-radius: 25rpx 25rpx 0rpx 0rpx;
background-size: 100% auto !important;
}
.nearbyMerchants_picker5_0_c2 {
color: #4781f5;
}
.nearbyMerchants_picker5_0 {
border-bottom: 1px solid #eee;
background: #fff;
padding: 0rpx 32rpx 0rpx 32rpx;
line-height: 88rpx;
border-radius: 25rpx 25rpx 0rpx 0rpx;
background-size: 100% auto !important;
}
.popup-mask {
width: 750rpx;
background-color: rgba(0, 0, 0, 0.3);
position: fixed;
top: 0rpx;
bottom: 0;
right: 0;
left: 0;
z-index: 9;
}
.popup {
padding: 0 32rpx;
// padding: 40rpx;
position: fixed;
top: 0rpx;
width: 750rpx;
background-color: #fff;
border-radius: 0 0 24rpx 24rpx;
z-index: 99999;
}
.list-wrap {
display: flex;
flex-direction: row;
}
.img-dui {
width: 36rpx;
height: 25rpx;
}
.list {
flex: 1;
height: 600rpx;
}
.item {
// margin-bottom: 24rpx;
height: 104rpx;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.title {
font-size: 28rpx;
color: #666;
}
.activet {
color: #36AA2E !important;
}
.btn-wrap {
margin-top: 32rpx;
display: flex;
flex-direction: row;
justify-content: center;
}
.sure-btn {
position: fixed;
bottom: 48rpx;
/* #ifdef H5 */
bottom: 118rpx;
/* #endif */
right: 32rpx;
left: 32rpx;
z-index: 11;
width: 686rpx;
height: 80rpx;
background-color: #FF9300;
border-radius: 44rpx;
opacity: 1;
align-items: center;
justify-content: center;
}
.sure {
font-size: 32rpx;
color: #fff;
}
.btn {
width: 200rpx;
height: 64rpx;
background-color: #EEEEEE;
border-radius: 32px 32px 32px 32px;
display: flex;
align-items: center;
justify-content: center;
}
.btn-unselect {
width: 240rpx;
}
.btn-unselect.active {
margin-left: 20rpx;
}
.btn-text {
font-size: 24rpx;
color: #666;
}
.active {
margin-left: 20rpx;
background-color: #36AA2E;
}
.btn-text-active {
font-size: 24rpx;
color: #fff;
}
</style>