|
@@ -3,8 +3,10 @@
|
|
|
<img class="bg_img" src="@/assets/image/bg.png"/>
|
|
|
<div class="header">
|
|
|
<p class="header_l"></p>
|
|
|
- <img class="header_l-position" :src="rectangleLogo"/>
|
|
|
- <div class="header_c">实验室安全智慧化管控系统</div>
|
|
|
+ <div class="header_c">
|
|
|
+ <img class="header_l-position" :src="circularLogo"/>
|
|
|
+ <p class="header_c-p">山西农业大学实验室安全管理系统</p>
|
|
|
+ </div>
|
|
|
<div class="header_r1">
|
|
|
<img class="header_r1_l" src="@/assets/image/index_icon3.png"/>
|
|
|
<i class="schoolName">{{deptName?deptName:'****'}}</i>
|
|
@@ -99,22 +101,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="left_b">
|
|
|
- <personnelAdmittanceECharts v-if="!warningList[1]"></personnelAdmittanceECharts>
|
|
|
- <img class="left_b_t1" v-if="!warningList[1]" src="@/assets/image/index_icon12.png"/>
|
|
|
- <!--实验室信息-->
|
|
|
- <subSensorComponent v-if="!warningList[0]"></subSensorComponent>
|
|
|
- <!--报警预案-->
|
|
|
- <div class="warning-max-big-box" :class="warningList[1]?'warning-max-big-box-all':''"
|
|
|
- v-if="warningList[0]">
|
|
|
- <div class="warning-for-box" v-for='(item,index8) in warningList' :key="index8">
|
|
|
- <img src="@/assets/image/index_icon14.png">
|
|
|
- <p class="warning-name">{{item.eventName}}</p>
|
|
|
- <div>
|
|
|
- <span v-for="(minItem,index9) in item.triggerUploadData" :key="index9">{{minItem.deviceName}}:{{minItem.deviceValue}}{{minItem.unit}}</span>
|
|
|
- </div>
|
|
|
- <p class="warning-button" @click="openRiskPlanUrl(item)">查看详情 >></p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <personnelAdmittanceECharts></personnelAdmittanceECharts>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="right">
|
|
@@ -131,7 +118,19 @@
|
|
|
<img class="left_b_t1" src="@/assets/image/index_icon12.png"/>
|
|
|
</div>
|
|
|
<div class="right_b">
|
|
|
-
|
|
|
+ <p class="title-component-p">实验室安全监测</p>
|
|
|
+ <newSubVideoComponent v-if="!warningList[0]"></newSubVideoComponent>
|
|
|
+ <!--报警预案-->
|
|
|
+ <div class="warning-max-big-box" v-if="warningList[0]">
|
|
|
+ <div class="warning-for-box" v-for='(item,index8) in warningList' :key="index8">
|
|
|
+ <img src="@/assets/image/index_icon14.png">
|
|
|
+ <p class="warning-name">{{item.eventName}}</p>
|
|
|
+ <div>
|
|
|
+ <span v-for="(minItem,index9) in item.triggerUploadData" :key="index9">{{minItem.deviceName}}:{{minItem.deviceValue}}{{minItem.unit}}</span>
|
|
|
+ </div>
|
|
|
+ <p class="warning-button" @click="openRiskPlanUrl(item)">查看详情</p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<planAlarm ref="planAlarm"></planAlarm>
|
|
@@ -163,19 +162,19 @@
|
|
|
import mqtt from 'mqtt/dist/mqtt'
|
|
|
import { getToken, removeToken } from '@/utils/auth'
|
|
|
import { Encrypt, Decrypt } from '@/utils/secret'
|
|
|
- import subSensorComponent from '@/components/subSensorComponent.vue'
|
|
|
import planAlarm from '@/components/planAlarm/planAlarm.vue'
|
|
|
+ import newSubVideoComponent from '@/components/newSubVideoComponent.vue'
|
|
|
import personnelAdmittanceECharts from '@/components/personnelAdmittanceECharts/personnelAdmittanceECharts.vue'
|
|
|
|
|
|
export default {
|
|
|
components: {
|
|
|
- subSensorComponent,
|
|
|
planAlarm,
|
|
|
- personnelAdmittanceECharts
|
|
|
+ personnelAdmittanceECharts,
|
|
|
+ newSubVideoComponent
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- rectangleLogo: localStorage.getItem('rectangleLogo'),
|
|
|
+ circularLogo: localStorage.getItem('circularLogo'),
|
|
|
deptName: null,
|
|
|
deptId: null,
|
|
|
mtopicTwo: 'manage/work' + localStorage.getItem('userId'),
|
|
@@ -363,130 +362,6 @@
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
- getAjaxData: function() {
|
|
|
- let self = this
|
|
|
- //获取logo图片
|
|
|
- getLogoInfo({}).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- $('.header_l').attr('src', requestUrl + res.data.rectangleLogo)
|
|
|
- $('.schoolName').html(res.data.schoolName)
|
|
|
-
|
|
|
- localStorage.setItem('logoImg', requestUrl + res.data.rectangleLogo)
|
|
|
- }
|
|
|
- })
|
|
|
- getUrlConfig().then(response => {
|
|
|
- console.log('开发配置', response.data)
|
|
|
- //判定http或者https
|
|
|
- let urlText = window.location.href.split('://')[0] + '://'
|
|
|
- let outerNet = window.location.href.indexOf(response.data.ipIdentify) == -1//true外网 false 内网
|
|
|
- if (outerNet) {//外网
|
|
|
- //文件预览地址
|
|
|
- localStorage.setItem('filePreviewUrl', urlText + response.data.fileExtranetUrl)
|
|
|
- //摄像头代理访问地址
|
|
|
- localStorage.setItem('cameraExtranetAgent', urlText + response.data.cameraExtranetAgent)
|
|
|
- //摄像头地址ip段
|
|
|
- localStorage.setItem('ipIdentify', response.data.ipIdentify)
|
|
|
- //摄像头访问地址
|
|
|
- localStorage.setItem('cameraUrl', urlText + response.data.cameraExtranetUrl)
|
|
|
- //MQTT地址
|
|
|
- localStorage.setItem('mqttUrl', 'wss://' + Decrypt(response.data.mqttExtranetUrl))
|
|
|
- //MQTT账号
|
|
|
- localStorage.setItem('mqttUser', Decrypt(response.data.mqttExtranetUser))
|
|
|
- //MQTT密码
|
|
|
- localStorage.setItem('mqttPassword', Decrypt(response.data.mqttExtranetPassword))
|
|
|
- //可视化大屏访问地址
|
|
|
- localStorage.setItem('screenUrl', urlText + response.data.screenExtranetUrl)
|
|
|
- //后台访问地址
|
|
|
- localStorage.setItem('pcVisitUrl', urlText + response.data.pcExtranetUrl)
|
|
|
- } else {
|
|
|
- //文件预览地址
|
|
|
- localStorage.setItem('filePreviewUrl', urlText + response.data.fileIntranetUrl)
|
|
|
- //摄像头代理访问地址
|
|
|
- localStorage.setItem('cameraExtranetAgent', urlText + response.data.cameraIntranetAgent)
|
|
|
- //摄像头地址ip段
|
|
|
- localStorage.setItem('ipIdentify', response.data.ipIdentify)
|
|
|
- //摄像头访问地址
|
|
|
- localStorage.setItem('cameraUrl', urlText + response.data.cameraIntranetUrl)
|
|
|
- //MQTT地址
|
|
|
- localStorage.setItem('mqttUrl', 'ws://' + Decrypt(response.data.mqttIntranetUrl))
|
|
|
- //MQTT账号
|
|
|
- localStorage.setItem('mqttUser', Decrypt(response.data.mqttIntranetUser))
|
|
|
- //MQTT密码
|
|
|
- localStorage.setItem('mqttPassword', Decrypt(response.data.mqttIntranetPassword))
|
|
|
- //可视化大屏访问地址
|
|
|
- localStorage.setItem('screenUrl', urlText + response.data.screenIntranetUrl)
|
|
|
- //后台访问地址
|
|
|
- localStorage.setItem('pcVisitUrl', urlText + response.data.pcIntranetUrl)
|
|
|
- }
|
|
|
- })
|
|
|
- //实验室人员
|
|
|
- onlineSumByBigView({ pageNumStr: 1, pageSizeStr: 50 }).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let data = res.data.list
|
|
|
- self.labResultCount = res.data.resultCount
|
|
|
- self.labList = data
|
|
|
- }
|
|
|
- })
|
|
|
- //实验室分类
|
|
|
- getTypeCount({}).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let data = res.data
|
|
|
- this.labTypeList = data
|
|
|
- }
|
|
|
- })
|
|
|
- //实验室分级
|
|
|
- getFiedCount({}).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let self = this
|
|
|
- let data = res.data
|
|
|
- let dataX = []
|
|
|
- data.forEach(function(item) {
|
|
|
- dataX.push({ name: item.classifiedName, value: item.totalNum })
|
|
|
- })
|
|
|
- self.classifyFun(dataX)
|
|
|
- }
|
|
|
- })
|
|
|
- //安全检查批次
|
|
|
- indexListRelease({ pageNum: 1, pageSize: 10 }).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let data = res.rows
|
|
|
- let list = []
|
|
|
- let num = 0
|
|
|
- if (data.length < 10) {
|
|
|
-
|
|
|
- for (var i = 0; i < 10; i++) {
|
|
|
-
|
|
|
- if (num == data.length) {
|
|
|
- num = 0
|
|
|
- }
|
|
|
- list.push(data[num])
|
|
|
- num++
|
|
|
-
|
|
|
- }
|
|
|
- self.inspectBatchList = list
|
|
|
- } else {
|
|
|
- self.inspectBatchList = data
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- })
|
|
|
- //实验室信息
|
|
|
- mySub({}).then((res) => {
|
|
|
- if (res.code == 200) {
|
|
|
- let data = res.data
|
|
|
- self.labInfoList = []
|
|
|
- data.forEach(function(item) {
|
|
|
- if (item.sensorFunctionStatusList.length > 0) {
|
|
|
- self.labInfoList.push(item)
|
|
|
- }
|
|
|
- })
|
|
|
- /* self.controlList=data.list
|
|
|
-self.controlTitle=data.title*/
|
|
|
-
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
//校院通知
|
|
|
infoFun: function() {
|
|
|
let self = this
|
|
@@ -835,15 +710,6 @@ self.controlTitle=data.title*/
|
|
|
}
|
|
|
}
|
|
|
.header_l {
|
|
|
- width: 182px;
|
|
|
- height: 44px;
|
|
|
- margin: 10px 0 0 40px;
|
|
|
- }
|
|
|
- .header_l-position {
|
|
|
- z-index: 10;
|
|
|
- position: absolute;
|
|
|
- top: 0;
|
|
|
- left: 30px;
|
|
|
width: 250px;
|
|
|
height: 55px;
|
|
|
}
|
|
@@ -853,13 +719,25 @@ self.controlTitle=data.title*/
|
|
|
margin-left: 136px;
|
|
|
background: url("~@/assets/image/index_icon2.png") no-repeat;
|
|
|
background-size: 100% 100%;
|
|
|
- font-size: 30px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: bold;
|
|
|
- color: #FFFFFF;
|
|
|
- line-height: 30px;
|
|
|
- text-align: center;
|
|
|
padding-top: 26px;
|
|
|
+ position: relative;
|
|
|
+ .header_c-p{
|
|
|
+ font-size: 30px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #FFFFFF;
|
|
|
+ line-height: 30px;
|
|
|
+ text-align: center;
|
|
|
+ padding-left: 70px;
|
|
|
+ }
|
|
|
+ .header_l-position {
|
|
|
+ z-index: 10;
|
|
|
+ position: absolute;
|
|
|
+ top: 17px;
|
|
|
+ left: 330px;
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ }
|
|
|
}
|
|
|
.header_r1 {
|
|
|
margin-left: 116px;
|
|
@@ -891,11 +769,11 @@ self.controlTitle=data.title*/
|
|
|
.position-button-right-bottom-1{
|
|
|
position:absolute;
|
|
|
bottom:20px;
|
|
|
- right:350px;
|
|
|
+ right:325px;
|
|
|
color:#fff;
|
|
|
background-color:#013147;
|
|
|
border:2px solid #1d94b2;
|
|
|
- border-radius:4px;
|
|
|
+ border-radius:10px;
|
|
|
font-size:18px;
|
|
|
height:50px;
|
|
|
line-height:44px;
|
|
@@ -906,11 +784,11 @@ self.controlTitle=data.title*/
|
|
|
.position-button-right-bottom-2{
|
|
|
position:absolute;
|
|
|
bottom:20px;
|
|
|
- right:150px;
|
|
|
+ right:170px;
|
|
|
color:#fff;
|
|
|
background-color:#013147;
|
|
|
border:2px solid #1d94b2;
|
|
|
- border-radius:4px;
|
|
|
+ border-radius:10px;
|
|
|
font-size:18px;
|
|
|
height:50px;
|
|
|
line-height:44px;
|
|
@@ -1582,13 +1460,59 @@ self.controlTitle=data.title*/
|
|
|
margin-top: 276px;
|
|
|
}
|
|
|
}
|
|
|
- .warning-max-big-box-all {
|
|
|
- padding: 15px 20px 0 !important;
|
|
|
- height: 439px !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .right {
|
|
|
+ width: 748px;
|
|
|
+ height: 880px;
|
|
|
+ position: absolute;
|
|
|
+ right: 62px;
|
|
|
+ top: 148px;
|
|
|
+ z-index: 50;
|
|
|
+ background: url("~@/assets/image/index_icon11.png") no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ padding: 34px 30px 0 34px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ .right_t {
|
|
|
+ width: 684px;
|
|
|
+ .right_t_b {
|
|
|
+ width: 684px;
|
|
|
+ height: 226px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .right_b {
|
|
|
+ margin-top: 18px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ overflow: hidden;
|
|
|
+ .title-component-p{
|
|
|
+ font-size: 18px;
|
|
|
+ font-family: Source Han Sans CN;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #1ED0F8;
|
|
|
+ line-height: 18px;
|
|
|
+ height:18px;
|
|
|
+ margin-bottom:20px;
|
|
|
+ }
|
|
|
+ //滚动条
|
|
|
+ .warning-max-big-box::-webkit-scrollbar{
|
|
|
+ width: 0; /*高宽分别对应横竖滚动条的尺寸*/
|
|
|
+ height: 0;
|
|
|
+ }
|
|
|
+ .warning-max-big-box::-webkit-scrollbar-thumb{
|
|
|
+ border-radius: 5px;
|
|
|
+ -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
|
|
|
+ background: rgba(255,255,255,0);
|
|
|
+ }
|
|
|
+ .warning-max-big-box::-webkit-scrollbar-track{
|
|
|
+ -webkit-box-shadow: inset 0 0 5px rgba(255,255,255,0);
|
|
|
+ border-radius: 0;
|
|
|
+ background: rgba(255,255,255,0);
|
|
|
}
|
|
|
.warning-max-big-box {
|
|
|
- padding: 5px 20px 0;
|
|
|
- height: 116px;
|
|
|
+ width:680px;
|
|
|
+ padding: 5px 0 0;
|
|
|
+ height: 500px;
|
|
|
z-index: 200;
|
|
|
justify-content: flex-start;
|
|
|
flex-wrap: wrap;
|
|
@@ -1603,6 +1527,7 @@ self.controlTitle=data.title*/
|
|
|
display: flex;
|
|
|
justify-content: flex-start;
|
|
|
align-items: center;
|
|
|
+ padding-right:10px;
|
|
|
margin-bottom: 10px;
|
|
|
img {
|
|
|
width: 40px;
|
|
@@ -1643,201 +1568,6 @@ self.controlTitle=data.title*/
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
- .right {
|
|
|
- width: 748px;
|
|
|
- height: 880px;
|
|
|
- position: absolute;
|
|
|
- right: 62px;
|
|
|
- top: 148px;
|
|
|
- z-index: 50;
|
|
|
- background: url("~@/assets/image/index_icon11.png") no-repeat;
|
|
|
- background-size: 100% 100%;
|
|
|
- padding: 34px 30px 0 34px;
|
|
|
- box-sizing: border-box;
|
|
|
- .right_t {
|
|
|
- width: 684px;
|
|
|
- .right_t_b {
|
|
|
- width: 684px;
|
|
|
- height: 226px;
|
|
|
- }
|
|
|
- }
|
|
|
- .right_b {
|
|
|
- margin-top: 18px;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- .right_b_l {
|
|
|
- width: 324px;
|
|
|
- /*小标题*/
|
|
|
- .small_title {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- .small_title_l {
|
|
|
- font-size: 18px;
|
|
|
- font-family: Source Han Sans CN;
|
|
|
- font-weight: bold;
|
|
|
- color: #1ED0F8;
|
|
|
- line-height: 18px;
|
|
|
- }
|
|
|
- .small_title_r {
|
|
|
- flex: 1;
|
|
|
- text-align: right;
|
|
|
- > i {
|
|
|
- //width: 100px;
|
|
|
- display: inline-block;
|
|
|
- font-size: 14px;
|
|
|
- font-family: Source Han Sans CN;
|
|
|
- font-weight: 400;
|
|
|
- color: #FFFFFF;
|
|
|
- line-height: 14px;
|
|
|
- text-align: right;
|
|
|
- margin-right: 12px;
|
|
|
- }
|
|
|
- > img {
|
|
|
- width: 12px;
|
|
|
- height: 12px;
|
|
|
- cursor: pointer;
|
|
|
- position: relative;
|
|
|
- top: 0px;
|
|
|
- }
|
|
|
- }
|
|
|
- .small_title_r2 {
|
|
|
- flex: 1;
|
|
|
- text-align: right;
|
|
|
- > i {
|
|
|
- //width: 100px;
|
|
|
- display: inline-block;
|
|
|
- font-size: 14px;
|
|
|
- font-family: Source Han Sans CN;
|
|
|
- font-weight: 400;
|
|
|
- color: #FFFFFF;
|
|
|
- line-height: 14px;
|
|
|
- text-align: right;
|
|
|
- margin-right: 12px;
|
|
|
- }
|
|
|
- > img {
|
|
|
- width: 12px;
|
|
|
- height: 12px;
|
|
|
- cursor: pointer;
|
|
|
- position: relative;
|
|
|
- top: -2px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .right_b_l_b {
|
|
|
- position: relative;
|
|
|
- .right_b_l_b_t {
|
|
|
- height: 48px;
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
- border-bottom: 1px solid #00FAFF;
|
|
|
- margin-top: 16px;
|
|
|
- > i {
|
|
|
- display: inline-block;
|
|
|
- font-size: 16px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: 400;
|
|
|
- color: #00FAFF;
|
|
|
- line-height: 48px;
|
|
|
- margin-left: 6px;
|
|
|
- }
|
|
|
- > i:nth-of-type(1) {
|
|
|
- width: 223px;
|
|
|
- }
|
|
|
- > i:nth-of-type(2) {
|
|
|
- width: 84px;
|
|
|
- }
|
|
|
- }
|
|
|
- .right_b_l_b_b {
|
|
|
- height: 190px;
|
|
|
- overflow-y: auto;
|
|
|
- background: 0;
|
|
|
- > li {
|
|
|
- height: 40px;
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
- border-bottom: 1px solid #00DFFF;
|
|
|
- > a {
|
|
|
- width: 223px;
|
|
|
- display: inline-block;
|
|
|
- font-size: 14px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: 400;
|
|
|
- color: #fff;
|
|
|
- line-height: 40px;
|
|
|
- margin-left: 6px;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- white-space: nowrap
|
|
|
- }
|
|
|
- > i {
|
|
|
- width: 84px;
|
|
|
- text-align: center;
|
|
|
- padding-right: 50px;
|
|
|
- display: inline-block;
|
|
|
- font-size: 14px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: 400;
|
|
|
- color: #fff;
|
|
|
- line-height: 40px;
|
|
|
- margin-left: 6px;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .right_b_r {
|
|
|
- width: 334px;
|
|
|
- /*小标题*/
|
|
|
- .small_title {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- .small_title_l {
|
|
|
- font-size: 18px;
|
|
|
- font-family: Source Han Sans CN;
|
|
|
- font-weight: bold;
|
|
|
- color: #1ED0F8;
|
|
|
- line-height: 18px;
|
|
|
- }
|
|
|
- }
|
|
|
- .right_b_r_b_t {
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
- flex-wrap: wrap;
|
|
|
- margin-top: 10px;
|
|
|
- height: 60px;
|
|
|
- > li {
|
|
|
- display: flex;
|
|
|
- justify-content: flex-start;
|
|
|
- align-items: center;
|
|
|
- margin-right: 30px;
|
|
|
- > i:nth-of-type(1) {
|
|
|
- width: 8px;
|
|
|
- height: 8px;
|
|
|
- background: #FFFFFF;
|
|
|
- border-radius: 4px;
|
|
|
- margin-right: 4px;
|
|
|
- }
|
|
|
- > i:nth-of-type(2) {
|
|
|
- font-size: 12px;
|
|
|
- font-family: Microsoft YaHei;
|
|
|
- font-weight: 400;
|
|
|
- color: #FFFFFF;
|
|
|
- line-height: 32px;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .right_b_r_b_b {
|
|
|
- width: 344px;
|
|
|
- height: 166px;
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
}
|
|
|
}
|