123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- var util = require('../../../utils/util.js');
- var api = require('../../../config/api.js');
- var check = require('../../../utils/check.js');
- var area = require('../../../utils/area.js');
- var map = require('../../../utils/map.js');
- const chooseLocation = requirePlugin('chooseLocation');
- var app = getApp();
- Page({
- data: {
- address: {
- id: 0,
- areaCode: 0,
- address: '',
- name: '',
- tel: '',
- isDefault: 0,
- province: '',
- city: '',
- county: '',
- lat: '',
- lng: '',
- addressDetail: '',
- detail: '',
- addressName: ''
- },
- addressId: 0,
- openSelectRegion: false,
- selectRegionList: [{
- code: 0,
- name: '省份'
- },
- {
- code: 0,
- name: '城市'
- },
- {
- code: 0,
- name: '区县'
- }
- ],
- regionType: 1,
- regionList: [],
- selectRegionDone: false
- },
- bindinputMobile(event) {
- let address = this.data.address;
- address.tel = event.detail.value;
- this.setData({
- address: address
- });
- },
- bindinputName(event) {
- let address = this.data.address;
- address.name = event.detail.value;
- this.setData({
- address: address
- });
- },
- bindinputAddress(event) {
- let address = this.data.address;
- address.detail = event.detail.value.replace(/[,,]/g, '');
- this.setData({
- address: address
- });
- // return value.replace(/[,,]/g,'');
- },
- bindIsDefault() {
- let address = this.data.address;
- address.isDefault = !address.isDefault;
- this.setData({
- address: address
- });
- },
- getAddressDetail() {
- let that = this;
- util.request(api.AddressDetail, {
- id: that.data.addressId
- }).then(function (res) {
- if (res.errno === 0) {
- if (res.data) {
- that.setData({
- address: res.data
- });
- let addressDetailList = res.data.addressDetail.split(',');
- let address = that.data.address;
- address.address = addressDetailList[0];
- address.detail = (addressDetailList.length > 1 ? addressDetailList[1] : '');
- that.setData({
- address: address
- });
- }
- }
- });
- },
- setRegionDoneStatus() {
- let that = this;
- let doneStatus = that.data.selectRegionList.every(item => {
- return item.code != 0;
- });
- that.setData({
- selectRegionDone: doneStatus
- })
- },
- onLoad: function (options) {
- // 页面初始化 options为页面跳转所带来的参数
- //console.log(options)
- if (options.id && options.id != 0) {
- this.setData({
- addressId: options.id
- });
- this.getAddressDetail();
- }
- //初始化area
- //area.init();
- },
- cancelAddress() {
- wx.navigateBack();
- },
- saveAddress() {
- console.log(this.data.address)
- let address = this.data.address;
- if (address.name == '') {
- util.showErrorToast('请输入姓名');
- return false;
- }
- if (address.tel == '') {
- util.showErrorToast('请输入手机号码');
- return false;
- }
- if (address.areaCode == 0) {
- util.showErrorToast('请输入省市区');
- return false;
- }
- if (address.address == '') {
- util.showErrorToast('请选择地址');
- return false;
- }
- if (!check.isValidPhone(address.tel)) {
- util.showErrorToast('手机号不正确');
- return false;
- }
- let that = this;
- let addressString = (address.detail == '' ? address.address : address.address + ',' + address.detail);
- util.request(api.AddressSave, {
- shopId: app.globalData.shopId ? app.globalData.shopId : '',
- id: address.id,
- name: address.name,
- tel: address.tel,
- province: address.province,
- city: address.city,
- county: address.county,
- areaCode: address.areaCode,
- addressDetail: addressString,
- addressName: address.addressName,
- isDefault: address.isDefault,
- lat: Number(address.lat).toFixed(5),
- lng: Number(address.lng).toFixed(5),
- }, 'POST').then(function (res) {
- if (res.errno === 0) {
- //返回之前,先取出上一页对象,并设置addressId
- var pages = getCurrentPages();
- var prevPage = pages[pages.length - 2];
- console.log(prevPage);
- if (prevPage.route == "pages/index/index") {
- var city = address.city.indexOf("市") < 0 ? address.province : address.city;
- var addresInfo = {
- city: city,
- lng: res.data.lng,
- lat: res.data.lat,
- shopId: res.data.shopId,
- address: res.data.addressDetail
- }
- wx.setStorageSync('addressInfo', address);
- } else if (prevPage.route == "pages/ucenter/serviceDetail/serviceDetail") {
- wx.setStorageSync('addressInfo', addresInfo);
- } else if (prevPage.route == "pages/checkout/checkout") {
- prevPage.setData({
- addressId: res.data.id
- })
- try {
- wx.setStorageSync('addressId', res.data);
- } catch (e) {
- }
- console.log("set address");
- }
- wx.navigateBack();
- } else {
- wx.showModal({
- title: '提醒',
- showCancel: false,
- content: res.errmsg
- })
- }
- });
- },
- deleteAddress(event) {
- console.log(event.target)
- let that = this;
- wx.showModal({
- title: '',
- content: '确定要删除地址?',
- success: function (res) {
- if (res.confirm) {
- let addressId = event.target.dataset.addressId;
- util.request(api.AddressDelete, {
- id: addressId
- }, 'POST').then(function (res) {
- if (res.errno === 0) {
- wx.navigateBack({
- delta: 1,
- success: function () {}
- })
- // that.getAddressList();
- // wx.removeStorage({
- // key: 'addressId',
- // success: function(res) {},
- // })
- }
- });
- console.log('用户点击确定')
- }
- }
- })
- return false;
- },
- goMapOld() {
- // const key = "JA2BZ-XGOEU-UNZVD-46G64-S6MYJ-6BBF4";
- //使用在腾讯位置服务申请的key
- const key = '6TRBZ-XXC6F-BWWJB-N75ME-BQNOF-YKFQY';
- const referer = '鲸致生活LifePlus'; //调用插件的app的名称
- const category = '小区,生活服务,娱乐休闲';
- if (this.data.address.lat) {
- const location = JSON.stringify({
- latitude: Number(this.data.address.lat),
- longitude: Number(this.data.address.lng)
- });
- wx.navigateTo({
- url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&category=' + category + '&location=' + location
- });
- } else
- wx.navigateTo({
- url: 'plugin://chooseLocation/index?key=' + key + '&referer=' + referer + '&category=' + category
- });
- },
- goMap() {
- app.globalData.mapSelectFinish = false;
- if (this.data.address.lng && this.data.address.lat) {
- let city = (this.data.address.city == '市辖区' ? this.data.address.province : this.data.address.city)
- wx.navigateTo({
- url: '/pages/map/mapContent/mapContent?lng=' + this.data.address.lng + '&lat=' + this.data.address.lat + '&addressname=' + this.data.address.address + '&city=' + city,
- });
- } else {
- wx.navigateTo({
- url: '/pages/map/mapContent/mapContent',
- });
- }
- },
- // onShow: function () {
- // // 页面显示
- // const location = chooseLocation.getLocation();
- // console.log(location);
- // if (location != null) {
- // let address = this.data.address;
- // address.province = location.province ? location.province : location.city;
- // address.city = location.city;
- // address.county = location.district;
- // address.addressName = location.name;
- // address.address = location.address;
- // address.lat = location.latitude;
- // address.lng = location.longitude;
- // this.setData({
- // address: address,
- // });
- // this.getAreaCode()
- // }
- // },
-
- onShow: function () {
- let that = this;
- if (app.globalData.mapSelectFinish) {
- let poi = app.globalData.mapSelectPoi;
- let location = poi.location;
- let address = that.data.address;
- address.lng = location.split(',')[0];
- address.lat = location.split(',')[1];
- address.addressName = poi.name;
- address.address = poi.address;
- address.areaCode = poi.areaCode;
- address.province = poi.province;
- address.city = poi.city;
- address.county = poi.county;
- if (!address.city) {
- that.getAreaCode(address.lat, address.lng).then(res => {
- address.areaCode = res.areaCode;
- address.province = res.province;
- address.city = res.city;
- address.county = res.county;
- that.setData({
- address: address,
- selectAddress: poi.address
- });
- }).catch(() => {
- wx.showToast({
- title: '获取地区码失败',
- icon: 'none',
- duration: 3000
- });
- })
- } else
- that.setData({
- address: address,
- selectAddress: poi.address
- });
- } else {
- //这里分2种情况 1,有城市 标识选中原有地址进来 保持不变
- //2,新增地址 初始化进入此页面时 需要调用getlocation2
- if (that.data.addressId) return;//从已有地址进入
- map.getLocation2().then(() => {
- that.getAreaCode(app.globalData.lat, app.globalData.lng).then(res => {
- res.isDefault=that.data.address.isDefault;
- // console.log('globalData',app.globalData.lat,app.globalData.lng)
- // console.log('areaCode',res)
- that.setData({
- address: res,
- selectAddress: res
- });
- }).catch(err => {
- wx.showToast({
- title: '获取地区码失败',
- icon: 'none',
- duration: 3000
- });
- });
- })
- }
- },
- getAreaCodeOld() {
- // let param = {
- // key: '6TRBZ-XXC6F-BWWJB-N75ME-BQNOF-YKFQY',
- // location: this.data.address.lat + ',' + this.data.address.lng,
- // }
- let param ={
- location: this.data.address.lng + ',' + this.data.address.lat,
- extensions: 'all',
- key: api.gdKey,
- radius: 3000,
- };
- wx.request({
- url: api.gdUrl,
- data: param,
- method: 'GET',
- header: {
- 'Content-Type': 'application/json'
- },
- success: res => {
- console.log(res);
- if (res.data.infocode == "10000") {
- if (res.data.info == "OK") {
- // let ad_info = res.data.result.ad_info;
- // let areaCode = res.data.result.ad_info.adcode;
- // this.setData({
- // ['address.areaCode']: areaCode,
- // ['address.province']: ad_info.province,
- // ['address.city']: ad_info.city,
- // ['address.county']: ad_info.district,
- // });
- let regeocode = res.data.regeocode.addressComponent;
- let cityName=(regeocode.city==null||regeocode.city.length==0)?regeocode.province:regeocode.city;
- let district= (regeocode.district==null||regeocode.district.length==0)?'':regeocode.district;
-
- this.setData({
- ['address.areaCode']: regeocode.adcode,
- ['address.province']:regeocode.province,
- ['address.city']: cityName,
- ['address.county']: district
- });
- } else {
- wx.showToast({
- title: '获取地区码失败',
- icon: 'none',
- duration: 3000
- });
- }
- } else {
- wx.showToast({
- title: '获取地区码失败',
- icon: 'none',
- duration: 3000
- });
- }
- },
- fail: function (err) {
- reject(err)
- }
- });
- },
- getAreaCode(lat, lng) {
- return new Promise(function (resolve, reject) {
- let param ={
- location: lng+ ',' +lat,
- extensions: 'all',
- key: api.gdKey,
- radius: 3000,
- };
- wx.request({
- url: api.gdUrl,
- data: param,
- method: 'GET',
- header: {
- 'Content-Type': 'application/json'
- },
- success: res => {
- console.log(res);
- if (res.data.infocode == "10000") {
- if (res.data.info == "OK") {
- // console.info(res.data)
- let regeocode = res.data.regeocode.addressComponent;
- let cityName=(regeocode.city==null||regeocode.city.length==0)?regeocode.province:regeocode.city;
- let district= (regeocode.district==null||regeocode.district.length==0)?'':regeocode.district;
- let address = {
- lat: lat,
- lng: lng,
- areaCode: regeocode.adcode,
- province:regeocode.province,
- city: cityName,
- county: district,
- address: res.data.regeocode.formatted_address,
- addressName: regeocode.township //纯粹做显示
- }
- console.log(address);
- resolve(address);
- } else {
- reject(false)
- }
- } else {
- reject(false)
- }
- },
- fail: function (err) {
- reject(false);
- }
- });
- })
- },
- onHide: function () {
- // 页面隐藏
- },
- onUnload: function () {
- // 页面关闭
- chooseLocation.setLocation(null);
- }
- })
|