123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <template>
- <view class="localSearchBox">
- <view class="header">
- <!-- <text @click="back()">取消</text> -->
- <!-- <text>选择位置</text> -->
- <text></text>
- </view>
- <view class="searchBox">
- <uni-easyinput prefixIcon="search" @confirm="searchAddress" placeholder="请输入地址"></uni-easyinput>
- </view>
- <view class="listBox">
- <view class="listItem" v-for="(item, index) in list" :key="item.uid" @click="addressClick(index)">
- <view class="shortAddress">
- <view class="shortTitle">{{ item.name }}</view>
- <image src="../../static/image/checked.png" v-if="defaultIndex === index" class="checkedImg">
- </image>
- </view>
- <view class="realAddress">{{ item.address }}</view>
- </view>
- </view>
- </view>
- </template>
- <script>
- import bmap from '../../utils/bmap-wx.js'
- import {
- config
- } from '../../utils/config.js'
- export default {
- name: 'localSearch',
- data() {
- return {
- defaultIndex: -1,
- list: [],
- BMap: null,
- latlngStr: ''
- };
- },
- methods: {
- initIndex() {
- this.defaultIndex = 0
- },
- // back() {
- // this.$emit('closeSelectAddress', {});
- // },
- submitAddress() {
- let address = this.list[this.defaultIndex].address
- this.$emit('changeAddress', address);
- },
- addressClick(index) {
- this.defaultIndex = index;
- this.submitAddress()
- },
- getLocation() {
- wx.getFuzzyLocation({
- type: 'gcj02',
- success: res => {
- console.log(res, 'res')
- this.latlngStr = `${res.latitude},${res.longitude}`
- this.getLocationInfo()
- }
- })
- },
- searchAddress(e) {
- this.getLocationInfo(e)
- },
- getLocationInfo(addressKey = '') {
- if (addressKey == "") {
- this.BMap.search({
- "query": addressKey,
- location: this.latlngStr,
- page_size: 20,
- page_index: 1,
- success: res => {
- console.log(res);
- this.list = res.originalData.results
- },
- fail: err => {
- console.log(err);
- }
- })
- } else {
- this.BMap.suggestion({
- "query": addressKey,
- success: res => {
- console.log(res);
- this.list = res.result || []
- },
- fail: err => {
- console.log(err);
- }
- })
- }
- }
- },
- created() {
- this.BMap = new bmap.BMapWX({
- ak: config.BMapKey
- });
- this.getLocation()
- }
- };
- </script>
- <style lang="scss">
- .localSearchBox {
- box-sizing: border-box;
- padding: 0 32rpx;
- width: 100%;
- height: 100%;
- .header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- height: 50px;
- }
- .searchBox {
- height: 36px;
- }
- .listBox {
- width: 100%;
- height: calc(100% - 80px);
- overflow-x: hidden;
- overflow-y: scroll;
- box-sizing: border-box;
- padding-bottom: 10px;
- .listItem {
- margin-top: 25px;
- .shortAddress {
- color: #151b26;
- display: flex;
- font-size: 16px;
- font-weight: 400;
- line-height: 24px;
- .shortTitle {
- flex: 1;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .checkedImg {
- height: 24px;
- width: 24px;
- }
- }
- .realAddress {
- color: #5c5f66;
- font-size: 14px;
- font-weight: 400;
- line-height: 20px;
- margin-top: 12px;
- }
- }
- }
- }
- </style>
|