vue.js 微信定位

import wx from 'weixin-js-sdk'




setLocaltion: function () {

      var _this = this
      var timer1 = window.setInterval(function () {
        const addressItem = sessionStorage.getItem('addressItem')
        if (addressItem) {
          window.clearTimeout(timer1)
          let cityName = JSON.parse(addressItem).detail.addressComponents.city
          let cityId = _this.areaList.filter(item => item.name === cityName).map(item => item.id)
          if (cityId) {
            _this.defaultCity.name = cityName
            _this.defaultCity.id = cityId[0]
            Toast('定位到' + cityName)
          } else {
            Toast(cityName + '不在服务范围,已经调整到默认的城市服务')
          }
        } else {
          Toast('未定位……')
        }
      }, 1000)
    },
    setLocaltion2: function (_this, addressItem) {
      if (addressItem) {
        let cityName = addressItem.detail.addressComponents.city
        let cityId = _this.areaList.filter(item => item.name === cityName).map(item => item.id)
        if (cityId) {
          _this.defaultCity.name = cityName
          _this.defaultCity.id = cityId[0]
          _this.loadDiscountItems()
          sessionStorage.setItem('defaultCity', JSON.stringify(_this.defaultCity))
          Toast('定位到' + cityName)
        } else {
          _this.defaultCity.name = cityName
          _this.defaultCity.id = cityName
          _this.loadDiscountItems()
          sessionStorage.setItem('defaultCity', JSON.stringify(_this.defaultCity))
          Toast('您所在区域暂未开通该服务,我们会尽快开通,感谢您的关注与支持!')
        }
        console.info('清除定时器')
      } else {
        Toast('无定位数据')
      }
    },
    loadAreaList: function () {
      let _this = this
      const setCityId = function (_this) {
        let cityId = _this.areaList.filter(item => item.name === _this.defaultCity.name).map(item => item.id)
        if (cityId) {
          _this.defaultCity.id = cityId[0]
        }
      }
      const defaultCityItem = sessionStorage.getItem('defaultCity')
      if (defaultCityItem) {
        this.defaultCity = JSON.parse(defaultCityItem)
      }
      const areaList = sessionStorage.getItem('areaList')
      if (areaList) {
        this.areaList = JSON.parse(areaList)
        setCityId(_this)
      } else {
        mineInfoService.loadAreaList().then(res => {
          if (res.t) {
            this.areaList = res.t
            // sessionStorage.setItem('areaList', JSON.stringify(res.t))
            this.addressSlot[0].values = res.t.map(a => a.name)
            setCityId(_this)
          } else {
            Toast('地区数据异常')
          }
        })
      }
    },
    loadJsConfig: function () {
      indexService.loadJsConfig(location.href.split('#')[0]).then(res => {
        // console.group(res)
        wx.config({
          debug: false,
          appId: res.t.appId,
          timestamp: res.t.timestamp,
          nonceStr: res.t.nonceStr,
          signature: res.t.signature,
          jsApiList: ['getLocation',
            'checkJsApi']
        })
      })
    },
    doWxjsPai: function () {
      let _this = this
      wx.ready(function () {
        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
        wx.checkJsApi({
          jsApiList: [
            'getLocation'
          ],
          success: function (res) {
            // alert(JSON.stringify(res));
            // alert(JSON.stringify(res.checkResult.getLocation));
            if (res.checkResult.getLocation === false) {
              alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!')
              return
            } else {
              const defaultCityItem = sessionStorage.getItem('defaultCity')
              if (defaultCityItem) {
                // 说明选择了城市
                return
              }
              const addressItem = sessionStorage.getItem('addressItem')
              if (!addressItem) {
                wx.getLocation({
                  type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
                  success: function (res) {
                    var latitude = res.latitude // 纬度,浮点数,范围为90 ~ -90
                    var longitude = res.longitude // 经度,浮点数,范围为180 ~ -180。
                    // var speed = res.speed // 速度,以米/每秒计
                    // var accuracy = res.accuracy // 位置精度
                    var geocoder = new window.qq.maps.Geocoder({
                      complete: function (result) {
                        // 缓存地址数据
                        sessionStorage.setItem('addressItem', JSON.stringify(result))
                        _this.setLocaltion2(_this, result)
                      }
                    })
                    var latLng = new window.qq.maps.LatLng(latitude, longitude)
                    geocoder.getAddress(latLng)
                  },
                  cancel: function (res) {
                    alert('用户拒绝授权获取地理位置')
                  }
                })
              }
            }
          }
        })
      })
      wx.error(function (res) {
        // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
        console.error(res)
      })
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本系统是一个基于SSM(Spring+SpringMVC+MyBatis)架构和Vue.js前端框架开发的网上家电商城系统。它提供了方便快捷的购物体验和全面的家电产品展示供家电企业或家庭用户使用。 首先,对于家电企业来说,本系统可以作为其线上销售平台。企业可以在系统中注册账号并建立自己的店铺,展示和销售家电产品,包括电视、冰箱、洗衣机、空调等。企业可以上传详细的产品信息和图片,包括品牌、型号、功能特点、价格等,让用户更直观地了解产品,并且可以通过系统提供的订单管理功能,方便地管理和跟踪订单状态,提高工作效率。 其次,对于家庭用户来说,本系统提供了一个方便的购物平台。用户可以在系统中注册账号并登录,浏览家电产品的各种信息,并选择合适的产品进行购买。系统提供了搜索功能,可以根据关键字、品牌、价格等进行快速定位和选择。用户可以将心仪的产品加入购物车,并进行结算和支付操作,系统支持多种支付方式,如支付宝、微信支付等。同时,系统还提供了评价功能,用户可以对购买的产品进行评价和建议,供其他用户参考。 此外,本系统还提供了其他功能,如会员管理、优惠券管理、物流查询等。会员管理功能可以让企业进行会员等级划分和积分管理,增加用户的粘性和忠诚度。优惠券管理功能可以通过发放和兑换优惠券的方式进行促销和营销活动。物流查询功能可以让用户随时追踪订单物流情况,提供更好的购物体验。 综上所述,本系统是一个基于SSM和Vue.js开发的网上家电商城系统,服务对象为家电企业或家庭用户。它提供了方便快捷的购物体验和全面的家电产品展示,满足用户的购物需求,促进家电企业的线上销售,提升用户和企业的交互体验和服务质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值