index.js
3.03 KB
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
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
// 模拟用户数据
const mockUsers = {
grid001: {
password: "123456",
user: {
id: "grid001",
name: "张网格",
role: "grid_manager",
permissions: [
"view_grid_opportunities",
"assign_opportunities",
"manage_opportunities"
],
region: "南京市玄武区A网格",
phone: "13812345678"
}
},
county001: {
password: "123456",
user: {
id: "county001",
name: "李区长",
role: "county_admin",
permissions: [
"view_county_opportunities",
"manage_opportunities",
"view_reports"
],
region: "南京市玄武区",
phone: "13887654321"
}
},
city001: {
password: "123456",
user: {
id: "city001",
name: "王市长",
role: "city_admin",
permissions: [
"view_city_opportunities",
"manage_opportunities",
"view_reports",
"manage_system"
],
region: "南京市",
phone: "13765432109"
}
},
province001: {
password: "123456",
user: {
id: "province001",
name: "赵省长",
role: "province_admin",
permissions: [
"view_all_opportunities",
"manage_opportunities",
"view_reports",
"manage_system"
],
region: "江苏省",
phone: "13654321098"
}
}
}
export default new Vuex.Store({
state: {
user: null
},
getters: {
isAuthenticated: state => !!state.user,
user: state => state.user
},
mutations: {
SET_USER(state, user) {
state.user = user
},
LOGOUT(state) {
state.user = null
localStorage.removeItem('user')
}
},
actions: {
login({ commit }, { username, password }) {
return new Promise((resolve, reject) => {
// 模拟登录验证
const userData = mockUsers[username]
if (userData && userData.password == password) {
commit('SET_USER', userData.user)
localStorage.setItem('user', JSON.stringify(userData.user))
resolve(true)
} else {
reject(new Error('账号或密码错误'))
}
})
},
logout({ commit }) {
commit('LOGOUT')
},
initializeAuth({ commit }) {
// 尝试从localStorage恢复用户状态
const savedUser = localStorage.getItem('user')
if (savedUser) {
commit('SET_USER', JSON.parse(savedUser))
} else {
// 如果没有保存的用户信息,提供默认用户用于演示
const demoUser = {
id: "demo001",
name: "演示用户",
role: "city_admin",
permissions: [
"view_city_opportunities",
"manage_opportunities",
"assign_opportunities",
"view_reports",
"manage_system"
],
region: "南京市",
phone: "13800138000"
}
commit('SET_USER', demoUser)
sessionStorage.setItem('demoMode', 'true')
}
}
},
modules: {
}
})