Liuyi
2024-10-19 42e5ea86f7edc9361227edd979a8ae1952713161
App.vue
@@ -1,10 +1,98 @@
<script setup>
   import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
   // import {getToken} from './util/auth';
   onLaunch(() => {
     console.log("App Launch");
     //判断是否登录
      // let token = getToken()
   import { wxLoginApi } from './api/index.js'
   //用户打开小程序默认授权
   function wxLogin(){
      uni.removeStorageSync('openId');
      if(!uni.getStorageSync('openId')){
         wx.login({
            success:async (res1)=>{
               //存储微信登录的code
               uni.setStorageSync('code',res1.code)
               await wxLoginApi({code:res1.code}).then((res2) =>{
               uni.setStorageSync('openId',res2.data.userId)
               uni.setStorageSync('token',res2.data.token)
              })
            },
            fail:(e) =>{
               uni.showToast({
                  title: '登录失败,请退出重试!',
                  duration: 2000
               });
               console.log(e)
            }
         })
      }
   }
   //申请获取用户位置权限
   let userLocation = {
      lat:'',
      lon:'',
   }
   function getUserLocation(){
      // 请求用户授权,第一次进入会有位置授权的提示
      uni.authorize({
        scope: 'scope.userLocation',
        success() {
          console.log("成功授权位置信息1")
          storageLocation()
        },
        fail() {
           console.log("用户拒绝授权位置信息,再次提示用户授权")
           showToast()
        }
      })
      //获取用户位置并存储
      function storageLocation(){
         uni.getLocation({
            type:'gcj02',
            isHighAccuracy:true,
            success:(res) =>{
               userLocation.lat = res.latitude
               userLocation.lon = res.longitude
               uni.setStorageSync('userLocation',JSON.stringify(userLocation))
            },
            fail:() =>{
               showToast()
            }
         })
      }
      //用户拒绝授权
      function showToast(){
         uni.showModal({
            title: "请求授权当前位置",
            content: "我们需要获取地理位置信息,为您获取附近站点信息!",
            confirmText: "前往设置",
            success: (res) => {
               if (res.confirm) {
                  uni.openSetting({
                      success:(res1) =>{ //打开设置成功
                        if (res1.authSetting['scope.userLocation']){
                           console.log('用户二次授权成功')
                           storageLocation()
                        }else{
                           showToast()
                           console.log('用户拒绝授权')
                        }
                     },
                  })
               }else{
                  uni.showToast({
                     title: '请先授权!',
                     duration: 2000,
                     icon:'none'
                  });
                  showToast()
               }
            },
         });
      }
   }
   onLaunch(async() => {
      await wxLogin()
      await getUserLocation()
   });
   onShow(() => {
     console.log("App Show");
@@ -14,6 +102,5 @@
   });
</script>
<style>
   /*每个页面公共css */
<style lang='scss'>
</style>