新BI页和导航页
|
@ -20,7 +20,7 @@ module.exports = {
|
|||
例如 selectorBlackList 为 [/^body$/] , 那么 body 会被忽略,而 .body 不会*/
|
||||
minPixelValue: 1, // (Number) 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
|
||||
mediaQuery: false, // (Boolean) 媒体查询里的单位是否需要转换单位
|
||||
exclude: [/^node_modules$/],// (Array or Regexp) 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
|
||||
exclude: [/^node_modules$/,/newBI/],// (Array or Regexp) 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
|
||||
include: [/BI/,/map/],
|
||||
/*(Array or Regexp) 如果设置了include,那将只有匹配到的文件才会被转换,例如只转换 'src/mobile' 下的文件
|
||||
如果值是一个正则表达式,将包含匹配的文件,否则将排除该文件
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"author": "",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 192.168.0.105",
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --open",
|
||||
"start": "npm run dev",
|
||||
"unit": "jest --config test/unit/jest.conf.js --coverage",
|
||||
"e2e": "node test/e2e/runner.js",
|
||||
|
@ -17,6 +17,7 @@
|
|||
"dependencies": {
|
||||
"@riophae/vue-treeselect": "^0.4.0",
|
||||
"animate.css": "^4.1.1",
|
||||
"autofit.js": "^3.1.0",
|
||||
"axios": "^0.21.1",
|
||||
"dayjs": "^1.11.10",
|
||||
"element-ui": "^2.15.1",
|
||||
|
@ -41,6 +42,7 @@
|
|||
"vue-qr": "^2.3.0",
|
||||
"vue-quill-editor": "^3.0.6",
|
||||
"vue-router": "^3.0.1",
|
||||
"vue-seamless-scroll": "^1.1.23",
|
||||
"vue-to-pdf": "^1.0.0",
|
||||
"vue-video-player": "^5.0.2"
|
||||
},
|
||||
|
|
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 616 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 394 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 835 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 208 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 180 KiB |
|
@ -10,7 +10,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import pathToRegexp from 'path-to-regexp'
|
||||
import * as pathToRegexp from 'path-to-regexp'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
|
|
|
@ -11,30 +11,48 @@
|
|||
<div class="right-menu-item hover-effect">
|
||||
<span style="font-weight: bold">姓名:{{ pd.NAME }}</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="gotoMap()">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>地图</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="gotoBI()">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>驾驶舱</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('other')">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>安全监管</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('relatedParties')">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>相关方</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('detection')">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>在线监测</span>
|
||||
<!-- <div class="right-menu-item hover-effect" @click="gotoMap()">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>地图</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="gotoBI()">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>驾驶舱</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="setShowModel('other')">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>安全监管</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="setShowModel('relatedParties')">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>相关方</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="setShowModel('detection')">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>在线监测</span>-->
|
||||
<!-- </div>-->
|
||||
<div class="right-menu-item hover-effect" @click="$router.push({path:'/guide'})">
|
||||
<svg-icon icon-class="example" />
|
||||
<span>首页</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('system')">
|
||||
<svg-icon icon-class="example" />
|
||||
<span>系统管理</span>
|
||||
</div>
|
||||
<el-dropdown class="right-menu-item" trigger="click">
|
||||
<div style="cursor:pointer;">
|
||||
<svg-icon icon-class="guide" />
|
||||
<span>更多</span>
|
||||
<i class="el-icon-arrow-down el-icon--right"/>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item v-for="(item,index) in menuList" :key="index" @click.native="item.click">
|
||||
{{ item.text }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
<!-- <template v-if="device!=='mobile'">
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
|
||||
|
@ -102,6 +120,7 @@ import Hamburger from '@/components/Hamburger'
|
|||
import Screenfull from '@/components/Screenfull'
|
||||
import SizeSelect from '@/components/SizeSelect'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import { menuList } from '@/views/newBI/menuList'
|
||||
export default {
|
||||
components: {
|
||||
Breadcrumb,
|
||||
|
@ -157,7 +176,8 @@ export default {
|
|||
newpassword1: [
|
||||
{ required: true, validator: validatePass2, trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
},
|
||||
menuList
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
|
@ -39,6 +39,33 @@ export const constantRoutes = [
|
|||
hidden: true,
|
||||
component: () => import('@/views/login/registered/index')
|
||||
},
|
||||
{
|
||||
path: '/guide',
|
||||
name: 'guide',
|
||||
hidden: true,
|
||||
component: () => import('@/views/newBI/index'),
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: () => import('@/views/newBI/guide')
|
||||
},
|
||||
{
|
||||
path: 'data_center',
|
||||
name: '数据中心',
|
||||
component: () => import('@/views/newBI/data_center')
|
||||
},
|
||||
{
|
||||
path: 'double_prevention',
|
||||
name: '双重预防管理',
|
||||
component: () => import('@/views/newBI/double_prevention')
|
||||
},
|
||||
{
|
||||
path: 'related_parties',
|
||||
name: '相关方管理',
|
||||
component: () => import('@/views/newBI/related_parties')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/BI',
|
||||
name: 'BI',
|
||||
|
|
|
@ -324,7 +324,7 @@ export default {
|
|||
if (data.result === 'success') {
|
||||
sessionStorage.setItem('user', JSON.stringify(data))
|
||||
sessionStorage.setItem('loginCount', 0)
|
||||
this.$router.push({ path: '/BI' })
|
||||
this.$router.push({ path: '/guide' })
|
||||
this.loading = false
|
||||
this.flag = false
|
||||
this.getWorkTask(data.USER_ID)
|
||||
|
|
|
@ -226,13 +226,13 @@
|
|||
enter-active-class="animate__animated animate__fadeInDown"
|
||||
leave-active-class="animate__animated animate__fadeOutUp"
|
||||
>
|
||||
<div class="people_trajectory" v-if="isPeopleTrajectory">
|
||||
<el-select v-model="peopleTrajectoryValue" popper-class="people_trajectory_select">
|
||||
<el-option v-for="item in onePerLocArr" :key="item.id" :value="item.id" :label="item.id"/>
|
||||
</el-select>
|
||||
<el-button class="search_btn" @click="addTrajectory">搜索</el-button>
|
||||
<el-button class="reset_btn" @click="()=>{removeTrajectory();peopleTrajectoryValue = ''}">重置</el-button>
|
||||
</div>
|
||||
<div v-if="isPeopleTrajectory" class="people_trajectory">
|
||||
<el-select v-model="peopleTrajectoryValue" popper-class="people_trajectory_select">
|
||||
<el-option v-for="item in onePerLocArr" :key="item.id" :value="item.id" :label="item.id"/>
|
||||
</el-select>
|
||||
<el-button class="search_btn" @click="addTrajectory">搜索</el-button>
|
||||
<el-button class="reset_btn" @click="()=>{removeTrajectory();peopleTrajectoryValue = ''}">重置</el-button>
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
</transition>
|
||||
|
@ -256,7 +256,7 @@
|
|||
:gangkou="gangkouActive"
|
||||
:infoname="dialog.infoname"
|
||||
:name="dialog.name"
|
||||
:GATE_VIDEO_ID="dialog.GATE_VIDEO_ID"
|
||||
:gate-video-id="dialog.GATE_VIDEO_ID"
|
||||
:person-photo="dialog.personPhoto"
|
||||
:ry-dept-name="dialog.RyDeptName"
|
||||
:ry-post-name="dialog.RyPostName"
|
||||
|
@ -925,7 +925,7 @@ export default {
|
|||
RyPostName: '',
|
||||
RyRealName: '',
|
||||
personTypeName: '',
|
||||
GATE_VIDEO_ID:''
|
||||
GATE_VIDEO_ID: ''
|
||||
},
|
||||
/* 曹妃甸使用参数开始*/
|
||||
// 人员定位
|
||||
|
@ -1215,8 +1215,8 @@ export default {
|
|||
VIIDPort: '8088'
|
||||
},
|
||||
trajectoryEntityCollection: {},
|
||||
isPeopleTrajectory:false,
|
||||
peopleTrajectoryValue:''
|
||||
isPeopleTrajectory: false,
|
||||
peopleTrajectoryValue: ''
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
@ -1435,7 +1435,7 @@ export default {
|
|||
}
|
||||
const point_type = pick.id._monitoItems.data.point_type
|
||||
const point_id = pick.id._monitoItems.data.id
|
||||
if (point_type == '标记点CAMERA'){
|
||||
if (point_type == '标记点CAMERA') {
|
||||
console.log(pick.id._monitoItems.data)
|
||||
this.dialog.GATE_VIDEO_ID = pick.id._monitoItems.data.GATE_VIDEO_ID
|
||||
}
|
||||
|
@ -1913,7 +1913,7 @@ export default {
|
|||
|
||||
this.destroyConnection()
|
||||
this.onePerLocArr = []
|
||||
this.$router.push('/index')
|
||||
this.$router.push('/guide/data_center')
|
||||
} else if (index === 1) {
|
||||
this.handleFullScreen(undefined)
|
||||
} else if (index === 2) {
|
||||
|
@ -2121,7 +2121,7 @@ export default {
|
|||
}
|
||||
this.carLocArr = []
|
||||
}
|
||||
if(urlType === 'peopleTrajectory'){
|
||||
if (urlType === 'peopleTrajectory') {
|
||||
this.isPeopleTrajectory = false
|
||||
}
|
||||
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') {
|
||||
|
@ -2129,8 +2129,8 @@ export default {
|
|||
this.clearMqttPoint('+/UwbBQ/')
|
||||
this.removeTrajectory()
|
||||
for (let i = 0; i < this.bottomOptionsList[pindex].list.length; i++) {
|
||||
if(this.bottomOptionsList[pindex].list[i].type === 'peopleTrajectory'){
|
||||
if(this.bottomOptionsList[pindex].list[i].check){
|
||||
if (this.bottomOptionsList[pindex].list[i].type === 'peopleTrajectory') {
|
||||
if (this.bottomOptionsList[pindex].list[i].check) {
|
||||
this.bottomOptionsList[pindex].list[i].check = false
|
||||
this.isPeopleTrajectory = false
|
||||
break
|
||||
|
@ -2154,20 +2154,20 @@ export default {
|
|||
}
|
||||
})
|
||||
} else {
|
||||
if(urlType === 'peopleTrajectory'){
|
||||
if (urlType === 'peopleTrajectory') {
|
||||
let flag = false
|
||||
for (let i = 0; i < this.bottomOptionsList[pindex].list.length; i++) {
|
||||
if(this.bottomOptionsList[pindex].list[i].type === 'peoplePosition'){
|
||||
if(!this.bottomOptionsList[pindex].list[i].check){
|
||||
if (this.bottomOptionsList[pindex].list[i].type === 'peoplePosition') {
|
||||
if (!this.bottomOptionsList[pindex].list[i].check) {
|
||||
flag = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if(flag){
|
||||
if (flag) {
|
||||
this.$message.warning('请先选择人员定位!!!')
|
||||
return
|
||||
}else{
|
||||
} else {
|
||||
this.isPeopleTrajectory = true
|
||||
}
|
||||
}
|
||||
|
@ -2652,7 +2652,7 @@ export default {
|
|||
personTypeName: item.personTypeName,
|
||||
data_id: item.cardId + '',
|
||||
point_type: 'peoplePositionCzks',
|
||||
label: item.realName,
|
||||
label: item.realName
|
||||
|
||||
}
|
||||
czksPerLoc.push(perLoc)
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
<template>
|
||||
<div class="block_title">{{ title }}</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.block_title{
|
||||
width: 437px;
|
||||
height: 27px;
|
||||
background-image: url("../../../assets/share/smalltitbg.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 3px 25px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,27 @@
|
|||
<template>
|
||||
<div class="block_title">{{ title }}</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.block_title{
|
||||
width: 500px;
|
||||
height: 28px;
|
||||
background-image: url("../../../assets/share/smalltitbg1.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
padding: 3px 25px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,27 @@
|
|||
<template>
|
||||
<div class="block_title">{{ title }}</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.block_title {
|
||||
width: 804px;
|
||||
height: 35px;
|
||||
background-image: url("../../../assets/share/midtitlebg.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-size: 15px;
|
||||
color: #fff;
|
||||
padding: 8px 34px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,179 @@
|
|||
<template>
|
||||
<div id="guide">
|
||||
<div class="header">
|
||||
<div class="title"/>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div
|
||||
v-for="i in 3"
|
||||
:key="i"
|
||||
:class="'yuan' + i"
|
||||
@click="i === 3 ? $router.push({path:'/guide/data_center'}) : null"
|
||||
/>
|
||||
<div class="menu">
|
||||
<template v-for="(item, index) in menuList">
|
||||
<div
|
||||
v-if="index < 6"
|
||||
:key="index"
|
||||
:style="{'--x': position[index].x + 'px', '--y': position[index].y + 'px'}"
|
||||
class="item left"
|
||||
@click="item.click"
|
||||
>
|
||||
<div class="text">{{ item.text }}</div>
|
||||
<img :src="item.img" alt="">
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
:key="index"
|
||||
:style="{'--x': position[index - 6].x + 'px', '--y': position[index - 6].y + 'px'}"
|
||||
class="item right"
|
||||
@click="item.click"
|
||||
>
|
||||
<img :src="item.img" alt="">
|
||||
<div class="text">{{ item.text }}</div>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import autofit from 'autofit.js'
|
||||
import { menuList } from './menuList'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
position: [
|
||||
{ x: 285, y: 7 },
|
||||
{ x: 235, y: 104 },
|
||||
{ x: 185, y: 202 },
|
||||
{ x: 185, y: 302 },
|
||||
{ x: 235, y: 400 },
|
||||
{ x: 285, y: 497 }
|
||||
],
|
||||
menuList
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
autofit.init({
|
||||
dh: 1080,
|
||||
dw: 1920,
|
||||
el: '#guide',
|
||||
resize: true
|
||||
})
|
||||
},
|
||||
beforeDestroy() {
|
||||
autofit.off()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
#guide {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-image: url("../../assets/share/bg.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
|
||||
.header {
|
||||
width: 100%;
|
||||
height: 125px;
|
||||
background-image: url("../../assets/share/titbg.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
.title {
|
||||
width: 358px;
|
||||
height: 52px;
|
||||
background-image: url("../../assets/share/title.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: absolute;
|
||||
top: 20px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 1701px;
|
||||
height: 580px;
|
||||
background-image: url("../../assets/share/menubg.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
@for $i from 1 through 3 {
|
||||
.yuan#{$i} {
|
||||
width: 582px;
|
||||
height: 582px;
|
||||
background-image: url("../../assets/share/yuan#{$i}.png");
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% 100%;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
|
||||
@if ($i == 1) {
|
||||
animation: rotate 10s linear infinite;
|
||||
}
|
||||
|
||||
@if ($i == 2) {
|
||||
animation: rotate 10s linear infinite reverse;
|
||||
}
|
||||
|
||||
@if ($i == 3) {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.menu {
|
||||
font-size: 20px;
|
||||
color: #fff;
|
||||
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: absolute;
|
||||
top: var(--y);
|
||||
width: 250px;
|
||||
cursor: pointer;
|
||||
|
||||
&.left {
|
||||
left: var(--x);
|
||||
}
|
||||
|
||||
&.right {
|
||||
right: var(--x);
|
||||
}
|
||||
|
||||
.text {
|
||||
margin: 0 22px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes rotate {
|
||||
0% {
|
||||
transform: translate(-50%, -50%) rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: translate(-50%, -50%) rotate(360deg);
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,12 @@
|
|||
<script>
|
||||
export default {
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<router-view/>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
|
@ -0,0 +1,110 @@
|
|||
import store from '@/store/index'
|
||||
import router from '@/router/index'
|
||||
export const menuList = [
|
||||
{
|
||||
img: require('../../assets/share/ico1.png'),
|
||||
text: '企业信息管理',
|
||||
model: 'enterpriseInformation',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'enterpriseInformation')
|
||||
router.push({ path: '/corpInfo/info' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico2.png'),
|
||||
text: '法规制度管理',
|
||||
model: 'regulations',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'regulations')
|
||||
router.push({ path: '/threeSystems/safetyOperationRegulations' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico3.png'),
|
||||
text: '安全目标管理',
|
||||
model: 'safetyObjectives',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'safetyObjectives')
|
||||
router.push({ path: '/security_commitment/promise_book' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico4.png'),
|
||||
text: '安全教育培训',
|
||||
model: 'educationTraining',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'educationTraining')
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico5.png'),
|
||||
text: '双重预防管理',
|
||||
model: 'doublePrevention',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'doublePrevention')
|
||||
router.push({ path: '/risk/corpinfo' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico6.png'),
|
||||
text: '相关方管理',
|
||||
model: 'relatedParties',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'relatedParties')
|
||||
router.push({ path: '/relevantunits/insert' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico7.png'),
|
||||
text: '消防安全管理',
|
||||
model: 'fireSafety',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'fireSafety')
|
||||
router.push({ path: '/firefighting/standard' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico8.png'),
|
||||
text: '危险作业管理',
|
||||
model: 'dangerousOperations',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'dangerousOperations')
|
||||
router.push({ path: '/application/supervision' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico9.png'),
|
||||
text: '作业现场管理',
|
||||
model: 'workSiteManagement',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'workSiteManagement')
|
||||
router.push({ path: '/keyprojects/units' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico10.png'),
|
||||
text: '绩效考评管理',
|
||||
model: 'performanceAssessment',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'performanceAssessment')
|
||||
router.push({ path: '/statistics/jointStock' })
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico11.png'),
|
||||
text: '应急管理',
|
||||
model: 'emergency',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'emergency')
|
||||
}
|
||||
},
|
||||
{
|
||||
img: require('../../assets/share/ico12.png'),
|
||||
text: '科技创新',
|
||||
model: 'innovation',
|
||||
click: () => {
|
||||
store.dispatch('permission/setShowModel', 'innovation')
|
||||
router.push({ path: '/gatemachine/gatearea' })
|
||||
}
|
||||
}
|
||||
]
|
After Width: | Height: | Size: 919 KiB |
After Width: | Height: | Size: 275 KiB |
After Width: | Height: | Size: 4.5 KiB |
|
@ -0,0 +1,119 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>秦港安全监管平台</title>
|
||||
</head>
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.login {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
position: relative;
|
||||
color: #fff;
|
||||
|
||||
.bg1 {
|
||||
width: 61.7%;
|
||||
height: 100%;
|
||||
background-image: url("./images/bg1.png");
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.bg2 {
|
||||
width: 38.3%;
|
||||
height: 100%;
|
||||
background-image: url("./images/bg2.png");
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
position: relative;
|
||||
|
||||
.logo {
|
||||
width: 53px;
|
||||
height: 51px;
|
||||
position: absolute;
|
||||
top: 25px;
|
||||
right: 38px;
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.form {
|
||||
width: 432px;
|
||||
margin: 300px auto;
|
||||
|
||||
.main_title {
|
||||
font-size: 36px;
|
||||
letter-spacing: 5px;
|
||||
margin-bottom: 45px;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
input {
|
||||
margin-top: 20px;
|
||||
width: 100%;
|
||||
padding: 15px 10px;
|
||||
outline: none;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
button {
|
||||
margin-top: 65px;
|
||||
width: 100%;
|
||||
background-color: #008aff;
|
||||
color: #fff;
|
||||
outline: none;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
box-sizing: border-box;
|
||||
padding: 18px 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.footer {
|
||||
position: absolute;
|
||||
bottom: 30px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div class="login">
|
||||
<div class="bg1"></div>
|
||||
<div class="bg2">
|
||||
<div class="logo">
|
||||
<img src="./images/logo.png" alt=""/>
|
||||
</div>
|
||||
<div class="form">
|
||||
<div class="main_title">欢迎登录!</div>
|
||||
<label for="username">账号</label>
|
||||
<input id="username" placeholder="请输入用户名"></input>
|
||||
<label for="password">密码</label>
|
||||
<input id="password" type="password" placeholder="请输入密码"></input>
|
||||
<button>登录</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
秦港股份安全监管平台 版权所有 Copy right 2013-2020-v7
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|