佰川加油
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.
 
 
 
 

396 lines
12 KiB

<template>
<view>
<cu-custom
class="main-totextbar bg-main-oil"
:isBack="true"
bgColor="bg-main-oil"
>
<block slot="backText">返回</block>
<block slot="content">油站地图</block>
</cu-custom>
<view>
<view class="cu-bar search bg-white">
<view class="search-form round">
<text class="cuIcon-search"></text>
<input
confirm-type="search"
@input="onInput"
@confirm="onSearch"
v-model="siteName"
:adjust-position="false"
type="text"
placeholder="加油站名称"
/>
</view>
<view class="action" @tap="loadMore"> 更多 </view>
</view>
<view class="page-body">
<view class="page-section page-section-gap">
<map
style="width: 100%; height: 100vh"
:controls="controls"
:polyline="polyline"
:scale="scale"
:latitude="latitude"
@labeltap="makerTap"
@markertap="makerTap"
:longitude="longitude"
:markers="covers"
>
</map>
</view>
</view>
</view>
<view class="cu-modal bottom-modal" :class="showSite">
<view class="cu-dialog" @tap.stop="">
<view class="cu-bar bg-white justify-end">
<view class="content">
{{ siteInfo.siteName ? siteInfo.siteName : "油站名称" }}</view
>
<view class="action" @tap="showSite = ''">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view class="flex-sub">
<view
class="cu-list menu padding-sm radius my-shadow bg-white yu-card-xuan"
>
<view class="cu-item">
<view class="content" @tap="toDetail(siteInfo)">
<view class="strong padding-bottom-xs">
{{ siteInfo.siteName ? siteInfo.siteName : "油站名称" }}
</view>
<view class="text-gray flex">
<view class="text-bold yellow-oil; text-xl padding-right-xs">
{{ siteInfo.oilProductCode }}
</view>
<view
class="oil-main-color text-xl text-bold padding-right-xs"
>
{{ siteInfo.sitePrice | moneyFormat }}
</view>
<view class="">
<text
class="cu-tag oil-tag radius text-xs"
v-if="siteInfo.oilSitePrice - siteInfo.sitePrice > 0"
>省¥{{
(siteInfo.oilSitePrice - siteInfo.sitePrice)
| moneyFormat
}}</text
>
</view>
<view class="text-cut padding-left-sm text-lg">
<text
class="text-delete color-333 text-sm padding-right-xs"
>
¥{{ siteInfo.oilSitePrice | moneyFormat }}/L
</text>
<!-- <my-icon iconName="¥.png" class="padding-right-xs icon-rectangle"></my-icon>
<my-icon iconName="f.png" class="padding-right-xs "></my-icon> -->
</view>
</view>
<view class="font-12 text-left color-999 site-label text-cut">
{{ siteInfo.address ? siteInfo.siteName : "油站地址" }}
</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>
{{ siteInfo.juli | distanceFilter }}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import oilSiteApi from "@/api/oil-site.js";
export default {
data() {
return {
siteInfo: {},
showSite: "",
imgUrl: this.global.imgURL,
siteList: [],
InputBottom: 0,
show: false,
siteCount: 1,
currentPage: 1,
isLoadMore: false, //是否加载中
baseDriver: uni.getStorageSync("baseDriver"),
selLocation: {},
title: "map",
location: uni.getStorageSync("location"),
latitude: 39.909,
longitude: 116.39742,
covers: [],
fillColor: "#ffd75e",
borderColor: "#12A1DD",
scale: 12, //地图层级
controls: [
{
//在地图上显示控件,控件不随着地图移动
id: 1, //控件id
position: {
//控件在地图的位置
left: 0,
top: 15,
width: 50,
height: 50,
},
},
],
polyline: [
{
//指定一系列坐标点,从数组第一项连线至最后一项
points: [],
color: "#0000AA", //线的颜色
width: 2, //线的宽度
dottedLine: true, //是否虚线
arrowLine: true, //带箭头的线 开发者工具暂不支持该属性
},
],
};
},
onLoad() {
let that = this;
this.getSiteList();
},
filters: {
distanceFilter(value) {
if (value) {
return value > 1000 ? (value / 1000).toFixed(2) + "km" : value + "m";
}
},
moneyFormat(value) {
if (value) {
return value.toFixed(2);
} else {
return "0.00";
}
},
},
methods: {
getSiteInfo(id) {
let data2 = {
...uni.getStorageSync("location"),
siteId: id,
};
oilSiteApi.getSiteDetailsByKA(data2).then((res) => {
if (res.code == 20000) {
this.siteInfo = res.data;
}
});
},
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();
},
makerTap(e) {
// // console.log(e)
// // console.log(e.detail)
this.showSite = "";
if (e.detail.markerId !== 0) {
const index = this.siteList.findIndex(
(s) => s.markerId === e.detail.markerId
);
// // console.log(index)
this.showSite = "show";
this.siteInfo = this.siteList[index];
}
},
refreshLocation() {
// uni.getLocation({
// type: 'wgs84',
// success: (res) => {
// uni.setStorageSync('location', res)
// this.location = res
// this.addLocationCurrent()
// }
// });
},
addLocationCurrent() {
this.covers.push({
id: 0,
latitude: this.location.latitude, //纬度
longitude: this.location.longitude, //经度
label: {
//为标记点旁边增加标签
content: "我的位置", //文本
color: "#12A1DD", //文本颜色
anchorX: 5, //label的坐标,原点是 marker 对应的经纬度
anchorY: -10, //label的坐标,原点是 marker 对应的经纬度
bgColor: "#fff", //背景色
padding: 5, //文本边缘留白
borderWidth: 1, //边框宽度
borderRadius: 10,
borderColor: "#12A1DD", //边框颜色 textAlign: 'right' //文本对齐方式。
},
});
},
loadMore() {
this.getSiteList();
},
getSiteList() {
this.refreshLocation();
let data1 = {
currentPage: this.currentPage,
pageSize: 20,
params: {
//类型:Object 必有字段 备注:// 筛选对象
sort: "juli", //类型:String 必有字段 备注:// 智能排序 ( price:价格最低 juli:距离最近 ) 默认距离排序
siteName: this.siteName,
...uni.getStorageSync("location"),
...this.filterData,
// siteBrand: "", // 备注:// 石油品牌 ( 1-中国石油 2-中国石化 3-壳牌 4-民营 5-中海油 6-京博 7-中化石油 8-其他 )
// channelCode: "", // 备注:// 渠道编码 ( OIL:星油 WJY:万金油 LV:老吕(找油网) TY:团油 YDJY:一点加油(壳牌))
// oilProductCode: "" // 备注:// 油号选择 ( 0# 92# 92#)
},
};
oilSiteApi.findKASiteInfoByPage(data1).then((res) => {
if (res.code == 20000) {
const tmp = res.data.list;
tmp.forEach((e) => {
e.markerId = this.siteCount++;
});
this.siteList = this.siteList.concat(tmp);
if (this.siteList.length != 0) {
this.latitude = this.siteList[0].latitude;
this.longitude = this.siteList[0].longitude;
} else {
uni.showToast({
title: "没有查到相关油站",
icon: "none",
});
this.latitude = this.location.latitude;
this.longitude = this.location.longitude;
}
tmp.forEach((item) => {
this.addCover(item);
});
if (tmp.length == 0) {
//判断接口返回数据量小于请求数据量,则表示此为最后一页
// this.$emit('changeLoad', 'nomore', true)
uni.showToast({
title: "没有更多油站了",
icon: "none",
});
} else {
this.currentPage++;
// this.$emit('changeLoad', 'load', false)
}
}
});
},
onInput() {
setTimeout(() => {
this.currentPage = 1;
this.siteList = [];
this.covers = [];
this.getSiteList();
}, 100);
},
onSearch() {
this.currentPage = 1;
this.siteList = [];
this.covers = [];
this.getSiteList();
},
toDetail(item) {
let itemS = JSON.stringify(item);
console.log("++++++");
console.log(itemS);
if (uni.getStorageSync("user")) {
uni.navigateTo({
url: `/BagStation/pages/stationDetail/stationDetail?item=${itemS}`,
fail: (err) => {
// console.log(err)
},
success: () => {
// console.log('err')
},
});
}
},
addCover(site) {
// 渠道编码 ( XOIL:星油 WJY:万金油 LV:老吕(找油网) TY:团油 YDJY:一点加油(壳牌))
this.covers.push({
id: site.markerId,
latitude: site.latitude, //纬度
longitude: site.longitude, //经度
// iconPath: this.imgUrl + 'map-' + site.channelCode + '.png',
iconPath: this.imgUrl + "map-" + "XOIL" + ".png",
width: 100,
height: 50,
title: site.siteName, //标注点名
label: {
//为标记点旁边增加标签
content: "¥" + site.sitePrice, //文本
// color: '#F76350', //文本颜色
color: "#fff", //文本颜色
fontSize: "16",
textAlign: "center",
anchorX: -5, //label的坐标,原点是 marker 对应的经纬度
anchorY: -45, //label的坐标,原点是 marker 对应的经纬度
// x:39.909,//这个组件微信在1.2.0以后就废弃了
// y:116.39742,
bgColor: "#FF0000", //背景色
borderRadius: 10,
// borderWidth: 1, //边框宽度
// borderColor: '#D84C29', //边框颜色 textAlign: 'center' //文本对齐方式。
},
callout: {
//自定义标记点上方的气泡窗口 点击有效
content: site.siteName,
color: "#F76350",
fontSize: 12,
borderRadius: 5,
},
// anchor:{//经纬度在标注图标的锚点,默认底边中点
// x:5,
// y:1,
// }
});
},
},
};
</script>
<style scoped>
.cu-modal {
background-color: transparent;
top: initial;
}
</style>