|
|
|
<template>
|
|
|
|
<view class="seach_body">
|
|
|
|
<view class="seach_input">
|
|
|
|
<!-- <view @click="isShowFn" class="seach_input_left color-66">
|
|
|
|
<uni-icons class="mar" type="search" size="20"></uni-icons>
|
|
|
|
<view>{{addressData.city}}</view>
|
|
|
|
<uni-icons color="#bbbbbb" class="bottom" type="back" size="15"></uni-icons>
|
|
|
|
</view> -->
|
|
|
|
<view class="seach_input_right">
|
|
|
|
<input style="flex:1" v-model="seachValue" placeholder="请输入地址" type="text" @confirm="seachFn" />
|
|
|
|
<view @click="seachFn" class="seach_input_butten"> 搜索</view>
|
|
|
|
<!-- <uni-combox @input="seachFn" emptyTips="请输入内容" class="seach_input_right_input" :border="false" :candidates="candidates" placeholder="Location..."></uni-combox> -->
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view :style="{height:Boolean(Number(List.length))?'calc(100vh - 80rpx - 38rpx)':'0px'}" class="seach_list">
|
|
|
|
<scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="lower">
|
|
|
|
<view @click="seleClick(item)" v-for="(item,index) in List" class="list_item">
|
|
|
|
<view class="list_item_size">{{item.title}}</view>
|
|
|
|
<view class="list_item_samall_size">{{item.address}}</view>
|
|
|
|
</view>
|
|
|
|
</scroll-view>
|
|
|
|
</view>
|
|
|
|
<charge :addressData="addressData" @chargeChange='chargeChange' v-model="isShow.address"></charge>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import amapFile from '@/utils/qqmap-wx-jssdk.js'
|
|
|
|
import charge from './components/charge.vue'
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
charge
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
params: {
|
|
|
|
province: true,
|
|
|
|
city: true,
|
|
|
|
area: true
|
|
|
|
},
|
|
|
|
isShow: {
|
|
|
|
address: false
|
|
|
|
},
|
|
|
|
type: 1,
|
|
|
|
seachValue: '',
|
|
|
|
List: [],
|
|
|
|
TXSDK: null,
|
|
|
|
location: '',
|
|
|
|
addressData: {
|
|
|
|
province: '',
|
|
|
|
city: '',
|
|
|
|
area: ''
|
|
|
|
},
|
|
|
|
pageSize: {
|
|
|
|
page_size: 15,
|
|
|
|
page: 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onLoad(e) {
|
|
|
|
let that = this
|
|
|
|
if (e.type) {
|
|
|
|
console.log(e.type)
|
|
|
|
this.type = e.type.split('/')[0]
|
|
|
|
this.location = e.type.split('/')[1]
|
|
|
|
console.log(this.List, Boolean(Number(this.List)))
|
|
|
|
this.TXSDK.reverseGeocoder({
|
|
|
|
sig: 'mOPvEv4WmyaxymycTYy00pSiad2jnQil',
|
|
|
|
location: that.location,
|
|
|
|
success(e) {
|
|
|
|
({
|
|
|
|
province: that.addressData.province,
|
|
|
|
city: that.addressData.city,
|
|
|
|
district: that.addressData.area
|
|
|
|
} = e.result.address_component)
|
|
|
|
console.log(e, that.addressData, '地址逆解析')
|
|
|
|
},
|
|
|
|
fail(e) {
|
|
|
|
console.log(e, '地址逆解析 错误')
|
|
|
|
},
|
|
|
|
})
|
|
|
|
}
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
this.TXSDK = new amapFile({
|
|
|
|
key: 'UTXBZ-BUH6D-TQD44-HCEG4-UKOFT-U2BDN'
|
|
|
|
});
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
seleClick(e) {
|
|
|
|
uni.$emit('UpdateAddress', e, this.type)
|
|
|
|
uni.navigateBack()
|
|
|
|
},
|
|
|
|
chargeChange(e) {
|
|
|
|
this.addressData = Object.assign(this.addressData, e)
|
|
|
|
console.log(e)
|
|
|
|
},
|
|
|
|
isShowFn() {
|
|
|
|
this.isShow.address = true
|
|
|
|
},
|
|
|
|
loding(e) {
|
|
|
|
if (e) {
|
|
|
|
uni.showLoading({
|
|
|
|
title: '加载中',
|
|
|
|
mask: true
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
setTimeout(function() {
|
|
|
|
uni.hideLoading();
|
|
|
|
}, 500);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
getRegion() {
|
|
|
|
let that = this
|
|
|
|
this.loding(true)
|
|
|
|
this.TXSDK.search({
|
|
|
|
sig: 'mOPvEv4WmyaxymycTYy00pSiad2jnQil',
|
|
|
|
keyword: that.seachValue,
|
|
|
|
auto_extend: '0',
|
|
|
|
region: that.addressData.province.indexOf('市') !== -1 ? that.addressData.province : that
|
|
|
|
.addressData.province + that.addressData.city,
|
|
|
|
page_size: that.pageSize.page_size,
|
|
|
|
location: that.location || '',
|
|
|
|
page_index: that.pageSize.page,
|
|
|
|
success(e) {
|
|
|
|
that.loding(false)
|
|
|
|
if (e.message !== 'query ok') return
|
|
|
|
if (e.data.length == 0) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '没有数据了',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if (that.pageSize.page > 1) {
|
|
|
|
that.List = that.List.concat(e.data)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
that.List = e.data
|
|
|
|
},
|
|
|
|
fail(e) {
|
|
|
|
that.loding(false);
|
|
|
|
console.log(e, '错误')
|
|
|
|
},
|
|
|
|
})
|
|
|
|
},
|
|
|
|
getSuggestion() {
|
|
|
|
if(!this.seachValue) {
|
|
|
|
uni.showToast({
|
|
|
|
title:'还没有输入地址哦~',
|
|
|
|
icon:'none'
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
this.loding(true)
|
|
|
|
this.TXSDK.getSuggestion({
|
|
|
|
sig: 'mOPvEv4WmyaxymycTYy00pSiad2jnQil',
|
|
|
|
keyword: this.seachValue,
|
|
|
|
region: this.addressData.city || '全国',
|
|
|
|
page_size: this.pageSize.page_size,
|
|
|
|
page_index: this.pageSize.page,
|
|
|
|
success: e => {
|
|
|
|
this.loding(false)
|
|
|
|
if (e.message !== 'query ok') return
|
|
|
|
if (e.data.length == 0) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '没有数据了',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if (this.pageSize.page > 1) {
|
|
|
|
this.List = this.List.concat(e.data)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
this.List = e.data
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
seachFn(e) {
|
|
|
|
this.pageSize.page = 1
|
|
|
|
this.getSuggestion()
|
|
|
|
},
|
|
|
|
lower() {
|
|
|
|
this.pageSize.page += 1
|
|
|
|
this.getSuggestion()
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
.seach_input_butten {
|
|
|
|
color: #FF6700;
|
|
|
|
height: 100%;
|
|
|
|
white-space: nowrap;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding: 0 10rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.list_item_samall_size {
|
|
|
|
color: #BBBBBB;
|
|
|
|
font-size: 24rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.list_item_size {
|
|
|
|
color: #666666;
|
|
|
|
font-size: 28rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.list_item {
|
|
|
|
width: 90%;
|
|
|
|
margin: 0 auto;
|
|
|
|
border-radius: 10px;
|
|
|
|
margin-top: 60rpx;
|
|
|
|
padding-left: 60rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.scroll-Y {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
|
|
|
|
>>>.uni-combox__no-border {
|
|
|
|
padding: 0 !important;
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seach_input_right_input {
|
|
|
|
flex: 1;
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.color-66 {
|
|
|
|
color: #666666;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mar {
|
|
|
|
margin-right: 20rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.bottom {
|
|
|
|
transform: rotate(270deg);
|
|
|
|
transition: all .3s;
|
|
|
|
margin: 0 20rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seach_input_right {
|
|
|
|
flex: 1;
|
|
|
|
margin: 0 10rpx;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seach_input_left {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
border-right: 1rpx #F0F0F0 solid;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seach_input {
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
border-radius: 10px;
|
|
|
|
height: 80rpx;
|
|
|
|
display: flex;
|
|
|
|
padding: 15rpx 32rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seach_list {
|
|
|
|
/* flex: 1; */
|
|
|
|
/* height: calc(100vh - 80rpx - 38rpx); */
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
margin-top: 38rpx;
|
|
|
|
border-radius: 10px;
|
|
|
|
overflow: hidden;
|
|
|
|
transition: all .3s;
|
|
|
|
}
|
|
|
|
|
|
|
|
.seach_body {
|
|
|
|
width: 100vw;
|
|
|
|
height: 100vh;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
padding: 0 42rpx;
|
|
|
|
background: #F0F0F0;
|
|
|
|
}
|
|
|
|
</style>
|