index.js
5.5 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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
import Vue from 'vue'
import Vuex from 'vuex'
import user from './modules/user'
import home from './modules/home'
Vue.use(Vuex)
const appNameData = {
'wx6cd2152282abd34c': '优学乐业',
'wxac18386e35824192': '新华实习',
}
let lifeData = {};
let appId = 'wx6cd2152282abd34c';
// 新华网
// let appId = 'wxac18386e35824192';
try {
// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
lifeData = uni.getStorageSync('lifeData');
} catch (e) {
}
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
let saveStateKeys = [
'hasLogin',
'vuex_user',
'vuex_token',
'refresh_token',
'vuex_phone',
'vuex_weixinUserInfo',
'vuex_baseImgUrl',
'vuex_theme'
];
// 保存变量到本地存储中
const saveLifeData = function (key, value) {
// 判断变量名是否在需要存储的数组中
if (saveStateKeys.indexOf(key) != -1) {
// 获取本地存储的lifeData对象,将变量添加到对象中
let tmp = uni.getStorageSync('lifeData');
// 第一次打开APP,不存在lifeData变量,故放一个{}空对象
tmp = tmp ? tmp : {};
tmp[key] = value;
// 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
uni.setStorageSync('lifeData', tmp);
}
}
const store = new Vuex.Store({
modules: {
user,
home,
},
state: {
hasLogin: lifeData.hasLogin ? lifeData.hasLogin : false,
vuex_appId: appId,
vuex_appName: appNameData[appId],
vuex_corpId: 'ww4300c59cb9537f9e', //企业ID
// 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
// 加上vuex_前缀,是防止变量名冲突,也让人一目了然
vuex_user: lifeData.vuex_user ? lifeData.vuex_user : '',
vuex_weixinUserInfo: lifeData.vuex_weixinUserInfo ? lifeData.vuex_weixinUserInfo : '',
vuex_token: lifeData.vuex_token ? lifeData.vuex_token : '',
refresh_token: lifeData.refresh_token ? lifeData.refresh_token : '',
vuex_phone: lifeData.vuex_phone ? lifeData.vuex_phone : '',
// 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式
vuex_version: '1.0.1',
vuex_demo: '绛紫',
vuex_baseImgUrl: "",
vuex_theme: '',
vuex_ossUrl: "https://yxly.oss-cn-beijing.aliyuncs.com",
vuex_ossUrlPubilc: "https://yxlypublic.oss-cn-beijing.aliyuncs.com",
vuex_customer_chatUrl: "https://work.weixin.qq.com/kfid/kfc04063cd2d1081221", //企业微信客服
vuex_customer_phone: "",
vuex_applyUrl: "",
vuex_homeUrl: "",
vuex_internshipDetailUrl: "",
// vuex_ossUrl: "https://oss.workai.com.cn",
vuex_OssInit: {},
vuex_area: {},
// 自定义tabbar数据
vuex_tabbar_index: 0,
vuex_active_color: 'var(--primary-color)',
vuex_tabbar: [
{
"pagePath": "/pages/tabBar/home/home",
"iconPath": "/static/img/icon/home.png",
"selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/homeHL.png`,
"text": "首页"
},
{
"pagePath": "/pages/tabBar/internship/internship",
"iconPath": "/static/img/icon/internship.png",
"selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/internshipHL.png`,
"text": "实习生"
},
{
"pagePath": "/pages/tabBar/message/message",
"iconPath": "/static/img/icon/message.png",
"selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/messageHL.png`,
"text": "消息"
},
{
"pagePath": "/pages/tabBar/my/my",
"iconPath": "/static/img/icon/my.png",
"selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/myHL.png`,
"text": "我的"
}
],
},
getters: {
doneRolesLength: state => {
if (state && state.vuex_user && state.vuex_user.teacher) {
let {
teacher = {}
} = state.vuex_user;
if (teacher && teacher.roles && teacher.roles.length > 0) {
return teacher.roles.length
} else {
return 0
}
} else {
return 0
}
},
doneRolesName: state => {
if (state && state.vuex_user && state.vuex_user.teacher) {
let {
teacher = {}
} = state.vuex_user;
if (teacher && teacher.roles && teacher.roles.length > 0) {
let selectRoles = teacher.roles.filter(item => item.id == teacher.roleId);
return selectRoles[0].name
} else {
return ''
}
} else {
return ''
}
},
doneSchoolName: state => {
if (state && state.vuex_user && state.vuex_user.teacher) {
return state.vuex_user.teacher.schoolName;
} else {
return '';
}
},
},
mutations: {
$uStore(state, payload) {
// 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
let nameArr = payload.name.split('.');
let saveKey = '';
let len = nameArr.length;
if (len >= 2) {
let obj = state[nameArr[0]];
for (let i = 1; i < len - 1; i++) {
obj = obj[nameArr[i]];
}
obj[nameArr[len - 1]] = payload.value;
saveKey = nameArr[0];
} else {
// 单层级变量,在state就是一个普通变量的情况
state[payload.name] = payload.value;
saveKey = payload.name;
}
// 保存变量到本地,见顶部函数定义
saveLifeData(saveKey, state[saveKey])
},
setWenxinUserInfo(state, result) {
state.vuex_weixinUserInfo = result.userInfo;
uni.$u.vuex('vuex_weixinUserInfo', result.userInfo);
},
}
})
export default store