MrShi
9 小时以前 742e2a6eb5d0c6c348ae779a8bc8eaa79c958b4f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<script>
    var QQMapWX = require('@/utils/qqmap-wx-jssdk.js')
    import { mapState } from 'vuex'
    export default {
        computed: {
            ...mapState(['userInfo', 'token'])
        },
        onLaunch: async function() {
            // 登录
            var that = this;
            if (!this.token) {
                uni.login({
                    provider: 'weixin',
                    success: async function (loginRes) {
                        let { code } = loginRes;
                        let res = await that.$u.api.wxLogin({ code })
                        if (res.code === 200) {
                            // 判断有无openid
                            if (res.data.openid) {
                                await that.$store.commit('setOpenId', res.data.openid)
                            }
                            // 判断有无token
                            if (res.data.token) {
                                await that.$store.commit('setToken', res.data.token)
                            }
                            // 判断有无用户信息
                            if (res.data.member) {
                                await that.$store.commit('setUserInfo', res.data.member)
                                await that.$store.commit('setOpenId', res.data.member.openId)
                            }
                            // 设置定位
                            await that.checkLocationAuth()
                        }
                    }
                });
            } else {
                // 缓存用户信息
                let res = await that.$u.api.getUserInfo()
                if (res.code === 200) {
                    await that.$store.commit('setUserInfo', res.data)
                    await that.$store.commit('setOpenId', res.data.openId)
                }
                // 设置定位
                await that.checkLocationAuth()
            }
        },
        onShow: function() {
            console.log('App Show')
        },
        onHide: function() {
            console.log('App Hide')
        },
        methods: {
            checkLocationAuth() {
                uni.getSetting({
                    success: (res) => {
                        if (!res.authSetting['scope.userLocation']) {
                            uni.authorize({
                                scope: 'scope.userLocation',
                                success: () => {
                                    this.positioning()
                                },
                                fail: () => {
                                    uni.showModal({
                                        title: '提示',
                                        content: '需要获取您的位置信息,请在设置中开启位置权限',
                                        confirmText: '去设置',
                                        success: (res) => {
                                            if (res.confirm) {
                                                this.goToAppSetting();
                                            } else {
                                                this.$isResolve()
                                            }
                                        }
                                    });
                                }
                            });
                        } else {
                            this.positioning()
                        }
                    }
                });
            },
            goToAppSetting() {
                var that = this;
                uni.openSetting({
                    success: (res) => {
                        if (res.authSetting['scope.userLocation']) {
                            that.positioning()
                        }
                        that.$isResolve()
                    }
                });
            },
            // 定位
            positioning() {
                var that = this;
                uni.getLocation({
                    type: 'gcj02',
                    highAccuracyExpireTime: 3000,
                    isHighAccuracy: true,
                    success: function (addr) {
                        const locParam = { latitude: addr.latitude, longitude: addr.longitude };
                        const qqmapsdk = new QQMapWX({
                            key: 'HEIBZ-QJLLM-SZ36X-6ZBHI-S6Y2J-S6FND'
                        });
                        qqmapsdk.reverseGeocoder({
                            locParam,
                            success: function(res) {
                                console.log(res, '==================获取地址');
                                that.$store.commit('setPosition', res)
                                that.$isResolve()
                            },
                            fail: (err) => {
                                console.error('获取位置失败===========', err);
                                that.$isResolve()
                            }
                        });
                    }
                });
            }
        }
    }
</script>
 
<style lang="scss">
    @import "uview-ui/index.scss";
</style>