Commit 0d10fa495bc6ff39d49da9a4d9b9c2e6f8226283
1 parent
709bad86
超哥牛批
Showing
1 changed file
with
179 additions
and
179 deletions
src/utils/routerList.js
| @@ -2,13 +2,14 @@ import Layout from '@/layout' | @@ -2,13 +2,14 @@ import Layout from '@/layout' | ||
| 2 | import { getInfo } from '../store/modules/user.js' | 2 | import { getInfo } from '../store/modules/user.js' |
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | -export function getRoutes() { | ||
| 6 | - | 5 | +export function getRoutes(permissions) { |
| 7 | let userInfo = {} | 6 | let userInfo = {} |
| 8 | if (localStorage.userinfo) { | 7 | if (localStorage.userinfo) { |
| 9 | userInfo = JSON.parse(localStorage.userinfo) | 8 | userInfo = JSON.parse(localStorage.userinfo) |
| 10 | } | 9 | } |
| 11 | - console.log(userInfo) | 10 | + var permissions = userInfo.permissions || []; |
| 11 | + | ||
| 12 | + | ||
| 12 | let constantRoutes1 = [] | 13 | let constantRoutes1 = [] |
| 13 | if (userInfo.UserId == 1) { | 14 | if (userInfo.UserId == 1) { |
| 14 | constantRoutes1 = [{ | 15 | constantRoutes1 = [{ |
| @@ -298,7 +299,6 @@ export function getRoutes() { | @@ -298,7 +299,6 @@ export function getRoutes() { | ||
| 298 | import ('@/views/resume/femalestaff.vue'), | 299 | import ('@/views/resume/femalestaff.vue'), |
| 299 | hidden: true | 300 | hidden: true |
| 300 | }, | 301 | }, |
| 301 | - | ||
| 302 | { | 302 | { |
| 303 | path: '/live', | 303 | path: '/live', |
| 304 | name: '直播', | 304 | name: '直播', |
| @@ -329,167 +329,61 @@ export function getRoutes() { | @@ -329,167 +329,61 @@ export function getRoutes() { | ||
| 329 | }] | 329 | }] |
| 330 | }, | 330 | }, |
| 331 | 331 | ||
| 332 | - // { | ||
| 333 | - // path: '/example', | ||
| 334 | - // component: Layout, | ||
| 335 | - // redirect: '/example/table', | ||
| 336 | - // name: 'Example', | ||
| 337 | - // meta: { | ||
| 338 | - // title: '题库管理', | ||
| 339 | - // icon: 'el-icon-s-help' | ||
| 340 | - // }, | ||
| 341 | - // children: [{ | ||
| 342 | - // path: 'QuestionBank', | ||
| 343 | - // name: 'Table', | ||
| 344 | - // component: () => import('@/views/QuestionBank/index'), | ||
| 345 | - // meta: { | ||
| 346 | - // title: '题库', | ||
| 347 | - // icon: 'table' | ||
| 348 | - // } | ||
| 349 | - // }] | ||
| 350 | - // }, | ||
| 351 | { | 332 | { |
| 352 | - path: '/moduleIndex', | ||
| 353 | - component: Layout, | ||
| 354 | - redirect: '/module/index', | ||
| 355 | - name: 'module', | ||
| 356 | - meta: { | ||
| 357 | - title: '练习', | ||
| 358 | - icon: 'el-icon-s-help' | ||
| 359 | - }, | ||
| 360 | - children: [{ | ||
| 361 | - path: 'recharge', | ||
| 362 | - name: 'recharge', | ||
| 363 | - component: () => | ||
| 364 | - import ('@/views/module/index'), | ||
| 365 | - meta: { | ||
| 366 | - title: '练习', | ||
| 367 | - icon: 'el-icon-s-operation' | ||
| 368 | - } | ||
| 369 | - }, | ||
| 370 | - { | ||
| 371 | - path: 'index', | ||
| 372 | - name: 'index', | ||
| 373 | - component: () => | ||
| 374 | - import ('@/views/TestPaper/index'), | ||
| 375 | - hidden: true, | ||
| 376 | - meta: { | ||
| 377 | - title: '试卷维护', | ||
| 378 | - icon: 'table' | ||
| 379 | - } | ||
| 380 | - }, | ||
| 381 | - ] | ||
| 382 | - }, | ||
| 383 | - { | ||
| 384 | - path: '/realQuestion', | 333 | + path: '/example', |
| 385 | component: Layout, | 334 | component: Layout, |
| 386 | - redirect: '/module/realQuestion', | ||
| 387 | - name: 'realQuestion', | 335 | + redirect: '/example/table', |
| 336 | + name: 'Example', | ||
| 388 | meta: { | 337 | meta: { |
| 389 | - title: '历年真题', | 338 | + title: '题库管理', |
| 390 | icon: 'el-icon-s-help' | 339 | icon: 'el-icon-s-help' |
| 391 | }, | 340 | }, |
| 392 | children: [{ | 341 | children: [{ |
| 393 | - path: 'recharge', | ||
| 394 | - name: 'recharge', | 342 | + path: 'QuestionBank', |
| 343 | + name: 'Table', | ||
| 395 | component: () => | 344 | component: () => |
| 396 | - import ('@/views/module/realQuestion'), | 345 | + import ('@/views/QuestionBank/index'), |
| 397 | meta: { | 346 | meta: { |
| 398 | - title: '历年真题', | ||
| 399 | - icon: 'el-icon-s-management' | 347 | + title: '题库', |
| 348 | + icon: 'table' | ||
| 400 | } | 349 | } |
| 401 | }] | 350 | }] |
| 402 | }, | 351 | }, |
| 352 | + | ||
| 403 | { | 353 | { |
| 404 | - path: '/simulation', | 354 | + path: '/views', |
| 405 | component: Layout, | 355 | component: Layout, |
| 406 | - redirect: '/module/simulation', | ||
| 407 | - name: 'module', | 356 | + redirect: '/views/TestPaper', |
| 357 | + name: 'TestPaper', | ||
| 408 | meta: { | 358 | meta: { |
| 409 | - title: '模拟试卷', | 359 | + title: '试卷管理', |
| 410 | icon: 'el-icon-s-help' | 360 | icon: 'el-icon-s-help' |
| 411 | }, | 361 | }, |
| 412 | children: [{ | 362 | children: [{ |
| 413 | - path: 'recharge', | ||
| 414 | - name: 'recharge', | ||
| 415 | - component: () => | ||
| 416 | - import ('@/views/module/simulation'), | ||
| 417 | - meta: { | ||
| 418 | - title: '模拟试卷', | ||
| 419 | - icon: 'el-icon-s-promotion' | ||
| 420 | - } | ||
| 421 | - }] | ||
| 422 | - }, | ||
| 423 | - | ||
| 424 | - // { | ||
| 425 | - // path: '/views', | ||
| 426 | - // component: Layout, | ||
| 427 | - // redirect: '/views/TestPaper', | ||
| 428 | - // name: 'TestPaper', | ||
| 429 | - // meta: { | ||
| 430 | - // title: '试卷管理', | ||
| 431 | - // icon: 'el-icon-s-help' | ||
| 432 | - // }, | ||
| 433 | - // children: [ | ||
| 434 | - // { | ||
| 435 | - // path: 'TestPaperList', | ||
| 436 | - // name: 'Table', | ||
| 437 | - // component: () => import('@/views/TestPaper/TestPaperList'), | ||
| 438 | - // meta: { | ||
| 439 | - // title: '试卷列表', | ||
| 440 | - // icon: 'table' | ||
| 441 | - // } | ||
| 442 | - // }, | ||
| 443 | - // { | ||
| 444 | - // path: 'index', | ||
| 445 | - // name: 'index', | ||
| 446 | - // component: () => import('@/views/TestPaper/index'), | ||
| 447 | - // hidden: true, | ||
| 448 | - // meta: { | ||
| 449 | - // title: '试卷维护', | ||
| 450 | - // icon: 'table' | ||
| 451 | - // } | ||
| 452 | - // }, | ||
| 453 | - // // { | ||
| 454 | - // // path: 'ManualTestPaper', | ||
| 455 | - // // name: 'Table', | ||
| 456 | - // // component: () => import('@/views/TestPaper/ManualTestPaper'), | ||
| 457 | - // // meta: { | ||
| 458 | - // // title: '组卷', | ||
| 459 | - // // icon: 'table' | ||
| 460 | - // // } | ||
| 461 | - // // }, | 363 | + path: 'TestPaperList', |
| 364 | + name: 'Table', | ||
| 365 | + component: () => | ||
| 366 | + import ('@/views/TestPaper/TestPaperList'), | ||
| 367 | + meta: { | ||
| 368 | + title: '试卷列表', | ||
| 369 | + icon: 'table' | ||
| 370 | + } | ||
| 371 | + }, | ||
| 372 | + { | ||
| 373 | + path: 'ManualTestPaper', | ||
| 374 | + name: 'Table', | ||
| 375 | + component: () => | ||
| 376 | + import ('@/views/TestPaper/ManualTestPaper'), | ||
| 377 | + meta: { | ||
| 378 | + title: '组卷', | ||
| 379 | + icon: 'table' | ||
| 380 | + } | ||
| 381 | + }, | ||
| 462 | 382 | ||
| 463 | - // ] | ||
| 464 | - // }, | ||
| 465 | - { | ||
| 466 | - path: '/order', | ||
| 467 | - component: Layout, | ||
| 468 | - redirect: '/', | ||
| 469 | - name: 'order', | ||
| 470 | - meta: { | ||
| 471 | - title: '订单管理', | ||
| 472 | - icon: 'el-icon-s-marketing' | ||
| 473 | - }, | ||
| 474 | - children: [{ | ||
| 475 | - path: 'recharge', | ||
| 476 | - name: 'recharge', | ||
| 477 | - component: () => | ||
| 478 | - import ('@/views/order/rechargeList'), | ||
| 479 | - meta: { | ||
| 480 | - title: '充值记录', | ||
| 481 | - } | ||
| 482 | - }, { | ||
| 483 | - path: 'shop', | ||
| 484 | - name: 'shop', | ||
| 485 | - component: () => | ||
| 486 | - import ('@/views/order/shopList'), | ||
| 487 | - meta: { | ||
| 488 | - title: '购买记录', | ||
| 489 | - } | ||
| 490 | - }] | 383 | + ] |
| 491 | }, | 384 | }, |
| 492 | { | 385 | { |
| 386 | + code: '用户管理', | ||
| 493 | path: '/user', | 387 | path: '/user', |
| 494 | component: Layout, | 388 | component: Layout, |
| 495 | redirect: '/', | 389 | redirect: '/', |
| @@ -499,15 +393,48 @@ export function getRoutes() { | @@ -499,15 +393,48 @@ export function getRoutes() { | ||
| 499 | icon: 'el-icon-s-help' | 393 | icon: 'el-icon-s-help' |
| 500 | }, | 394 | }, |
| 501 | children: [{ | 395 | children: [{ |
| 396 | + code: '人才库', | ||
| 502 | path: 'user', | 397 | path: 'user', |
| 503 | name: 'User', | 398 | name: 'User', |
| 504 | component: () => | 399 | component: () => |
| 505 | import ('@/views/user/userlist'), | 400 | import ('@/views/user/userlist'), |
| 506 | meta: { | 401 | meta: { |
| 507 | - title: '普通用户列表', | 402 | + title: '人才库', |
| 508 | } | 403 | } |
| 509 | }, | 404 | }, |
| 405 | + { | ||
| 406 | + code: '面试时间表', | ||
| 407 | + path: 'interviewSchedule', | ||
| 408 | + name: 'interviewSchedule', | ||
| 409 | + component: () => | ||
| 410 | + import ('@/views/user/InterviewSchedule'), | ||
| 411 | + meta: { | ||
| 412 | + title: '面试时间表', | ||
| 413 | + } | ||
| 414 | + }, | ||
| 415 | + | ||
| 416 | + { | ||
| 417 | + code: 'importuser', | ||
| 418 | + path: 'importuser', | ||
| 419 | + name: 'importuser', | ||
| 510 | 420 | ||
| 421 | + component: () => | ||
| 422 | + import ('@/views/user/picuserimport'), | ||
| 423 | + meta: { | ||
| 424 | + title: '图片导入用户', | ||
| 425 | + } | ||
| 426 | + }, | ||
| 427 | + { | ||
| 428 | + code: 'admin', | ||
| 429 | + path: 'admin', | ||
| 430 | + name: 'admin', | ||
| 431 | + component: () => | ||
| 432 | + import ('@/views/user/adminList'), | ||
| 433 | + meta: { | ||
| 434 | + title: '管理员列表', | ||
| 435 | + permissions: ['admin'] | ||
| 436 | + } | ||
| 437 | + }, | ||
| 511 | 438 | ||
| 512 | ] | 439 | ] |
| 513 | }, { | 440 | }, { |
| @@ -519,49 +446,122 @@ export function getRoutes() { | @@ -519,49 +446,122 @@ export function getRoutes() { | ||
| 519 | title: '系统管理', | 446 | title: '系统管理', |
| 520 | icon: 'el-icon-s-platform' | 447 | icon: 'el-icon-s-platform' |
| 521 | }, | 448 | }, |
| 449 | + | ||
| 522 | children: [{ | 450 | children: [{ |
| 523 | - path: 'index', | ||
| 524 | - name: 'index', | ||
| 525 | - component: () => | ||
| 526 | - import ('@/views/password/index'), | ||
| 527 | - meta: { | ||
| 528 | - title: '忘记密码', | ||
| 529 | - } | ||
| 530 | - }, { | ||
| 531 | - path: 'TestPaperClass', | ||
| 532 | - name: 'Table', | ||
| 533 | - component: () => | ||
| 534 | - import ('@/views/TestPaper/TestPaperClass'), | ||
| 535 | - meta: { | ||
| 536 | - title: '分类管理', | ||
| 537 | - } | ||
| 538 | - }, { | ||
| 539 | - path: 'carousel', | ||
| 540 | - name: 'carousel', | ||
| 541 | - component: () => | ||
| 542 | - import ('@/views/carousel/index'), | ||
| 543 | - meta: { | ||
| 544 | - title: '轮播图', | ||
| 545 | - } | ||
| 546 | - }, { | ||
| 547 | - path: 'new', | ||
| 548 | - name: 'new', | ||
| 549 | - component: () => | ||
| 550 | - import ('@/views/carousel/new'), | ||
| 551 | - meta: { | ||
| 552 | - title: '最新资讯', | ||
| 553 | - } | ||
| 554 | - }] | 451 | + path: 'userdimset', |
| 452 | + name: 'impouserdimsetrtuser', | ||
| 453 | + | ||
| 454 | + component: () => | ||
| 455 | + import ('@/views/user/userdimset'), | ||
| 456 | + meta: { | ||
| 457 | + title: '维度规则设置', | ||
| 458 | + permissions: ['admin'] | ||
| 459 | + } | ||
| 460 | + }, | ||
| 461 | + { | ||
| 462 | + path: 'index', | ||
| 463 | + name: 'index', | ||
| 464 | + component: () => | ||
| 465 | + import ('@/views/password/index'), | ||
| 466 | + meta: { | ||
| 467 | + title: '忘记密码', | ||
| 468 | + } | ||
| 469 | + }, | ||
| 470 | + | ||
| 471 | + { | ||
| 472 | + code: 'settings', | ||
| 473 | + path: 'settings', | ||
| 474 | + name: 'settings', | ||
| 475 | + component: () => | ||
| 476 | + import ('@/views/settings/index'), | ||
| 477 | + meta: { | ||
| 478 | + title: '系统设置', | ||
| 479 | + } | ||
| 480 | + }, | ||
| 481 | + { | ||
| 482 | + path: 'TestPaperClass', | ||
| 483 | + name: 'Table', | ||
| 484 | + component: () => | ||
| 485 | + import ('@/views/TestPaper/TestPaperClass'), | ||
| 486 | + meta: { | ||
| 487 | + title: '分类管理', | ||
| 488 | + permissions: ['admin'] | ||
| 489 | + } | ||
| 490 | + }, { | ||
| 491 | + path: 'carousel', | ||
| 492 | + name: 'carousel', | ||
| 493 | + component: () => | ||
| 494 | + import ('@/views/carousel/index'), | ||
| 495 | + meta: { | ||
| 496 | + title: '轮播图', | ||
| 497 | + permissions: ['admin'] | ||
| 498 | + } | ||
| 499 | + }, { | ||
| 500 | + path: 'new', | ||
| 501 | + name: 'new', | ||
| 502 | + component: () => | ||
| 503 | + import ('@/views/carousel/new'), | ||
| 504 | + meta: { | ||
| 505 | + title: '最新资讯', | ||
| 506 | + permissions: ['admin'] | ||
| 507 | + } | ||
| 508 | + }, { | ||
| 509 | + code: 'rolelist', | ||
| 510 | + path: 'role', | ||
| 511 | + name: 'rolelist', | ||
| 512 | + component: () => | ||
| 513 | + import ('@/views/user/rolelist'), | ||
| 514 | + meta: { | ||
| 515 | + title: '角色权限', | ||
| 516 | + permissions: ['admin'] | ||
| 517 | + } | ||
| 518 | + }, | ||
| 519 | + { | ||
| 520 | + code: 'logs', | ||
| 521 | + path: 'logs', | ||
| 522 | + name: 'logs', | ||
| 523 | + | ||
| 524 | + component: () => | ||
| 525 | + import ('@/views/user/loglist'), | ||
| 526 | + meta: { | ||
| 527 | + title: '系统日志', | ||
| 528 | + } | ||
| 529 | + }, | ||
| 530 | + ] | ||
| 555 | }, | 531 | }, |
| 556 | // 404 page must be placed at the end !!! | 532 | // 404 page must be placed at the end !!! |
| 557 | { | 533 | { |
| 558 | path: '*', | 534 | path: '*', |
| 559 | redirect: '/404', | 535 | redirect: '/404', |
| 560 | - hidden: true | 536 | + hidden: true |
| 561 | } | 537 | } |
| 562 | ] | 538 | ] |
| 563 | } | 539 | } |
| 564 | 540 | ||
| 565 | 541 | ||
| 542 | + function hasPermission(permissions, route) { | ||
| 543 | + if (route.meta && route.meta.permissions) { | ||
| 544 | + return permissions.some((role) => route.meta.permissions.includes(role)); | ||
| 545 | + } else { | ||
| 546 | + return true; | ||
| 547 | + } | ||
| 548 | + } | ||
| 549 | + | ||
| 550 | + | ||
| 551 | + function filterAsyncRoutes(routes, permissions) { | ||
| 552 | + const finallyRoutes = []; | ||
| 553 | + routes.forEach((route) => { | ||
| 554 | + const item = {...route }; | ||
| 555 | + if (hasPermission(permissions, item)) { | ||
| 556 | + if (item.children) { | ||
| 557 | + item.children = filterAsyncRoutes(item.children, permissions); | ||
| 558 | + } | ||
| 559 | + finallyRoutes.push(item); | ||
| 560 | + } | ||
| 561 | + }); | ||
| 562 | + return finallyRoutes; | ||
| 563 | + } | ||
| 564 | + constantRoutes1 = filterAsyncRoutes(constantRoutes1, permissions); | ||
| 565 | + | ||
| 566 | return constantRoutes1; | 566 | return constantRoutes1; |
| 567 | } | 567 | } |
| 568 | \ No newline at end of file | 568 | \ No newline at end of file |