Explorar el Código

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

Xiao_123 hace 11 meses
padre
commit
3b45e9a715

+ 2 - 3
src/layout/personal/navBar.vue

@@ -140,12 +140,10 @@ const changeLoginType = async () => {
   // router.push({ path: '/login' })
   // router.push({ name: 'login', query: { loginType: 330 } })
   const data = await getUserBindEnterpriseList() // 申请通过才有数据,否则空数组
+  enterpriseList.value = data || []
   if (data?.length) {
-    // localStorage.setItem('companyInfo', JSON.stringify(data))
-    // changeRole()
     if (data.length > 1) {
       show.value = true
-      enterpriseList.value = data
       radios.value = data[0].enterpriseId
     } else {
       //只有一个企业直接切换
@@ -160,6 +158,7 @@ const toEnterprise = async (enterpriseId) => {
   // 获取企业账号令牌以及企业用户个人信息
   await userStore.changeRole(enterpriseId)
   router.push({ path: '/enterprise' })
+  localStorage.setItem('loginType', 'enterprise')
 }
 // // 切换为招聘者
 // const changeRole = async () => {

+ 9 - 3
src/permission.js

@@ -1,7 +1,7 @@
 import router from './router'
 import { useNProgress } from '@/hooks/web/useNProgress'
 import { useTitle } from '@/hooks/web/useTitle'
-import { getToken } from '@/utils/auth'
+import { getToken, removeToken } from '@/utils/auth'
 
 const { start, done } = useNProgress()
 // 路由不重定向白名单
@@ -27,10 +27,16 @@ router.beforeEach(async (to, from, next) => {
     if (to.path === '/login') {
       next({ path: '/' })
     } else {
-      next()
+      const type = localStorage.getItem('loginType')
+      // 判断企业路由和个人路由,防止互串
+      if (!type) { removeToken(); next(`/login?redirect=${to.fullPath}`) }
+      else if (type === 'personal' && to.meta?.loginType === 'noLogin') next()
+      else if (to.meta?.loginType === type) next()
+      else next({ path: `/${type}` })
+      // next()
     }
   } else {
-    if (to.meta?.noLogin) { // noLogin:页面不需要登录
+    if (to.meta?.loginType === 'noLogin') { // 页面不需要登录
       next()
     } else {
       next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页

+ 3 - 3
src/router/modules/personal.js

@@ -81,21 +81,21 @@ const personal = [
     children: [
       {
         path: '/enterprise/register',
-        component: () => import('@/views/enterprise/components/register'),
+        component: () => import('@/views/personal/components/register'),
         meta: {
           title: '注册新企业'
         },
       },
       {
         path: '/enterprise/joiningEnterprise',
-        component: () => import('@/views/enterprise/components/joiningEnterprise'),
+        component: () => import('@/views/personal/components/joiningEnterprise'),
         meta: {
           title: '加入企业'
         }
       },
       {
         path: '/enterprise/inReview',
-        component: () => import('@/views/enterprise/components/inReview.vue'),
+        component: () => import('@/views/personal/components/inReview.vue'),
         meta: {
           title: '申请信息'
         }

+ 4 - 4
src/router/modules/recruit.js

@@ -13,7 +13,7 @@ const recruit = [
         name: 'recruitPosition',
         meta: {
           title: '职位',
-          noLogin: true
+          loginType: 'noLogin'
         }
       },
       {
@@ -22,7 +22,7 @@ const recruit = [
         name: 'recruitCompany',
         meta: {
           title: '公司',
-          noLogin: true
+          loginType: 'noLogin'
         }
       },
       {
@@ -31,7 +31,7 @@ const recruit = [
         name: 'recruitPositionDetails',
         meta: {
           title: '职位详情',
-          noLogin: true
+          loginType: 'noLogin'
         }
       }
     ]
@@ -49,7 +49,7 @@ const recruit = [
         component: () => import('@/views/enterprise/components/enterpriseDetails.vue'),
         meta: {
           title: '企业详情',
-          noLogin: true
+          loginType: 'noLogin'
         },
       }
     ]

+ 18 - 13
src/router/modules/remaining.js

@@ -2,8 +2,12 @@ import personal from './personal'
 import enterprise from './enterprise'
 import recruit from './recruit'
 import Layout from '@/layout'
+import { setLoginType } from '@/utils/loginType'
+
+setLoginType(recruit, 'noLogin')
+setLoginType(personal, 'personal')
+setLoginType(enterprise, 'enterprise')
 
-// const type  = 0
 const routeArray = [
   ...recruit,
   ...personal,
@@ -18,7 +22,7 @@ const remainingRouter = [
     meta: {
       hidden: true,
       title: '登录/注册',
-      noLogin: true
+      loginType: 'noLogin'
     }
   },
   {
@@ -31,7 +35,7 @@ const remainingRouter = [
         component: () => import('@/views/login/components/userAgreement.vue'),
         meta: {
           title: '用户协议',
-          noLogin: true
+          loginType: 'noLogin'
         }
       }
     ]
@@ -46,7 +50,7 @@ const remainingRouter = [
         component: () => import('@/views/login/components/privacyPolicy.vue'),
         meta: {
           title: '隐私政策',
-          noLogin: true
+          loginType: 'noLogin'
         }
       }
     ]
@@ -56,19 +60,20 @@ const remainingRouter = [
     component: Layout,
     redirect: '/home',
     children: [
-      // {
-      //   path: '',
-      //   component: () => import('@/views/Home/index'),
-      //   meta: {
-      //     title: '首页'
-      //   }
-      // },
+      {
+        path: '/personal',
+        redirect: '/home',
+        meta: {
+          title: '首页',
+          loginType: 'noLogin'
+        }
+      },
       {
         path: '/home',
         component: () => import('@/views/Home/index'),
         meta: {
           title: '首页',
-          noLogin: true
+          loginType: 'noLogin'
         }
       }
     ]
@@ -80,7 +85,7 @@ const remainingRouter = [
     meta: {
       hidden: true,
       title: '注册企业',
-      noLogin: true
+      loginType: 'noLogin'
     }
   },
   ...routeArray

+ 2 - 0
src/store/user.js

@@ -28,6 +28,7 @@ export const useUserStore = defineStore('user',
             this.accountInfo = res
             localStorage.setItem('accountInfo', JSON.stringify(res))
             localStorage.setItem('expiresTime', res.expiresTime) // token过期时间
+            localStorage.setItem('loginType', 'personal')
             this.getUserInfos()
             if (!this.loginType) this.getUserBaseInfos()
             resolve()
@@ -45,6 +46,7 @@ export const useUserStore = defineStore('user',
             this.accountInfo = res
             localStorage.setItem('accountInfo', JSON.stringify(res))
             localStorage.setItem('expiresTime', res.expiresTime) // token过期时间
+            localStorage.setItem('loginType', 'personal')
             this.getUserInfos()
             if (!this.loginType) this.getUserBaseInfos()
             resolve()

+ 11 - 0
src/utils/loginType.js

@@ -0,0 +1,11 @@
+export const setLoginType = (arr, type) => {
+  traverse(arr)
+
+  function traverse(list) {
+    list.forEach(e => {
+      if (!e.meta) e.meta = {}
+      if (!e.meta.loginType) e.meta.loginType = type // 存在的话取e.meta.loginType,meta.loginType优先级高于这里默认的type
+      if (e.children?.length) traverse(e.children)
+    })
+  }
+}

+ 0 - 0
src/views/enterprise/components/inReview.vue → src/views/personal/components/inReview.vue


+ 0 - 0
src/views/enterprise/components/joiningEnterprise.vue → src/views/personal/components/joiningEnterprise.vue


+ 0 - 0
src/views/enterprise/components/register.vue → src/views/personal/components/register.vue