123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807 |
- <template>
- <view>
- <ujp-navbar title="" ref='navbar' id='navbar' :height='nav_height'>
- <u-search id='search' ref='search' placeholder="查询站点地址或站名" @change="search()" v-model="keyword" @search="search" @click="search" @clickicon='back' @custom='search'></u-search>
- </ujp-navbar>
- <view class="recommend">推荐充电站</view>
- <view class="carNone" v-if="stationslist.length == 0">
- <img src="@/assets/static/img/暂无数据-缺省页.png" alt="">
- <p class="oldTextjp2" oldstyle="font-size: 18px;">暂无可用充电站</p>
-
- </view>
-
- <view v-for="(item,index) in stationslist" :key="item.id" class="charing-slow" @click="stationDetail(item)">
-
-
-
- <view class="address">
- <view class="name oldTextjp" oldstyle="font-size: 20px;">
- {{item.name}}
- </view>
- <view class="distance " oldstyle="font-size: 16px;" v-if="item.distance != '99999999'">
- <text class="iconfont" style="color:#666666"></text>
- {{item.distance!=null && item.distance>0.1 ? item.distance.toFixed(1)+'公里' : '小于100米'}}
- </view>
- <view class="distance " oldstyle="font-size: 16px;" v-else>
- <text class="iconfont" style="color:#666666"></text>
- 暂无定位
- </view>
- </view>
- <view class="sign" >
- {{item.address}}
- </view>
- <view v-if="quickChargeReduceMethod1(item)&&personInfo&&personInfo.userType==2"
- style="margin-top: 10rpx;color: rgba(255, 121, 0, 1);font-size: 28rpx; display: flex; align-items: center;" >
-
- <span style="color: #fff;background: linear-gradient(93.02deg, rgba(255,121,0,1) 39.4%,rgba(255,174,0,1) 93.51%);
- border-radius: 4px;
- padding: 0rpx 10rpx;
- margin-right: 8rpx;
- font-size: 24rpx;
- line-height:40rpx;
- " >活动</span>
- 快充订单满{{item.quickChargeDegree}}度服务费{{discountRatio10(item.quickChargeDiscountRatio)}}折
- </view>
- <view v-if="quickChargeReduceMethod2(item)&&personInfo&&personInfo.userType==2"
- style="margin-top: 10rpx;color: rgba(255, 121, 0, 1);font-size: 28rpx; display: flex; align-items: center;" >
-
- <span style="color: #fff;background: linear-gradient(93.02deg, rgba(255,121,0,1) 39.4%,rgba(255,174,0,1) 93.51%);
- border-radius: 4px;
- padding: 0rpx 10rpx;
- margin-right: 8rpx;
- font-size: 24rpx;
- line-height:40rpx;
- " >活动</span>
- 喜迎国庆,充电有奖
- </view>
-
- <view class="sign" >
- <view class="sign-1" v-if="item.giveDiscount&&item.discountRatio&&item.discountRatio!=100">会员{{discountRatio10(item.discountRatio)}}折</view>
- <view class="sign-3" v-if="item.category=='超充'">160kW超充站</view>
- <view class="sign-4" v-if="item.nightLowPriceEnabled">夜间超低价</view>
- <view class="sign-2" v-if="item.platformType==1">自营站</view>
- <view class="sign-2" v-if="item.tagList.length != 0" v-for="(tagName,tagIndex) in item.tagList" :style="'border: 1px solid '+tagNameBy(tagName,1)+';color:'+tagNameBy(tagName,1)"
- :key="tagIndex">{{tagNameBy(tagName,0)}}</view>
-
- </view>
- <view class="price-free price-freeList">
- <view class="price" v-if="personInfo&&personInfo.userType==2">
- <view class="price-1">
- <text class="num">{{!item.giveDiscount ? (item.electricityPrice+item.servicePrice).toFixed(2)
- : (item.electricityPrice+item.discountServicePrice).toFixed(2)}}</text>
- <text class="unit " oldstyle="font-size: 14px;">
- 元/度
- </text>
- </view>
- <view class="price-2 " oldstyle="font-size: 14px;" v-if="item.giveDiscount">
- <text class="num">{{(item.electricityPrice+item.servicePrice).toFixed(2)}}</text>
- <text class="unit">元/度</text>
- </view>
- </view>
- <!-- 游客价格-->
- <view class="price" v-else>
- <view class="price-1">
- <text class="num">
- {{(item.electricityPrice+item.servicePrice).toFixed(2)}}</text>
- <text class="unit " oldstyle="font-size: 48rpx;">元/度</text>
- </view>
- <view class="price-3 " oldstyle="font-size: 48rpx;" v-if="item.giveDiscount">
- <text class="num1">会员</text>
- <text class="num">{{ (item.electricityPrice+item.discountServicePrice).toFixed(2)}}</text>
- <text class="unit ">元/度</text>
- </view>
- </view>
-
- <view class="free" >
-
- <view class="fast" v-if="item.fastNum">
- <view class="fast-font">
- 快
- </view>
- <view class="num">
- {{item.fastAvailableNum}}/{{item.fastNum}}
- </view>
- </view>
- <view class="slow" v-if="item.slowNum">
- <view class="slow-font">
- 慢
- </view>
- <view class="num">
- {{item.slowAvailableNum}}/{{item.slowNum}}
- </view>
- </view>
- </view>
- </view>
-
-
-
-
- </view>
- <u-divider margin-top="20" bg-color="#F2F4F4" v-if="stationslist.length == recordsTotal">已经到底了</u-divider>
-
- </view>
- </template>
- <script>
- let _self;
- import * as API from '@/apis/site.js';
- import * as WxJsApi from '@/utils/wxJsApi.js'
- import MapLoader from '@/utils/AMap'
- export default {
-
- data() {
-
- return {
- elderMode:false,
- inputStyle:{
- backgroundColor: 'transparent',
- "font-size":'32rpx',
-
- },
- pageIndex:1,
- recordsTotal: 0,
- nav_height:54,
- personInfo:{},
- userId:'',
- keyword:'',
- stationslist:[],
- stations:[
- /* {name:'荆鹏软件园充电站',position:'湖北省荆州市沙市区江津东路附155号',price:1.2,idleNum:10,total:10,distance:0.1,time:1,type:'慢充',park:'2小时免费停车'},
- {name:'荆鹏软件园充电站2',position:'湖北省荆州市沙市区江津东路附156号',price:1.2,idleNum:10,total:10,distance:0.15,time:12,type:'快充',park:'3小时免费停车'},
- {name:'荆鹏软件园充电站3',position:'湖北省荆州市沙市区江津东路附157号',price:1.2,idleNum:10,total:10,distance:0.2,time:13,type:'慢充',park:'4小时免费停车'},
- {name:'荆鹏大道求助站充电站',position:'湖北省荆州市沙市区江津东路附158号',price:1.2,idleNum:10,total:10,distance:0.3,time:14,type:'快充',park:'5小时免费停车'},
- */
- ],
- }
- },
- onLoad(op){
- _self = this;
-
- //var px1 = uni.upx2px(88);
-
- //var rpx = 40/(uni.upx2px(100)/100);
- // 验证上面rpx的值
- var px = uni.upx2px(88);
- this.nav_height = px;
-
-
- // //('搜索框高度'+JSON.stringify(rpx))
- // //('搜索框高度'+JSON.stringify(px))
- /*
- if(op!= null && op.stationlist != null){
- this.stations = decodeURIComponent(op.stationlist)
- //('stations'+JSON.stringify(this.stations))
- }
- //('op'+JSON.stringify(op))*/
- },
- onReady() {
- this.elderMode = this.carhelp.get('getElderModeClass') == '长辈模式';
- if(this.elderMode)
- this.theme('elder')
- else
- this.theme('standard')
-
- if (this.carhelp.getPersonInfo()) {
- this.userId = this.carhelp.getPersonInfo().id;
- this.personInfo=this.carhelp.getPersonInfo();
- }
- WxJsApi.getWxConfig(['getLocation','openLocation', 'addEventListener']).then((res)=>{
-
-
- }).catch(error => {
-
- })
- this.getPoint();
- },
- onReachBottom() {
- if (this.stationslist.length < this.recordsTotal) {
- this.myLoadmore();
- }
- },
- // conponents:{charingSlows},
- methods: {
- gotoStationDetails(stationData){
- if(stationData.stationType==50&&stationData.fastNum==0&&stationData.slowNum==1){
- this.gotoUrl('pages/searchPile/stationAndPile/chargingPileDetails?isback=1&sid=' + stationData.id)
-
- }else{
- this.gotoUrl('pages/searchPile/stationAndPile/stationDetails?id=' + stationData.id)
- }
- },
- theme(type) {
- if(type == 'elder')
- {
- document.getElementsByTagName('body')[0].setAttribute('data-theme',type);
- let data = {
- backgroundColor: 'transparent',
- "font-size":'32rpx',
-
- };
- this.inputStyle = data;
- }
- else
- {
- document.getElementsByTagName('body')[0].setAttribute('data-theme',type);
- let data ={
- backgroundColor: 'transparent',
- "font-size":'32rpx',
-
- };
- this.inputStyle = data;
- }
- },
- navigateTo(item){
-
- uni.showLoading({
-
- })
- WxJsApi.openLocation({
- latitude:parseFloat( item.latitude),//目的地latitude
- longitude:parseFloat( item.longitude),//目的地longitude
- name: item.name,
- address: item.address,
- scale: 15,//地图缩放大小,可根据情况具体调整
- success(res) {
- uni.hideLoading()
- },
- complete() {
- // uni.hideLoading()
- }
- });
- //window.location.href="https://uri.amap.com/marker?position="+ item.longitude+","+item.latitude+"&name="+item.name;
-
- },
- stationDetail(item){
- this.gotoStationDetails(item)
- //('stationDetail item'+JSON.stringify(item))
- // uni.navigateTo({
- // url:'../searchPile/stationAndPile/stationDetails?id='+item.id
- // })
- /*
- uni.navigateTo({
- url:'stationAndPile/stationDetails?station='+encodeURIComponent(JSON.stringify(item))
- })
- */
- // //('stationDetail'+JSON.stringify(item))
- },
- calculateDistance(startLngLat,obj){
- var _this = this;
- var endLngLat = [obj.longitude,obj.latitude];
- MapLoader().then(AMap1 => {
-
- this.AMap=AMap;
-
- var lnglat = new AMap.LngLat(startLngLat.longitude,startLngLat.latitude);
- var myDistance = lnglat.distance([obj.longitude, obj.latitude]);
- obj.distance = myDistance/1000;
- obj.time = myDistance/500;
-
-
- }, e => {
- //_this.mui.toast('地图加载失败');
- //('地图加载失败', e)
- })
- },
- getPoint() {
- var _this = this;
- //('getPoint')
- this.getChargingStationData(true);
-
- WxJsApi.getLocation().then((res) => {
-
- var latitude = parseFloat(res.latitude);
- var longitude = parseFloat(res.longitude);
- _this.latitude = latitude;
- _this.longitude = longitude;
-
- this.getChargingStationData(true);
-
-
- }).catch(error => {
-
- uni.showToast({
- title:JSON.stringify(error)
- })
- })
- },
- myLoadmore() {
- this.pageIndex += 1;
- this.getChargingStationData()
- },
- getChargingStationData(bl){
- uni.showLoading({
- title: "加载中",
- mask: true,
- })
- if (bl) {
- this.stationslist = [];
- this.pageIndex = 1;
- }
- var data = {
- pageIndex: this.pageIndex,
- pageSize:20,
- radius:500,
- stationName:this.keyword,
- findType: 0,
-
- };
- if(this.longitude&&this.latitude){
- data.longitude=this.longitude;
- data.latitude=this.latitude;
- }
- if (this.carhelp.getPersonInfo()) {
- data.openId=this.carhelp.getOpenId()
- }
- data.radius=500
- API.getChargingStationData(data).then((response) => {
- if (bl) {
- this.stationslist = [];
- this.pageIndex = 1;
- }
- console.log(response)
- var stationDataList=response.data.data
- if(this.longitude&&this.latitude){
- MapLoader().then(AMap1 => {
- for(var i in stationDataList){
- var item=stationDataList[i]
-
- var lnglat = new AMap.LngLat(this.longitude,this.latitude);
- var myDistance = lnglat.distance([item.longitude,item.latitude]);
- item.distance = myDistance/1000;
-
-
- }
- })
- }
-
-
- this.stationslist = [
- ...this.stationslist,
- ...stationDataList
- ];
- this.recordsTotal = response.data.recordsTotal;
- //this.detail=response.data.monthlyRentCard
- uni.hideLoading()
- }).catch(error => {
- uni.showToast({
- title: error
- })
- })
- },
- back(){
- //('back');
- uni.navigateBack({
- delta:1
- })
- },
- search(){
- //('search keyword'+this.keyword + ' '+JSON.stringify(this.stations))
- this.getChargingStationData(true)
-
- //('search ' + this.keyword);
-
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- @import "@/_theme.scss";
-
- ::v-deep.u-content[data-v-1a326067] {
- flex: 0.95;
- color: #bdbdbd;
- }
- ::v-deep.u-action {
- margin-right: 0rpx;
- color: #c8c8c8;
- }
- .recommend {
- width: 100%;
- height: 88rpx;
- line-height: 88rpx;
- color: #101010;
- padding: 0 32rpx;
- background-color: #fff;
- font-weight: 600;
- }
- .charing-slow-2{
- margin: 0 0 10px 0 !important;
- // border-bottom: 1px solid rgba(238, 242, 240, 100);
-
- }
- .charing-slow {
- background-color: #fff;
- margin: 36rpx;
- border-radius: 16rpx;
- padding: 40rpx 24rpx 24rpx;
- position: relative;
- left: 0;
- right: 0;
- }
- .fast-charge {
- display: inline-block;
- border-radius: 50px;
- border-radius: 4px;
- background-color: rgba(208, 209, 255, 100);
- color: rgba(56, 60, 255, 100);
- margin: auto 0;
- @include themeify{
- width: themed('font-size18');
- font-size: themed('font-size2');
- line-height: themed('font-size7');
- height: themed('font-size8');
- }
- text-align: center;
- }
-
- .fast-trickle-charge {
- display: inline-block;
- margin: auto 0;
- border-radius: 4px;
- background-color: rgba(172, 236, 240, 100);
- color: rgba(0, 124, 134, 100);
- @include themeify{
- width: themed('font-size18');
- font-size: themed('font-size2');
- line-height: themed('font-size7');
- height: themed('font-size8');
- }
- text-align: center;
- }
- .trickle-charge {
- display: inline-block;
- border-radius: 4px;
- margin: auto 0;
-
- background-color: rgba(186, 240, 215, 100);
- color: rgba(0, 130, 69, 100);
- @include themeify{
- width: themed('font-size18');
- font-size: themed('font-size2');
- line-height: themed('font-size7');
- height: themed('font-size8');
- }
- text-align: center;
- }
-
- .station-items {
- display: inline-block;
- /* height: 16px;
- line-height: 16px;*/
- @include themeify{
- font-size: themed('font-size3');
- font-weight: themed('fontWeight');
- line-height: themed('font-size3');
- height: themed('font-size3');
- }
- margin-left: 8rpx;
- color: #101010;
-
-
- }
- //
-
- .address {
- width: 100%;
- line-height: 20px;
- display: flex;
- justify-content: space-between;
- .name{
- font-size: 16px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .distance{
- color: rgba(102, 102, 102, 100);
- font-size: 12px;
- text-align: right;
- width: 100px;
- .iconfont{
- font-size: 12px;
- margin-right: 2px;
- }
- }
-
- @include themeify{
- font-size: themed('font-size5');
- line-height: themed('font-size7');
- }
- /* font-size: 11px;*/
- font-weight: 600;
- color: #101010;
- }
-
- .price-free{
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
-
- }
- .price {
- display: flex;
- align-items: baseline;
- line-height: 40rpx;
- .price-3 {
- font-size: 24rpx;
- color: #fff;
- margin-left: 8rpx;
- padding-right: 9rpx;
- background:#00B962 ;
- border-radius: 8rpx;
- .num1{
- padding-left: 12rpx;
- border-radius: 8rpx 0 8rpx 8rpx;
- padding-right: 18rpx;
- background: #121212;
- -webkit-clip-path: polygon(0 0, 93% 0, 84% 100%, 0% 100%);
- clip-path: polygon(0 0, 93% 0, 84% 100%, 0% 100%);
-
- }
-
- }
- .price-1{
-
-
- .num {
-
- color: rgba(255, 98, 0, 100);
-
-
- font-size: 44rpx;
- height: 44rpx;
- text-align: left;
- font-family: Roboto-medium;
- }
- .unit {
- // font-size: 12px;
- color: rgba(102, 102, 102, 100);
- @include themeify{
- // font-size: themed('font-size2');
- font-size: 24rpx;
-
- height: themed('font-size2');
-
- }
-
- text-align: left;
- font-family: AlibabaPuHui-regular;
-
- margin-left: 8rpx;
- }
- }
- .price-2{
- color: rgba(153, 153, 153, 100);
- margin-left: 6rpx;
- text-decoration: line-through;
- font-size: 24rpx
- }
- }
-
- .free{
- display: flex;
- align-items: center;
- .slow,.fast{
- display: flex;
- .sp-font{
- width: 40rpx;
- height: 40rpx;
- line-height: 40rpx;
- border-radius: 4px;
- background-color: #7a68f6;
- color: #fff;
- font-size: 28rpx;
- text-align: center;
- margin-right: 2rpx;
- }
- .fast-font{
- width: 40rpx;
- height: 40rpx;
- line-height: 40rpx;
- border-radius: 4px;
- // background-color: rgba(186, 240, 215, 100);
- // color: rgba(0, 130, 69, 100);
- background-color: #1677FF;
- color: rgba(255, 255, 255, 1);
- font-size: 28rpx;
- text-align: center;
- margin-right: 2rpx;
- }
- .slow-font{
- width: 40rpx;
- height: 40rpx;
- line-height: 40rpx;
- border-radius: 4px;
- // background-color: rgba(226, 226, 226, 100);
- // color: rgba(128, 128, 128, 100);
- background-color: #00B962;
- color: rgba(255, 255, 255, 1);
- font-size: 28rpx;
- text-align: center;
- margin-right: 2rpx;
- }
- .num {
- font-size: 32rpx;
- color: #666;
- line-height: 40rpx;
- }
- .num1 {
- font-size: 32rpx;
- color: #bbb;
- line-height: 40rpx;
- }
- }
- .slow{
- margin-left: 16rpx;
- }
- }
-
-
-
- .park {
- margin-top: 16rpx;
- display: flex;
-
-
-
-
- }
- .park-p {
- display: inline-block;
- width: 20px;
- /* height: 18px;
- line-height: 12px;*/
- @include themeify{
- line-height: themed('font-size1');
- height: themed('font-size4');
- }
- text-align: center;
- // background-color: rgba(125, 177, 255, 100);
- background-color: #00b962;
- color: #fff;
- }
- .park-text {
- display: inline-block;
- color: rgba(102, 102, 102, 100);
- @include themeify{
- font-size: themed('font-size1');
- height:themed('font-size4');
- }
- /* font-size: 12px;*/
- text-align: left;
- margin-left: 4px;
- margin-top: 2px;
- }
-
- .map {
- width: 100%;
-
- height: 100%;
- position: relative;
- }
- #container {
- width: 100%;
- height: 100%;
- }
-
-
- .distance-font {
- @include themeify{
- font-size: themed('font-size3');
- }
- /* font-size: 16px*/
- }
-
- .position{
- color: #1677ff;
- @include themeify{
- font-size: themed('font-size2');
- }
- /* font-size: 14px*/
- }
- .position-box{
- position:absolute;
- top: 341px;
- right: 118px;
- width: 16px;
- height: 16px;
- /* line-height: 20px; */
- background-color: rgba(22, 119, 255, 100);
- text-align: center;
- box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.4);
- border: 2px solid rgba(255, 255, 255, 100);
- border-radius: 999px;
- }
- .min-h{
- min-height: 65px;
- }
- .sign{
- display: flex;
- flex-wrap: wrap;
- margin-top: 10px;
-
- .sign-1{
- height: 20px;
- line-height: 20px;
- border-radius: 4px;
- background-color: rgba(255, 255, 255, 100);
- color: rgba(255, 139, 0, 100);
- font-size: 12px;
- text-align: center;
- border: 1px solid rgba(255, 139, 0, 100);
- padding: 0 4px;
- margin-right: 8px;
- margin-bottom: 4px;
- }
- .sign-2{
- height: 20px;
- line-height: 20px;
- border-radius: 4px;
- background-color: rgba(255, 255, 255, 100);
- color: rgba(153, 153, 153, 100);
- font-size: 12px;
- text-align: center;
- border: 1px solid rgba(204, 204, 204, 100);
- padding: 0 4px;
- margin-right: 8px;
- margin-bottom: 4px;
- }
- .sign-3{
- line-height: 40rpx;
- border-radius: 8rpx;
- background-color: rgba(255, 255, 255, 100);
- color: #8161FF ;
- font-size: 24rpx;
- text-align: center;
- border: 1px solid #8161FF;
- padding: 0 8rpx;
- margin-right: 16rpx;
- margin-bottom: 8rpx;
- }
- .sign-4{
- line-height: 40rpx;
- border-radius: 8rpx;
- background-color: rgba(255, 255, 255, 100);
- color: #00B962 ;
- font-size: 24rpx;
- text-align: center;
- border: 1px solid #00B962 ;
- padding: 0 8rpx;
- margin-right: 16rpx;
- margin-bottom: 8rpx;
- }
- }
-
- .park-text2 {
- width: 140%;
- }
- .park-text3 {
- white-space: nowrap;
-
-
- text-overflow: ellipsis;
- overflow: hidden;
- }
- .carNone{
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- img{
- width: 100%;
- height: 100%;
- }
- p{
- margin-top: -60px;
- }
- }
- </style>
|