123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <template>
- <ax-body blank="0">
- <view class="page-background"><image src="@/static/img/my-bg.svg" mode="widthFix"></image></view>
- <view class="body">
- <view class="search-box">
- <icon class="ax-iconline i-search icon"></icon>
- <input v-model="search" placeholder="输入目的地/电站名" placeholder-class="app-placeholder" class="input"/>
- <view v-if="search.length" @click="search=''" class="clear"><icon class="ax-iconblock i-cuowu"></icon></view>
- <text @click="query()" class="txt">搜索</text>
- </view>
- <!-- 搜索历史 -->
- <view v-if="histories.length" class="history">
- <view class="title">
- <text class="txt">搜索历史</text>
- <icon @click="clean()" class="ax-iconline i-delete icon"></icon>
- </view>
- <view class="list app-hide-scrollbar">
- <view class="wrap"><view v-for="(item,index) in histories" :key="index" @click="setSearch(item)" class="item">{{item}}</view></view>
- </view>
- </view>
- <!-- 搜索结果 -->
- <view class="result">
- <view class="title">
- <text class="txt">搜索结果</text>
- <text class="total">共计 {{result.length}} 条</text>
- </view>
- <view class="list">
- <view class="wrap app-hide-scrollbar">
- <view v-for="(item,index) in result" :key="index" class="site" @click="gotoSiteDetail(item)" >
- <view class="name">{{item.name}}</view>
- <!-- <view class="aux" v-html="item.parkTips"></view> -->
- <view class="aux">充电减免2小时停车费,超出时长部分计时收费</view>
- <view class="info">
- <view class="sta"><text class="txt green">快</text><text class="val">{{item.params.emptyFast}}</text><text class="unit">/{{item.params.totalFast}}</text></view>
- <view class="sta"><text class="txt blue">慢</text><text class="val">{{item.params.emptySlow}}</text><text class="unit">/{{item.params.totalSlow}}</text></view>
- <view class="sta"><text class="txt orange">距离</text><text class="val">{{item.params.rangeShow}}</text></view>
- </view>
- </view>
- <view v-if="!result.length" class="empty">
- <icon class="ax-iconblock i-meiyou icon"></icon>
- <text class="txt">暂无数据展示</text>
- </view>
- </view>
- </view>
- </view>
- </view>
- </ax-body>
- </template>
- <script>
- export default {
- onLoad() {
- this.histories = this.$app.storage.get('history-search') || [];
- },
- data() {
- return {
- search: "",
- histories:[],
- result:[]
- }
- },
- methods: {
- convertBdToTx(lng, lat) {
- // 百度坐标系(BD09)转火星坐标系(GCJ-02,即腾讯地图使用的坐标系)
- // 这里的转换公式是基于经验公式,可能存在一定的误差
- let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
- let x = lng - 0.0065;
- let y = lat - 0.006;
- let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
- let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
- let lngs = z * Math.cos(theta);
- let lats = z * Math.sin(theta);
- return { lng: lngs, lat: lats };
- },
- gotoSiteDetail(item){
- this.$app.url.goto('/pages/site/site?item='+JSON.stringify(item));
- },
- query(){
- const history = Array.from(new Set([this.search].concat(this.histories)));
- this.histories = history;
- this.$app.storage.set('history-search',history);
- this.result = [{},{},{},{},{}];
- let location = this.$app.storage.get('USER_LOCATION')
- let lng = ""
- let lat = ""
- if(location&&location.split(",").length==2){
- lng = location.split(",")[0]
- lat = location.split(",")[1]
- }
- var key = this.search
- this.$api.base("post","/chargeApi/getStations",{order:"0",lng,lat,key},{}).then(res=>{
- res.stationList.forEach(i=>{
- var txPoint = this.convertBdToTx(i.lng,i.lat)
- i.lng = txPoint.lng
- i.lat = txPoint.lat
- })
- this.result = res.stationList
- })
- },
- setSearch(item){
- this.search = item;
- this.query();
- },
- clean(){
- this.$app.popup.confirm('确定是否删除所有历史搜索纪录?','清空历史').then(confirm=>{
- if(confirm){
- this.histories = [];
- this.$app.storage.remove('history-search');
- }
- });
- }
- }
- }
- </script>
- <style scoped>
- @import url("search.css");
- </style>
|