wr1207
2023-04-17 32e4bad2cff2793052effcd2d59cdd8923702b22
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
import axios from 'axios'
import request from '@/api/request'
 
 
export default {
    state :{
        addRoutes:[],
        menu:[],
        actions:[],
        username:'',
        headimg:'',
        site_title:'',
        show_notice:true,
    },
    mutations :{
        setRoute(state,route){
            state.addRoutes = route
        },
        setMenu(state,menu){
            state.menu = menu
        },
        setActions(state,actions){
            state.actions = actions
        },
        setUserInfo(state,val){
            state.username = val.user
            state.headimg = val.headimg
            state.role_id = val.role_id
            state.site_title = val.site_title
            state.show_notice = val.show_notice
        }
    },
    actions :{
        login({commit},userInfo) {
            return new Promise((resolve, reject) => {
                axios.post('/admin/Login/login',userInfo).then(res => {
                    localStorage.setItem("loginState", true)
                    resolve()
                }).catch(error => {
                    reject(error)
                })
            })
        },
        getUserInfo({commit}){
            return new Promise((resolve, reject) => {
                axios.post('/admin/Base/getUserInfo').then(res => {
                    if(res.data.status == 200){
                        let routes = res.data.components
                        let baseRoutes = [
                            {
                                path:'/',
                                component: (resolve) => require(['@/layout/admin/default/Main'], resolve),
                                children:[]
                            },
                        ]
                        routes.forEach(item =>{
                            if(item.component_path){
                                item.component = (resolve) => require([`@/views/${item.component_path}`],resolve)
                                baseRoutes[0].children.push(item)
                            }
                        })
                        commit('setRoute',baseRoutes.concat({path:'*',redirect:'/404'}))
                        commit('setMenu',res.data.menu)
                        commit('setActions',res.data.actions)
                        commit('setUserInfo',res.data.data)
                    }
                    resolve()
                }).catch(error => {
                    reject(error)
                })
            })
        },
        logout({commit}){
            return new Promise((resolve, reject) => {
                axios.post('/admin/Index/logout').then(res => {
                    if(res.status == 200){
                        localStorage.setItem("loginState", "")
                        commit('setRoute',[])
                        commit('setMenu',[])
                        commit('setActions',[])
                        commit('setUserInfo',{})
                    }
                    resolve()
                }).catch(error => {
                    reject(error)
                })
            })
        }
        
    }
}