智慧保安互联网APP
zengh
2022-06-21 4efeb31d5b4921d7e851c256009486ad86bc70e2
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
129
130
131
132
133
134
135
// 全局公共方法
const install = (Vue, vm) => {
 
    // 登录操作
    const login = (userInfo) => {
        vm.$u.vuex('userInfo', userInfo)
        vm.$u.vuex('accessToken', userInfo.access_token)
        vm.$u.vuex('isLogin', true)
        uni.switchTab({
            url: '/pages/home/home'
        })
        uni.hideNavigationBarLoading();
    }
 
    // 退出登录
    const logout = () => {
        vm.$u.vuex('userInfo', {
            avatar: '',
            nick_name: '游客',
            tenant_id: '暂无'
        })
        vm.$u.vuex('accessToken', '')
        vm.$u.vuex('isLogin', false)
        vm.$u.vuex('UserData', {})
        uni.redirectTo({
            url: '/pages/login/login-account'
        })
    }
 
    // 检查登录状态
    const checkLogin = (e = {}) => {
 
        if (!vm.isLogin) {
            uni.navigateTo({
                url: '/pages/login/login-account'
            })
            return false
        }
        return true
    }
 
    // 跳转路由前检查登录状态
    const route = (url) => {
        console.log(vm)
        if (!vm.isLogin) {
            uni.showToast({
                title: '请先登录',
                icon: 'none'
            })
            setTimeout(() => {
                uni.navigateTo({
                    url: '/pages/login/login-account'
                })
            }, 500)
            return false
        }
        uni.navigateTo({
            url: url
        })
    }
 
    // URL参数转对象
    const paramsToObj = (url) => {
        if (url.indexOf('?') != -1) {
            let arr = url.split('?')[1]
        }
        let arr = url.split('&')
        let obj = {}
        for (let i of arr) {
            obj[i.split('=')[0]] = i.split('=')[1]
        }
        return obj
    }
 
    // 刷新当前页面
    const refreshPage = () => {
        const pages = getCurrentPages()
        const currentPage = pages[pages.length - 1]
        const path = '/' + currentPage.route + vm.$u.queryParams(currentPage.options)
        if (vm.$u.test.contains(currentPage.route, 'tabbar')) {
            uni.reLaunch({
                url: path,
                fail: (err) => {
                    console.log(err)
                }
            })
        } else {
            uni.redirectTo({
                url: path,
                fail: (err) => {
                    console.log(err)
                }
            })
        }
    }
 
    // 提示
    const showToast = (data = {}) => {
        if (typeof data == 'string') {
            uni.showToast({
                title: data,
                icon: 'none'
            })
        } else {
            uni.showToast({
                title: data.title,
                icon: data.icon || 'none',
                image: data.image || '',
                mask: data.mask || false,
                position: data.position || 'center',
                duration: data.duration || 1500,
                success: () => {
                    setTimeout(() => {
                        if (data.back) return uni.navigateBack()
                        data.success && data.success()
                    }, data.duration || 1500)
                }
            })
        }
    }
 
    // 将定义的方法挂载,使用this.$u.func.xx调用
    Vue.prototype.$u.func = {
        login,
        logout,
        route,
        checkLogin,
        paramsToObj,
        refreshPage,
        showToast
    }
}
export default {
    install
}