diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/static/images/overview/icons/icon-smoking.png b/static/images/overview/icons/icon-smoking.png new file mode 100644 index 0000000..b671245 --- /dev/null +++ b/static/images/overview/icons/icon-smoking.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/static/images/overview/icons/icon-smoking.png b/static/images/overview/icons/icon-smoking.png new file mode 100644 index 0000000..b671245 --- /dev/null +++ b/static/images/overview/icons/icon-smoking.png Binary files differ diff --git a/static/images/overview/icons/icon-temperature.png b/static/images/overview/icons/icon-temperature.png new file mode 100644 index 0000000..8c5755f --- /dev/null +++ b/static/images/overview/icons/icon-temperature.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/static/images/overview/icons/icon-smoking.png b/static/images/overview/icons/icon-smoking.png new file mode 100644 index 0000000..b671245 --- /dev/null +++ b/static/images/overview/icons/icon-smoking.png Binary files differ diff --git a/static/images/overview/icons/icon-temperature.png b/static/images/overview/icons/icon-temperature.png new file mode 100644 index 0000000..8c5755f --- /dev/null +++ b/static/images/overview/icons/icon-temperature.png Binary files differ diff --git a/static/images/overview/tg/mapOverviewTg.jpg b/static/images/overview/tg/mapOverviewTg.jpg new file mode 100644 index 0000000..efb7371 --- /dev/null +++ b/static/images/overview/tg/mapOverviewTg.jpg Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/static/images/overview/icons/icon-smoking.png b/static/images/overview/icons/icon-smoking.png new file mode 100644 index 0000000..b671245 --- /dev/null +++ b/static/images/overview/icons/icon-smoking.png Binary files differ diff --git a/static/images/overview/icons/icon-temperature.png b/static/images/overview/icons/icon-temperature.png new file mode 100644 index 0000000..8c5755f --- /dev/null +++ b/static/images/overview/icons/icon-temperature.png Binary files differ diff --git a/static/images/overview/tg/mapOverviewTg.jpg b/static/images/overview/tg/mapOverviewTg.jpg new file mode 100644 index 0000000..efb7371 --- /dev/null +++ b/static/images/overview/tg/mapOverviewTg.jpg Binary files differ diff --git a/static/images/overview/title-background-1366.png b/static/images/overview/title-background-1366.png new file mode 100644 index 0000000..14f7838 --- /dev/null +++ b/static/images/overview/title-background-1366.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/static/images/overview/icons/icon-smoking.png b/static/images/overview/icons/icon-smoking.png new file mode 100644 index 0000000..b671245 --- /dev/null +++ b/static/images/overview/icons/icon-smoking.png Binary files differ diff --git a/static/images/overview/icons/icon-temperature.png b/static/images/overview/icons/icon-temperature.png new file mode 100644 index 0000000..8c5755f --- /dev/null +++ b/static/images/overview/icons/icon-temperature.png Binary files differ diff --git a/static/images/overview/tg/mapOverviewTg.jpg b/static/images/overview/tg/mapOverviewTg.jpg new file mode 100644 index 0000000..efb7371 --- /dev/null +++ b/static/images/overview/tg/mapOverviewTg.jpg Binary files differ diff --git a/static/images/overview/title-background-1366.png b/static/images/overview/title-background-1366.png new file mode 100644 index 0000000..14f7838 --- /dev/null +++ b/static/images/overview/title-background-1366.png Binary files differ diff --git a/static/images/overview/title-background-1440.png b/static/images/overview/title-background-1440.png new file mode 100644 index 0000000..92a7632 --- /dev/null +++ b/static/images/overview/title-background-1440.png Binary files differ diff --git a/src/assets/overview_scss/dev-tg-ov.scss b/src/assets/overview_scss/dev-tg-ov.scss new file mode 100644 index 0000000..8e3e8bc --- /dev/null +++ b/src/assets/overview_scss/dev-tg-ov.scss @@ -0,0 +1,184 @@ +//球机 +$round-camera1-top: 31%; +$round-camera1-left: 37%; + +$round-camera2-top: 21%; +$round-camera2-left: 58%; + +$round-camera3-top: 86%; +$round-camera3-left: 32%; + +//枪机 +$gun-camera1-top: 20%; +$gun-camera1-left: 32%; + +$gun-camera2-top: 33%; +$gun-camera2-left: 32%; + +$gun-camera3-top: 20%; +$gun-camera3-left: 41%; + +$gun-camera4-top: 37%; +$gun-camera4-left: 37%; + +$gun-camera5-top: 65%; +$gun-camera5-left: 59%; + +$gun-camera6-top: 71%; +$gun-camera6-left: 62%; + + +// 人脸识别摄像机 +$face-camera1-top: 5%; +$face-camera1-left: 50%; + +$face-camera2-top: 10%; +$face-camera2-left: 50%; + +$face-camera3-top: 16%; +$face-camera3-left: 43%; + +$face-camera4-top: 21%; +$face-camera4-left: 55%; + +$face-camera5-top: 40%; +$face-camera5-left: 39%; + +$face-camera6-top: 42%; +$face-camera6-left: 42%; + +$face-camera7-top: 41%; +$face-camera7-left: 47%; + +$face-camera8-top: 41%; +$face-camera8-left: 49%; + +$face-camera9-top: 41%; +$face-camera9-left: 50%; + +$face-camera10-top: 38%; +$face-camera10-left: 50%; + +$face-camera11-top: 35%; +$face-camera11-left: 55%; + +$face-camera12-top: 35%; +$face-camera12-left: 58%; + +$face-camera13-top: 37%; +$face-camera13-left: 59%; + +$face-camera14-top: 53%; +$face-camera14-left: 34%; + +$face-camera15-top: 59%; +$face-camera15-left: 43%; + +$face-camera16-top: 59%; +$face-camera16-left: 58%; + +$face-camera17-top: 64%; +$face-camera17-left: 51%; + +$face-camera18-top: 67%; +$face-camera18-left: 36%; + +$face-camera19-top: 78%; +$face-camera19-left: 36%; + +$face-camera20-top: 78%; +$face-camera20-left: 61%; + +$face-camera21-top: 83%; +$face-camera21-left: 38%; + +$face-camera22-top: 83%; +$face-camera22-left: 47%; + +$face-camera23-top: 83%; +$face-camera23-left: 54%; + +$face-camera24-top: 93%; +$face-camera24-left: 45%; + +$face-camera25-top: 92%; +$face-camera25-left: 52%; + +$face-camera26-top: 93%; +$face-camera26-left: 57%; + +$face-camera27-top: 90%; +$face-camera27-left: 49.5%; + +$face-camera28-top: 95%; +$face-camera28-left: 49.5%; + + +// 车牌识别摄像机 +$car-camera1-top: 5%; +$car-camera1-left: 51%; + +$car-camera2-top: 10%; +$car-camera2-left: 51%; + +$car-camera3-top: 90%; +$car-camera3-left: 51%; + +$car-camera4-top: 95%; +$car-camera4-left: 51%; + + +// 周界摄像机 +$perimeter-camera1-top: 3%; +$perimeter-camera1-left: 41%; + +$perimeter-camera2-top: 3%; +$perimeter-camera2-left: 32%; + +$perimeter-camera3-top: 8%; +$perimeter-camera3-left: 30%; + +$perimeter-camera4-top: 20%; +$perimeter-camera4-left: 30%; + +$perimeter-camera5-top: 63%; +$perimeter-camera5-left: 30%; + +$perimeter-camera6-top: 70%; +$perimeter-camera6-left: 30%; + +$perimeter-camera7-top: 91%; +$perimeter-camera7-left: 30%; + +$perimeter-camera8-top: 95%; +$perimeter-camera8-left: 31%; + +$perimeter-camera9-top: 95%; +$perimeter-camera9-left: 35%; + +$perimeter-camera10-top: 95%; +$perimeter-camera10-left: 60%; + +$perimeter-camera11-top: 95%; +$perimeter-camera11-left: 66%; + +$perimeter-camera12-top: 92%; +$perimeter-camera12-left: 69%; + +$perimeter-camera13-top: 83%; +$perimeter-camera13-left: 69%; + +$perimeter-camera14-top: 72%; +$perimeter-camera14-left: 69%; + +$perimeter-camera15-top: 62%; +$perimeter-camera15-left: 69%; + +$perimeter-camera16-top: 50%; +$perimeter-camera16-left: 69%; + +$perimeter-camera17-top: 40%; +$perimeter-camera17-left: 69%; + +$perimeter-camera18-top: 32%; +$perimeter-camera18-left: 67.5%; diff --git a/src/router/index.js b/src/router/index.js index 9feb573..d0caace 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,8 @@ import { systemRouters } from './modules/system' import { doorSysRouters } from './modules/doorSys' import { fenceSysRouters } from './modules/fenceSys' +import { regionSysRouters } from './modules/regionSys' +import { keySysRouters } from './modules/keySys' import { ctrlSysRouters } from './modules/ctrlSys' /** @@ -56,20 +58,6 @@ }, // 九宫格 { path: '/dashboard', component: () => import('@/views/dashboard/portal'), hidden: true } - // 协同办公子系统 - // { - // path: '/cooperate', - // name: 'cooperate', - // redirect: '/coorBusiness', - // hidden: true - // }, - // // 应用维护子系统 - // { - // path: '/sys', - // name: 'sys', - // redirect: '/system', - // hidden: true - // } ] export const createRouter = () => { @@ -91,6 +79,8 @@ ...systemRouters, ...doorSysRouters, ...fenceSysRouters, + ...regionSysRouters, + ...keySysRouters, ...ctrlSysRouters, { path: '*', redirect: '/404', hidden: true, meta: {}} ] diff --git a/src/router/modules/ctrlSys.js b/src/router/modules/ctrlSys.js index 0dce4da..843284d 100644 --- a/src/router/modules/ctrlSys.js +++ b/src/router/modules/ctrlSys.js @@ -1,5 +1,6 @@ /* Layout */ import SinglePageLayout from '@/views/layout/SinglePageLayout' +import OverviewLayout from '@/views/layout/OverviewLayout' export const ctrlSysRouters = [ { path: '/ctrl', @@ -15,7 +16,7 @@ { path: '/ctrl/index1', component: SinglePageLayout, - name: 'Ctrl1', + name: 'CtrlIndex1', alwaysShow: false, meta: { title: '', @@ -31,5 +32,25 @@ meta: { title: '综合控制室首页', icon: '', permission: ['/ctrl/index'], keepAlive: true } } ] + }, + { + path: '/ctrl/overview1', + component: OverviewLayout, + name: 'CtrlOverview1', + alwaysShow: false, + meta: { + title: '', + icon: '', // 图标 + permission: ['/ctrl'], // 权限名称 + sys: '/ctrl' + }, + children: [ + { + path: '/ctrl/overview', + name: 'CtrlOverview', + component: () => import('@/views/ctrl/overview'), + meta: { title: '综合运行总览', icon: '', permission: ['/ctrl/overview'], keepAlive: true } + } + ] } ] diff --git a/src/router/modules/doorSys.js b/src/router/modules/doorSys.js index 1a78748..dddbd6e 100644 --- a/src/router/modules/doorSys.js +++ b/src/router/modules/doorSys.js @@ -1,9 +1,10 @@ /* Layout */ import Layout from '../../views/layout/Layout' +// import OverviewLayout from '../../views/layout/OverviewLayout' export const doorSysRouters = [ { path: '/door', - name: 'door', + name: 'Door', redirect: '/door/alarm', hidden: true, meta: { @@ -12,11 +13,44 @@ isSys: true } }, + // { + // path: '/door/overview', + // component: OverviewLayout, + // redirect: '/door/overview/device', + // name: 'DoorOverview', + // alwaysShow: true, + // meta: { + // title: '运行总览', + // icon: '', // 图标 + // permission: ['/door/overview'], // 权限名称 + // sys: '/door' + // }, + // children: [ + // { + // path: '/door/overview/device', + // name: 'DoorOverviewDevice', + // component: () => import('@/views/alarm/alarmNow'), + // meta: { title: '设备状态', icon: '', permission: ['/door/overview/device'], keepAlive: true } + // }, + // { + // path: '/door/overview/alarm', + // name: 'DoorOverviewAlarm', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '报警情况', icon: '', permission: ['/door/overview/alarm'], keepAlive: true } + // }, + // { + // path: '/door/overview/defence', + // name: 'DoorOverviewDefence', + // component: () => import('@/views/alarm/alarmList'), + // meta: { title: '防护情况', icon: '', permission: ['/door/overview/defence'], keepAlive: true } + // } + // ] + // }, { path: '/door/alarm', component: Layout, redirect: '/door/alarm/now', - name: 'Alarm', + name: 'DoorAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,13 +61,13 @@ children: [ { path: '/door/alarm/now', - name: 'AlarmNow', + name: 'DoorAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/door/alarm/now'], keepAlive: true } }, { path: '/door/alarm/list', - name: 'AlarmList', + name: 'DoorAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/door/alarm/list'], keepAlive: true } } @@ -43,7 +77,7 @@ path: '/door/visitor', component: Layout, redirect: '/door/visitor/add', - name: 'Visitor', + name: 'DoorVisitor', alwaysShow: true, meta: { title: '访客管理', @@ -54,190 +88,162 @@ children: [ { path: '/door/visitor/add', - name: 'VisitorAdd', + name: 'DoorVisitorAdd', component: () => import('@/views/visitor/visitorAdd'), meta: { title: '访客登记', icon: '', permission: ['/door/visitor/add'], keepAlive: true } }, { path: '/door/visitor/addCar', - name: 'VisitorAddCar', + name: 'DoorVisitorAddCar', component: () => import('@/views/visitor/visitorAddCar'), meta: { title: '访客车辆登记', icon: '', permission: ['/door/visitor/addCar'], keepAlive: true } }, { path: '/door/visitor/today', - name: 'VisitorToday', + name: 'DoorVisitorToday', component: () => import('@/views/visitor/visitorTodayList'), meta: { title: '当日来访人员', icon: '', permission: ['/door/visitor/today'], keepAlive: true } }, { path: '/door/visitor/carToday', - name: 'VisitorCarToday', + name: 'DoorVisitorCarToday', component: () => import('@/views/visitor/visitorCarTodayList'), meta: { title: '当日来访车辆', icon: '', permission: ['/door/visitor/carToday'], keepAlive: true } }, { path: '/door/visitor/list', - name: 'VisitorList', + name: 'DoorVisitorList', component: () => import('@/views/visitor/visitorList'), meta: { title: '来访记录', icon: '', permission: ['/door/visitor/list'], keepAlive: true } } ] }, { - path: '/staff', + path: '/door/staff', component: Layout, - redirect: '/staff', - name: 'Staff', + redirect: '/door/staff', + name: 'DoorStaff', alwaysShow: true, meta: { title: '人员管理', icon: 'icon-person', // 图标 - permission: ['/staff'], // 权限名称 + permission: ['/door/staff'], // 权限名称 sys: '/door' }, children: [ { - path: '/staff/add', - name: 'StaffAdd', + path: '/door/staff/add', + name: 'DoorStaffAdd', component: () => import('@/views/staff/staffAdd'), - meta: { title: '人员登记', icon: '', permission: ['/staff/add'], keepAlive: true } + meta: { title: '人员登记', icon: '', permission: ['/door/staff/add'], keepAlive: true } }, { - path: '/staff/list', - name: 'StaffList', + path: '/door/staff/list', + name: 'DoorStaffList', component: () => import('@/views/staff/staffList'), - meta: { title: '人员列表', icon: '', permission: ['/staff/list'], keepAlive: true } + meta: { title: '人员列表', icon: '', permission: ['/door/staff/list'], keepAlive: true } }, { - path: '/staff/edit', - name: 'StaffEdit', + path: '/door/staff/edit', + name: 'DoorStaffEdit', component: () => import('@/views/staff/staffEdit'), hidden: true, - meta: { title: '人员编辑', icon: '', permission: ['/staff/edit'], keepAlive: true } + meta: { title: '人员编辑', icon: '', permission: ['/door/staff/edit'], keepAlive: true } } ] }, { - path: '/car', + path: '/door/car', component: Layout, - redirect: '/car', - name: 'Car', + redirect: '/door/car', + name: 'DoorCar', alwaysShow: true, meta: { title: '车辆管理', icon: 'icon-car', // 图标 - permission: ['/car'], // 权限名称 + permission: ['/door/car'], // 权限名称 sys: '/door' }, children: [ { - path: '/car/list', - name: 'CarList', + path: '/door/car/list', + name: 'DoorCarList', component: () => import('@/views/car/carList'), - meta: { title: '车辆列表', icon: '', permission: ['/car/list'], keepAlive: true } + meta: { title: '车辆列表', icon: '', permission: ['/door/car/list'], keepAlive: true } }, { - path: '/car/add', - name: 'CarAdd', + path: '/door/car/add', + name: 'DoorCarAdd', hidden: true, component: () => import('@/views/car/carAdd'), - meta: { title: '车辆登记', icon: '', permission: ['/car/add'], keepAlive: true } + meta: { title: '车辆登记', icon: '', permission: ['/door/car/add'], keepAlive: true } } ] }, { - path: '/device', + path: '/door/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/door/device', + name: 'DoorDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/door/device'], // 权限名称 sys: '/door' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/door/device/list', + name: 'DoorDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/door/device/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/door/statistics', component: Layout, - redirect: '/area', - name: 'Area', - alwaysShow: true, - meta: { - title: '区域管理', - icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 - sys: '/door' - }, - children: [ - { - path: '/area/list', - name: 'AreaList', - component: () => import('@/views/area/areaList'), - meta: { title: '区域列表', icon: '', permission: ['/area/list'], keepAlive: true } - }, - { - path: '/area/defenceList', - name: 'DefenceList', - component: () => import('@/views/area/defenceList'), - meta: { title: '车辆登记', icon: '', permission: ['/area/defenceList'], keepAlive: true } - } - ] - }, - { - path: '/statistics', - component: Layout, - redirect: '/statistics', - name: 'Statistics', + redirect: '/door/statistics', + name: 'DoorStatistics', alwaysShow: true, meta: { title: '统计管理', icon: 'icon-statistics', // 图标 - permission: ['/statistics'], // 权限名称 + permission: ['/door/statistics'], // 权限名称 sys: '/door' }, children: [ { - path: '/statistics/inOutPerson', - name: 'InOutPerson', + path: '/door/statistics/inOutPerson', + name: 'DoorInOutPerson', component: () => import('@/views/statistics/inOutPerson'), - meta: { title: '人员进出记录', icon: '', permission: ['/statistics/inOutPerson'], keepAlive: true } + meta: { title: '人员进出记录', icon: '', permission: ['/door/statistics/inOutPerson'], keepAlive: true } }, { - path: '/statistics/inOutCar', - name: 'InOutCar', + path: '/door/statistics/inOutCar', + name: 'DoorInOutCar', component: () => import('@/views/statistics/inOutCar'), - meta: { title: '车辆进出记录', icon: '', permission: ['/statistics/inOutCar'], keepAlive: true } + meta: { title: '车辆进出记录', icon: '', permission: ['/door/statistics/inOutCar'], keepAlive: true } }, { - path: '/statistics/personDuration', - name: 'PersonDuration', + path: '/door/statistics/personDuration', + name: 'DoorPersonDuration', component: () => import('@/views/statistics/personDuration'), - meta: { title: '人员所处时长统计', icon: '', permission: ['/statistics/personDuration'], keepAlive: true } + meta: { title: '人员所处时长统计', icon: '', permission: ['/door/statistics/personDuration'], keepAlive: true } }, { - path: '/statistics/carDuration', - name: 'CarDuration', + path: '/door/statistics/carDuration', + name: 'DoorCarDuration', component: () => import('@/views/statistics/carDuration'), - meta: { title: '车辆所处时长统计', icon: '', permission: ['/statistics/carDuration'], keepAlive: true } + meta: { title: '车辆所处时长统计', icon: '', permission: ['/door/statistics/carDuration'], keepAlive: true } }, { - path: '/statistics/doorCount', + path: '/door/statistics/doorCount', name: 'DoorCount', component: () => import('@/views/statistics/doorCount'), - meta: { title: '营门出入次数统计', icon: '', permission: ['/statistics/doorCount'], keepAlive: true } + meta: { title: '营门出入次数统计', icon: '', permission: ['/door/statistics/doorCount'], keepAlive: true } } ] - }, - + } ] diff --git a/src/router/modules/fenceSys.js b/src/router/modules/fenceSys.js index c07c0f8..abcd3ca 100644 --- a/src/router/modules/fenceSys.js +++ b/src/router/modules/fenceSys.js @@ -3,7 +3,7 @@ export const fenceSysRouters = [ { path: '/fence', - name: 'fence', + name: 'Fence', redirect: '/fence/alarm', hidden: true, meta: { @@ -16,7 +16,7 @@ path: '/fence/alarm', component: Layout, redirect: '/fence/alarm', - name: 'Alarm', + name: 'FenceAlarm', alwaysShow: true, meta: { title: '报警管理', @@ -27,57 +27,57 @@ children: [ { path: '/fence/alarm/now', - name: 'AlarmNow', + name: 'FenceAlarmNow', component: () => import('@/views/alarm/alarmNow'), meta: { title: '当前报警', icon: '', permission: ['/fence/alarm/now'], keepAlive: true } }, { path: '/fence/alarm/list', - name: 'AlarmList', + name: 'FenceAlarmList', component: () => import('@/views/alarm/alarmList'), meta: { title: '报警记录', icon: '', permission: ['/fence/alarm/list'], keepAlive: true } } ] }, { - path: '/area', + path: '/fence/area', component: Layout, - redirect: '/area', - name: 'Area', + redirect: '/fence/area', + name: 'FenceArea', alwaysShow: true, meta: { title: '区域管理', icon: 'icon-area', // 图标 - permission: ['/area'], // 权限名称 + permission: ['/fence/area'], // 权限名称 sys: '/fence' }, children: [ { - path: '/area/defenceList', - name: 'DefenceList', + path: '/fence/area/defenceList', + name: 'FenceDefenceList', component: () => import('@/views/area/defenceList'), - meta: { title: '防区列表', icon: '', permission: ['/area/defenceList'], keepAlive: true } + meta: { title: '防区列表', icon: '', permission: ['/fence/area/defenceList'], keepAlive: true } } ] }, { - path: '/device', + path: '/fence/device', component: Layout, - redirect: '/device', - name: 'Device', + redirect: '/fence/device', + name: 'FenceDevice', alwaysShow: true, meta: { title: '设备管理', icon: 'icon-device', // 图标 - permission: ['/device'], // 权限名称 + permission: ['/fence/device'], // 权限名称 sys: '/fence' }, children: [ { - path: '/device/list', - name: 'DeviceList', + path: '/fence/device/list', + name: 'FenceDeviceList', component: () => import('@/views/deviceManage/deviceList'), - meta: { title: '设备列表', icon: '', permission: ['/device/list'], keepAlive: true } + meta: { title: '设备列表', icon: '', permission: ['/fence/device/list'], keepAlive: true } } ] } diff --git a/src/router/modules/keySys.js b/src/router/modules/keySys.js new file mode 100644 index 0000000..a8c93fa --- /dev/null +++ b/src/router/modules/keySys.js @@ -0,0 +1,118 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const keySysRouters = [ + { + path: '/key', + name: 'Key', + redirect: '/key/alarm', + hidden: true, + meta: { + title: '重点区域管理子系统', + permission: ['/key'], + isSys: true + } + }, + { + path: '/key/alarm', + component: Layout, + redirect: '/key/alarm/now', + name: 'KeyAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/key/alarm'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/alarm/now', + name: 'KeyAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/key/alarm/now'], keepAlive: true } + }, + { + path: '/key/alarm/list', + name: 'KeyAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/key/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/key/staff', + component: Layout, + redirect: '/key/staff', + name: 'KeyStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/key/staff'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/staff/add', + name: 'KeyStaffAdd', + component: () => import('@/views/staff/staffAdd'), + meta: { title: '人员登记', icon: '', permission: ['/key/staff/add'], keepAlive: true } + }, + { + path: '/key/staff/list', + name: 'KeyStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/key/staff/list'], keepAlive: true } + }, + { + path: '/key/staff/edit', + name: 'KeyStaffEdit', + component: () => import('@/views/staff/staffEdit'), + hidden: true, + meta: { title: '人员编辑', icon: '', permission: ['/key/staff/edit'], keepAlive: true } + } + ] + }, + { + path: '/key/area', + component: Layout, + redirect: '/key/area', + name: 'KeyArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/key/area'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/area/list', + name: 'KeyAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/key/area/list'], keepAlive: true } + } + ] + }, + { + path: '/key/device', + component: Layout, + redirect: '/key/device', + name: 'KeyDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/key/device'], // 权限名称 + sys: '/key' + }, + children: [ + { + path: '/key/device/list', + name: 'KeyDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/key/device/list'], keepAlive: true } + } + ] + } +] diff --git a/src/router/modules/regionSys.js b/src/router/modules/regionSys.js new file mode 100644 index 0000000..8b69cf0 --- /dev/null +++ b/src/router/modules/regionSys.js @@ -0,0 +1,156 @@ +/* Layout */ +import Layout from '../../views/layout/Layout' +export const regionSysRouters = [ + { + path: '/region', + name: 'Region', + redirect: '/region/alarm', + hidden: true, + meta: { + title: '全域监控子系统', + permission: ['/region'], + isSys: true + } + }, + { + path: '/region/alarm', + component: Layout, + redirect: '/region/alarm', + name: 'RegionAlarm', + alwaysShow: true, + meta: { + title: '报警管理', + icon: 'icon-alarm', // 图标 + permission: ['/region/alarm'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/alarm/now', + name: 'RegionAlarmNow', + component: () => import('@/views/alarm/alarmNow'), + meta: { title: '当前报警', icon: '', permission: ['/region/alarm/now'], keepAlive: true } + }, + { + path: '/region/alarm/list', + name: 'RegionAlarmList', + component: () => import('@/views/alarm/alarmList'), + meta: { title: '报警记录', icon: '', permission: ['/region/alarm/list'], keepAlive: true } + } + ] + }, + { + path: '/region/staff', + component: Layout, + redirect: '/region/staff', + name: 'RegionStaff', + alwaysShow: true, + meta: { + title: '人员管理', + icon: 'icon-person', // 图标 + permission: ['/region/staff'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/staff/list', + name: 'RegionStaffList', + component: () => import('@/views/staff/staffList'), + meta: { title: '人员列表', icon: '', permission: ['/region/staff/list'], keepAlive: true } + }, + { + path: '/region/car/list', + name: 'RegionCarList', + component: () => import('@/views/car/carList'), + meta: { title: '车辆列表', icon: '', permission: ['/region/car/list'], keepAlive: true } + }, + { + path: '/region/visitor/today', + name: 'RegionVisitorToday', + component: () => import('@/views/visitor/visitorTodayList'), + meta: { title: '当日来访人员', icon: '', permission: ['/region/visitor/today'], keepAlive: true } + }, + { + path: '/region/visitor/carToday', + name: 'RegionVisitorCarToday', + component: () => import('@/views/visitor/visitorCarTodayList'), + meta: { title: '当日来访车辆', icon: '', permission: ['/region/visitor/carToday'], keepAlive: true } + }, + { + path: '/region/visitor/list', + name: 'RegionVisitorList', + component: () => import('@/views/visitor/visitorList'), + meta: { title: '来访记录', icon: '', permission: ['/region/visitor/list'], keepAlive: true } + } + ] + }, + { + path: '/region/area', + component: Layout, + redirect: '/region/area', + name: 'RegionArea', + alwaysShow: true, + meta: { + title: '区域管理', + icon: 'icon-area', // 图标 + permission: ['/region/area'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/area/list', + name: 'RegionAreaList', + component: () => import('@/views/area/areaList'), + meta: { title: '区域列表', icon: '', permission: ['/region/area/list'], keepAlive: true } + } + ] + }, + { + path: '/region/device', + component: Layout, + redirect: '/region/device', + name: 'RegionDevice', + alwaysShow: true, + meta: { + title: '设备管理', + icon: 'icon-device', // 图标 + permission: ['/region/device'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/device/list', + name: 'RegionDeviceList', + component: () => import('@/views/deviceManage/deviceList'), + meta: { title: '设备列表', icon: '', permission: ['/region/device/list'], keepAlive: true } + } + ] + }, + { + path: '/region/statistics', + component: Layout, + redirect: '/region/statistics', + name: 'RegionStatistics', + alwaysShow: true, + meta: { + title: '统计管理', + icon: 'icon-statistics', // 图标 + permission: ['/region/statistics'], // 权限名称 + sys: '/region' + }, + children: [ + { + path: '/region/statistics/personDuration', + name: 'RegionPersonDuration', + component: () => import('@/views/statistics/personDuration'), + meta: { title: '人员所处时长统计', icon: '', permission: ['/region/statistics/personDuration'], keepAlive: true } + }, + { + path: '/region/statistics/carDuration', + name: 'RegionCarDuration', + component: () => import('@/views/statistics/carDuration'), + meta: { title: '车辆所处时长统计', icon: '', permission: ['/region/statistics/carDuration'], keepAlive: true } + } + ] + } +] diff --git a/src/utils/permission.js b/src/utils/permission.js index f5e6c09..4acd538 100644 --- a/src/utils/permission.js +++ b/src/utils/permission.js @@ -2,10 +2,13 @@ /** * 判断是否有权限 */ -export function hasPermission(permission) { +export function hasPermission(permission, strict = false) { const btns = store.getters.btns return btns.some(btn => { // 遍历btns,查找btn.url是否有匹配的permission,有则返回true,否则返回false - return btn.url === permission + if (strict === true) { + return btn.url === permission // 严格模式需要严格匹配 + } + return btn.url.includes(permission) // 模糊匹配 }) } // 根据用户权限判断是否要显示井类型下拉框 diff --git a/src/views/alarm/alarmList.vue b/src/views/alarm/alarmList.vue index be50016..cdd1454 100644 --- a/src/views/alarm/alarmList.vue +++ b/src/views/alarm/alarmList.vue @@ -51,7 +51,7 @@ 导出 - + @@ -93,7 +93,7 @@ + + + + diff --git a/src/views/dashboard/portal.vue b/src/views/dashboard/portal.vue index 30c3131..5921d74 100644 --- a/src/views/dashboard/portal.vue +++ b/src/views/dashboard/portal.vue @@ -21,20 +21,20 @@
- -
全域监控
+ +
- -
重点区域管控
+ +
- +
天津滨海园区 @@ -46,8 +46,8 @@
- - + +
@@ -135,7 +135,7 @@ .icon-subsystem img { padding: 10px; - margin-top: 35vh; + margin-top: 50vh; margin-bottom: 20px; border-radius: 50%; background-color: #014886; @@ -147,7 +147,7 @@ position: absolute; width: 420px; left: calc(50vw - 210px); - top: 10vh; + top: 15vh; } .welcome { @@ -164,8 +164,8 @@ .title { position: absolute; - top: 30px; - left: 180px; + top: 15px; + left: 140px; font-size: 40px; color: #F5F7FA; text-shadow: 2px 2px 2px black; @@ -174,9 +174,9 @@ .sub-title { position: absolute; - top: 100px; - left: 180px; - font-size: 24px; + top: 75px; + left: 140px; + font-size: 28px; color: #F5F7FA; text-shadow: 2px 2px 2px black; display: inline-block; diff --git a/src/views/deviceManage/deviceList.vue b/src/views/deviceManage/deviceList.vue index f4cde9c..f5a7417 100644 --- a/src/views/deviceManage/deviceList.vue +++ b/src/views/deviceManage/deviceList.vue @@ -91,6 +91,7 @@ + + + + diff --git a/src/views/layout/components/AppHeader.vue b/src/views/layout/components/AppHeader.vue index 8b71400..e877892 100644 --- a/src/views/layout/components/AppHeader.vue +++ b/src/views/layout/components/AppHeader.vue @@ -6,9 +6,17 @@ {{ currentSystem.name }} + + 回首页 + {{ system.name }} + +
+ 运行总览 +
+
欢迎您,{{ name }} @@ -16,9 +24,6 @@
- 回首页 - - 修改密码 @@ -43,7 +48,7 @@ name: this.$store.getters.name, title: getProject().title, systems: [ - { code: 'key', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, + { code: 'ctrl', ismenu: '0', levels: 1, name: '综合控制室子系统', resourceType: '02', url: '/ctrl' }, { code: 'door', ismenu: '0', levels: 1, name: '营门管理子系统', resourceType: '02', url: '/door' }, { code: 'fence', ismenu: '0', levels: 1, name: '周界防卫子系统', resourceType: '02', url: '/fence' }, { code: 'region', ismenu: '0', levels: 1, name: '全域监控子系统', resourceType: '02', url: '/region' }, @@ -61,9 +66,6 @@ currentSystem() { return this.$store.getters.currentSystem } - // systems() { - // return this.$store.getters.systems - // } }, created() { this.getSystems() @@ -82,7 +84,10 @@ this.$refs.retPwd.initDialog(true) }, backToIndex() { - this.$router.push('/dashboard') + this.$router.replace('/dashboard') + }, + backToOverview() { + this.$router.replace('/ctrl/overview') }, // 切换子系统 handleCommand(command) { @@ -158,4 +163,10 @@ cursor: pointer; } + .back-to-overview { + position: absolute; + top: 15px; + right: 200px; + } + diff --git a/src/views/staff/staffAdd.vue b/src/views/staff/staffAdd.vue index 3bdfea3..58f766b 100644 --- a/src/views/staff/staffAdd.vue +++ b/src/views/staff/staffAdd.vue @@ -136,25 +136,13 @@ import { getSexType } from '@/api/allDict' import { getIrisAreaList } from '@/api/area' import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis' +import { validateIDCard } from '@/utils/validate' import CaptureIris from './captureIris' export default { name: 'StaffAdd', components: { CaptureIris, DeptSelect }, data() { - // 身份证号码校验 - const validateIDCard = (rule, value, callback) => { - if (value !== '') { - if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) { - callback(new Error('请输入合法的身份证号')) - } else { - callback() - } - } else { - callback(new Error('身份证号不能为空')) - } - } - return { isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能 isKey: false, // 是否重点区域授权人员 diff --git a/src/views/staff/staffList.vue b/src/views/staff/staffList.vue index b47f910..75776fa 100644 --- a/src/views/staff/staffList.vue +++ b/src/views/staff/staffList.vue @@ -154,11 +154,13 @@ this.$refs.detailStaff.initDialog('detail', this.dialogFormVisible, row) }, add() { - this.$router.push({ path: '/staff/add', query: { type: 'create' }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/add', query: { type: 'create' }}) }, // 编辑设备信息 edit(row) { - this.$router.push({ path: '/staff/edit', query: { type: 'update', id: row.id }}) + const code = this.$store.getters.currentSystem.code + this.$router.push({ path: '/' + code + '/staff/edit', query: { type: 'update', id: row.id }}) }, // 删除设备 del() { diff --git a/src/views/statistics/doorCount.vue b/src/views/statistics/doorCount.vue index 45eaed7..65d4893 100644 --- a/src/views/statistics/doorCount.vue +++ b/src/views/statistics/doorCount.vue @@ -187,14 +187,15 @@ created() { this.initAreaType() this.fetchAreaNames() + }, + activated() { this.fetchPersonData()// 获取数据 - this.fetchCarData()// 获取数据 + this.fetchCarData() // 获取数据 }, methods: { // 查询数据 initAreaType() { - const currentSystem = this.$store.getters.currentSystem - this.areaType = getAreaTypeBySubSystem(currentSystem) + this.areaType = getAreaTypeBySubSystem(this.$store.getters.currentSystem.code) }, fetchAreaNames() { getAreaNameList({ areaType: this.areaType }).then(response => { diff --git a/src/views/statistics/inOutCar.vue b/src/views/statistics/inOutCar.vue index fb3cb19..3126575 100644 --- a/src/views/statistics/inOutCar.vue +++ b/src/views/statistics/inOutCar.vue @@ -147,7 +147,9 @@ created() { this.fetchCarType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/src/views/statistics/inOutPerson.vue b/src/views/statistics/inOutPerson.vue index 4d466d9..52dffda 100644 --- a/src/views/statistics/inOutPerson.vue +++ b/src/views/statistics/inOutPerson.vue @@ -152,7 +152,9 @@ created() { this.fetchPersonType() this.fetchInOutType() - this.fetchData()// 获取数据 + }, + activated() { + this.fetchData() // 获取数据 }, methods: { // 身份证号加密显示 diff --git a/static/images/global_images/exit-logo.png b/static/images/global_images/exit-logo.png new file mode 100644 index 0000000..88064a0 --- /dev/null +++ b/static/images/global_images/exit-logo.png Binary files differ diff --git a/static/images/global_images/home-logo.png b/static/images/global_images/home-logo.png new file mode 100644 index 0000000..b84838c --- /dev/null +++ b/static/images/global_images/home-logo.png Binary files differ diff --git a/static/images/overview/icons/icon-all.png b/static/images/overview/icons/icon-all.png new file mode 100644 index 0000000..9511644 --- /dev/null +++ b/static/images/overview/icons/icon-all.png Binary files differ diff --git a/static/images/overview/icons/icon-camera.png b/static/images/overview/icons/icon-camera.png new file mode 100644 index 0000000..8b6d384 --- /dev/null +++ b/static/images/overview/icons/icon-camera.png Binary files differ diff --git a/static/images/overview/icons/icon-car.png b/static/images/overview/icons/icon-car.png new file mode 100644 index 0000000..48f8a4d --- /dev/null +++ b/static/images/overview/icons/icon-car.png Binary files differ diff --git a/static/images/overview/icons/icon-fence.png b/static/images/overview/icons/icon-fence.png new file mode 100644 index 0000000..1c8b34d --- /dev/null +++ b/static/images/overview/icons/icon-fence.png Binary files differ diff --git a/static/images/overview/icons/icon-gate.png b/static/images/overview/icons/icon-gate.png new file mode 100644 index 0000000..574d184 --- /dev/null +++ b/static/images/overview/icons/icon-gate.png Binary files differ diff --git a/static/images/overview/icons/icon-iris.png b/static/images/overview/icons/icon-iris.png new file mode 100644 index 0000000..bc33109 --- /dev/null +++ b/static/images/overview/icons/icon-iris.png Binary files differ diff --git a/static/images/overview/icons/icon-smoking.png b/static/images/overview/icons/icon-smoking.png new file mode 100644 index 0000000..b671245 --- /dev/null +++ b/static/images/overview/icons/icon-smoking.png Binary files differ diff --git a/static/images/overview/icons/icon-temperature.png b/static/images/overview/icons/icon-temperature.png new file mode 100644 index 0000000..8c5755f --- /dev/null +++ b/static/images/overview/icons/icon-temperature.png Binary files differ diff --git a/static/images/overview/tg/mapOverviewTg.jpg b/static/images/overview/tg/mapOverviewTg.jpg new file mode 100644 index 0000000..efb7371 --- /dev/null +++ b/static/images/overview/tg/mapOverviewTg.jpg Binary files differ diff --git a/static/images/overview/title-background-1366.png b/static/images/overview/title-background-1366.png new file mode 100644 index 0000000..14f7838 --- /dev/null +++ b/static/images/overview/title-background-1366.png Binary files differ diff --git a/static/images/overview/title-background-1440.png b/static/images/overview/title-background-1440.png new file mode 100644 index 0000000..92a7632 --- /dev/null +++ b/static/images/overview/title-background-1440.png Binary files differ diff --git a/static/images/overview/title-background-1920.png b/static/images/overview/title-background-1920.png new file mode 100644 index 0000000..3872025 --- /dev/null +++ b/static/images/overview/title-background-1920.png Binary files differ