| <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> |