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

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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

-
全域监控
+

+
-

-
重点区域管控
+

+
-

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