From d39644872fa6f9499fc2c1651bced631a9e96b19 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期一, 23 十二月 2024 09:48:53 +0800
Subject: [PATCH] 1.高德地图未开发完成版本(可能废弃)
---
environments/index.js | 6
pages.json | 6
pages/user/address/gaode-address.vue | 359 +++++++++++++
map/amap-wx.130.js | 31 +
pages/user/address/address.vue | 1217 ++++++++++++++++++++++----------------------
5 files changed, 1,011 insertions(+), 608 deletions(-)
diff --git a/environments/index.js b/environments/index.js
index c8a5cf9..814a716 100644
--- a/environments/index.js
+++ b/environments/index.js
@@ -1,10 +1,14 @@
export default {
- httpBaseUri: 'https://www.hmyxianhua.com/flower',
+ // httpBaseUri: 'https://www.hmyxianhua.com/flower',
// httpBaseUri: 'http://47.99.58.211/flower',
+ // httpBaseUri: 'http://192.168.1.198:8080/flower',
+ // httpBaseUri: 'http://192.168.1.213:8080/flower',
// httpBaseUri: 'http://localhost:8080/flower',
+ httpBaseUri: 'http://192.168.1.7:8080/flower',
clientId: '',
secret: '',
tenantId: '',
type: 'dev'
}
+
diff --git a/map/amap-wx.130.js b/map/amap-wx.130.js
new file mode 100644
index 0000000..718d6ef
--- /dev/null
+++ b/map/amap-wx.130.js
@@ -0,0 +1,31 @@
+function AMapWX(a){this.key=a.key;this.requestConfig={key:a.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};this.MeRequestConfig={key:a.key,serviceName:"https://restapi.amap.com/rest/me"}}
+AMapWX.prototype.getWxLocation=function(a,b){wx.getLocation({type:"gcj02",success:function(c){c=c.longitude+","+c.latitude;wx.setStorage({key:"userLocation",data:c});b(c)},fail:function(c){wx.getStorage({key:"userLocation",success:function(d){d.data&&b(d.data)}});a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
+AMapWX.prototype.getMEKeywordsSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.keywords&&(d.keywords=b.keywords);b.city&&(d.city=b.city);b.filter&&(d.filter=b.filter);b.sortrule&&(d.sortrule=b.sortrule);b.pageNum&&(d.pageNum=b.pageNum);b.pageSize&&(d.pageSize=b.pageSize);b.sig&&(d.sig=
+b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/local",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
+AMapWX.prototype.getMEIdSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.id&&(d.id=b.id);b.sig&&(d.sig=b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/id",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&
+0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
+AMapWX.prototype.getMEPolygonSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.keywords&&(d.keywords=b.keywords);b.polygon&&(d.polygon=b.polygon);b.filter&&(d.filter=b.filter);b.sortrule&&(d.sortrule=b.sortrule);b.pageNum&&(d.pageNum=b.pageNum);b.pageSize&&(d.pageSize=b.pageSize);
+b.sig&&(d.sig=b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/polygon",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
+AMapWX.prototype.getMEaroundSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.keywords&&(d.keywords=b.keywords);b.center&&(d.center=b.center);b.radius&&(d.radius=b.radius);b.filter&&(d.filter=b.filter);b.sortrule&&(d.sortrule=b.sortrule);b.pageNum&&(d.pageNum=b.pageNum);b.pageSize&&
+(d.pageSize=b.pageSize);b.sig&&(d.sig=b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/around",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
+AMapWX.prototype.getGeo=function(a){var b=this.requestConfig,c=a.options;b={key:this.key,extensions:"all",s:b.s,platform:b.platform,appname:this.key,sdkversion:b.sdkversion,logversion:b.logversion};c.address&&(b.address=c.address);c.city&&(b.city=c.city);c.batch&&(b.batch=c.batch);c.sig&&(b.sig=c.sig);wx.request({url:"https://restapi.amap.com/v3/geocode/geo",data:b,method:"GET",header:{"content-type":"application/json"},success:function(d){(d=d.data)&&d.status&&"1"===d.status?a.success(d):a.fail({errCode:"0",
+errMsg:d})},fail:function(d){a.fail({errCode:"0",errMsg:d.errMsg||""})}})};
+AMapWX.prototype.getRegeo=function(a){function b(d){var e=c.requestConfig;wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:c.key,location:d,extensions:"all",s:e.s,platform:e.platform,appname:c.key,sdkversion:e.sdkversion,logversion:e.logversion},method:"GET",header:{"content-type":"application/json"},success:function(g){if(g.data.status&&"1"==g.data.status){g=g.data.regeocode;var h=g.addressComponent,f=[],k=g.roads[0].name+"\u9644\u8fd1",m=d.split(",")[0],n=d.split(",")[1];if(g.pois&&
+g.pois[0]){k=g.pois[0].name+"\u9644\u8fd1";var l=g.pois[0].location;l&&(m=parseFloat(l.split(",")[0]),n=parseFloat(l.split(",")[1]))}h.provice&&f.push(h.provice);h.city&&f.push(h.city);h.district&&f.push(h.district);h.streetNumber&&h.streetNumber.street&&h.streetNumber.number?(f.push(h.streetNumber.street),f.push(h.streetNumber.number)):f.push(g.roads[0].name);f=f.join("");a.success([{iconPath:a.iconPath,width:a.iconWidth,height:a.iconHeight,name:f,desc:k,longitude:m,latitude:n,id:0,regeocodeData:g}])}else a.fail({errCode:g.data.infocode,
+errMsg:g.data.info})},fail:function(g){a.fail({errCode:"0",errMsg:g.errMsg||""})}})}var c=this;a.location?b(a.location):c.getWxLocation(a,function(d){b(d)})};
+AMapWX.prototype.getWeather=function(a){function b(g){var h="base";a.type&&"forecast"==a.type&&(h="all");wx.request({url:"https://restapi.amap.com/v3/weather/weatherInfo",data:{key:d.key,city:g,extensions:h,s:e.s,platform:e.platform,appname:d.key,sdkversion:e.sdkversion,logversion:e.logversion},method:"GET",header:{"content-type":"application/json"},success:function(f){if(f.data.status&&"1"==f.data.status)if(f.data.lives){if((f=f.data.lives)&&0<f.length){f=f[0];var k={city:{text:"\u57ce\u5e02",data:f.city},
+weather:{text:"\u5929\u6c14",data:f.weather},temperature:{text:"\u6e29\u5ea6",data:f.temperature},winddirection:{text:"\u98ce\u5411",data:f.winddirection+"\u98ce"},windpower:{text:"\u98ce\u529b",data:f.windpower+"\u7ea7"},humidity:{text:"\u6e7f\u5ea6",data:f.humidity+"%"}};k.liveData=f;a.success(k)}}else f.data.forecasts&&f.data.forecasts[0]&&a.success({forecast:f.data.forecasts[0]});else a.fail({errCode:f.data.infocode,errMsg:f.data.info})},fail:function(f){a.fail({errCode:"0",errMsg:f.errMsg||""})}})}
+function c(g){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:d.key,location:g,extensions:"all",s:e.s,platform:e.platform,appname:d.key,sdkversion:e.sdkversion,logversion:e.logversion},method:"GET",header:{"content-type":"application/json"},success:function(h){if(h.data.status&&"1"==h.data.status){h=h.data.regeocode;if(h.addressComponent)var f=h.addressComponent.adcode;else h.aois&&0<h.aois.length&&(f=h.aois[0].adcode);b(f)}else a.fail({errCode:h.data.infocode,errMsg:h.data.info})},
+fail:function(h){a.fail({errCode:"0",errMsg:h.errMsg||""})}})}var d=this,e=d.requestConfig;a.city?b(a.city):d.getWxLocation(a,function(g){c(g)})};
+AMapWX.prototype.getPoiAround=function(a){function b(e){e={key:c.key,location:e,s:d.s,platform:d.platform,appname:c.key,sdkversion:d.sdkversion,logversion:d.logversion};a.querytypes&&(e.types=a.querytypes);a.querykeywords&&(e.keywords=a.querykeywords);wx.request({url:"https://restapi.amap.com/v3/place/around",data:e,method:"GET",header:{"content-type":"application/json"},success:function(g){if(g.data.status&&"1"==g.data.status){if((g=g.data)&&g.pois){for(var h=[],f=0;f<g.pois.length;f++){var k=0==
+f?a.iconPathSelected:a.iconPath;h.push({latitude:parseFloat(g.pois[f].location.split(",")[1]),longitude:parseFloat(g.pois[f].location.split(",")[0]),iconPath:k,width:22,height:32,id:f,name:g.pois[f].name,address:g.pois[f].address})}a.success({markers:h,poisData:g.pois})}}else a.fail({errCode:g.data.infocode,errMsg:g.data.info})},fail:function(g){a.fail({errCode:"0",errMsg:g.errMsg||""})}})}var c=this,d=c.requestConfig;a.location?b(a.location):c.getWxLocation(a,function(e){b(e)})};
+AMapWX.prototype.getStaticmap=function(a){function b(e){c.push("location="+e);a.zoom&&c.push("zoom="+a.zoom);a.size&&c.push("size="+a.size);a.scale&&c.push("scale="+a.scale);a.markers&&c.push("markers="+a.markers);a.labels&&c.push("labels="+a.labels);a.paths&&c.push("paths="+a.paths);a.traffic&&c.push("traffic="+a.traffic);e="https://restapi.amap.com/v3/staticmap?"+c.join("&");a.success({url:e})}var c=[];c.push("key="+this.key);var d=this.requestConfig;c.push("s="+d.s);c.push("platform="+d.platform);
+c.push("appname="+d.appname);c.push("sdkversion="+d.sdkversion);c.push("logversion="+d.logversion);a.location?b(a.location):this.getWxLocation(a,function(e){b(e)})};
+AMapWX.prototype.getInputtips=function(a){var b=Object.assign({},this.requestConfig);a.location&&(b.location=a.location);a.keywords&&(b.keywords=a.keywords);a.type&&(b.type=a.type);a.city&&(b.city=a.city);a.citylimit&&(b.citylimit=a.citylimit);wx.request({url:"https://restapi.amap.com/v3/assistant/inputtips",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.tips&&a.success({tips:c.data.tips})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||
+""})}})};
+AMapWX.prototype.getDrivingRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);a.strategy&&(b.strategy=a.strategy);a.waypoints&&(b.waypoints=a.waypoints);a.avoidpolygons&&(b.avoidpolygons=a.avoidpolygons);a.avoidroad&&(b.avoidroad=a.avoidroad);wx.request({url:"https://restapi.amap.com/v3/direction/driving",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&a.success({paths:c.data.route.paths,
+taxi_cost:c.data.route.taxi_cost||""})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
+AMapWX.prototype.getWalkingRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);wx.request({url:"https://restapi.amap.com/v3/direction/walking",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&a.success({paths:c.data.route.paths})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
+AMapWX.prototype.getTransitRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);a.strategy&&(b.strategy=a.strategy);a.city&&(b.city=a.city);a.cityd&&(b.cityd=a.cityd);wx.request({url:"https://restapi.amap.com/v3/direction/transit/integrated",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&(c=c.data.route,a.success({distance:c.distance||"",taxi_cost:c.taxi_cost||
+"",transits:c.transits}))},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
+AMapWX.prototype.getRidingRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);wx.request({url:"https://restapi.amap.com/v3/direction/riding",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&a.success({paths:c.data.route.paths})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};module.exports.AMapWX=AMapWX;
\ No newline at end of file
diff --git a/pages.json b/pages.json
index e7f18b4..1fc700c 100644
--- a/pages.json
+++ b/pages.json
@@ -19,6 +19,12 @@
"navigationBarTitleText": "收货地址"
}
},
+ {
+ "path": "pages/user/address/gaode-address",
+ "style": {
+ "navigationBarTitleText": "高德地图"
+ }
+ },
// #endif
{
"path": "pages/login/supplier-login",
diff --git a/pages/user/address/address.vue b/pages/user/address/address.vue
index cee367b..956fb97 100644
--- a/pages/user/address/address.vue
+++ b/pages/user/address/address.vue
@@ -2,7 +2,8 @@
<!-- 收货地址列表 -->
<view class="p15 container-address">
<view class="search-container m-t-12 flex">
- <view class="flex1 input" @click="selectWxAddress('input')">
+ <!-- <view class="flex1 input" @click="selectWxAddress('input')"> -->
+ <view class="flex1 input" @click="selectGaodeAddress('input')">
<u-input placeholder="小区名/店铺名/写字楼/街道名等" disabled v-model="search_flow">
<template slot="suffix">
<uni-icons color="#20613D" type="search" size="24"></uni-icons>
@@ -14,7 +15,7 @@
<view class="desc-gray">当前位置</view>
<view class="flex current-address">
<view class="flex1">
- {{ addressDesc || (address&&address.id?address.address: '选择地址') }}
+ {{ addressDesc || (address && address.id ? address.address : '选择地址') }}
</view>
<view class="flex" @click="changeCurrentAddress">
@@ -31,10 +32,10 @@
<view class="desc-gray">我的收货地址</view>
</view>
- <no-data v-if="!list||list.length==0" style="width: 100%;"></no-data>
+ <no-data v-if="!list || list.length == 0" style="width: 100%;"></no-data>
<!-- 循环 -->
- <view v-for="(item,index) of list" :key="index" class="location-each m-t-12">
+ <view v-for="(item, index) of list" :key="index" class="location-each m-t-12">
<view class="flex">
<view class="container-info">
<view class="flex">
@@ -43,7 +44,7 @@
</view>
<view class="address">
{{ item['province'] || '' }}{{ item['city'] && ('/' + item['city']) || '' }}{{
- item['region'] && ('/' + item['region']) || ''
+ item['region'] && ('/' + item['region']) || ''
}}
</view>
<view class="address">
@@ -51,7 +52,7 @@
</view>
</view>
<!-- <view class="h-line"></view> -->
- <view class="edit" @click="()=>{
+ <view class="edit" @click="() => {
this.submitForm = {
...item
}
@@ -64,8 +65,8 @@
<view class="flex">
<!-- -->
<view class="flex">
- <view class="radio m-t-2 m-r-10" :class="[item.isDefault?'select':'']"
- @click="changeDefaultAddress(item,index)">
+ <view class="radio m-t-2 m-r-10" :class="[item.isDefault ? 'select' : '']"
+ @click="changeDefaultAddress(item, index)">
</view>
<span class="desc" style="word-break: break-all;">{{ item.isDefault ? '默认地址:' : '当前地址:' }}</span>
@@ -74,10 +75,10 @@
<view class="desc del t-red" @click="deleteAddress(item)">
删除
</view>
- <view class="desc del t-green m-l-10" v-if="source==='select'" @click="selectAddress(item)">
+ <view class="desc del t-green m-l-10" v-if="source === 'select'" @click="selectAddress(item)">
选择此地址
</view>
- <view class="desc del t-green m-l-10" v-if="source==='home'" @click="selectAddress(item)">
+ <view class="desc del t-green m-l-10" v-if="source === 'home'" @click="selectAddress(item)">
按此地址定位
</view>
</view>
@@ -119,12 +120,14 @@
<view class="form-item-label require">
收货地址
</view>
- <view class="m-l-a m-r-0 flex " :class="[!dto['province']?'desc-gray':'']">
- <uni-data-picker :area="true" @change="(e)=>{PickArea(submitForm,e)}" placeholder=""
+ <view class="m-l-a m-r-0 flex " :class="[!dto['province'] ? 'desc-gray' : '']">
+ <uni-data-picker :area="true" @change="(e) => { PickArea(submitForm, e) }" placeholder=""
:localdata="regionDataPlus">
- {{ submitForm['province'] || '请选择' }}{{ submitForm['city'] && ('/' + submitForm['city']) || '' }}{{
- submitForm['region'] && ('/' + submitForm['region']) || ''
- }}
+ {{ submitForm['province'] || '请选择' }}{{ submitForm['city'] && ('/' + submitForm['city'])
+ || ''
+ }}{{
+ submitForm['region'] && ('/' + submitForm['region']) || ''
+ }}
</uni-data-picker>
<u-icon class="m-l-a" name="arrow-right"></u-icon>
</view>
@@ -154,7 +157,7 @@
</view>
<view class="form-item-value">
<radio value="r1" :checked="submitForm.isDefault"
- @click="submitForm.isDefault=!submitForm.isDefault"
+ @click="submitForm.isDefault = !submitForm.isDefault"
style="transform:scale(0.6);margin-top: -8rpx;" />
</view>
</view>
@@ -168,80 +171,443 @@
</template>
<script>
- // #ifdef PUB_CUSTOMER
- // import qqmapwx from '@/plugins/qqmap-wx-jssdk.min.js';
- // const lockey = 'GSBBZ-CJA3U-NNDVH-GE65N-6FIF6-ZGBCU'; //使用在腾讯位置服务申请的key
- // const chooseLocation = requirePlugin('chooseLocation');
- // #endif
+// #ifdef PUB_CUSTOMER
+// import qqmapwx from '@/plugins/qqmap-wx-jssdk.min.js';
+// const lockey = 'GSBBZ-CJA3U-NNDVH-GE65N-6FIF6-ZGBCU'; //使用在腾讯位置服务申请的key
+// const chooseLocation = requirePlugin('chooseLocation');
+// #endif
- import {
- mapState
- } from 'vuex'
- export default {
- async onPullDownRefresh() {
- this.page.current = 0
+import amapFile from '@/map/amap-wx.130.js';
+
+import {
+ mapState
+} from 'vuex'
+export default {
+ async onPullDownRefresh() {
+ this.page.current = 0
+ await this.getList()
+ uni.stopPullDownRefresh()
+ },
+ async onLoad(options) {
+ // debugger;
+ // 引入高德地图的组件
+ const myAmapFun = new amapFile.AMapWX({ key: '75d7da3feb329cd5ae997975b953abb6' });
+ myAmapFun.getRegeo({
+ success: (data) => {
+ console.log('当前位置:', data[0]);
+ console.log(data)
+ // this.setData({
+ // longitude: data[0].longitude,
+ // latitude: data[0].latitude,
+ // locationName: data[0].name,
+ // });
+ },
+ fail(err) {
+ console.error(err);
+ },
+ });
+
+ // this.list = [{}, {}]
+ this.source = options.source || ''
+ this.listApi = '/api/address/list'
+ if (!this.currentInfo.id) {
+
+ } else {
await this.getList()
- uni.stopPullDownRefresh()
+
+ }
+
+ },
+ onShow() {
+
+ },
+ computed: {
+ ...mapState({
+ address: state => {
+ return state.defaultaddress || {}
+ },
+ addressDesc: state => {
+ return state.addressDesc || ''
+ },
+ // search_flow() {
+ // return this.addressDesc || ''
+ // }
+ }),
+
+ },
+ data() {
+ return {
+ source: '',
+ submitForm: {
+ name: '',
+ tel: '',
+ address: '',
+ isDefault: false,
+ province: '',
+ city: '',
+ region: '',
+ latitude: 0,
+ longitude: 0,
+ },
+ regionDataPlus: [],
+ list: [],
+ search_flow: '',
+ };
+ },
+ methods: {
+ selectGaodeAddress(){
+ uni.navigateTo({
+ url: '/pages/user/address/gaode-address'
+ })
},
- async onLoad(options) {
- // this.list = [{}, {}]
- this.source = options.source || ''
- this.listApi = '/api/address/list'
- if (!this.currentInfo.id) {
+ selectWxAddress(source) {
+ let that = this
- } else {
- await this.getList()
+ {
+ //表单选择了地址
+ wx.chooseLocation({
+ success: location => {
+ console.log('success loc', location, source)
+ console.log(location)
+ // address: "江苏省苏州市吴中区太湖东路288号"
+ // errMsg: "chooseLocation:ok"
+ // latitude: 31.26249
+ // longitude: 120.63212
+ // name: "苏州市吴中区人民政府"
+ if (source === 'form') {
+ // (location.address || '') +
+ that.submitForm.address = (location.name || location.address || '')
+ that.submitForm.latitude = location.latitude || 0
+ that.submitForm.longitude = location.longitude || 0
+ } else if (source === 'input') {
+ // (location.address || '') +
+ // that.search_flow = (location.name || '')
+ that.$store.commit('setAddressDesc', (location.name || location.address || ''))
+ that.$forceUpdate()
+ that.backpage()
+ }
+ // if (!that.submitForm.province && location.provinceName) {
+ // that.submitForm.province = location.provinceName
+ // if (!that.submitForm.city && location.cityName) {
+ // that.submitForm.city = location.cityName
+ // }
+ // if (!that.submitForm.region && location.countyName) {
+ // that.submitForm.region = location.countyName
+ // }
+ // if (!that.submitForm.region && location.cityName) {
+ // that.submitForm.region = location.cityName
+ // }
+ // }
+ // success loc
+ // {errMsg: "chooseAddress:ok", userName: "张三", nationalCode: "510000", telNumber: "020-81167888", postalCode: "510000", …}
+ // cityName: "广州市"
+ // countyName: "海珠区"
+ // detailInfo: "新港中路397号"
+ // errMsg: "chooseAddress:ok"
+ // nationalCode: "510000"
+ // postalCode: "510000"
+ // provinceName: "广东省"
+ // telNumber: "020-81167888"
+ // userName: "张三"
+ },
+ fail: e => {
+ console.log('fail loc', e)
+ // that.$message.showToast('定位失败')
+ }
+ })
+ // uni.getLocation({
+ // type: 'wgs84',
+ // success(res) {
+ // //得到经纬度
+ // console.log(res);
+ // const referer = '花满芫'; //调用插件的app的名称
+ // const location = JSON.stringify({
+ // latitude: res.latitude,
+ // longitude: res.longitude
+ // });
+ // const category = '生活服务,娱乐休闲';
+ // // &category=${category}
+
+ // wx.navigateTo({
+ // url: `plugin://chooseLocation/index?key=${lockey}&referer=${referer}&location=${location}`
+ // });
+
+ // }
+ // })
+ }
+ },
+ validatePhoneNumber() {
+
+ // 手机号码正则表达式,可以根据需要调整
+ const phoneRegex = /^[1][3-9][0-9]{9}$/;
+ if (!phoneRegex.test(this.submitForm['tel'])) {
+ this.$message.showToast('请填写正确手机号码')
}
},
- onShow() {
- // const location = chooseLocation.getLocation(); // 如果点击确认选点按钮,则返回选点结果对象,否则返回null
- // // console.log('onshow location', location, this.tmp_picker_lock_index, this.formcodes["LOC_ONE"])
- // // address: "江苏省苏州市吴中区太湖东路280号"
- // // city: "苏州市"
- // // district: "吴中区"
- // // latitude: 31.262438
- // // longitude: 120.633985
- // // name: "太湖东路280号小区"
- // // province: "江苏省"
- // if (location && location.address) {
- // this.submitForm.address = location.address
- // this.submitForm.latitude = location.latitude
- // this.submitForm.longitude = location.longitude
- // if (!this.submitForm.province && location.province) {
- // this.submitForm.province = location.province
- // if (!this.submitForm.city && location.city) {
- // this.submitForm.city = location.city
- // }
- // if (!this.submitForm.region && location.district) {
- // this.submitForm.region = location.district
- // }
- // if (!this.submitForm.region && location.city) {
- // this.submitForm.region = location.city
- // }
- // }
- // this.$forceUpdate()
- // }
+
+ addAddress() {
+ delete this.submitForm.id
+ this.submitForm['name'] = ''
+ this.submitForm['tel'] = ''
+ this.submitForm['address'] = ''
+ this.submitForm['province'] = ''
+ this.submitForm['city'] = ''
+ this.submitForm['region'] = ''
+ this.submitForm['isDefault'] = false
+ this.openAddressForm()
},
- computed: {
- ...mapState({
- address: state => {
- return state.defaultaddress || {}
+ changeCurrentAddress() {
+ // if(!this.addressDesc){
+
+ // }
+ let that = this
+ this.$message.showLoading()
+ uni.getLocation({
+ type: 'gcj02',
+ geocode: true,
+ success: async (res) => {
+ // this.location = {
+ // latitude: res.latitude,
+ // longitude: res.longitude,
+ // speed: res.speed,
+ // accuracy: res.accuracy,
+ // address: res.address,
+ // };
+ const {
+ code, data
+ } = await that.$http.request('get', '/api/pub/customer/home/address/parse', {
+ data: {},
+ params: {
+ // https://apis.map.qq.com/ws/geocoder/v1/?location=39.984154,116.307490&key=[你的key]&get_poi=1
+ location: `${res.latitude},${res.longitude}`
+ }
+ })
+ console.log('定位成功:', data);
+ if (data) {
+ var address = data.result && data.result.address || ''
+
+ that.$store.commit('setAddressDesc', (address || ''))
+ that.$forceUpdate()
+
+ that.backpage()
+
+ }
+
+
},
- addressDesc: state => {
- return state.addressDesc || ''
+ fail: (err) => {
+ that.error = err;
+ console.error('定位失败:', err);
},
- // search_flow() {
- // return this.addressDesc || ''
- // }
- }),
+ complete() {
+ that.$message.hideLoading()
+ }
+ });
+ },
+ PickArea(item, e) {
+ console.log('PickArea', item, e)
+ if (e.detail.value) {
+ this.submitForm.province = ''
+ this.submitForm.city = ''
+ this.submitForm.region = ''
+ if (e.detail.value.length == 2) {
+ if (!!e.detail.value[0])
+ this.submitForm.province = e.detail.value[0].value
+ if (!!e.detail.value[0])
+ this.submitForm.city = e.detail.value[0].value
+ if (!!e.detail.value[1])
+ this.submitForm.region = e.detail.value[1].value
+ } else if (e.detail.value.length <= 3) {
+ if (!!e.detail.value[0])
+ this.submitForm.province = e.detail.value[0].value
+ if (!!e.detail.value[1])
+ this.submitForm.city = e.detail.value[1].value
+ if (!!e.detail.value[2])
+ this.submitForm.region = e.detail.value[2].value
+ } else {
+ //说明有重复的
+ var plusnum = e.detail.value.length - 3
+ if (!!e.detail.value[plusnum + 0])
+ this.submitForm.province = e.detail.value[plusnum + 0].value
+ if (!!e.detail.value[plusnum + 1])
+ this.submitForm.city = e.detail.value[plusnum + 1].value
+ if (!!e.detail.value[plusnum + 2])
+ this.submitForm.region = e.detail.value[plusnum + 2].value
+ }
+
+ this.$forceUpdate()
+ console.log('submit forn', this.submitForm)
+ }
+ },
+ async init_area() {
+ // debugger;
+ // if (this.regionDataPlus && this.regionDataPlus.length > 0) {
+
+ // } else {
+ // var a = this.$storage.getItem('cache_area')
+ var a = false
+ if (a) {
+ this.regionDataPlus = JSON.parse(a) || []
+ } else {
+ await this.$http.request('get', '/api/pub/china/area/json/refresh')
+ const res = await this.$http.request('get', '/api/pub/china/area/json')
+ // console.log('area', JSON.parse(res.data))
+ this.regionDataPlus = res.data && JSON.parse(res.data.replaceAll('code', 'value').replaceAll(
+ 'name',
+ 'text')) || []
+ this.$storage.setItem('cache_area', JSON.stringify(this.regionDataPlus))
+ }
+ // }
},
- data() {
- return {
- source: '',
- submitForm: {
+ chooseLocation() {
+ //前往接口挑选位置
+ const qqmapsdk = new qqmapwx({
+ // 使用你在腾讯地图应用生成的key
+ key: lockey
+ });
+
+ uni.getLocation({
+ type: 'wgs84',
+ success(res) {
+ //得到经纬度
+ console.log(res);
+ qqmapsdk.reverseGeocoder({
+ location: {
+ latitude: res.latitude,
+ longitude: res.longitude
+ },
+ //成功后的回调
+ success: (r) => {
+ // console.log('地址信息', r.result.address_component);
+ // result: {location: {lat: 31.26249, lng: 120.63212}, address: "江苏省苏州市吴中区太湖东路288号",…}
+ // ad_info: {nation_code: "156", adcode: "320506", phone_area_code: "0512", city_code: "156320500",…}
+ // address: "江苏省苏州市吴中区太湖东路288号"
+ // address_component: {nation: "中国", province: "江苏省", city: "苏州市", district: "吴中区", street: "太湖东路",…}
+ // address_reference: {,…}
+ // formatted_addresses: {recommend: "长桥苏州市吴中区人民政府(太湖东路北)", rough: "长桥苏州市吴中区人民政府(太湖东路北)"}
+ // location: {lat: 31.26249, lng: 120.63212}
+ // status: 0
+ tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index].longitude = r
+ .result.location.lng
+ tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index].latitude = r
+ .result.location.lat
+ tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index].loc_desc = r
+ .result.address
+ tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index]._show = false
+ tmp.$forceUpdate()
+ tmp.tmp_picker_lock_index = -1
+
+ },
+ fail: function (res) {
+ console.log(res);
+ tmp.tmp_picker_lock_index = -1
+ },
+ });
+ }
+ });
+ },
+ async changeDefaultAddress(item, index) {
+ if (item.isDefault) {
+ return
+ }
+ this.$nextTick(() => {
+
+ this.$message.confirm('确定设置此地址为默认地址吗').then(async res => {
+ this.$message.showLoading()
+ var {
+ code
+ } = await this.$http.request('post', '/api/address/set/default/' + item
+ .id, {
+ data: {
+ id: item.id
+ },
+ params: {
+ id: item.id
+ }
+ })
+ this.$message.hideLoading()
+ if (code === 0) {
+ for (var dto of this.list) {
+ dto.isDefault = false
+ }
+ this.$message.showToast('设置成功')
+ item.isDefault = true
+ this.$store.commit('setDefaultAddress', {
+ ...item
+ })
+
+
+ }
+ }, err => {
+ this.$nextTick(() => {
+ this.list[index].isDefault = false
+ this.$forceUpdate()
+ console.log('err', err, this.list[index])
+ })
+
+
+ })
+ })
+ },
+ async selectAddress(item) {
+ //携带,然后返回
+
+ if (this.source === 'home') {
+ this.$store.commit('setAddressDesc', '')
+ this.$store.commit('setDefaultAddress', {
+ ...item
+ })
+ } else {
+ await this.$message.confirm('确定选择此地址作为收货地址吗')
+ this.$store.commit('setDefaultAddress', {
+ ...item
+ })
+
+ }
+ this.backpage()
+ },
+ async deleteAddress(item) {
+ await this.$message.confirm('确定删除此地址吗')
+ this.$message.showLoading()
+ var {
+ code
+ } = await this.$http.request('get', '/api/address/delete?id=' + item.id, {})
+ this.$message.hideLoading()
+ if (code === 0) {
+ this.$message.showToast('删除成功')
+ if (this.address.id === item.id) {
+ //要清空地址了
+ this.$store.commit('setDefaultAddress', {})
+ }
+ setTimeout(() => {
+ this.page.current = 1
+ this.getList()
+ }, 500)
+ }
+ },
+ async openAddressForm() {
+ this.init_area()
+ if (this.submitForm.id) {
+ this.$message.showLoading()
+ var {
+ data
+ } = await this.$http.request('get', '/api/address/list/detail?id=' + this.submitForm.id, {})
+
+
+ if (data) {
+ this.submitForm = {
+ ...this.submitForm,
+ ...data
+ }
+ }
+ this.$message.hideLoading()
+ } else {
+ this.submitForm = {
+ // name: this.currentInfo && this.currentInfo.nickName || '',
+ // tel: this.currentInfo && this.currentInfo.tel || '',
name: '',
tel: '',
address: '',
@@ -249,554 +615,191 @@
province: '',
city: '',
region: '',
- latitude: 0,
- longitude: 0,
- },
- regionDataPlus: [],
- list: [],
- search_flow: '',
- };
+ }
+ }
+
+ this.$refs.popup_form.open()
+
},
- methods: {
- selectWxAddress(source) {
- let that = this
+ closeAddressForm() {
+ this.$refs.popup_form.close()
- {
- //表单选择了地址
- wx.chooseLocation({
- success: location => {
- console.log('success loc', location,source)
- // address: "江苏省苏州市吴中区太湖东路288号"
- // errMsg: "chooseLocation:ok"
- // latitude: 31.26249
- // longitude: 120.63212
- // name: "苏州市吴中区人民政府"
- if (source === 'form') {
- // (location.address || '') +
- that.submitForm.address = (location.name || location.address || '')
- that.submitForm.latitude = location.latitude || 0
- that.submitForm.longitude = location.longitude || 0
- } else if (source === 'input') {
- // (location.address || '') +
- // that.search_flow = (location.name || '')
- that.$store.commit('setAddressDesc', (location.name || location.address || ''))
- that.$forceUpdate()
- that.backpage()
- }
+ },
+ async saveOrUpdateAddress() {
+ if (!this.checkFormValues(this.submitForm, ['tel', 'name', 'address'])) {
+ this.$message.showToast('字段未填写完整')
+ return
+ }
+ if (!this.submitForm['province'] || !this.submitForm['province'] || !this.submitForm['province']) {
+ this.$message.showToast('省市区未选择完整')
+ return
+ }
- // if (!that.submitForm.province && location.provinceName) {
- // that.submitForm.province = location.provinceName
- // if (!that.submitForm.city && location.cityName) {
- // that.submitForm.city = location.cityName
- // }
- // if (!that.submitForm.region && location.countyName) {
- // that.submitForm.region = location.countyName
- // }
- // if (!that.submitForm.region && location.cityName) {
- // that.submitForm.region = location.cityName
- // }
- // }
- // success loc
- // {errMsg: "chooseAddress:ok", userName: "张三", nationalCode: "510000", telNumber: "020-81167888", postalCode: "510000", …}
- // cityName: "广州市"
- // countyName: "海珠区"
- // detailInfo: "新港中路397号"
- // errMsg: "chooseAddress:ok"
- // nationalCode: "510000"
- // postalCode: "510000"
- // provinceName: "广东省"
- // telNumber: "020-81167888"
- // userName: "张三"
- },
- fail: e => {
- console.log('fail loc', e)
- // that.$message.showToast('定位失败')
- }
- })
- // uni.getLocation({
- // type: 'wgs84',
- // success(res) {
- // //得到经纬度
- // console.log(res);
- // const referer = '花满芫'; //调用插件的app的名称
- // const location = JSON.stringify({
- // latitude: res.latitude,
- // longitude: res.longitude
- // });
- // const category = '生活服务,娱乐休闲';
- // // &category=${category}
-
- // wx.navigateTo({
- // url: `plugin://chooseLocation/index?key=${lockey}&referer=${referer}&location=${location}`
- // });
-
- // }
- // })
- }
- },
- validatePhoneNumber() {
-
- // 手机号码正则表达式,可以根据需要调整
- const phoneRegex = /^[1][3-9][0-9]{9}$/;
- if (!phoneRegex.test(this.submitForm['tel'])) {
- this.$message.showToast('请填写正确手机号码')
- }
-
- },
-
- addAddress() {
- delete this.submitForm.id
- this.submitForm['name'] = ''
- this.submitForm['tel'] = ''
- this.submitForm['address'] = ''
- this.submitForm['province'] = ''
- this.submitForm['city'] = ''
- this.submitForm['region'] = ''
- this.submitForm['isDefault'] = false
- this.openAddressForm()
- },
- changeCurrentAddress() {
- // if(!this.addressDesc){
-
- // }
- let that = this
- this.$message.showLoading()
- uni.getLocation({
- type: 'gcj02',
- geocode: true,
- success: async (res) => {
- // this.location = {
- // latitude: res.latitude,
- // longitude: res.longitude,
- // speed: res.speed,
- // accuracy: res.accuracy,
- // address: res.address,
- // };
- const {
- code,data
- } = await that.$http.request('get', '/api/pub/customer/home/address/parse', {
- data: {},
- params: {
- // https://apis.map.qq.com/ws/geocoder/v1/?location=39.984154,116.307490&key=[你的key]&get_poi=1
- location:`${res.latitude},${res.longitude}`
- }
- })
- console.log('定位成功:', data);
- if(data){
- var address = data.result&&data.result.address || ''
-
- that.$store.commit('setAddressDesc', (address || ''))
- that.$forceUpdate()
-
- that.backpage()
-
- }
-
-
- },
- fail: (err) => {
- that.error = err;
- console.error('定位失败:', err);
- },
- complete() {
- that.$message.hideLoading()
- }
- });
- },
- PickArea(item, e) {
- console.log('PickArea', item, e)
- if (e.detail.value) {
- this.submitForm.province = ''
- this.submitForm.city = ''
- this.submitForm.region = ''
- if (e.detail.value.length == 2) {
- if (!!e.detail.value[0])
- this.submitForm.province = e.detail.value[0].value
- if (!!e.detail.value[0])
- this.submitForm.city = e.detail.value[0].value
- if (!!e.detail.value[1])
- this.submitForm.region = e.detail.value[1].value
- } else if (e.detail.value.length <= 3) {
- if (!!e.detail.value[0])
- this.submitForm.province = e.detail.value[0].value
- if (!!e.detail.value[1])
- this.submitForm.city = e.detail.value[1].value
- if (!!e.detail.value[2])
- this.submitForm.region = e.detail.value[2].value
- } else {
- //说明有重复的
- var plusnum = e.detail.value.length - 3
- if (!!e.detail.value[plusnum + 0])
- this.submitForm.province = e.detail.value[plusnum + 0].value
- if (!!e.detail.value[plusnum + 1])
- this.submitForm.city = e.detail.value[plusnum + 1].value
- if (!!e.detail.value[plusnum + 2])
- this.submitForm.region = e.detail.value[plusnum + 2].value
- }
-
- this.$forceUpdate()
- console.log('submit forn', this.submitForm)
- }
- },
- async init_area() {
- // debugger;
- // if (this.regionDataPlus && this.regionDataPlus.length > 0) {
-
- // } else {
- // var a = this.$storage.getItem('cache_area')
- var a =false
- if (a) {
- this.regionDataPlus = JSON.parse(a) || []
- } else {
- await this.$http.request('get', '/api/pub/china/area/json/refresh')
- const res = await this.$http.request('get', '/api/pub/china/area/json')
- // console.log('area', JSON.parse(res.data))
- this.regionDataPlus = res.data && JSON.parse(res.data.replaceAll('code', 'value').replaceAll(
- 'name',
- 'text')) || []
- this.$storage.setItem('cache_area', JSON.stringify(this.regionDataPlus))
- }
- // }
-
- },
- chooseLocation() {
- //前往接口挑选位置
- const qqmapsdk = new qqmapwx({
- // 使用你在腾讯地图应用生成的key
- key: lockey
- });
-
- uni.getLocation({
- type: 'wgs84',
- success(res) {
- //得到经纬度
- console.log(res);
- qqmapsdk.reverseGeocoder({
- location: {
- latitude: res.latitude,
- longitude: res.longitude
- },
- //成功后的回调
- success: (r) => {
- // console.log('地址信息', r.result.address_component);
- // result: {location: {lat: 31.26249, lng: 120.63212}, address: "江苏省苏州市吴中区太湖东路288号",…}
- // ad_info: {nation_code: "156", adcode: "320506", phone_area_code: "0512", city_code: "156320500",…}
- // address: "江苏省苏州市吴中区太湖东路288号"
- // address_component: {nation: "中国", province: "江苏省", city: "苏州市", district: "吴中区", street: "太湖东路",…}
- // address_reference: {,…}
- // formatted_addresses: {recommend: "长桥苏州市吴中区人民政府(太湖东路北)", rough: "长桥苏州市吴中区人民政府(太湖东路北)"}
- // location: {lat: 31.26249, lng: 120.63212}
- // status: 0
- tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index].longitude = r
- .result.location.lng
- tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index].latitude = r
- .result.location.lat
- tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index].loc_desc = r
- .result.address
- tmp.formcodes['LOC_ONE'][tmp.tmp_picker_lock_index]._show = false
- tmp.$forceUpdate()
- tmp.tmp_picker_lock_index = -1
-
- },
- fail: function(res) {
- console.log(res);
- tmp.tmp_picker_lock_index = -1
- },
- });
- }
- });
- },
- async changeDefaultAddress(item, index) {
- if (item.isDefault) {
- return
- }
- this.$nextTick(() => {
-
- this.$message.confirm('确定设置此地址为默认地址吗').then(async res => {
- this.$message.showLoading()
- var {
- code
- } = await this.$http.request('post', '/api/address/set/default/' + item
- .id, {
- data: {
- id: item.id
- },
- params: {
- id: item.id
- }
- })
- this.$message.hideLoading()
- if (code === 0) {
- for (var dto of this.list) {
- dto.isDefault = false
- }
- this.$message.showToast('设置成功')
- item.isDefault = true
- this.$store.commit('setDefaultAddress', {
- ...item
- })
-
-
- }
- }, err => {
- this.$nextTick(() => {
- this.list[index].isDefault = false
- this.$forceUpdate()
- console.log('err', err, this.list[index])
- })
+ // 手机号码正则表达式,可以根据需要调整
+ const phoneRegex = /^[1][3-9][0-9]{9}$/;
+ if (!phoneRegex.test(this.submitForm['tel'])) {
+ this.$message.showToast('请填写正确手机号码')
+ return
+ }
- })
- })
- },
- async selectAddress(item) {
- //携带,然后返回
-
- if(this.source==='home'){
- this.$store.commit('setAddressDesc', '')
- this.$store.commit('setDefaultAddress', {
- ...item
- })
- }else{
- await this.$message.confirm('确定选择此地址作为收货地址吗')
- this.$store.commit('setDefaultAddress', {
- ...item
- })
-
- }
- this.backpage()
- },
- async deleteAddress(item) {
- await this.$message.confirm('确定删除此地址吗')
- this.$message.showLoading()
- var {
- code
- } = await this.$http.request('get', '/api/address/delete?id=' + item.id, {})
- this.$message.hideLoading()
- if (code === 0) {
- this.$message.showToast('删除成功')
- if (this.address.id === item.id) {
- //要清空地址了
- this.$store.commit('setDefaultAddress', {})
- }
- setTimeout(() => {
- this.page.current = 1
- this.getList()
- }, 500)
- }
- },
- async openAddressForm() {
- this.init_area()
- if (this.submitForm.id) {
- this.$message.showLoading()
- var {
- data
- } = await this.$http.request('get', '/api/address/list/detail?id=' + this.submitForm.id, {})
-
- if (data) {
- this.submitForm = {
- ...this.submitForm,
- ...data
- }
- }
- this.$message.hideLoading()
- } else {
- this.submitForm = {
- // name: this.currentInfo && this.currentInfo.nickName || '',
- // tel: this.currentInfo && this.currentInfo.tel || '',
- name: '',
- tel: '',
- address: '',
- isDefault: false,
- province: '',
- city: '',
- region: '',
- }
- }
-
- this.$refs.popup_form.open()
-
- },
- closeAddressForm() {
+ this.$message.showLoading()
+ const {
+ code
+ } = await this.$http.request('post', '/api/address/' + (this.submitForm.id ? 'update' :
+ 'add'), {
+ data: this.submitForm
+ })
+ this.$message.hideLoading()
+ if (code === 0) {
this.$refs.popup_form.close()
+ this.$message.showToast(this.submitForm.id ? '修改成功' : '新增成功')
- },
- async saveOrUpdateAddress() {
- if (!this.checkFormValues(this.submitForm, ['tel', 'name', 'address'])) {
- this.$message.showToast('字段未填写完整')
- return
+ let tmp = this
+ setTimeout(() => {
+ tmp.page.current = 1
+ tmp.refreshList()
+ }, 300)
+ //如果当前选择的地址是这个,需要更新一下数据
+ if (this.address.id && this.submitForm.id === this.address.id) {
+ this.$store.commit('setDefaultAddress', {
+ ...this.submitForm
+ })
}
- if (!this.submitForm['province'] || !this.submitForm['province'] || !this.submitForm['province']) {
- this.$message.showToast('省市区未选择完整')
- return
- }
+ }
+ },
- // 手机号码正则表达式,可以根据需要调整
- const phoneRegex = /^[1][3-9][0-9]{9}$/;
- if (!phoneRegex.test(this.submitForm['tel'])) {
- this.$message.showToast('请填写正确手机号码')
- return
- }
-
-
-
- this.$message.showLoading()
- const {
- code
- } = await this.$http.request('post', '/api/address/' + (this.submitForm.id ? 'update' :
- 'add'), {
- data: this.submitForm
- })
- this.$message.hideLoading()
- if (code === 0) {
- this.$refs.popup_form.close()
- this.$message.showToast(this.submitForm.id ? '修改成功' : '新增成功')
-
- let tmp = this
- setTimeout(() => {
- tmp.page.current = 1
- tmp.refreshList()
- }, 300)
- //如果当前选择的地址是这个,需要更新一下数据
- if (this.address.id && this.submitForm.id === this.address.id) {
- this.$store.commit('setDefaultAddress', {
- ...this.submitForm
- })
- }
- }
- },
-
- }
}
+}
</script>
<style lang="scss" scoped>
- .container-address {
- .current-address {
- padding: 20rpx;
- background-color: #FFFFFF;
- border-radius: 16rpx;
- margin-top: 16rpx;
- margin-bottom: 20rpx;
- }
+.container-address {
+ .current-address {
+ padding: 20rpx;
+ background-color: #FFFFFF;
+ border-radius: 16rpx;
+ margin-top: 16rpx;
+ margin-bottom: 20rpx;
+ }
- .popup-address-form {
- background: #FFFFFF;
- border-radius: 16rpx;
- // width: 690rpx;
- height: 882rpx;
- margin-top: 120rpx;
- margin-left: 30rpx;
- margin-right: 30rpx;
- padding: 24rpx 36rpx;
+ .popup-address-form {
+ background: #FFFFFF;
+ border-radius: 16rpx;
+ // width: 690rpx;
+ height: 882rpx;
+ margin-top: 120rpx;
+ margin-left: 30rpx;
+ margin-right: 30rpx;
+ padding: 24rpx 36rpx;
- .submit {
- margin-top: 30rpx;
+ .submit {
+ margin-top: 30rpx;
- .form-input {
- height: 36rpx;
- line-height: 36rpx;
- }
- }
- }
-
- .location-each {
- background: #FFFFFF;
- border-radius: 16rpx;
- margin-bottom: 24rpx;
- padding: 36rpx;
-
- .name {
- font-size: 32rpx;
- color: #000000;
- line-height: 44rpx;
- text-align: left;
- font-style: normal;
- }
-
- .tel {
- font-size: 28rpx;
- color: #666666;
- line-height: 40rpx;
- text-align: left;
- font-style: normal;
- padding-top: 4rpx;
- margin-left: 20rpx;
- }
-
- .address {
- font-size: 24rpx;
- color: #000000;
- line-height: 34rpx;
- text-align: left;
- font-style: normal;
- }
-
- .desc {
- font-size: 24rpx;
- color: #666666;
- line-height: 34rpx;
- text-align: left;
- font-style: normal;
- }
-
- .del {
- // vertical-align: baseline;
- margin-left: auto;
- margin-right: 6rpx;
- margin-top: 4rpx;
- }
-
- .container-info {
- max-width: 540rpx;
- }
-
- .h-line {
- width: 2rpx;
- height: 46rpx;
- background-color: #EEEEEE;
- margin-left: 28rpx;
- margin-right: 24rpx;
- }
-
- .v-line {
- width: 638rpx;
- height: 2rpx;
- // border: 2rpx solid #EEEEEE;
- background-color: #EEEEEE;
- margin-top: 24rpx;
- margin-bottom: 24rpx;
- }
-
- .edit {
- // min-width: 80rpx;
- width: fit-content;
- margin-left: auto;
- margin-right: 0rpx;
- display: flex;
- position: relative;
-
- .icon {
- // margin: 0 auto;
- // mar
- margin-left: auto;
- margin-right: auto;
- margin-top: 20rpx;
- display: block;
-
- }
- }
-
- .edit::before {
- content: " ";
- width: 2rpx;
- height: 46rpx;
- background-color: #EEEEEE;
- position: absolute;
- left: -24rpx;
- top: 20rpx;
+ .form-input {
+ height: 36rpx;
+ line-height: 36rpx;
}
}
}
+
+ .location-each {
+ background: #FFFFFF;
+ border-radius: 16rpx;
+ margin-bottom: 24rpx;
+ padding: 36rpx;
+
+ .name {
+ font-size: 32rpx;
+ color: #000000;
+ line-height: 44rpx;
+ text-align: left;
+ font-style: normal;
+ }
+
+ .tel {
+ font-size: 28rpx;
+ color: #666666;
+ line-height: 40rpx;
+ text-align: left;
+ font-style: normal;
+ padding-top: 4rpx;
+ margin-left: 20rpx;
+ }
+
+ .address {
+ font-size: 24rpx;
+ color: #000000;
+ line-height: 34rpx;
+ text-align: left;
+ font-style: normal;
+ }
+
+ .desc {
+ font-size: 24rpx;
+ color: #666666;
+ line-height: 34rpx;
+ text-align: left;
+ font-style: normal;
+ }
+
+ .del {
+ // vertical-align: baseline;
+ margin-left: auto;
+ margin-right: 6rpx;
+ margin-top: 4rpx;
+ }
+
+ .container-info {
+ max-width: 540rpx;
+ }
+
+ .h-line {
+ width: 2rpx;
+ height: 46rpx;
+ background-color: #EEEEEE;
+ margin-left: 28rpx;
+ margin-right: 24rpx;
+ }
+
+ .v-line {
+ width: 638rpx;
+ height: 2rpx;
+ // border: 2rpx solid #EEEEEE;
+ background-color: #EEEEEE;
+ margin-top: 24rpx;
+ margin-bottom: 24rpx;
+ }
+
+ .edit {
+ // min-width: 80rpx;
+ width: fit-content;
+ margin-left: auto;
+ margin-right: 0rpx;
+ display: flex;
+ position: relative;
+
+ .icon {
+ // margin: 0 auto;
+ // mar
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 20rpx;
+ display: block;
+
+ }
+ }
+
+ .edit::before {
+ content: " ";
+ width: 2rpx;
+ height: 46rpx;
+ background-color: #EEEEEE;
+ position: absolute;
+ left: -24rpx;
+ top: 20rpx;
+ }
+ }
+}
</style>
\ No newline at end of file
diff --git a/pages/user/address/gaode-address.vue b/pages/user/address/gaode-address.vue
new file mode 100644
index 0000000..d748557
--- /dev/null
+++ b/pages/user/address/gaode-address.vue
@@ -0,0 +1,359 @@
+<template>
+ <view class="content">
+ <!-- <view class="btns">
+ <view @click="back">取 消</view>
+ <view @click="getCurrentLocation">获取当前地址</view>
+ </view> -->
+ <view class="inputCon">
+ <view class="searchView">
+ <text class="iconfont icon-sousuo" @click="searchFn"></text>
+ <input type="text" placeholder="搜索地点" v-model="searchWords" confirm-type="search" @confirm="searchFn" />
+ <text @click="cancel">取消</text>
+ </view>
+ </view>
+ <!-- 地图部分 -->
+ <view class="content-map">
+ <map style="width: 100%;height: 100%;" v-if="mapFlafg" :latitude="latitude" :longitude="longitude" :markers="markers"
+ @tap="tap" :scale="16" :title="title"/>
+ </view>
+ <!-- <view id="container"></view> -->
+ <!-- 搜索框 -->
+
+ <!-- 地点列表部分 -->
+ <view class="list">
+ <view class="item" v-for="(add,index) in dataTips" :key="add.id" @click="select(add,index)"
+ :class="selectIndex==index?'active':''">
+ <view class="name">{{add.name}}</view>
+ <view class="address">{{add.district || ''}}{{add.address || ''}}</view>
+ </view>
+ </view>
+ </view>
+</template>
+
+<script>
+ // 引入高德地图api提供的微信小程序的接口
+ import amapFile from '@/map/amap-wx.130.js';
+ // 创建地图
+ var myAmapFun = new amapFile.AMapWX({
+ key: '75d7da3feb329cd5ae997975b953abb6'
+ }); //key值要申请为 去高德地图申请微信小程序的key
+ // var myAmapFun = new amapFile.AMapWX({key: ''}); //key我的
+ export default {
+ data() {
+ return {
+ mapFlafg:false,
+ selectIndex: undefined,
+ selectAddr: {},
+ searchWords: "",
+ id: 1, // 使用 marker点击事件 需要填写id
+ title: 'map',
+ latitude: 39.91667, // 纬度
+ longitude: 116.41667, // 经度
+
+ markers: [{
+ latitude: 39.91667, // 纬度
+ longitude: 116.41667, // 经度
+ width: 30,
+ height: 30,
+ iconPath: ''
+ // iconPath: '../../static/ditu.png'
+ }],
+ dataTips: []
+ }
+ },
+ onLoad() {
+ var self = this;
+ uni.getLocation({
+ type: 'gcj02',
+ success: function(res) {
+ console.log(res, '当前地址定位');
+ if (res.errMsg == "getLocation:ok") {
+ console.log(self.mark, 'onload里面看看');
+ self.longitude = res.longitude;
+ self.latitude = res.latitude;
+ self.$set(self.markers[0],"longitude",res.longitude);
+ self.$set(self.markers[0],"latitude",res.latitude);
+ self.mapFlafg=true;
+ console.log(self.markers,"markers")
+ // self.markers[0].longitude = res.longitude;
+ // self.markers[0].latitude = res.latitude;
+ }
+ },
+ complete: () => {
+ // 获取当前位置的地点列表
+ myAmapFun.getPoiAround({
+ location: self.longitude + ',' + self.latitude,
+ success: (data) => {
+ console.log("获取当前的列表", data);
+ this.dataTips = data.poisData;
+ },
+ fail: (info) => {
+ console.log(info, '点击地图错误信息1')
+ }
+ })
+ }
+ });
+
+ },
+ methods: {
+ cancel() {
+ if (this.searchWords) {
+ this.searchWords = "";
+ myAmapFun.getPoiAround({
+ location: this.markers[0].longitude + ',' + this.markers[0].latitude,
+ success: (data) => {
+ console.log("获取当前的列表", data);
+ this.$nextTick(() => {
+ this.dataTips = data.poisData;
+ })
+ },
+ fail: (info) => {
+ console.log(info)
+ }
+ })
+ }
+ },
+ reserGeo() {
+ myAmapFun.getRegeo({
+ success: (data) => {
+ console.log("getRegeo", data);
+ },
+ fail: (info) => {
+ console.log(info)
+ }
+ })
+ },
+ // 根据地址列表中选择某一个地点
+ select(add, index) {
+ if (!add) {
+ return;
+ }
+ this.selectIndex = index;
+ var location = add.location.split(",");
+ console.log(location, add, '列表地点的经纬度');
+ this.selectAddr = {
+ address: add.pname ? (add.pname + add.cityname + add.adname) : (add.district + add
+ .address),
+ detailAddress: add.address,
+ latitude: location[1],
+ longitude: location[0]
+ };
+ this.markers[0].latitude = +location[1];
+ this.markers[0].longitude = +location[0];
+ uni.setStorageSync("address", this.selectAddr.address);
+ // 选择地点后,将选取的地点传递到前一个页面中
+ // var pages = getCurrentPages(); // 获取所有的页面栈
+ // var prevPage = pages[pages.length - 2]; // 找到上一个页面,注意是页面,如果是页面中有组件,则需要通过页面接受到数据后,再次往组件中传递
+ // prevPage.$vm.userAddress.locationAddress = this.selectAddr.address; //在上一个页面中就可以用userAddress进行接收
+ // prevPage.$vm.userAddress.detail = this.selectAddr.detailAddress; //在上一个页面中就可以用userAddress进行接收
+ // prevPage.$vm.selectAddr = this.selectAddr;
+ // prevPage.$vm.address = {
+ // province: add.pname,
+ // city: add.cityname,
+ // district: add.adname,
+ // }
+ uni.navigateBack({
+ delta: 1
+ });
+
+ },
+ // 在地图上点击进行选点,这个选点在地图缩放比例较大时无效,因为精读的问题。
+ tap(e) {
+ console.log(e, '点击了地图');
+ var location = e.detail.longitude + ',' + e.detail.latitude
+ myAmapFun.getRegeo({
+ location: location,
+ success: (data) => {
+ console.log("获取指定定位信息", data);
+ this.selectAddr = {
+ address: data[0].regeocodeData.formatted_address,
+ latitude: e.detail.latitude,
+ longitude: e.detail.longitude
+ };
+ this.markers[0].latitude = data[0].latitude;
+ this.markers[0].longitude = data[0].longitude;
+ myAmapFun.getPoiAround({
+ location: data[0].longitude + ',' + data[0].latitude,
+ success: (data) => {
+ console.log("获取当前的列表", data);
+ this.dataTips = data.poisData;
+ },
+ fail: (info) => {
+ console.log(info, '点击地图错误信息1')
+ }
+ })
+ },
+ fail: (info) => {
+ console.log(info, '点击地图错误信息2');
+ }
+ })
+ },
+ // 根据内容进行检索
+ searchFn() {
+ console.log("根据地址检索", this.searchWords);
+ myAmapFun.getInputtips({
+ keywords: this.searchWords,
+ location: '',
+ success: (data) => {
+ console.log(111, data);
+ if (data && data.tips) {
+ this.dataTips = data.tips;
+ }
+ },
+ fail: data => {
+ console.log(222, data);
+ }
+ })
+ },
+ // getCurrentLocation() {
+ // let that = this
+ // uni.getLocation({
+ // type: 'wgs84',
+ // success: function(res) {
+ // console.log(res, '当前地址定位');
+ // if (res.errMsg == "getLocation:ok") {
+ // console.log(that.mark, 'onload里面看看');
+ // this.longitude = res.longitude;
+ // this.latitude = res.latitude;
+ // this.markers[0].longitude = res.longitude;
+ // this.markers[0].latitude = res.latitude;
+ // }
+ // }
+ // });
+ // },
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .btns {
+
+ position: fixed;
+ top: 0;
+ left: 0;
+ height: 260upx;
+ width: 100%;
+ background: linear-gradient(to bottom, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0));
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ z-index: 10 !important;
+
+ view {
+ border-radius: 10%;
+ margin: 100upx 24upx 0;
+ font-size: 30upx;
+
+ &:first-child {
+ color: #fff;
+ }
+
+ &:last-child {
+ width: 100upx;
+ height: 60upx;
+ line-height: 60upx;
+ text-align: center;
+ border-radius: 10upx;
+ background: #20c295;
+ color: #fff;
+ }
+ }
+ }
+
+ .content {
+ // position: relative;
+ height: 100vh;
+ display: flex;
+ flex-direction: column;
+
+ .content-map {
+ width: 100%;
+ height: 50vh;
+ }
+
+ .list {
+ // flex: 0 1 calc(50vh - 10upx);
+ border-radius: 30rpx;
+ background-color: #fff;
+ // position: absolute;
+ // bottom:-660rpx;
+ height: calc(50vh - 10upx);
+ overflow-y: auto;
+ width: 100%;
+ margin: 0upx auto 0;
+ padding-bottom: 20upx;
+
+ .item {
+ border-bottom: 2upx solid #f3f3f3;
+ padding: 0 30rpx;
+
+ &:last-child {
+ border: none;
+ }
+
+ .address {
+ font-size: 22upx;
+ color: #666;
+ margin: 10upx 0;
+ }
+
+ .name {
+ font-size: 30upx;
+ color: #333;
+ margin-top: 10upx;
+ }
+
+ &.active {
+ .name {
+ font-weight: bold;
+ color: #E13500;
+ }
+
+ .address {
+ color: #E13500;
+ }
+ }
+ }
+ }
+
+ .inputCon {
+ flex: 0 1 108rpx;
+ width: 100%;
+ background: #fff;
+ // top: -60upx;
+ // position: relative;
+ z-index: 20;
+ // height: 100upx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
+ .searchView {
+ width: 702upx;
+ height: 60upx;
+ display: flex;
+ align-items: center;
+ line-height: 60upx;
+ border-radius: 40upx;
+ padding: 0 30upx;
+ box-sizing: border-box;
+ background: #f3f3f3;
+ font-size: 26upx;
+
+ .iconfont {
+ color: #666;
+ margin-right: 20upx;
+ }
+
+ input {
+ flex: 1;
+ }
+
+ view {
+ flex-shrink: 0;
+ }
+ }
+ }
+
+ }
+</style>
\ No newline at end of file
--
Gitblit v1.9.3