Skip to content

Commit 41e6fe0

Browse files
committed
增加跳转登陆逻辑
1 parent 00ed17e commit 41e6fe0

File tree

12 files changed

+399
-314
lines changed

12 files changed

+399
-314
lines changed

src/App.vue

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,7 @@ export default {
8383
console.log("appvue");
8484
console.log(this.$route.meta);
8585
},
86-
created() {
87-
console.log("🔥App");
88-
}
86+
created() {}
8987
};
9088
</script>
9189

src/assets/js/account/account.js

Lines changed: 62 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,78 @@
11
// 处理账号相关的逻辑
2+
// 1、处理登陆账号
3+
// 2、登陆登出
4+
// 3、重置根路由
5+
6+
// 这里就不做多账号处理了,这里只针对单账号登陆
27
/// 登录账号的key
3-
const MH_RAW_LOGIN = 'MHRawLogin'
8+
const MH_RAW_LOGIN_KEY = 'MHRawLoginKey'
9+
10+
import router from '@/router';
11+
import store from '@/store/store'
12+
// 配置偏好设置
13+
import Storage from '@/assets/js/MHPreferenceSettingHelper'
414
export default {
515
// 获取账号
616
rawLogin() {
7-
return localStorage.getItem(MH_RAW_LOGIN)
17+
return Storage.getItem(MH_RAW_LOGIN_KEY) || ''
818
},
919
// 设置账号
1020
setRawLogin(rawLogin) {
1121
// 必须的有值,否则不存储
1222
if (rawLogin && rawLogin.length !== 0) {
13-
localStorage.setItem(MH_RAW_LOGIN, rawLogin)
23+
Storage.setItem(MH_RAW_LOGIN_KEY, rawLogin)
1424
}
1525
},
1626
// 删除账号
1727
deleteRawLogin() {
18-
localStorage.removeItem(MH_RAW_LOGIN)
28+
Storage.removeItem(MH_RAW_LOGIN_KEY)
29+
},
30+
31+
// 登陆
32+
login(user, rawLogin) {
33+
// 归档登陆账号
34+
this.setRawLogin(rawLogin)
35+
// 归档用户信息
36+
store.commit('loginUser', user)
37+
// 跳转登陆
38+
router.push('/homepage')
39+
},
40+
41+
// 登出
42+
logout() {
43+
// 删除登陆账号
44+
this.deleteRawLogin()
45+
46+
// 归档用户信息
47+
store.commit('logoutUser')
48+
// 清除
49+
router.push("/current-login");
50+
},
51+
52+
// 更新
53+
update() { },
54+
55+
// delete
56+
delete() { },
57+
58+
// 重置根路由
59+
resetRootRouterView() {
60+
// 获取用户信息
61+
let user = store.state.user
62+
// 获取账号信息
63+
let account = this.rawLogin()
64+
console.log('------------- 🔥跳转逻辑🔥 -------------',user);
65+
console.log('------------- 🔥跳转逻辑🔥 -------------',account);
66+
// 跳转逻辑判断处理
67+
if (Object.keys(user).length !== 0 && account.length !== 0) {
68+
/// 有账号+有用户数据 已经登录,跳转到主页
69+
router.push('/homepage')
70+
} else if (Object.keys(user).length !== 0 && account.length === 0) {
71+
/// 没有账号+有用户数据 退出登录,跳转到账号登陆页面
72+
router.push('/current-login')
73+
} else {
74+
/// 没有账号+没有用户数据 用户初次登陆,跳转到登陆/注册界面
75+
router.push('/login')
76+
}
1977
}
2078
}

src/assets/js/constant/constant.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export default {
2+
// ************* 登录相关 *************
3+
// 用户存储的
4+
MH_USER_INFO_KEY : "MHUserInfoKey"
5+
}

src/assets/utils/utils.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// 导航栏返回按钮
44
import { blackBackItem } from '../js/MHBarButtonItem'
55

