瀏覽代碼

第三方跳转

liyongli 5 月之前
父節點
當前提交
5e12dd8e26
共有 3 個文件被更改,包括 31 次插入5 次删除
  1. 3 3
      src/router/index.ts
  2. 25 1
      src/views/LoginPage.vue
  3. 3 1
      src/views/SkeletonPage.vue

+ 3 - 3
src/router/index.ts

@@ -93,9 +93,9 @@ router.beforeEach((to, from, next) => {
   const token = localStorage.getItem('token')
   const {
     role: { menus },
-  }: { role: { menus: menu[] } } = JSON.parse(
-    localStorage.getItem('user') || '{role: { menus: [] }}',
-  )
+  }: { role: { menus: menu[] } } = localStorage.getItem('user')
+    ? JSON.parse(localStorage.getItem('user') || '')
+    : { role: { menus: [] } }
   const haveAuth = checkAuth(menus, to.path)
   if (!token || !haveAuth.path) {
     localStorage.removeItem('phone')

+ 25 - 1
src/views/LoginPage.vue

@@ -6,9 +6,33 @@ import { ElMessage } from 'element-plus'
 import type { UserData } from '@/types/User'
 import type { FormInstance } from 'element-plus'
 import { getCaptcha, login, getUserDetail } from '@/api/index'
-import { useRouter } from 'vue-router'
+import { useRouter, useRoute } from 'vue-router'
 
 const router = useRouter()
+const route = useRoute()
+
+// 获取url参数
+const query: string = route.query.token as string
+if (query) {
+  localStorage.setItem('token', query)
+  getUserDetail().then(({ data }) => {
+    console.log(data)
+    localStorage.setItem('phone', data.phone || '')
+    localStorage.setItem('user', JSON.stringify(data))
+    const path = data.role.menus
+      ? data.role.menus[0].path !== '-1'
+        ? data.role.menus[0].path
+        : data.role.menus[0].children[0].path
+      : ''
+
+    if (path === '')
+      return ElMessage({
+        message: '暂无权限',
+        type: 'warning',
+      })
+    router.replace(path)
+  })
+}
 
 let t: number | undefined = undefined
 const ruleFormRef = ref<FormInstance>()

+ 3 - 1
src/views/SkeletonPage.vue

@@ -7,7 +7,9 @@ import { useRouter, useRoute } from 'vue-router'
 const router = useRouter()
 const route = useRoute()
 const deact = ref<string>(route.path)
-const user = JSON.parse(localStorage.getItem('user') || '{ role: { menus: [] } }')
+const user = localStorage.getItem('user')
+  ? JSON.parse(localStorage.getItem('user') || '')
+  : { role: { menus: [] } }
 
 const menu = ref<menu[]>(user.role.menus || [])