You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
706 lines
16 KiB
706 lines
16 KiB
<template> |
|
<view class="pagecontent page-content my-bg"> |
|
<cu-custom bgColor="bg-blue"> |
|
<block slot="content">首页</block> |
|
</cu-custom> |
|
<view class="fixed"> |
|
<view class="bg-blue pagestart"> |
|
<view class="cu-bar search"> |
|
<!-- <view class="text-xxl margin-left text-center bg-blue"> |
|
<view class="cuIcon-scan"></view> |
|
</view> --> |
|
<view class="margin-left text-center"> |
|
<text>{{locationName}}</text> |
|
<text class="cuIcon-triangledown"></text> |
|
</view> |
|
<view class="search-form radius" @tap="InputFocus"> |
|
<text class="cuIcon-search"></text> |
|
<input disabled :adjust-position="false" type="text" placeholder="搜索油站名称" |
|
confirm-type="search" /> |
|
</view> |
|
</view> |
|
</view> |
|
|
|
<view class="bg-blue padding pagestarttwo"> |
|
<view class="grid col-4 text-center "> |
|
<view class="text-xxl" @tap="openScan"> |
|
<view class="cuIcon-scan"></view> |
|
<text class="text-df"> |
|
扫一扫 |
|
</text> |
|
</view> |
|
<view class="text-xxl" @tap="showQr"> |
|
<view class="cuIcon-qr_code"></view> |
|
<text class="text-df"> |
|
付款码 |
|
</text> |
|
</view> |
|
<view class="text-xxl" @tap="toCards"> |
|
<view class="cuIcon-vipcard"></view> |
|
<text class="text-df"> |
|
加油卡 |
|
</text> |
|
</view> |
|
<view class="text-xxl" @tap="toOrders"> |
|
<view class="cuIcon-form"></view> |
|
<text class="text-df"> |
|
订单中心 |
|
</text> |
|
</view> |
|
</view> |
|
</view> |
|
</view> |
|
|
|
<!-- 广告图片开始 --> |
|
<view class="my-bg padding" style="margin-top: 265rpx;"> |
|
<view> |
|
<swiper autoplay interval='5000' style="width: 100%;height: 204rpx;" class="swiper" circular> |
|
<swiper-item @click="swiperClick(item,index)" v-for="(item,index) in swiperArray"> |
|
<image :src="item.src" style="width: 100%;" mode="widthFix"></image> |
|
</swiper-item> |
|
<swiper-item> |
|
<ad unit-id="adunit-6dedd3908aa1c78c" ad-intervals="30" binderror="adError"></ad> |
|
</swiper-item> |
|
</swiper> |
|
<!-- <image :src="starUrl+'banner.png'" style="width: 100%;" mode="widthFix"></image> --> |
|
</view> |
|
</view> |
|
<!-- 筛选开始 --> |
|
<view class="screentop bg-white padding-top " @tap="scrollScreen"> |
|
<!-- <view> |
|
<sl-filter @result="filterRes" reflexTitle ref="slFilter" :menuList="menuList"></sl-filter> |
|
</view> --> |
|
<view> |
|
<view v-if="siteList.length>0"> |
|
<site-item :location='location' v-for="(item,index) in siteList" :key="item.id" :site-item="item" |
|
:first="index==0" :listHeight="listHeight" class="cu-list menu-avatar cu-item" |
|
@tap="toDetail(item)"> |
|
</site-item> |
|
</view> |
|
<view v-else> |
|
<my-empty></my-empty> |
|
</view> |
|
</view> |
|
</view> |
|
<msg-models :showAuthFrror="showAuthFrror" @hideOneModal="hideModel"></msg-models> |
|
<three-sites @hideOneModal="showThreeSites=false" :showThreeSites="showThreeSites"></three-sites> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import msgModels from '../../components/showModels.vue' |
|
import accountApi from '@/api/account.js' |
|
import threeSites from '@/components/three-sites.vue' |
|
import oilSiteApi from '@/api/oil-site.js' |
|
import siteItem from '@/components/site-item/site-item.vue' |
|
import Financial from '@/api/Financial.js' |
|
// import slFilter from '@/components/sl-filter/sl-filter.vue' |
|
export default { |
|
components: { |
|
siteItem, |
|
threeSites, |
|
msgModels |
|
// slFilter |
|
}, |
|
data() { |
|
return { |
|
location: null, |
|
swiperArray: [{ |
|
src: this.global.imgURL + 'banner-zhongpin.png', |
|
link: '' |
|
}, |
|
// src: 'https://xoil-public.oss-cn-beijing.aliyuncs.com/baichuan_MP/banner_baichuan.png', |
|
// JumpPage: '/Activity/pages/index/index' |
|
// src: 'https://xoil-public.oss-cn-beijing.aliyuncs.com/WMP-IMG/banner-2dwk.png', |
|
// link: 'https://tengxun.hkzj168.com/?ChannelId=20220831152210221048473' |
|
], |
|
listHeight: 160, |
|
siteInfo: { |
|
|
|
}, |
|
getCount: 0, |
|
siteId: '', |
|
showAuthFrzen: uni.getStorageSync('showAuthFrzen') ? uni.getStorageSync('showAuthFrzen') : 0, |
|
showAuthFrror: false, |
|
showThreeSites: false, |
|
filterData: {}, |
|
menuList: uni.getStorageSync('filterData') ? uni.getStorageSync('filterData') : [{ |
|
title: '渠道', |
|
isMutiple: false, |
|
key: 'channelCode', |
|
detailList: [{ |
|
title: "全部", |
|
value: "" |
|
}] |
|
}, |
|
{ |
|
title: '0#轻柴油', |
|
key: 'oilProductCode', |
|
isMutiple: false, |
|
detailList: [{ |
|
title: "全部", |
|
value: "" |
|
}] |
|
}, |
|
{ |
|
title: '品牌', |
|
key: 'siteBrand', |
|
isSort: true, |
|
isMutiple: false, |
|
detailList: [{ |
|
title: "全部", |
|
value: "" |
|
}] |
|
} |
|
], |
|
siteList: [], |
|
height: 0, |
|
starUrl: this.global.starUrl, |
|
qqMapKey: this.global.qqMapKey, |
|
|
|
imgURL: this.global.imgURL + 'index/', |
|
location: uni.getStorageSync('location'), |
|
InputBottom: 0, |
|
show: false, |
|
locationName: '', |
|
title: 'Hello', |
|
cuIconList: [{ |
|
iconUrl: 'icon-1.png', |
|
// icon: 'location', |
|
color: 'red', |
|
badge: 120, |
|
name: '附近油站' |
|
}, |
|
{ |
|
iconUrl: 'icon-2.png', |
|
color: 'orange', |
|
badge: 0, |
|
name: '线路规划' |
|
}, |
|
// { |
|
// iconUrl: 'icon-3.png', |
|
// color: 'yellow', |
|
// badge: 0, |
|
// name: '实体油卡' |
|
// }, |
|
{ |
|
iconUrl: 'icon-4.png', |
|
color: 'olive', |
|
badge: 0, |
|
name: '消费分析' |
|
}, |
|
{ |
|
iconUrl: 'icon-5.png', |
|
color: 'cyan', |
|
badge: 0, |
|
name: '消息中心' |
|
}, |
|
{ |
|
iconUrl: 'icon-6.png', |
|
color: 'red', |
|
badge: 0, |
|
name: '优惠券' |
|
}, |
|
{ |
|
iconUrl: 'icon-7.png', |
|
color: 'purple', |
|
badge: 0, |
|
name: 'ETC' |
|
}, |
|
// { |
|
// iconUrl: 'icon-8.png', |
|
// // icon: 'taxi', |
|
// color: 'mauve', |
|
// badge: 0, |
|
// name: '违章查询' |
|
// }, |
|
{ |
|
iconUrl: 'icon-9.png', |
|
color: 'purple', |
|
badge: 0, |
|
name: '我的车辆' |
|
}, |
|
|
|
{ |
|
iconUrl: 'iocn-10.png', |
|
color: 'cyan', |
|
badge: 0, |
|
name: '操作说明' |
|
}, |
|
|
|
] |
|
}; |
|
}, |
|
|
|
onLoad() { |
|
this.reverseGeocoder(this.location) |
|
}, |
|
|
|
onPullDownRefresh() { |
|
// this.refreshLocation() |
|
setTimeout(function() { |
|
uni.stopPullDownRefresh() |
|
}, 800); |
|
}, |
|
|
|
onShow() { |
|
this.location = uni.getStorageSync('location') |
|
const token = uni.getStorageSync('Authorization') |
|
const openid = uni.getStorageSync('openid') |
|
if (token && openid) { |
|
this.getAuthInfo() |
|
} |
|
this.refreshLocation(); |
|
}, |
|
|
|
methods: { |
|
toManagement() { |
|
const user = uni.getStorageSync('user'); |
|
if (user) { |
|
Financial.findHomePageReport({ |
|
customerId: user.id |
|
}).then(res => { |
|
if (res.data) { |
|
uni.navigateTo({ |
|
url: `../../../Financial/pages/estimate/index?data=${encodeURIComponent(JSON.stringify(res.data))}` |
|
}) |
|
} else { |
|
uni.navigateTo({ |
|
url: '../../../Financial/pages/index?guide=1' |
|
}) |
|
} |
|
}); |
|
} else { |
|
uni.showToast({ |
|
title: '请先登录!', |
|
icon: 'none' |
|
}) |
|
} |
|
}, |
|
|
|
swiperClick(item, index) { |
|
if (item?.JumpPage) { |
|
uni.navigateTo({ |
|
url: item.JumpPage |
|
}) |
|
} |
|
}, |
|
|
|
goToPage(url) { |
|
if (!url) return; |
|
uni.navigateTo({ |
|
url |
|
}); |
|
}, |
|
|
|
getAmount() { |
|
accountApi.getTotalOilCardInfo().then(res => { |
|
if (res.code == 20000) { |
|
this.userTotal = res.data |
|
} |
|
}) |
|
}, |
|
|
|
refreshLocation() { |
|
uni.getLocation({ |
|
type: 'wgs84', |
|
success: (res) => { |
|
uni.setStorageSync('location', res) |
|
}, |
|
fail: () => { |
|
uni.getSetting({ |
|
success: (res) => { |
|
if (!res.authSetting['scope.userLocation']) { |
|
uni.showModal({ |
|
title: '提示', |
|
content: '您暂无授权定位权限,将无法显示附近油站', |
|
confirmText: '去设置', |
|
success: (resSec) => { |
|
if (resSec.confirm) { |
|
uni.openSetting({ |
|
success: (resThird) => { |
|
if (resThird |
|
.authSetting[ |
|
'scope.userLocation' |
|
]) { |
|
this.refreshLocation() |
|
} |
|
} |
|
}) |
|
} |
|
} |
|
}) |
|
} |
|
} |
|
}) |
|
}, |
|
complete: () => { |
|
this.getSiteList() |
|
}, |
|
}); |
|
}, |
|
|
|
hideModel(name) { |
|
if (name == 'auth') { |
|
this.showAuthFrror = false |
|
if (this.showAuthFrzen <= new Date().getTime()) { |
|
uni.setStorageSync('showAuthFrzen', new Date().getTime() + 10 * 1000) |
|
} |
|
} |
|
}, |
|
|
|
getAuthInfo() { |
|
oilSiteApi.getUserAuthInfo().then(res => { |
|
if (res.code === 20000) { |
|
this.getAmount() |
|
if (this.showAuthFrzen <= new Date().getTime()) { |
|
this.showAuthFrror = res.data.realStatus && res.data.vehicleStatus ? false : |
|
true |
|
} |
|
} |
|
}) |
|
}, |
|
|
|
reverseGeocoder(location) { |
|
this.selLocation = location |
|
this.$qqmapsdk.reverseGeocoder({ |
|
location: location, |
|
success: (res) => { |
|
this.locationName = res.result.address_component.city |
|
} |
|
}) |
|
}, |
|
|
|
|
|
showQr() { |
|
let user = uni.getStorageSync("user"); |
|
if (!user) { |
|
uni.showModal({ |
|
content: "登录后才能出示付款码哦", |
|
confirmText: "去登录", |
|
success: function(res) { |
|
if (res.confirm) { |
|
uni.navigateTo({ |
|
url: "/BagAuth/pages/login/login", |
|
}); |
|
} |
|
}, |
|
}); |
|
return; |
|
} |
|
this.showThreeSites = true |
|
}, |
|
|
|
toCards() { |
|
let user = uni.getStorageSync("user"); |
|
if (!user) { |
|
uni.showModal({ |
|
content: "登录后才能查看哦", |
|
confirmText: "去登录", |
|
success: function(res) { |
|
if (res.confirm) { |
|
uni.navigateTo({ |
|
url: "/BagAuth/pages/login/login", |
|
}); |
|
} |
|
}, |
|
}); |
|
return; |
|
} |
|
uni.navigateTo({ |
|
url: '/BagMoney/pages/oilCards/oilCards' |
|
}) |
|
}, |
|
|
|
toOrders() { |
|
let user = uni.getStorageSync("user"); |
|
if (!user) { |
|
uni.showModal({ |
|
content: "登录后才能查看哦", |
|
confirmText: "去登录", |
|
success: function(res) { |
|
if (res.confirm) { |
|
uni.navigateTo({ |
|
url: "/BagAuth/pages/login/login", |
|
}); |
|
} |
|
}, |
|
}); |
|
return; |
|
} |
|
uni.switchTab({ |
|
url: '/pages/tabbar/order/orderList/orderList' |
|
}) |
|
}, |
|
|
|
filterRes(val) { |
|
this.filterData = val |
|
this.getSiteList() |
|
}, |
|
|
|
getSiteList() { |
|
let params = { |
|
currentPage: 1, |
|
pageSize: 10, |
|
params: { |
|
longitude: 117.157817, |
|
latitude: 31.802472, |
|
clientBelong: 'ZHONGPIN', |
|
comprehensiveSort: 1, |
|
zpDisable: 'ENABLE', |
|
sort: "juli", |
|
...uni.getStorageSync('location'), |
|
...this.filterData, |
|
} |
|
}; |
|
|
|
oilSiteApi.getSiteLists(params).then(res => { |
|
if (res.code == 20000) { |
|
this.siteList = res.data.list |
|
} |
|
}) |
|
}, |
|
|
|
toDetail(item) { |
|
let user = uni.getStorageSync("user"); |
|
if (!user) { |
|
uni.showModal({ |
|
content: "登录后才能查看哦", |
|
confirmText: "去登录", |
|
success: function(res) { |
|
if (res.confirm) { |
|
uni.navigateTo({ |
|
url: "/BagAuth/pages/login/login", |
|
}); |
|
} |
|
}, |
|
}); |
|
return; |
|
} |
|
let itemS = encodeURIComponent(JSON.stringify(item)); |
|
uni.navigateTo({ |
|
url: `/BagStation/pages/stationDetail/stationDetail?item=${itemS}` |
|
}) |
|
|
|
}, |
|
|
|
InputFocus(e) { |
|
uni.switchTab({ |
|
url: '/pages/tabbar/station/stationList' |
|
}) |
|
}, |
|
|
|
getSiteInfo(id) { |
|
let data2 = { |
|
...uni.getStorageSync('location'), |
|
siteId: id |
|
} |
|
oilSiteApi.getSiteDetails(data2).then(res => { |
|
if (res.code == 20000) { |
|
this.siteInfo = res.data |
|
if (res.data.oilSiteChannelDetailsVos.length == 1 && res.data.oilSiteChannelDetailsVos[0] |
|
.activePay) { |
|
uni.setStorageSync('tempScanSite', this.siteInfo) |
|
this.makePay() |
|
} else { |
|
this.toDetail(this.siteId) |
|
} |
|
} |
|
}) |
|
}, |
|
|
|
makePay() { |
|
uni.navigateTo({ |
|
url: `/BagStation/pages/makeOrder/makeOrder?siteId=${this.siteId}` |
|
}) |
|
}, |
|
|
|
getScanRes(code) { |
|
let data2 = { |
|
qrCode: code |
|
} |
|
oilSiteApi.getScanRes(data2).then(res => { |
|
if (res.code == 20000) { |
|
this.siteId = res.data.siteId |
|
this.getSiteInfo(this.siteId) |
|
} |
|
}) |
|
}, |
|
|
|
openScan() { |
|
let user = uni.getStorageSync("user"); |
|
if (!user) { |
|
uni.showModal({ |
|
content: "登录后才能使用扫一扫哦", |
|
confirmText: "去登录", |
|
success: function(res) { |
|
if (res.confirm) { |
|
uni.navigateTo({ |
|
url: "/BagAuth/pages/login/login", |
|
}); |
|
} |
|
}, |
|
}); |
|
return; |
|
} |
|
uni.scanCode({ |
|
scanType: 'qrCode', |
|
onlyFromCamera: false, |
|
success: (res) => { |
|
|
|
this.getScanRes(res.result) |
|
}, |
|
fail: (err) => { |
|
uni.showToast({ |
|
title: err |
|
}) |
|
} |
|
}) |
|
}, |
|
|
|
scrollScreen() { |
|
uni.createSelectorQuery().selectViewport().scrollOffset(res => { |
|
let view = uni.createSelectorQuery().in(this).select(".screentop"); |
|
let cuBar = uni.createSelectorQuery().in(this).select(".cu-bar"); |
|
view.boundingClientRect(data => { |
|
cuBar.boundingClientRect(dataCu => { |
|
if (data.top > dataCu.top) { |
|
uni.pageScrollTo({ |
|
scrollTop: data.top - dataCu.top, |
|
duration: 0, |
|
}); |
|
} |
|
}).exec(); |
|
}).exec(); |
|
}).exec(); |
|
}, |
|
|
|
adError(err) { |
|
console.log('add err', err) |
|
}, |
|
// shadoumeiyou(index) { |
|
// if (index == 0) { |
|
// uni.switchTab({ |
|
// url: '/pages/tabbar/station/stationList' |
|
// }) |
|
// } else if (index == 1) { |
|
// const referer = '星油云'; //调用插件的app的名称 |
|
// uni.removeStorageSync("origins") |
|
// uni.removeStorageSync("destination") |
|
// wx.navigateTo({ |
|
// url: '../../../BagStation/pages/routePlain/routePlain' |
|
// }) |
|
// } else if (index == 8) { |
|
// this.goToPage('/BagAuth/pages/agreeMent/OperationGuide') |
|
// } |
|
// else { |
|
// uni.showToast({ |
|
// title: '功能暂无', |
|
// icon: 'none' |
|
// }) |
|
// } |
|
// }, |
|
|
|
// getFilterData() { |
|
// oilSiteApi.getCheckInfo().then(res => { |
|
// if (res.code == 20000) { |
|
// let channelCodes = [] |
|
// res.data.channelCodes.map(item => { |
|
// channelCodes.push({ |
|
// title: item.name, |
|
// value: item.id |
|
// }) |
|
// }) |
|
// let productCodes = [] |
|
// res.data.productCodes.map(item => { |
|
// productCodes.push({ |
|
// title: item.name, |
|
// value: item.id |
|
// }) |
|
// }) |
|
// let siteBrands = [] |
|
// res.data.siteBrands.map(item => { |
|
// siteBrands.push({ |
|
// title: item.name, |
|
// value: item.id |
|
// }) |
|
// }) |
|
// this.menuList[0].detailList.concat(channelCodes) |
|
// this.menuList[1].detailList.concat(productCodes) |
|
// this.menuList[2].detailList.concat(siteBrands) |
|
// uni.setStorageSync('filterData', this.menuList) |
|
// } |
|
// }) |
|
// }, |
|
} |
|
}; |
|
</script> |
|
|
|
<style scoped> |
|
.bottom-bar { |
|
position: relative; |
|
padding-top: 50px; |
|
margin-bottom: 0; |
|
margin-top: 0; |
|
} |
|
|
|
.main-topbar>>>.cu-bar { |
|
height: 380rpx !important; |
|
z-index: 0 !important; |
|
} |
|
|
|
.main-topbar>>>.cu-bar .content { |
|
padding-bottom: 300rpx; |
|
} |
|
|
|
.bottom-bar-fixed { |
|
position: fixed; |
|
bottom: 0; |
|
padding-top: 70rpx; |
|
width: 100%; |
|
} |
|
|
|
.main-money { |
|
position: relative; |
|
z-index: 1; |
|
} |
|
|
|
.van-tag { |
|
display: inline-block; |
|
padding: 0.3rem 0.4rem; |
|
position: absolute; |
|
right: 1px; |
|
font-size: 12px; |
|
top: 25%; |
|
background-color: #b9ffca; |
|
border-radius: 10rem 0 0 10rem; |
|
border-color: transparent; |
|
} |
|
|
|
.screentop { |
|
min-height: 50vh; |
|
} |
|
|
|
.cu-list.menu-avatar>.cu-item { |
|
height: 175rpx; |
|
} |
|
|
|
.fixed { |
|
width: 750upx; |
|
position: fixed; |
|
z-index: 2; |
|
} |
|
|
|
|
|
.my-icon-sm { |
|
display: inline-block; |
|
width: 70upx; |
|
text-align: center; |
|
max-height: 70upx; |
|
overflow: hidden; |
|
} |
|
|
|
.my-icon-sm .text-sm { |
|
line-height: 1rem; |
|
} |
|
</style> |