<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, computed } from 'vue'; | import { ref, computed } from 'vue'; | ||||
import { store } from '@/store/index'; | import { store } from '@/store/index'; | ||||
import { router } from '@/router/index'; | |||||
const showLoginBox = computed(() => { | const showLoginBox = computed(() => { | ||||
return store.state.showLoginBox | return store.state.showLoginBox | ||||
store.commit('getRoleName', { | store.commit('getRoleName', { | ||||
roleName: 'company' | roleName: 'company' | ||||
}) | }) | ||||
sessionStorage.setItem('role', 'company') | sessionStorage.setItem('role', 'company') | ||||
sessionStorage.setItem('token', 'admin') | sessionStorage.setItem('token', 'admin') | ||||
} | } |
import { ref, computed } from 'vue'; | import { ref, computed } from 'vue'; | ||||
import AFooter from './footer/index.vue'; | import AFooter from './footer/index.vue'; | ||||
import AHeader from './header/aHeader.vue'; | import AHeader from './header/aHeader.vue'; | ||||
</script> | </script> | ||||
<style lang="less" scoped> | <style lang="less" scoped> | ||||
::-webkit-scrollbar { | ::-webkit-scrollbar { |
<template> | <template> | ||||
<a-menu mode="horizontal" v-model:openKeys="openSubMenu" @openChange="onOpenChange" | <a-menu mode="horizontal" v-model:openKeys="openSubMenu" @openChange="onOpenChange" | ||||
v-model:selectedKeys="selectedMenu" style="background: #0a130d; height: '90vh';color: #fff;"> | v-model:selectedKeys="selectedMenu" style="background: #0a130d; height: '90vh';color: #fff;"> | ||||
<template v-for="(item,index) in LayoutRoute.children"> | |||||
<template v-for="(item,index) in menuList"> | |||||
<template v-if="!item.children"> | <template v-if="!item.children"> | ||||
<a-menu-item :key="item.path" @click="onMenu(item.path)"> | <a-menu-item :key="item.path" @click="onMenu(item.path)"> | ||||
<span>{{item.meta.title}}</span> | <span>{{item.meta.title}}</span> | ||||
</template> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { ref, onMounted, computed } from 'vue'; | import { ref, onMounted, computed } from 'vue'; | ||||
import { LayoutRoute } from '@/router/routes'; | |||||
import { store } from '@/store/index'; | import { store } from '@/store/index'; | ||||
import { useMenu } from '@/hooks/useMenu'; | import { useMenu } from '@/hooks/useMenu'; | ||||
let { onMenu, routerCur, routerArrayCur, routerArrayParentChildCur } = useMenu(); | let { onMenu, routerCur, routerArrayCur, routerArrayParentChildCur } = useMenu(); | ||||
let menuList = ref(store.state.permissions.menuList) | |||||
console.log(store.state.permissions.menuList) | |||||
let selectedMenu = computed(() => { | let selectedMenu = computed(() => { | ||||
console.log(131,routerCur()) | console.log(131,routerCur()) | ||||
let newSelectedMenu = [routerCur()]; | let newSelectedMenu = [routerCur()]; |
import { createApp } from 'vue'; | |||||
import { createApp, watch } from 'vue'; | |||||
import './style.css'; | import './style.css'; | ||||
import App from './App.vue'; | import App from './App.vue'; | ||||
import { router } from './router' | import { router } from './router' | ||||
import Antd from 'ant-design-vue'; | import Antd from 'ant-design-vue'; | ||||
import 'ant-design-vue/dist/reset.css'; | import 'ant-design-vue/dist/reset.css'; | ||||
import CommonLeftSider from '@/components/common/left-sider.vue'; | import CommonLeftSider from '@/components/common/left-sider.vue'; | ||||
// router.beforeEach((to, from, next) => { | |||||
// document.title = `${to.meta.title} - 菊城人才市场后台管理`; | |||||
// if (!sessionStorage.getItem('token')) { | |||||
// if (to.matched.length > 0 && !to.matched.some(record => record.meta.requiresAuth)) { | |||||
// next() | |||||
// } else { | |||||
// next({ | |||||
// path: '/login' | |||||
// }) | |||||
// } | |||||
// } else { | |||||
// if (store.state.permissions.permissionList == null) { | |||||
// store.dispatch('permissions/FETCH_PERMISSION').then(() => { | |||||
// next({ | |||||
// path: to.path | |||||
// }) | |||||
// }) | |||||
// } else { | |||||
// if (to.path !== '/login') { | |||||
// next() | |||||
// } else { | |||||
// next(from.fullPath) | |||||
// } | |||||
// } | |||||
// } | |||||
// }) | |||||
import { routesModuleList } from '@/router/dynamic'; | |||||
import { routesManageModuleList } from '@/router/manageDynamic'; | |||||
router.beforeEach((to, from, next) => { | |||||
document.title = `菊城人才市场后台管理`; | |||||
if (sessionStorage.getItem('token')) { | |||||
if (to.matched.length > 0 && !to.matched.some(record => record.meta.requiresAuth)) { | |||||
next() | |||||
} else { | |||||
next({ | |||||
path: '/job/home' | |||||
}) | |||||
} | |||||
} else { | |||||
console.log(store.state.permissions.permissionList) | |||||
if (store.state.permissions.permissionList == null) { | |||||
store.dispatch('permissions/FETCH_PERMISSION').then(() => { | |||||
next({ | |||||
path: to.path | |||||
}) | |||||
}) | |||||
} else { | |||||
next() | |||||
} | |||||
} | |||||
}) | |||||
const app = createApp(App); | const app = createApp(App); | ||||
app.component('common-left-sider', CommonLeftSider); | app.component('common-left-sider', CommonLeftSider); |
icon: HomeOutlined | icon: HomeOutlined | ||||
}, | }, | ||||
}; | }; | ||||
//求职 | //求职 | ||||
const JobRoute : AppRouteRecordRaw = { | const JobRoute : AppRouteRecordRaw = { | ||||
path: '/job', | path: '/job', | ||||
}, | }, | ||||
}; | }; | ||||
// 法律咨询 | // 法律咨询 | ||||
const LawRoute : AppRouteRecordRaw = { | const LawRoute : AppRouteRecordRaw = { | ||||
path: '/law', | path: '/law', | ||||
}, | }, | ||||
}; | }; | ||||
export const routesModuleList : AppRouteModule[] = [HomeRoute, JobRoute, AboutRoute, LawRoute, MentorRoute, ExpertRoute, TrainRoute, RelationshipRoute, NewsRoute]; | |||||
// 首页 | |||||
const ManageHomeRoute : AppRouteRecordRaw = { | |||||
path: '/manage/home', | |||||
name: 'manageHome', | |||||
component: routerList.ManageHome, | |||||
meta: { | |||||
title: '管理中心首页', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 企业资料 | |||||
const ManageBasicRoute : AppRouteRecordRaw = { | |||||
path: '/manage/basic', | |||||
name: 'basic', | |||||
component: routerList.ManageBasic, | |||||
meta: { | |||||
title: '企业资料', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 企业招聘 | |||||
const ManageInviteRoute : AppRouteRecordRaw = { | |||||
path: '/manageInvite', | |||||
name: 'manageInvite', | |||||
component: routerList.ManageInvite, | |||||
meta: { | |||||
title: '企业招聘', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 简历管理 | |||||
const ManageResumeRoute : AppRouteRecordRaw = { | |||||
path: '/manageResume', | |||||
name: 'resume', | |||||
component: routerList.ManageResume, | |||||
meta: { | |||||
title: '简历管理', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 搜索简历 | |||||
const ManageSearchRoute : AppRouteRecordRaw = { | |||||
path: '/manageSearch', | |||||
name: 'search', | |||||
component: routerList.ManageSearch, | |||||
meta: { | |||||
title: '搜索简历', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 招聘会管理 | |||||
const ManageMeetRoute : AppRouteRecordRaw = { | |||||
path: '/manageMeet', | |||||
name: 'meet', | |||||
component: routerList.ManageMeet, | |||||
meta: { | |||||
title: '招聘会管理', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 消息中心 | |||||
const ManageMessageRoute : AppRouteRecordRaw = { | |||||
path: '/manageMessage', | |||||
name: 'message', | |||||
component: routerList.ManageMessage, | |||||
meta: { | |||||
title: '消息中心', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
// 用户管理 | |||||
const ManageUserRoute : AppRouteRecordRaw = { | |||||
path: '/manageUser', | |||||
name: 'user', | |||||
component: routerList.ManageUser, | |||||
meta: { | |||||
title: '用户管理', | |||||
icon: HomeOutlined | |||||
}, | |||||
}; | |||||
export const routesModuleList : AppRouteModule[] = [HomeRoute, JobRoute, AboutRoute, LawRoute, MentorRoute, ExpertRoute, TrainRoute, RelationshipRoute, NewsRoute, ManageHomeRoute, | |||||
ManageBasicRoute, | |||||
ManageInviteRoute, | |||||
ManageResumeRoute, | |||||
ManageSearchRoute, | |||||
ManageMeetRoute, | |||||
ManageMessageRoute, | |||||
ManageUserRoute]; |
// 企业招聘 | // 企业招聘 | ||||
const ManageInviteRoute : AppRouteRecordRaw = { | const ManageInviteRoute : AppRouteRecordRaw = { | ||||
path: '/manage/invite', | |||||
path: '/manageInvite', | |||||
name: 'manageInvite', | name: 'manageInvite', | ||||
component: routerList.ManageInvite, | component: routerList.ManageInvite, | ||||
meta: { | meta: { | ||||
// 简历管理 | // 简历管理 | ||||
const ManageResumeRoute : AppRouteRecordRaw = { | const ManageResumeRoute : AppRouteRecordRaw = { | ||||
path: '/manage/resume', | |||||
path: '/manageResume', | |||||
name: 'resume', | name: 'resume', | ||||
component: routerList.ManageResume, | component: routerList.ManageResume, | ||||
meta: { | meta: { | ||||
// 搜索简历 | // 搜索简历 | ||||
const ManageSearchRoute : AppRouteRecordRaw = { | const ManageSearchRoute : AppRouteRecordRaw = { | ||||
path: '/manage/search', | |||||
path: '/manageSearch', | |||||
name: 'search', | name: 'search', | ||||
component: routerList.ManageSearch, | component: routerList.ManageSearch, | ||||
meta: { | meta: { | ||||
// 招聘会管理 | // 招聘会管理 | ||||
const ManageMeetRoute : AppRouteRecordRaw = { | const ManageMeetRoute : AppRouteRecordRaw = { | ||||
path: '/manage/meet', | |||||
path: '/manageMeet', | |||||
name: 'meet', | name: 'meet', | ||||
component: routerList.ManageMeet, | component: routerList.ManageMeet, | ||||
meta: { | meta: { | ||||
// 消息中心 | // 消息中心 | ||||
const ManageMessageRoute : AppRouteRecordRaw = { | const ManageMessageRoute : AppRouteRecordRaw = { | ||||
path: '/manage/message', | |||||
path: '/manageMessage', | |||||
name: 'message', | name: 'message', | ||||
component: routerList.ManageMessage, | component: routerList.ManageMessage, | ||||
meta: { | meta: { | ||||
// 用户管理 | // 用户管理 | ||||
const ManageUserRoute : AppRouteRecordRaw = { | const ManageUserRoute : AppRouteRecordRaw = { | ||||
path: '/manage/user', | |||||
path: '/manageUser', | |||||
name: 'user', | name: 'user', | ||||
component: routerList.ManageUser, | component: routerList.ManageUser, | ||||
meta: { | meta: { | ||||
}, | }, | ||||
}; | }; | ||||
const ManageRoute : AppRouteRecordRaw = { | |||||
path: '/manage', | |||||
name: 'manage', | |||||
component: routerList.Job, | |||||
meta: { | |||||
title: '企业管理', | |||||
icon: HomeOutlined | |||||
}, | |||||
children: [ | |||||
ManageHomeRoute, | |||||
ManageBasicRoute, | |||||
ManageInviteRoute, | |||||
ManageResumeRoute, | |||||
ManageSearchRoute, | |||||
ManageMeetRoute, | |||||
ManageMessageRoute, | |||||
ManageUserRoute | |||||
] | |||||
}; | |||||
export const routesManageModuleList : AppRouteModule[] = [ | export const routesManageModuleList : AppRouteModule[] = [ | ||||
ManageHomeRoute, | |||||
ManageBasicRoute, | |||||
ManageInviteRoute, | |||||
ManageResumeRoute, | |||||
ManageSearchRoute, | |||||
ManageMeetRoute, | |||||
ManageMessageRoute, | |||||
ManageUserRoute | |||||
ManageRoute | |||||
]; | ]; |
} | } | ||||
let roleName = ref<String>(store.state.roleName) | |||||
console.log(roleName) | |||||
watch(() => roleName, (newVal) => { | |||||
if(roleName == newVal) { | |||||
LayoutRoute.children = [...routesModuleList]; | |||||
LayoutRoute.redirect = '/job/home'; | |||||
} else { | |||||
LayoutRoute.children = [...routesManageModuleList] | |||||
LayoutRoute.redirect = '/manage/home'; | |||||
} | |||||
}) | |||||
console.log(LayoutRoute) | |||||
export const basicRoutes = [ | export const basicRoutes = [ | ||||
LayoutRoute | LayoutRoute | ||||
] | ] |
import { Module } from 'vuex'; | import { Module } from 'vuex'; | ||||
import { useAsRouter } from '@/hooks/useAsRouter'; | import { useAsRouter } from '@/hooks/useAsRouter'; | ||||
import { routesModuleList } from '@/router/dynamic'; | import { routesModuleList } from '@/router/dynamic'; | ||||
import { routesManageModuleList } from '@/router/manageDynamic'; // 企业管理 | |||||
import { LayoutRoute } from '@/router/routes'; | import { LayoutRoute } from '@/router/routes'; | ||||
const { routerDynamic, routerAdd, routerInit } = useAsRouter(); | const { routerDynamic, routerAdd, routerInit } = useAsRouter(); | ||||
state.permissionList = routes | state.permissionList = routes | ||||
}, | }, | ||||
SET_MENU(state, menu) { | SET_MENU(state, menu) { | ||||
console.log(menu) | |||||
state.menuList = menu | state.menuList = menu | ||||
} | } | ||||
}; | }; | ||||
commit | commit | ||||
}) { | }) { | ||||
try { | try { | ||||
if(sessionStorage.getItem('role') == "company") { | |||||
LayoutRoute.redirect = '/manage/home' | |||||
LayoutRoute.children = routesManageModuleList | |||||
routerAdd(LayoutRoute); | |||||
} else { | |||||
LayoutRoute.children = routesModuleList | |||||
routerAdd(LayoutRoute); | |||||
} | |||||
// let res = await LOGIN.permissions(); | |||||
// let arr = res.data.data; | |||||
let arr = ['home','job','jobhome','personal' ,'company','homemake','inviteMeet','information','download']; | |||||
debugger | |||||
let routes = routerDynamic(arr, routesModuleList); | |||||
debugger | |||||
LayoutRoute.children.push(...routes); | |||||
debugger | |||||
LayoutRoute.redirect= '/job/home'; | |||||
debugger | |||||
commit('SET_MENU', LayoutRoute.children); | |||||
debugger | |||||
console.log(LayoutRoute.children) | |||||
routerAdd(LayoutRoute); | |||||
let initialRoutes = routerInit(); | |||||
commit('SET_PERMISSION', [...initialRoutes]); | |||||
} catch { | } catch { | ||||
} | } |
const changeKey = (data) => { | const changeKey = (data) => { | ||||
curKey.value = data.key; | curKey.value = data.key; | ||||
} | } | ||||
console.log(1233232) | |||||
</script> | </script> | ||||
<style> | <style> |
import { ref, computed, onMounted } from 'vue'; | import { ref, computed, onMounted } from 'vue'; | ||||
import JobTalents from '@/components/job/talents/index.vue' | import JobTalents from '@/components/job/talents/index.vue' | ||||
let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | let companyList = ref<object[]>([{}, {}, {}, {}, {}, {}]) | ||||
console.log(1233232) | |||||
</script> | </script> | ||||
<style> | <style> |