<template> <view class="content bg-white position-re"> <!-- <cu-custom class="bg-main-oil" isBack bgColor="bg-main-oil"> <block slot="content">中石化紫云路</block> <block slot="backText">返回</block> </cu-custom> --> <view class="bg-img fixed-top flex align-end margin-bottom-lg " :style="'background-image: url('+otherImgURL+'bg.png '+');width: 750upx;height: 326rpx;background-size:cover'"> <image @tap="goBack" :src="imgURL+'site-back.png'" width="20upx" mode="widthFix" class="position-ab site-back"> </image> <view class="cu-list menu margin padding-sm radius my-shadow bg-white yu-card-xuan"> <view class="cu-item "> <view class="content"> <view class="strong padding-bottom-xs"> {{siteInfo.siteName}} </view> <view class="font-12 color-999 site-label text-cut"> {{siteInfo.address}} </view> <view class="font-12 color-999 site-label text-cut"> 营业时间 00:00 至 23:59 </view> </view> <view class="action " @tap="openMap"> <view class="oil-main-color"> <my-icon iconName="sy-der-icon.png" class="padding-right-xs text-sm"></my-icon> <text v-if="!location">暂无信息</text> <text v-else>{{siteInfo.juli|distanceFilter}}</text> </view> </view> </view> </view> </view> <view class="bg-img placeholder-hidden flex align-end margin-bottom-lg " :style="'background-image: url('+imgURL+'site-bg.png '+');width: 750upx;height: 326rpx;background-size:cover'"> <image @tap="goBack" :src="imgURL+'site-back.png'" width="20upx" mode="widthFix" class="position-ab site-back"> </image> <view class="flex-sub"> <view class="cu-list menu margin padding-sm radius my-shadow bg-white yu-card-xuan"> <view class="cu-item "> <view class="content"> <view class="strong padding-bottom-xs"> {{siteInfo.siteName}} </view> <view class="font-12 color-999 site-label text-cut"> {{siteInfo.address}} </view> <view class="font-12 color-999 site-label text-cut"> 营业时间 00:00 至 23:59 </view> </view> <view class="action " @tap="openMap"> <view class="oil-main-color"> <my-icon iconName="sy-der-icon.png" class="padding-right-xs text-sm"></my-icon> <text v-if="!location">暂无信息</text> <text v-else>{{siteInfo.juli|distanceFilter}}</text> </view> </view> </view> </view> </view> </view> <view class="placeholder margin-bottom"> </view> <!-- 价格 --> <price-tab @onChangeChannelCode="getChannelCode" @onChangePayQr="onChangePayQr" @onChangePay="onChangePay" :channel-list="siteInfo.oilSiteChannelDetailsVos" :siteInfo="siteInfo"></price-tab> <!-- 客户评价 --> <view class="bg-gray padding-top-sm "> <view class="bg-white padding "> <text>客户评价</text> <view class="padding-top-sm"> <text class="cu-tag margin-right-xs"> 服务周到</text> <text class="cu-tag margin-right-xs">交通便利</text> <text class="cu-tag margin-right-xs">便捷高效</text> </view> </view> </view> <!-- 客户订单 --> <view class="bg-gray padding-top-sm "> <view class="cu-list bg-white no-border menu padding-top "> <text class="padding margin-top">客户订单</text> <view class="cu-item " v-for="(itm,index) in siteInfo.oilSiteOrderInfoVos" :key="index"> <text class="text-black"> {{itm.userName|usernameF}} {{itm.plateNumber|plateNumberF}} </text> <text class=" text-black ">加 {{itm.oilsCode}} {{itm.volume}}L 节省 <text class="text-red"> ¥{{itm.discountAmount}}</text></text> </view> <view class="cu-item no-border" v-if="siteInfo.oilSiteOrderInfoVos && !siteInfo.oilSiteOrderInfoVos.length"> 暂无 </view> </view> <!-- 底部去支付 --> <view class=""> <!-- <view class="btn bg-white placeholder-hidden"> <view class="flex bg-white padding flex-direction"> <button class="cu-btn block bg-main-oil lg" v-if="activePay" @tap="makePay"> <image class="site-icon margin-right-sm" :src="imgURL+'site-yz.png'" mode="widthFix"> </image> 一键支付 </button> </view> </view> --> <view class="btn bg-white fixed "> <view class="flex bg-white padding flex-direction"> <button class="cu-btn block bg-main-oil lg" @tap="makePay"> <image class="site-icon margin-right-sm" :src="imgURL+'site-yz.png'" mode="widthFix"> </image> 一键支付 </button> </view> </view> </view> </view> <view class=" cu-modal show" v-show="showtitle"> <view class="cu-dialog overflow-unset box-paddings"> <view class="close-icon" @tap="hidendialog"> <image src="../../../static/img/close.png" mode="" style="width:50rpx;height: 50rpx;"></image> </view> <view class=""> <image src="../../../static/img/errIcon.png" mode="" style="width:100rpx;height: 100rpx;"></image> </view> <view class="cu-bar box-panding text-centerS"> <text class="headShow"> 支付提醒 </text> </view> <view class="cu-bar box-panding"> <text class="showtext">当前油站距离您较远,请与加油员确认您选择的油站是否正确。</text> </view> <view class="checklocation_box_button"> <view class="cu-tn btn-box red_btn" @tap="backTohome"> 返回油站列表 </view> <view class="cu-tn btn-box" @tap="gotoPay"> 确认下单 </view> </view> </view> </view> </view> </template> <script> import oilSiteApi from '@/api/oil-site.js' import priceTab from '../components/price-tab.vue' export default { components: { priceTab }, data() { return { location: null, showtitle: false, radio: 'B', mainURL: this.global.mainURL, imgURL: this.global.imgURL, otherImgURL: this.global.otherImgURL, active: 0, ColorList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], siteInfo: {}, activeCur: '', activePay: null, qrcodePay: null, siteId: '', activeChannelCode: '', secondChannelCode: '' } }, onHide() { if (this.innerAudioContext) { this.innerAudioContext.stop() } }, onUnload() { if (this.innerAudioContext) { this.innerAudioContext.stop() this.innerAudioContext.destroy() } }, onLoad(option) { if (option.q) { try { let originLink = decodeURIComponent(option.q) let target = this.obtainUrlPathParameterTarget(originLink) let authorization = uni.getStorageSync('Authorization') if (authorization && target.siteId) { uni.showModal({ content: '该二维码非最新版,请提示油站工作人员更新', success: res => { if(res.confirm) { this.siteId = target.siteId this.gotoPay() } if(res.cancel) { this.backTohome() } } }) } } catch (e) {} return } this.location = uni.getStorageSync('location') // console.log('option',option) if (!option.item) { let siteInfos = uni.getStorageSync('siteInfo') var oilItem = JSON.parse(decodeURIComponent(siteInfos)) } else { var oilItem = JSON.parse(decodeURIComponent(option.item)); } // console.log(oilItem, 'oilItemoilItemoilItem') uni.setStorageSync('oilItem', oilItem) this.getSiteInfo(oilItem) this.siteId = oilItem.siteId if (oilItem.listTag == '万金油') { this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/wanjinyou.mp3' } else if (oilItem.listTag == '星油') { this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/xingyouyunzhan.mp3' } else if (oilItem.listTag == '壳牌') { this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/qiaopainew.mp3' } else if (oilItem.listTag == '上汽联名卡') { this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/shangqi.mp3' } this.ContextAudio(this.audioUrl); }, methods: { obtainUrlPathParameterTarget(url) { let target = {} if (url.includes('?')) { let paramsText = url.split("?")[1] let paramsArr = paramsText.split("&") paramsArr.forEach(item => { target[item.split('=')[0]] = item.split('=')[1] }) } return target }, // 生成音频文件 ContextAudio(url) { this.innerAudioContext = uni.createInnerAudioContext(); this.innerAudioContext.autoplay = true; this.innerAudioContext.src = url; this.innerAudioContext.onPlay(() => { console.log('开始播放'); }); this.innerAudioContext.onError((res) => { console.log(res); }); }, backTohome() { // this.innerAudioContext && this.innerAudioContext.stop() uni.switchTab({ url: '../../../pages/tabbar/home/home' }) }, hidendialog() { this.showtitle = false }, gotoPay() { // this.innerAudioContext && this.innerAudioContext.stop() // console.log('this.activeCur',this.activeCur) // return uni.navigateTo({ url: `/BagStation/pages/makeOrder/makeOrder?siteId=${this.siteId}&activeCur=${this.activeCur}` }) }, getChannelCode(val, sec) { this.activeChannelCode = val this.secondChannelCode = sec }, siteQrPay() { // this.innerAudioContext && this.innerAudioContext.stop() uni.navigateTo({ url: `/BagStation/pages/stationDetail/stieQr?siteId=${this.siteId}&activeChannelCode=${this.activeChannelCode}&secondChannelCode=${this.secondChannelCode}` }) }, getSiteInfo(item) { let data2 = { ...uni.getStorageSync('location'), siteId: item.siteId, clientBelong: "ZHONGPIN" } oilSiteApi.getSiteDetailsByKA(data2).then(res => { if (res.code == 20000) { this.siteInfo = Object.assign(item, res.data); }else { this.siteInfo = item } }) // let user = uni.getStorageSync('user'); // if (user) { // oilSiteApi.getSiteDetailsByKA(data2).then(res => { // if (res.code == 20000) { // this.siteInfo = Object.assign(item, res.data); // } // }) // } else { // this.siteInfo = item; // } }, makePay() { let user = uni.getStorageSync('user'); if (!user) { uni.showModal({ title: '请您登录', content: "登录中品加油才可以加油 |˛˙꒳˙)♡", confirmText: '去登陆', success: (res) => { if (res.confirm) { uni.reLaunch({ url: '../../../BagAuth/pages/login/login?loginType=true' }) } } }); return } if (this.siteInfo.juli > 1000) { this.showtitle = true } else { // this.innerAudioContext && this.innerAudioContext.stop() uni.navigateTo({ url: `/BagStation/pages/makeOrder/makeOrder?siteId=${this.siteId}&activeCur=${this.activeCur}` }) } }, onChangePayQr(val) { this.qrcodePay = val }, onChangePay(val, active) { this.activePay = val this.activeCur = active }, openPlugin() { const key = this.qqKey; //使用在腾讯位置服务申请的key const referer = '星油云'; //调用插件的app的名称 const endPoint = JSON.stringify({ name: '油站', latitude: 39.89631551, longitude: 116.323459711 }); wx.navigateTo({ url: 'plugin://routePlan/index?key=' + key + '&referer=' + referer + '&endPoint=' + endPoint }) }, goBack() { // this.innerAudioContext.stop() uni.switchTab({ url: '/pages/tabbar/home/home' }); }, selectRadio() { this.radio === 'A' ? this.radio = '' : this.radio = 'A' }, openMap() { let that = this uni.openLocation({ latitude: this.siteInfo.latitude, longitude: this.siteInfo.longitude, name: this.siteInfo.siteName, address: this.siteInfo.address, scale: 12, success: function() { // console.log('success') }, fail: (error) => { // console.log('error') // console.log(error) }, complete: () => { // console.log('made') }, }) var map = uni.createMapContext('map') map.moveToLocation() } }, filters: { distanceFilter(value) { if (value) { return value > 1000 ? ((value / 1000).toFixed(2) + 'km') : (value + 'm') } }, usernameF(value) { if (value) { return value.substr(0, 1) + '**' } else { return '匿名' } }, plateNumberF(value) { if (value) { return value.substr(0, 2) + '*****' } else { return '车牌号已隐藏' } } } } </script> <style scoped> .content { min-height: 100%; position: relative; } .navigation { position: absolute; right: 16px; top: 10px; } .icon-self { width: 1rem; height: 1rem; } .oil-price { position: relative; } .oil-price radio { position: absolute; left: 0rem; top: 10px; } .qr-icon { font-size: 2rem; } .pay-desc { line-height: 2rem; } .bottom-pay { min-height: 100rpx; width: 750upx; } .pay-bar { width: 750upx; position: absolute; bottom: 0; } .placeholder { min-height: 10upx; } .yu-card-xuan { position: relative; top: 110rpx } .site-label { max-width: 450upx; min-width: 450upx; } .cu-btn.sm { width: 80%; } .site-back { width: 2rem; top: 2.8rem; left: 1rem; } .site-icon { width: 1.5rem; vertical-align: middle; } .my-tag { padding: 0 12rpx; } .fixed { position: fixed; bottom: 0; width: 750upx; } .placeholder-hidden { opacity: 0; } .yu-card-xuan .action { white-space: nowrap; } .close-icon { position: absolute; right: 2%; top: 2%; } .dialog-box { position: relative; } .text-centerS { display: flex; justify-content: center; align-items: center; text-align: center; } .red_btn { color: #FFFFFF; background-color: #1890FF; } .box-paddings { padding: 40rpx 0; } .headShow { font-size: 36rpx; font-weight: 600; } .showtext { line-height: 2; font-size: 30rpx; margin-bottom: 30rpx; padding: 0 10%; word-spacing: 10px; letter-spacing: 3px; text-align: left; } .checklocation_box_button { display: flex; justify-content: space-between; align-items: center; padding: 0 5%; } .btn-box { width: 45%; flex: 0 0 auto; text-align: center; padding: 3%; border-radius: 20rpx; font-size: 28rpx; box-sizing: border-box; border: 2rpx solid #bfbfbf; } .box-panding { padding: 10 0; } .checklocation { position: fixed; top: 50%; left: 20%; right: 20%; z-index: 999; } .checklocation_box { background-color: #FFFFFF; } .content { min-height: 100%; position: relative; } .navigation { position: absolute; right: 16px; top: 10px; } .icon-self { width: 1rem; height: 1rem; } .oil-price { position: relative; } .oil-price radio { position: absolute; left: 0rem; top: 10px; } .qr-icon { font-size: 2rem; } .pay-desc { line-height: 2rem; } .bottom-pay { min-height: 100rpx; width: 750upx; } .pay-bar { width: 750upx; position: absolute; bottom: 0; } .placeholder { min-height: 10upx; } .yu-card-xuan { position: relative; top: 110rpx } .site-label { max-width: 450upx; min-width: 450upx; } .cu-btn.sm { width: 80%; } .site-back { width: 2rem; top: 2.8rem; left: 1rem; } .site-icon { width: 1.5rem; vertical-align: middle; } .my-tag { padding: 0 12rpx; } .fixed { position: fixed; bottom: 0; width: 750upx; } .placeholder-hidden { opacity: 0; } .yu-card-xuan .action { white-space: nowrap; } </style>