6+
67
const utils = {
78
install(Vue) {
89
// 导航栏返回按钮
@@ -25,6 +26,24 @@ const utils = {
2526
// - [JavaScript数组去重(12种方法,史上最全)](https://segmentfault.com/a/1190000016418021)
2627
uniqueArray(arr) {
2728
return Array.from(new Set(arr))
29+
},
30+
31+
// 🔥是否为有效电话号码
32+
// - [一组匹配中国大陆手机号码的正则表达式](https://github.com/VincentSit/ChinaMobilePhoneNumberRegex)
33+
validMobile(mobile) {
34+
let regex = /((?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[35678]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|66\d{2})\d{6})+?/g
35+
return regex.test(mobile)
36+
},
37+
38+
// 🔥格式化手机号为344
39+
// - [手机格式化](https://blog.csdn.net/Wangdanting123/article/details/86938915)
40+
// - [格式化手机号](https://segmentfault.com/q/1010000004508861)
41+
formatMobile344(mobile) {
42+
let regex = /((?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[35678]\d{2}|4(?:0\d|1[0-2]|9\d))|9[189]\d{2}|66\d{2})\d{6})+?/g
43+
if (!regex.test(mobile)) {
44+
return mobile
45+
}
46+
return (mobile + '').replace(/(^\d{3}|\d{4}\B)/g, "$1 ")
2847
}
2948
}
3049

src/main.js

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,30 +38,24 @@ Vue.use(RouteTransition)
3838
import utils from 'assets/utils/utils'
3939
Vue.use(utils)
4040

41-
// import VuePreview from 'vue-preview'
42-
// Vue.use(VuePreview);
43-
// console.log(VuePreview);
44-
45-
4641
// 配置偏好设置
47-
import MHPreferenceSettingHelper from './assets/js/MHPreferenceSettingHelper'
48-
MHPreferenceSettingHelper.initialize()
49-
50-
// 获取用户信息
51-
// let user = MHPreferenceSettingHelper.getItem('491273090') || {}
52-
// if (Object.keys(user).length === 0) {
53-
// router.replace('/current-login')
54-
// } else {
55-
// router.replace('/mainframe')
56-
// }
57-
58-
42+
import Storage from '@/assets/js/MHPreferenceSettingHelper'
43+
// 初始化
44+
Storage.initialize()
45+
// 账号存储
46+
import AccountHelper from '@/assets/js/account/account'
47+
// 挂在实例
5948
new Vue({
6049
router,
6150
store,
6251
render: h => h(App)
6352
}).$mount('#app')
6453

54+
55+
// 重置根路由
56+
AccountHelper.resetRootRouterView()
57+
58+
6559
// {
6660
// "workbench.iconTheme": "vscode-icons",
6761
// "editor.fontSize": 18,

src/router.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export default new Router({
6363
routes: [
6464
{
6565
path: '/',
66+
name: 'Root',
6667
redirect: '/login'
6768
},
6869
{
@@ -134,8 +135,11 @@ export default new Router({
134135
},
135136
{
136137
path: '/current-login',
137-
name: 'current-login',
138-
component: CurrentLogin
138+
name: 'CurrentLogin',
139+
component: CurrentLogin => require(['./views/login/CurrentLogin.vue'], CurrentLogin),
140+
meta: {
141+
keepAlive: true
142+
}
139143
},
140144
{
141145
path: '/login',
@@ -158,7 +162,7 @@ export default new Router({
158162
component: Register => require(['./views/login/Register.vue'], Register)
159163
},
160164
{
161-
path: '/current-login/other-login',
165+
path: '/other-login',
162166
name: 'other-login',
163167
component: OtherLogin => require(['./views/login/OtherLogin.vue'], OtherLogin),
164168
meta: {
@@ -235,7 +239,7 @@ export default new Router({
235239
},
236240
{
237241
path: '/profile/setting',
238-
name: 'setting', // 设置
242+
name: 'Setting', // 设置
239243
component: Setting,
240244
meta: {
241245
keepAlive: true // 此组件需要缓存

src/store/store.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import Vue from "vue";
22
import Vuex from "vuex";
33
import modules from "../modules"
4-
5-
6-
import MHPreferenceSettingHelper from '../assets/js/MHPreferenceSettingHelper'
4+
// 存储类
5+
import Storage from '../assets/js/MHPreferenceSettingHelper'
6+
// 常量类
7+
import Constant from '../assets/js/constant/constant';
78

89
// 类似单利
10+
// PS: root store 只处理用户信息,其他的请放在 modules 中,例如:badge.js
911
Vue.use(Vuex);
1012

1113
// 获取本地缓存的用户信息
12-
let user = JSON.parse(MHPreferenceSettingHelper.getItem('491273090') || '{}');
13-
console.log('user---' + user);
14+
let user = JSON.parse(Storage.getItem(Constant.MH_USER_INFO_KEY) || '{}');
15+
console.log('🔥😴😿 ** USER ** 😴😿🔥', user);
1416

1517
export default new Vuex.Store({
1618
state: {
@@ -26,13 +28,11 @@ export default new Vuex.Store({
2628
// 0. 对象转json字符串
2729
let jsonStr = JSON.stringify(user);
2830
// 1. 归档数据
29-
MHPreferenceSettingHelper.setItem(user.qq, jsonStr);
31+
Storage.setItem(Constant.MH_USER_INFO_KEY, jsonStr);
3032
},
3133
// 登出用户
3234
logoutUser(state) {
33-
// 0 清除掉用户数据
34-
MHPreferenceSettingHelper.removeItem(state.user.qq);
35-
// 1 记录
35+
// 只需要将 vuex 的user置位空对象即可,无需删除本地数据
3636
state.user = {};
3737
}
3838
},

0 commit comments

Comments
 (0)