Files
tcwm-uniapp-user/pages/index/index.vue
2024-06-06 11:50:53 +08:00

1806 lines
46 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="content">
<view @click="goAddress()" class="address text-bold">
<view class="address_name">{{address?address:'选择地址'}}</view>
<u-icon name="arrow-down" color="#333333" size="28"></u-icon>
</view>
<!-- #ifdef H5 -->
<view class="bg-white">
<!-- #endif -->
<!-- #ifndef H5 -->
<view class="bg-white" style="margin-top: 180rpx;">
<!-- #endif -->
<view class="padding-lr padding-top">
<view class="flex align-center padding-left" @click="goNav('/pages/index/search/index')"
style="border: 2rpx solid #FCD202;height: 80rpx;border-radius: 60rpx;">
<u-icon name="search" size="46"></u-icon>
<view class="flex-sub text-gray margin-left-sm">输入商家或商品名称</view>
<view class="search-btn">搜索</view>
</view>
</view>
<view class="padding-top padding-lr">
<swiper class="swiper radius" :autoplay="true" interval="2000" duration="500" :circular="true"
style="width: 100%;height: 280rpx;">
<swiper-item v-for="(item,index) in bannerList" :key='index' @click="goNav(item.url)">
<image :src="item.imageUrl" class="radius" style="width: 100%;height: 280rpx;"></image>
</swiper-item>
</swiper>
</view>
<view class="padding-lr radius" v-if="XCXIsSelect == '是'">
<u-grid :col="5" :border="false">
<u-grid-item v-for="(item,index) in gridData" :key='index' @tap="goDetail(item)">
<image :src="item.imageUrl" style="width: 92rpx;height: 92rpx;border-radius: 92rpx;">
</image>
<view class="grid-text margin-top-sm">{{item.name}}</view>
</u-grid-item>
</u-grid>
</view>
</view>
<!-- 公告 -->
<view class="flex justify-between align-center bg-white padding-bottom padding-lr radius bg-white"
style="width: 100%;height: 100rpx;">
<image src="../../static/images/index/gonggao.png" style="width: 126rpx;height: 30rpx;" mode=""></image>
<view class="flex-sub margin-left-sm">
<swiper class="swiper" autoplay="1500" :vertical='true' style="height: 40rpx;overflow: hidden;">
<swiper-item class="" v-for="(item,index) in noticeList" :key='index'>
<text>{{item.title}}</text>
</swiper-item>
</swiper>
</view>
</view>
<view class="flex justify-between padding-lr bg-white" v-if="XCXIsSelect == '是'">
<image src="../../static/images/index/jifen.png" @click="goNav('/my/integral/index')"
style="width: 338rpx;height: 180rpx;" mode=""></image>
<image src="../../static/images/index/renwu.png" @click="goNav('/my/task/index')"
style="width: 338rpx;height: 180rpx;" mode=""></image>
</view>
<!-- <view class="padding-top padding-lr bg-white" v-if="!shopStatus == 1&&XCXIsSelect=='是'">
<image src="../../static/images/index/banner.png" @click="goNav('/my/apply/index')"
style="width: 100%;height: 170rpx;" mode=""></image>
</view> -->
<!-- 活动推荐 -->
<view class="huodong flex justify-center" v-if="huodongList.length>0&&XCXIsSelect!='否'">
<view class="huodong-box flex justify-center">
<view class="huodong-box-c">
<view class="huodong-box-c-title flex justify-between align-center">
<view class="huodong-box-c-title-l flex align-center">
<image src="../../static/images/index/hd.png" mode=""></image>
</view>
<view class="huodong-box-c-title-r">
最快1小时送达
</view>
</view>
<view class="huodong-box-c-list">
<swiper @change="swiperChange" :indicator-dots="false" display-multiple-items="3"
:circular="true" style="height: 300rpx;" :autoplay="false" previous-margin="5"
:interval="300" :duration="300">
<swiper-item v-for="(item,index) in huodongList"
style="border-radius: 28rpx;height: 320rpx;"
@click="gotohuodong(item.name,item.url)">
<view class="swiper-item flex justify-center flex-wrap align-center"
style="width: 200rpx;height: 240rpx;background: linear-gradient(0deg, rgba(252, 210, 2, 0.8) 0%, rgba(252, 210, 2, 1) 100%);border-radius: 28rpx;"
:style="currents==index?'height:260rpx;border-radius: 28rpx;':'margin-top:14rpx;'">
<view class="flex justify-center align-center"
:style="currents==index?'height:200rpx':''"
style="width: 190rpx;height: 180rpx;border-radius: 28rpx;margin-top: 5rpx;">
<image :src="item.imageUrl"
style="width: 95%;height: 95%;border-radius: 20rpx;" mode="aspectFill">
</image>
</view>
<view class=""
style="width: 100%;text-align: center;font-size: 32rpx;color: white;font-weight: bold;padding-bottom: 10rpx;">
{{item.name}}
</view>
</view>
</swiper-item>
</swiper>
</view>
</view>
</view>
</view>
<!-- 推荐商家 -->
<view class="jxShop flex justify-center" v-if="jxlist.length>0&&XCXIsSelect!='否'">
<view class="jxShop-box flex justify-center">
<view class="jxShop-box-c">
<view class="jxShop-box-c-title flex justify-between align-center">
<view class="jxShop-box-c-title-l">
推荐商家
</view>
<view class="jxShop-box-c-title-r flex align-center" @click="gotoList()">
更多
<u-icon name="arrow-right" color="#1E1F31" size="28"></u-icon>
</view>
</view>
<view class="jxShop-box-c-list flex justify-between">
<view class="jxShop-box-c-list-item"
@click="goShopDet('/pages/index/shop/index?shopId='+item.shopId,item)"
v-for="(item,index) in jxlist" :key="index">
<image :src="item.shopCover" mode="aspectFill"></image>
<view class="jxShop-box-c-list-item-name">
{{item.shopName}}
</view>
</view>
<view class="jxShop-box-c-list-item" style="height: 0;">
</view>
<view class="jxShop-box-c-list-item" style="height: 0;">
</view>
</view>
</view>
</view>
</view>
<view class="flex justify-center"
style="position: relative;background-color: #ffffff;padding-top: 20rpx;padding-bottom: 20rpx;">
<view style="width: 686rpx;" class="flex justify-between align-center bg-white">
<view :class="current==1?'select':''" @click="confirm(1)">综合排序</view>
<view :class="current==3?'select':''" @click="confirm(3)">距离优先</view>
<view :class="current==4?'select':''" @click="confirm(4)">销量优先</view>
<view class="flex" @click="isShow = !isShow">
<view class="flex align-center" style="margin: 0 auto;">
<view :class="isShow?'select':''">筛选</view>
<u-icon v-if="!isShow" name="arrow-down" size="28"></u-icon>
<u-icon v-if="isShow" name="arrow-up" color="#FCD202" size="28"></u-icon>
</view>
</view>
</view>
<view v-if="isShow"
style="position: absolute;top: 50rpx;width: 100%;z-index: 10;background: rgba(0,0,0,.5);height: 100vh;"
@click="isShow =false">
<view class="padding-lr bg-white">
<view class="flex justify-between align-center padding-tb-sm u-border-bottom"
v-for="(item,index) in options4" :key='index' @click.stop="getSelect(item)">
<view class="text-df" :class="item.select?'select':''">{{item.shopTypeName}}</view>
<u-icon v-if="item.select" name="checkmark" color="#FCD202" size="28"></u-icon>
</view>
</view>
</view>
</view>
<!-- 活动筛选 -->
<view class="hd flex justify-center" v-if="hdlist.length>0">
<view class="hd-box">
<scroll-view scroll-x="true" class="scroll-view_H">
<view class="hd-box-item" :style="currenthd==index?'background-color:#fcd202;':''"
@click="searchhd(index,item.activityId)" v-for="(item,index) in hdlist" :key="index">
{{item.activityTitle}}
</view>
</scroll-view>
</view>
</view>
<view class="padding-lr">
<view class="margin-tb-sm flex justify-between bg-white padding-sm radius"
v-for="(item,index) in shopList" :key='index'
@click="goShopDet('/pages/index/shop/index?shopId='+item.shopId,item)">
<image :src="item.shopCover[0]" class="radius" style="width: 160rpx;height: 160rpx;"></image>
<view class=" margin-left-sm" style="width: 450rpx;">
<view class=" flex flex-direction justify-between">
<view class="text-lg text-bold text-black">{{item.shopName}}</view>
<view class="flex align-center margin-top-xs" style="width: 100%;">
<u-icon name="star-fill" color="#FD6416" size="28"></u-icon>
<text class="text-lg" style=""> {{item.shopScore?item.shopScore:0}}</text>
<text
class="text-gray flex-sub margin-left-xs">销量{{item.shopSales?item.shopSales:0}}</text>
<text class="text-gray margin-left-xs">{{item.errandTime}}分钟</text>
<text class="text-gray margin-left-xs">{{item.distance}}</text>
</view>
<view class="text-gray margin-top-xs flex justify-between">
<view>起送 ¥{{item.minimumDelivery}} 配送 ¥{{item.errandMoney?item.errandMoney:0}}</view>
<view style="color: #FCD202;">{{item.autoSendOrder==1?'商家配送':'平台配送'}}</view>
</view>
<view class="text-gray margin-top-xs" v-if="item.businessHours&&item.lockHours">
营业时间{{item.businessHours}}-{{item.lockHours}}</view>
<view class="flex margin-top-xs justify-between align-start" style="width: 100%;">
<view class="flex flex-wrap align-center"
style="width: 100%;height: 100%;overflow: hidden;">
<view class="lable flex justify-center align-center" v-if="item.exemptMinMoney">
{{item.exemptMinMoney}}免配送费</view>
<view class="lable flex justify-center align-center"
v-for="(ite,ind) in item.shopLable" :key='ind' v-if="item.shopLable">
{{ite}}
</view>
<view class="lable flex justify-center align-center" v-if="item.couponList"
style="border-radius: 4rpx;border: 1rpx solid red;background-color: #ffffff;color: red;box-sizing: border-box;"
v-for="(it,ide) in item.couponList" :key="ide">{{it.minMoney}}{{it.money}}
</view>
</view>
</view>
</view>
<view class="flex margin-top-xs">
<view v-for="(ite,ind) in item.goodsList" :key='ind'
@click.stop="goDet(ite.goodsId,item.shopId)" style="width: 33%;">
<image :src="ite.goodsCover" style="width: 120rpx;height: 120rpx;" class="radius"
mode="">
</image>
<view class="u-line-1 text-df text-bold margin-top-xs">{{ite.goodsName}}</view>
<view class="text-bold margin-top-xs" style="color: #FD6416;"> <text
class="text-sm">¥</text> {{ite.goodsMoney}}</view>
</view>
</view>
</view>
</view>
</view>
<!-- <empty v-if="!shopList.length" ></empty> -->
<view class="page-box" v-if="!shopList.length">
<view class="centre">
<image src="../../static/images/empty.png" mode=""></image>
<view class="tips">暂无内容</view>
</view>
</view>
<!-- 打样提示 -->
<view v-if="hintShow" class="hintPopul" @click.stop="hintShow=false">
<view class="content_">
<image src="../../static/images/index/shop.png" mode="" style="width: 200rpx;height: 180rpx;">
</image>
<view class="text-xl text-bold">店铺打烊啦</view>
<view class="hintText margin-top-sm text-gray">现在店铺已经打烊了,营业时间</view>
<view class="margin-top-xs text-gray margin-bottom">{{shop.businessHours}}-{{shop.lockHours}}</view>
<view class="skuBtn" @click="hintShow=false">知道了</view>
</view>
</view>
<u-popup v-model="Authorization" mode="center" close-icon="close-circle" close-icon-pos="top-right"
close-icon-color="#8f9298" close-icon-size="50">
<view class="contentview">
<view class="title">隐私保护指引</view>
<view class="des" @click="openPrivacyContract">
在使用当前小程序服务之前请仔细阅读<text
style="color: #FF7F00;">{{privacyContractName}}</text>如你同意{{privacyContractName}}请点击同意开始使用
</view>
<view class="btns">
<button class="item reject" @click="exitMiniProgram">拒绝</button>
<button id="agree-btn" class="item agree" open-type="agreePrivacyAuthorization"
@agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button>
</view>
</view>
</u-popup>
<!-- 新人红包 -->
<view class="hongbao" v-if="waimaiHB == '是' &&HBShow">
<view style="width: 62%;margin: 0 auto;position: relative;">
<view @click="HBShow=false"
style="position: absolute;right: -10rpx;top: -10rpx;z-index: 999;;font-size: 60rpx;font-weight: bold;">
X
</view>
<image src="../../static/images/index/hb_bg.png" class="hb_img" @click="takemoney()"></image>
<!-- <image src="../../static/images/index/hb_btn.png" class="hb_btn" @click="takemoney()"></image> -->
</view>
</view>
</view>
</template>
<script>
import empty from '@/components/empty.vue'
import {
requestAndroidPermission,
gotoAppPermissionSetting
} from '@/components/permission.js'
export default {
components: {
empty
},
data() {
return {
Authorization: false,
privacyContractName: '',
lookShow: false,
currenthd: -1,
hdlist: [],
activityId: '',
currents: 1,
HBShow: false,
isShow: false,
hintShow: false,
address: '暂无地址',
bannerList: [{
"id": 3,
"createTime": "2021-12-24 17:52:27",
"name": "banner3",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2021/12/24/0bfdbabcde9c62b42e77aecdb583033b.png",
"state": 1,
"classify": 1,
"url": "",
"sort": 3,
"describess": "banner3"
},
{
"id": 45,
"createTime": "2021-12-24 17:52:27",
"name": "banner",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2021/12/24/589d72b40a690147a48854a3b7f88953.png",
"state": 1,
"classify": 1,
"url": "",
"sort": 1,
"describess": ""
},
],
gridData: [{
"id": 22,
"createTime": "2022-02-18 16:44:17",
"name": "外卖",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/9c6bac5a332188f22d7a692831b09c1c.png",
"state": 1,
"classify": 4,
"url": "/pages/index/shopList/index",
"sort": 1,
"describess": "精品1"
}, {
"id": 26,
"createTime": "2022-02-18 16:44:17",
"name": "水果",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/8aa4e61ded3fc8b341be14acba170607.png",
"state": 1,
"classify": 4,
"url": "/pages/index/shopList/index",
"sort": 1,
"describess": "精品2"
}, {
"id": 51,
"createTime": "2022-02-18 16:44:17",
"name": "日用好货",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/c52f353674722c5db28186850607ea6d.png",
"state": 1,
"classify": 4,
"url": "/pages/index/shopList/index",
"sort": 1,
"describess": "美食类型商铺"
}, {
"id": 59,
"createTime": "2022-02-18 16:44:17",
"name": "肉蛋蔬菜",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/81a44aeb97590c8961afa6a642ab0a7a.png",
"state": 1,
"classify": 4,
"url": "/pages/index/shopList/index",
"sort": 1,
"describess": null
}, {
"id": 60,
"createTime": "2022-02-18 16:44:17",
"name": "大牌乳品",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/62d5d5700811720d601a448e21fd4564.png",
"state": 1,
"classify": 4,
"url": "/pages/index/shopList/index",
"sort": 1,
"describess": null
}, {
"id": 61,
"createTime": "2022-02-18 16:44:17",
"name": "帮我送",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/5ee033f64352b96941cd55ff5cc2f86e.png",
"state": 1,
"classify": 4,
"url": "/running/Helpsend/Helpsend?index=1",
"sort": 1,
"describess": null
}, {
"id": 62,
"createTime": "2022-02-18 16:44:17",
"name": "帮我取",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/56ab760223015b1cd33caf1f9af73cda.png",
"state": 1,
"classify": 4,
"url": "/running/Helpsend/Helpsend?index=2",
"sort": 1,
"describess": null
}, {
"id": 63,
"createTime": "2022-02-18 16:44:17",
"name": "同城服务",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/d01391db321b35a76a76b3b0c485a0d0.png",
"state": 1,
"classify": 4,
"url": "/running/Cityservice/Cityservice",
"sort": 1,
"describess": null
}, {
"id": 64,
"createTime": "2022-02-18 16:44:17",
"name": "陪玩服务",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/795f621be2eb7df2dcf740ad30c7cedd.png",
"state": 1,
"classify": 4,
"url": "/running/Cityservice/Cityservice?title=陪玩服务",
"sort": 1,
"describess": null
}, {
"id": 65,
"createTime": "2022-02-18 16:44:17",
"name": "同城帮买",
"imageUrl": "https://diancan.xianmxkj.com/file/uploadPath/2022/02/18/04d342ce358635ff0196f88c8736441e.png",
"state": 1,
"classify": 4,
"url": "/running/Helppay/Helppay",
"sort": 1,
"describess": null
}, ],
page: 1,
limit: 10,
shopList: [],
screen: '1',
lng: '',
lat: '',
shopType: '1',
shopTypeList: [{
id: '0',
shopTypeName: "全部"
}],
userId: '',
src1: '../../static/images/index/xia.png',
noticeList: [],
show: false,
typeShow: false,
current: 1,
sort: 1,
fabuclassifyId: '',
typeName: '全部',
fabuclassifyName: '筛选',
shopTypeId: '',
value1: 0,
value2: 0,
value3: 0,
value4: 0,
options1: [{
label: '综合排序',
value: 1,
}],
options2: [{
value: '3',
label: "距离优先"
}],
options3: [{
value: '4',
label: "销量优先"
}],
options4: [{
id: '',
select: true,
shopTypeName: "全部"
}],
defaultIndex: [0, 0, 0, 0],
filterData: [
[{
label: '综合排序',
value: '1',
}],
[{
label: '距离优先',
value: '3',
}],
[{
label: '销量优先',
value: '4',
}],
[{
label: '不限性别',
value: '0',
},
{
label: '限男生',
value: 1,
},
{
label: '限女生',
value: 2,
}
],
],
shopStatus: '',
shop: {},
title: '综合排序',
title1: '距离优先',
title2: '销量优先',
title3: '筛选',
XCXIsSelect: '否',
arr: [],
showModal: true,
shopId: '',
totalCount: 0,
newUserFlagWm: 2,
waimaiHB: '否',
tuiguang: '',
tuiguangImg: '',
huodongList: [],
jxlist: [],
}
},
onLoad(e) {
let that = this
that.userId = uni.getStorageSync('userId') ? uni.getStorageSync('userId') : ''
that.getZiZhi();
that.getBannerList()
that.getGridList()
that.getShopType()
that.getNoticeList()
// that.getHuoDongList() //活动列表
that.getHuoDList() //活动轮播
that.gethdlist();
uni.getLocation({
type: 'gcj02', //返回可以用于uni.openLocation的经纬度
success: function(res) {
console.log(res)
that.lat = res.latitude;
that.lng = res.longitude;
that.defaultAddress()
that.getShopList()
},
fail(e) {
uni.showModal({
title: '温馨提示',
content: '您的定位权限未开启,请开启后再来刷新操作吧!',
showCancel: true,
cancelText: '取消',
confirmText: '确认',
success: res => {
if (res.confirm) {
// #ifdef MP-WEIXIN
uni.openSetting({ // 打开设置页
success(rea) {
console.log(rea.authSetting)
}
});
// #endif
// #ifdef APP-PLUS
gotoAppPermissionSetting()
// #endif
}
}
});
}
});
console.log(that.lat, that.lng, '经纬度')
that.$Request.getT('/app/common/type/266').then(res => { //订单取消通知
if (res.code == 0) {
if (res.data && res.data.value) {
that.arr.push(res.data.value)
}
}
})
that.$Request.getT('/app/common/type/269').then(res => { //订单状态通知
if (res.code == 0) {
if (res.data && res.data.value) {
that.arr.push(res.data.value)
}
}
})
that.$Request.getT('/app/common/type/335').then(res => { //用户订单变更通知
if (res.code == 0) {
if (res.data && res.data.value) {
that.arr.push(res.data.value)
}
}
})
// #ifdef MP-WEIXIN
if (e.scene) {
const scene = decodeURIComponent(e.scene);
let list = scene.split(',');
let shopId;
if (list.length > 0) {
shopId = list[0]; //获取shopid
}
// uni.setStorageSync('shopId',e.shopId)
console.log(e, '首页')
console.log(scene, '商铺id')
console.log(shopId, 'shopId')
if (shopId) {
that.shopId = shopId
}
if (!that.userId) {
uni.navigateTo({
url: '/pages/public/login'
})
return;
}
setTimeout(function() {
uni.navigateTo({
url: '/pages/index/shop/index?shopId=' + that.shopId
})
}, 100)
} else if (e.orderId) {
uni.setStorageSync('orderId', e.orderId)
if (!that.userId) {
uni.navigateTo({
url: '/pages/public/login'
})
return;
}
setTimeout(function() {
uni.navigateTo({
url: '/pages/index/shop/goodsList?shopId=' + e.shopId
})
}, 100)
}
// #endif
},
onShow() {
let that = this
that.$Request.get('/app/common/type/264').then(res => {
if (res.code == 0) {
// #ifdef MP-WEIXIN
that.XCXIsSelect = res.data.value;
that.$queue.setData('XCXIsSelect', res.data.value);
that.$queue.setData('shangxianSelect', res.data.value);
// #endif
// #ifndef MP-WEIXIN
that.$queue.setData('XCXIsSelect', '是');
that.$queue.setData('shangxianSelect', '是');
that.XCXIsSelect = '是'
// #endif
}
});
that.getHuoDList() //活动轮播
that.gethdlist();
uni.getLocation({
type: 'gcj02', //返回可以用于uni.openLocation的经纬度
success: function(res) {
console.log(res)
that.lat = res.latitude;
that.lng = res.longitude;
}
});
that.userId = uni.getStorageSync('userId') ? uni.getStorageSync('userId') : ''
that.lng = uni.getStorageSync('lng') ? uni.getStorageSync('lng') : that.lng
that.lat = uni.getStorageSync('lat') ? uni.getStorageSync('lat') : that.lat
console.log(that.userId, '我的id')
// if (this.lng && this.lat) {
that.defaultAddress()
that.getjxShop(); //精选商家
// }
if (that.userId) {
that.getUserInfo()
// #ifdef MP-WEIXIN
if (that.showModal) {
that.openMsg()
}
// #endif
}
// this.getShopList()
},
onShareAppMessage(res) { //发送给朋友
return {
title: this.tuiguang,
path: '/pages/index/index',
imageUrl: this.tuiguangImg,
}
},
onShareTimeline(res) { //分享到朋友圈
return {
title: this.tuiguang,
path: '/pages/index/index',
imageUrl: this.tuiguangImg,
}
},
methods: {
// 打开隐私协议页面
openPrivacyContract() {
let that = this;
wx.openPrivacyContract({
fail: () => {
that.$queue.showToast('遇到错误无法打开!');
}
})
},
// 拒绝隐私协议
exitMiniProgram() {
// 直接退出小程序
wx.exitMiniProgram()
},
// 同意隐私协议
handleAgreePrivacyAuthorization() {
// this.$refs.popusAuthorization.close();
this.Authorization = false;
let that = this;
uni.getLocation({
type: 'gcj02', //返回可以用于uni.openLocation的经纬度
success: function(res) {
console.log(res)
that.lat = res.latitude;
that.lng = res.longitude;
that.defaultAddress()
that.getShopList()
},
fail(e) {
uni.showModal({
title: '温馨提示',
content: '您的定位权限未开启,请开启后再来刷新操作吧!',
showCancel: true,
cancelText: '取消',
confirmText: '确认',
success: res => {
if (res.confirm) {
// #ifdef MP-WEIXIN
uni.openSetting({ // 打开设置页
success(rea) {
console.log(rea.authSetting)
}
});
// #endif
// #ifdef APP-PLUS
gotoAppPermissionSetting()
// #endif
}
}
});
}
});
},
selectShow() {
this.lookShow = !this.lookShow
},
//筛选活动
searchhd(index, activityId) {
if (index == this.currenthd) {
this.currenthd = -1
this.activityId = '';
this.getShopList()
} else {
this.currenthd = index;
this.activityId = activityId;
this.getShopList()
}
},
//获取所有活动
gethdlist() {
this.$Request.get("/app/activityManage/getActivityList").then(res => {
if (res.code == 0) {
res.data.records.map((item, index) => {
if (item.activityId == 14) {
res.data.records.splice(index, 1)
}
})
this.hdlist = res.data.records
}
});
},
// 获取精选商家
getjxShop() {
let data = {
activityId: 14,
page: 1,
limit: 4,
lat: this.lat,
lng: this.lng,
}
this.$Request.get("/app/activityManage/getShoActivityShopList", data).then(res => {
if (res.code == 0) {
this.jxlist = res.data.records
}
});
},
gotoList() {
uni.navigateTo({
url: '/running/huodong/list?activityId=14'
})
},
gotohuodong(name, url) {
uni.navigateTo({
url: url + '?activityTitle=' + name
})
},
// 获取活动轮播图
getHuoDList() {
let data = {
classify: 12
}
this.$Request.get("/app/banner/selectBannerList", data).then(res => {
if (res.code == 0) {
let arr = []
arr = res.data
arr.map((item, index) => {
if (item.name == '推荐商家') {
arr.splice(index, 1)
}
})
this.huodongList = arr
}
});
},
swiperChange(e) {
if (this.huodongList.length - 1 == e.detail.current) {
this.currents = 0
} else {
this.currents = e.detail.current + 1
}
// this.moneys = this.swiper[this.currents].mysteryBoxTypePrice
// this.boxType = this.swiper[this.currents].mysteryBoxTypeId
// this.getgoodsList(this.swiper[this.currents].mysteryBoxTypeId)
},
//活动列表
getHuoDongList() {
// huodongList
//
this.$Request.getT('/app/activityManage/getActivityList').then(res => {
if (res.code === 0) {
this.huodongList = res.data.records
}
});
},
// 分享文案和图片
getZiZhi() {
this.$Request.getT('/app/common/type/239').then(res => {
if (res.code === 0) {
this.tuiguang = res.data.value;
}
});
this.$Request.getT('/app/common/type/238').then(res => {
if (res.code === 0) {
this.tuiguangImg = res.data.value;
}
});
},
// 红包
takemoney() {
this.$Request.getT('/app/userinfo/getNewUserRedPacketWm').then(res => {
console.log(res.code)
if (res.code == 0) {
this.HBShow = false
this.getUserInfo()
setTimeout(function() {
uni.navigateTo({
url: '/my/coupon/index'
})
}, 100)
}
});
},
getSelect(e) {
console.log(e)
this.options4.forEach(res => {
if (res.id == e.id) {
res.select = true
this.page = 1
this.shopTypeId = e.id
this.getShopList();
this.isShow = false
} else {
res.select = false
}
})
},
// 获取用户信息
getUserInfo() {
this.$Request.getT('/app/user/selectUserMessage').then(res => {
console.log(res)
if (res.code == 0) {
this.shopStatus = res.data.shopStatus
this.newUserFlagWm = res.data.newUserFlagWm
if (this.newUserFlagWm == 1) {
this.waimaiHB = this.$queue.getData('waimaiHB');
if (this.waimaiHB === '是') {
this.HBShow = true
}
} else {
this.HBShow = false
}
}
});
},
// 获取公告
getNoticeList() {
let data = {
page: 1,
limit: 100
}
this.$Request.get("/app/notice/selectNoticeList", data).then(res => {
if (res.code == 0) {
this.noticeList = res.data.list
}
});
},
confirm(e) {
this.isShow = false
this.page = 1
this.current = e;
this.getShopList();
},
// 获取轮播图
getBannerList() {
let data = {
classify: 1
}
this.$Request.get("/app/banner/selectBannerList", data).then(res => {
if (res.code == 0) {
this.bannerList = res.data
}
});
},
// 获取轮播图
getGridList() {
let data = {
classify: 4
}
this.$Request.get("/app/banner/selectBannerList", data).then(res => {
if (res.code == 0) {
this.gridData = res.data
}
});
},
// 商户类型
getShopType() {
this.$Request.getT('/app/shoptype/selectShopTypeList').then(res => {
if (res.code == 0) {
// this.shopTypeList = [...this.shopTypeList ,...res.data]
res.data.forEach(res => {
res.select = false
})
this.options4 = [...this.options4, ...res.data]
console.log(this.options4, '+++++++++++++++++++')
}
})
},
// 商户列表
getShopList() {
uni.setStorageSync('lng', this.lng);
uni.setStorageSync('lat', this.lat);
let data = {
page: this.page,
limit: this.limit,
screen: this.current,
shopTypeId: this.shopTypeId,
lng: this.lng,
lat: this.lat,
activityId: this.activityId
}
this.$Request.getT('/app/goods/selectShop', data).then(res => {
if (res.code == 0) {
console.log(res.data.list)
this.totalCount = res.data.totalCount
res.data.list.forEach(ret => {
if (ret.distance > 1000) {
ret.distance = Number((ret.distance / 1000)).toFixed(2) + "km"
} else {
if (ret.distance == 0) {
ret.distance = "0m";
} else {
ret.distance = Number(ret.distance).toFixed(1) + "m";
}
}
ret.shopScore = ret.shopScore.toFixed(1)
ret.shopLable = ret.shopLable ? ret.shopLable.split(',') : ''
ret.shopCover = ret.shopCover ? ret.shopCover.split(',') :
'../../static/logo.png'
ret.errandTime = Math.round(ret.errandTime)
})
if (this.page == 1) {
this.shopList = res.data.list
} else {
this.shopList = [...this.shopList, ...res.data.list]
}
console.log(this.shopList)
}
uni.stopPullDownRefresh();
uni.hideLoading()
})
},
goNav(url) {
console.log(url)
if (this.userId) {
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
console.log(JSON.stringify(re), 111111111111)
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
// console.log(re)
}
},
fail: (res) => {
// console.log(res)
}
})
}
uni.navigateTo({
url
})
} else {
uni.navigateTo({
url: '/pages/public/login'
})
}
},
goShopDet(url, e) {
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
console.log(JSON.stringify(re), 111111111111)
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
// console.log(re)
}
},
fail: (res) => {
// console.log(res)
}
})
}
this.shop = e
// console.log(e, '当前店铺')
// let myDate = new Date();
// let hours = myDate.getHours();
// let minute = myDate.getMinutes();
// let openTime = this.shop.businessHours.split(':')[0] //开始小时
// let openTime1 = this.shop.businessHours.split(':')[1] //开始分钟
// let closeTime = this.shop.lockHours.split(':')[0] //结束小时
// let closeTime1 = this.shop.lockHours.split(':')[1] //结束分钟.
// console.log(hours)
// console.log(minute)
// console.log(openTime)
// console.log(openTime1)
// console.log(closeTime)
// console.log(closeTime1)
// console.log(minute >= closeTime1)
// if (hours < openTime) {
// this.hintShow = true
// return
// } else if (hours == openTime && minute < openTime1) {
// this.hintShow = true
// return
// } else if (hours >= closeTime) {
// this.hintShow = true
// return
// } else if (hours == closeTime && minute >= closeTime1) {
// this.hintShow = true
// return
// }
console.log(url)
if (this.userId) {
uni.navigateTo({
url
})
} else {
uni.navigateTo({
url: '/pages/public/login'
})
}
},
defaultAddress() {
if (uni.getStorageSync('city')) {
this.address = uni.getStorageSync('city')
this.lng = uni.getStorageSync('lng')
this.lat = uni.getStorageSync('lat')
this.page = 1
this.getShopList()
return
}
let data = {
page: 1,
limit: 1000
}
this.$Request.get('/app/address/selectAddressList', data).then(res => {
if (res.code == 0 && res.data.list.length) {
this.address = res.data.list[0].addressDetail
this.lng = res.data.list[0].lng
this.lat = res.data.list[0].lat
res.data.list.forEach(res => {
if (res.addressDefault) {
this.address = res.addressDetail
this.lng = res.lng
this.lat = res.lat
}
})
console.log('选择的经纬度', this.lng, this.lat)
} else {
let data = {
lat: this.lat,
lng: this.lng
}
this.$Request.get("/app/address/selectCity", data).then(res => {
if (res.code == 0) {
this.address = res.data.city
// console.log(3333333333)
// this.getShopList()
}
});
}
this.page = 1
this.getShopList()
})
},
goAddress() {
let userId = this.$queue.getData('userId');
if (!userId) {
uni.navigateTo({
url: '/pages/public/login'
})
return
}
uni.navigateTo({
url: '/pages/index/selectCampus'
})
},
// 查看金刚区详情
goDetail(item) {
if (uni.getStorageSync('sendMsg')) {
console.log('授权+1')
wx.requestSubscribeMessage({
tmplIds: this.arr,
success(re) {
console.log(JSON.stringify(re), 111111111111)
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
// console.log(re)
}
},
fail: (res) => {
// console.log(res)
}
})
}
let userId = this.$queue.getData('userId');
if (!userId) {
uni.navigateTo({
url: '/pages/public/login'
})
return
}
//如果是小程序跳转就是设置这个
if (item.describes) {
uni.navigateToMiniProgram({
appId: item.describes,
path: item.classifyUrl,
success: res => {
// 打开成功
console.log("打开成功", res);
},
fail: err => {
console.log(err);
}
})
return
}
uni.navigateTo({
url: item.url
});
},
// 开启订阅消息
openMsg() {
console.log('订阅消息')
var that = this
uni.getSetting({
withSubscriptions: true, //是否获取用户订阅消息的订阅状态默认false不返回
success(ret) {
console.log(ret.subscriptionsSetting, '------------------')
// if (ret.subscriptionsSetting.itemSettings && Object.keys(ret.subscriptionsSetting.itemSettings).length == 2) {
if (ret.subscriptionsSetting.itemSettings) {
uni.setStorageSync('sendMsg', true)
uni.openSetting({ // 打开设置页
success(rea) {
console.log(rea.authSetting)
}
});
} else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息
console.log(99999)
uni.setStorageSync('sendMsg', false)
uni.showModal({
title: '提示',
content: '为了更好的体验,请绑定消息推送',
confirmText: '确定',
cancelText: '取消',
success: function(res) {
if (res.confirm) {
console.log(that.arr)
wx.requestSubscribeMessage({
tmplIds: that.arr,
success(re) {
console.log(JSON.stringify(re),
'++++++++++++++')
var datas = JSON.stringify(re);
if (datas.indexOf("accept") != -1) {
console.log(re)
uni.setStorageSync('sendMsg', true)
}
},
fail: (res) => {
console.log(res)
}
})
uni.setStorageSync('sendMsg', true)
console.log('确认')
that.showModal = false
} else if (res.cancel) {
console.log('取消')
uni.setStorageSync('sendMsg', false)
that.showModal = true
}
}
})
}
}
})
},
// 跳转商品详情
goDet(goodsId, shopId) {
let userId = this.$queue.getData('userId');
if (!userId) {
uni.navigateTo({
url: '/pages/public/login'
})
return
}
uni.navigateTo({
url: '/pages/index/shop/goodsDet?goodsId=' + goodsId + '&shopId=' + shopId + '&orderType=2'
})
},
},
onReachBottom: function() {
if (this.shopList.length < this.totalCount) {
this.page = this.page + 1;
this.getShopList()
} else {
// uni.showToast({
// title: '已经到底了',
// icon: 'none'
// })
}
},
onPullDownRefresh: function() {
this.page = 1;
this.getShopList();
},
}
</script>
<style lang="scss" scoped>
.privacy {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: rgba(0, 0, 0, .5);
z-index: 9999999;
display: flex;
align-items: center;
justify-content: center;
}
.contentview {
width: 632rpx;
padding: 48rpx;
box-sizing: border-box;
background: #fff;
border-radius: 16rpx;
}
.contentview .title {
text-align: center;
color: #333;
font-weight: bold;
font-size: 32rpx;
}
.contentview .des {
font-size: 26rpx;
color: #666;
margin-top: 40rpx;
text-align: justify;
line-height: 1.6;
}
.contentview .des .link {
color: #07c160;
text-decoration: underline;
}
button::after {
border: none;
}
.btns {
margin-top: 48rpx;
display: flex;
}
.btns .item {
justify-content: space-between;
width: 244rpx;
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 16rpx;
box-sizing: border-box;
border: none;
}
.btns .reject {
background: #f4f4f5;
color: #909399;
}
.btns .agree {
background: #07c160;
color: #fff;
}
.hd {
width: 100%;
height: auto;
// margin-top: 20rpx;
background-color: #ffffff;
.hd-box {
width: 686rpx;
height: 100%;
// padding-top: 20rpx;
padding-bottom: 20rpx;
.scroll-view_H {
width: 100%;
white-space: nowrap;
}
.hd-box-item {
display: inline-block;
padding: 10rpx 20rpx 10rpx 20rpx;
background-color: #F7F5F6;
font-size: 24rpx;
border-radius: 8rpx;
margin-right: 10rpx;
}
}
}
.select {
color: #FCD202;
}
.jxShop {
width: 100%;
height: 320rpx;
background-color: #ffffff;
.jxShop-box {
margin-top: 20rpx;
width: 686rpx;
height: 300rpx;
// background-color: #F7F5F6;
// background: linear-gradient(rgba(252,210,2,0.4) 1%,#fffdf2 100%);
// background: linear-gradient(#ffee99 1%,#fffbe5 100%);
background: #fff8d3;
border-radius: 16rpx;
.jxShop-box-c {
width: 626rpx;
height: 100%;
}
.jxShop-box-c-title {
width: 100%;
margin-top: 20rpx;
}
.jxShop-box-c-title-l {
color: #1A1A1A;
font-size: 34rpx;
font-weight: 800;
}
.jxShop-box-c-title-r {
color: #1E1F31;
font-size: 26rpx;
font-weight: 500;
}
.jxShop-box-c-list {
width: 100%;
height: 190rpx;
margin-top: 20rpx;
}
.jxShop-box-c-list-item {
width: 149rpx;
height: 100%;
background: #ffffff;
border-radius: 8px;
image {
width: 100%;
height: 114rpx;
border-radius: 8rpx 8rpx 0 0;
}
.jxShop-box-c-list-item-name {
width: 149rpx;
text-align: center;
font-size: 28rpx;
color: #1A1A1A;
font-weight: bold;
margin-top: 10rpx;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding-left: 10rpx;
padding-right: 10rpx;
}
}
}
}
.huodong {
width: 100%;
height: 380rpx;
// margin-top: 20rpx;
background-color: #ffffff;
.huodong-box {
margin-top: 20rpx;
width: 686rpx;
height: 360rpx;
// background-color: #D4FCE2;
background-color: #fff8d3;
border-radius: 24rpx;
.huodong-box-c {
width: 646rpx;
height: 100%;
}
.huodong-box-c-title {
margin-top: 20rpx;
}
.huodong-box-c-title-l {
// color: #34CD40;
color: rgba(252, 210, 2, 1);
font-size: 44rpx;
font-weight: 600;
image {
width: 300rpx;
height: 50rpx;
}
// font-style: italic;
}
.huodong-box-c-title-r {
background: linear-gradient(114deg, rgba(252, 210, 2, 0.2) 0%, rgba(252, 210, 2, 0.5) 50%, rgba(252, 210, 2, 1) 100%);
border-radius: 40rpx;
color: white;
font-size: 26rpx;
font-weight: 600;
padding: 10rpx 20rpx;
}
.huodong-box-c-list {
width: 100%;
height: 320rpx;
margin-top: 10rpx;
}
.huodong-box-c-list-l {
width: 190rpx;
height: 250rpx;
background: linear-gradient(0deg, #34CD41 0%, #48DB19 100%);
border-radius: 24rpx;
}
.huodong-box-c-list-l-t {
width: 180rpx;
height: 240rpx;
border-radius: 24rpx;
background-color: #ffffff;
margin-top: 5rpx;
}
.huodong-box-c-list-l-t>image {
width: 160rpx;
height: 170rpx;
margin-top: 10rpx;
border-radius: 24rpx;
}
.huodong-box-c-list-l-t-b {
width: 100%;
height: 56rpx;
background-color: #E0F7F1;
color: #36CF3D;
font-size: 30rpx;
border-radius: 24rpx;
}
.huodong-box-c-list-l-t-t {
width: 100%;
text-align: center;
font-size: 36rpx;
// font-weight: bold;
font-weight: 600;
color: #ffffff;
}
.huodong-box-c-list-c {
width: 220rpx;
height: 280rpx;
background: linear-gradient(0deg, #34CD41 0%, #48DB19 100%);
border-radius: 24rpx;
}
.huodong-box-c-list-c-t {
width: 211rpx;
height: 270rpx;
border-radius: 24rpx;
background-color: #ffffff;
margin-top: 5rpx;
}
.huodong-box-c-list-c-t>image {
width: 186rpx;
height: 190rpx;
margin-top: 10rpx;
border-radius: 24rpx;
}
.huodong-box-c-list-c-b {
width: 100%;
height: 70rpx;
background-color: #E0F7F1;
color: #36CF3D;
font-size: 30rpx;
border-radius: 24rpx;
}
.huodong-box-c-list-c-t-t {
width: 100%;
text-align: center;
font-size: 36rpx;
// font-weight: bold;
font-weight: 600;
color: #ffffff;
}
}
}
.search-btn {
width: 132rpx;
height: 80rpx;
font-size: 28rpx;
text-align: center;
line-height: 80rpx;
background: #FCD202;
border-radius: 36px;
}
.address {
width: 100%;
background-color: #FCD202;
display: flex;
align-items: center;
// #ifndef H5
position: fixed;
top: 0;
height: 180rpx;
// line-height: 260rpx;
padding: 80rpx 34rpx 0rpx;
// #endif
// #ifdef H5
height: 80rpx;
line-height: 80rpx;
padding: 0 34rpx;
// #endif
font-size: 32rpx;
z-index: 999;
.address_name {
max-width: 90%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.lable {
border: 1rpx solid #FFE6D9;
height: 40rpx;
padding: 0 14rpx;
background: #FFE6D9;
border-radius: 4rpx;
font-weight: 500;
color: #FD6416;
font-size: 20rpx;
margin-right: 10rpx;
margin-bottom: 10rpx;
}
.tabs {
margin-bottom: 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.tabs_name {
flex: 1;
/* display: inline-block; */
text-align: center;
margin-bottom: 30rpx 0;
position: relative;
display: flex;
/* justify-content: space-between; */
align-items: center;
}
.tabs_name view {
margin: 0 auto;
display: flex;
align-items: center;
}
.tabs_2 {
/* width: 30%; */
}
.actives {
color: #007AFF;
}
.tabsicon {
position: absolute;
top: 0;
right: 22rpx;
width: 20rpx;
height: 40rpx;
z-index: 1;
}
.tabs_icon {
width: 12rpx;
height: 8rpx;
z-index: 1;
margin-left: 10rpx;
}
.icon1 {
/* position: absolute; */
/* top: 6rpx; */
}
.icon2 {
position: absolute;
bottom: 6rpx;
}
.page-box {
// position: relative;
// z-index: 0;
// top: 70px;
}
.centre {
margin: auto;
height: 400rpx;
text-align: center;
font-size: 32rpx;
}
.centre image {
width: 387rpx;
height: 341rpx;
margin: 40rpx auto 20rpx;
}
.centre .tips {
font-size: 32rpx;
color: #2F3044;
margin: 20rpx 0 40rpx;
font-weight: 700;
}
.hintPopul {
width: 100%;
height: 100%;
position: fixed;
top: 0;
background: rgba(0, 0, 0, .4);
z-index: 999;
}
.content_ {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
text-align: center;
width: 500rpx;
height: 400rpx;
border-radius: 20rpx;
background-color: #fff;
padding-top: 120rpx;
}
.content_ image {
position: absolute;
top: -50rpx;
left: 0;
right: 0;
margin: auto;
}
.hintText {
font-size: 30rpx;
}
.skuBtn {
width: 460rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
background: #FCD202;
font-size: 28rpx;
border: 2rpx solid #FCD202;
color: #333333;
border-radius: 50rpx;
font-weight: 700;
margin: auto;
}
.hongbao {
width: 100%;
/* height: 100px; */
/* background: #007AFF; */
position: fixed;
top: 34%;
/* bottom: 50%; */
left: 0rpx;
right: 0rpx;
/* display: none; */
}
.hb_img {
width: 100%;
height: 535rpx;
}
.hb_btn {
width: 70%;
height: 72rpx;
position: absolute;
top: 315rpx;
left: 80rpx;
}
</style>