update code

prv
haha 2024-03-10 13:17:17 +08:00
parent 1ec6464f3c
commit 255cec71e6
15 changed files with 1387 additions and 109 deletions

18
public/css/new.css 100644
View File

@ -0,0 +1,18 @@
.scroll::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.scroll::-webkit-scrollbar-thumb {
background-color: rgb(1, 169, 255);
border-radius: 4px;
}
.bg-date-picker-pop{
background-image: url('../images/list_bgd.png');
border:solid 1px rgb(1, 169, 255);
}
.div-no-data{
display: flex;
align-items: center;
justify-content: center;
flex-flow: column;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View File

@ -9,8 +9,8 @@
<link rel="stylesheet" href="/cdn/element-ui/lib/theme-chalk/index.css">
<link rel="stylesheet" href="css/largeScreenLayout.css">
<link rel="stylesheet" href="css/largeScreenStyle.css?v=2023101401">
<!-- <script type="text/javascript" src="http://api.map.baidu.com/api?type=webgl&v=1.0&ak=qmQNEi1qbFX628WfMt4imhdT87RbCRzK"></script> -->
<link rel="stylesheet" href="css/new.css?v=2023101401">
<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=5M76qMCiVjSG7bGOTcYmZdg0MQinsKve"></script>
<script src="/cdn/vue/dist/vue.js"></script>
<script src="/cdn/element-ui/lib/index.js"></script>
<script src="/cdn/jquery/3.5.1/jquery.min.js"></script>

View File

@ -1,7 +1,10 @@
import Vue from 'vue'
/**
* 顶部header
*/
Vue.component("baidu-maps", {
template: `
<div class="baidu-map" ref="allMap"></div>
<div class="baidu-map" ref="allMap"></div>
`,
props: {
data:{
@ -68,7 +71,7 @@ Vue.component("baidu-maps", {
$(".BMap_bubble_pop").css("background-color","rgba(0,0,0,0)")
$(".BMap_bubble_pop").css("border","0")
$(".BMap_bubble_pop img").attr("src","/cdn/images/WEB_3578CFDB64B74818851FE993E99B2274.png")
$(".BMap_bubble_pop img").attr("src","https://fileimg.makalu.cc/WEB_3578CFDB64B74818851FE993E99B2274.png")
map.openInfoWindow(infoWindow,point); //开启信息窗口
// infoWindow.addEventListener('open',function(type, target, point){ //窗口打开是,隐藏自带的关闭按钮
@ -1850,9 +1853,9 @@ Vue.component("baidu-maps", {
}
},
watch:{
/*data: function (n,o) {
data:function () {
this.init()
}*/
}
}
})

View File

@ -0,0 +1,73 @@
/**
* 顶部header
*/
Vue.component("dumbwaiter-1", {
template: `
<div class="safe-tower-content">
<div class="safe-tower-content-title">
<span>{{value.name}}</span>
</div>
<div class="safe-tower-content-data">
<el-row>
<el-col :span="4">
<div class="safe-tower-content-data-list">
<p>吊笼尺寸/m</p>
<div><span>{{value.cageSize}}</span></div>
</div>
<div class="safe-tower-content-data-list">
<p>额定载重量</p>
<div><span>{{value.loadCapacity}}</span> Kg</div>
</div>
<div class="safe-tower-content-data-list">
<p>额定乘客人数</p>
<div><span>{{value.numberPeople}}</span> </div>
</div>
</el-col>
<el-col :span="16">
<div style="height:330px;background: url('images/dumbwaiter.png') no-repeat center/auto 100%">
</div>
</el-col>
<el-col :span="4">
<div class="safe-tower-content-data-list">
<p>最大提升高度</p>
<div><span>{{value.liftingHeight}}</span> m</div>
</div>
<div class="safe-tower-content-data-list">
<p>额定运行速度</p>
<div><span>{{value.runningSpeed}}</span> m/min</div>
</div>
<div class="safe-tower-content-data-list">
<p>进场时间</p>
<div><span>{{value.enterTime}}</span></div>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
`,
props: {
value:{
type:Object
},
},
data() {
return {
}
},
mounted(){
//this.animation()
},
methods: {
animation(){
},
},
watch:{
}
})

View File

@ -0,0 +1,73 @@
/**
* 顶部header
*/
Vue.component("dumbwaiter-2", {
template: `
<div class="safe-tower-content">
<div class="safe-tower-content-title">
<span>{{value.name}}</span>
</div>
<div class="safe-tower-content-data">
<el-row>
<el-col :span="4">
<div class="safe-tower-content-data-list">
<p>吊笼尺寸/m</p>
<div><span>{{value.cageSize}}</span></div>
</div>
<div class="safe-tower-content-data-list">
<p>额定载重量</p>
<div><span>{{value.loadCapacity}}</span> Kg</div>
</div>
<div class="safe-tower-content-data-list">
<p>额定乘客人数</p>
<div><span>{{value.numberPeople}}</span> </div>
</div>
</el-col>
<el-col :span="16">
<div style="height:330px;background: url('images/dumbwaiter.png') no-repeat center/auto 100%">
</div>
</el-col>
<el-col :span="4">
<div class="safe-tower-content-data-list">
<p>最大提升高度</p>
<div><span>{{value.liftingHeight}}</span> m</div>
</div>
<div class="safe-tower-content-data-list">
<p>额定运行速度</p>
<div><span>{{value.runningSpeed}}</span> m/min</div>
</div>
<div class="safe-tower-content-data-list">
<p>进场时间</p>
<div><span>{{value.enterTime}}</span></div>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
`,
props: {
value:{
type:Object
},
},
data() {
return {
}
},
mounted(){
//this.animation()
},
methods: {
animation(){
},
},
watch:{
}
})

View File

@ -1,5 +1,5 @@
<template>
<div :class="red ? 'head-title red-head' : 'head-title'" class="main-header">
<div :class="red ? 'head-title red-head' : 'head-title'" class="main-header" :key="nav">
<div class="head-title-label">
产发工程数字管理平台
</div>
@ -7,7 +7,7 @@
<div v-if="!isTypeBuser" :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="pageJump(1, '#/')">
</div>
<div :class="nav == 2 ? 'head-nav active' : 'head-nav'" @click="pageJump(2, '#/detail')">项目详情</div>
<div :class="nav >=30 && nav <40 ||nav==3? 'head-nav active' : 'head-nav'" style="position: relative;"
<div :class="(nav >=30 && nav <40) || nav==3? 'head-nav active' : 'head-nav'" style="position: relative;"
class="has-submenu">
<div @click="pageJump(3, '#/safety')">安全管理</div>
<div class="header-btn-list">
@ -23,7 +23,7 @@
<button type="button" :class="nav == 34 ? 'active' : ''" class="sub-btn"
@click="pageJump(34, '#/dumbwaiter')">升降机监控</button>
<button type="button" :class="nav == 35 ? 'active' : ''" class="sub-btn"
@click="pageJump(35, '#/dumbwaiter')">人员定位</button>
@click="pageJump(35, '#/personnelPosition')">人员定位</button>
</div>
</div>
</div>
@ -168,11 +168,10 @@ export default {
window.headerApp = this
await this.initMe();
this.getWeather();
this.nav=this.$route.meta?.nav||1
this.nav=this.$route.meta?.nav||1
this.setTitle();
this.timerID = setInterval(this.updateTime, 1000);
this.updateTime();
let roleId = +this.$store.getters.roleId;
Cookies.remove("__ids__");
if ([5, 6, 7, 15, 16, 17, 99].includes(roleId)) {

View File

@ -17,7 +17,7 @@ Vue.component("screen-select", {
type:Array
},
val:{
type:[String,Number]
type:[String,Number,Object]
}
},
data() {
@ -46,7 +46,7 @@ Vue.component("screen-select", {
val:{
hander(){
this.value=this.val||'';
}
},
}
}

View File

@ -37,29 +37,30 @@ Vue.component("trend-chart-line", {
//然后异步执行echarts的初始化函数
newPromise.then(() => {
var series = []
for (let i = 0; i < data.lineData.length; i++) {
series.push({
name: data.legend[i],
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: false,
lineStyle: {
normal: {
width: 2,
if(data && data.lineData){
for (let i = 0; i < data.lineData.length; i++) {
series.push({
name: data.legend[i],
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: false,
lineStyle: {
normal: {
width: 2,
},
},
},
itemStyle: {
normal: {
color: data.color[i],
borderWidth: 5,
itemStyle: {
normal: {
color: data.color[i],
borderWidth: 5,
},
},
},
data: data.lineData[i],
},)
data: data.lineData[i],
},)
}
}
var unit = ''

View File

@ -38,25 +38,26 @@ Vue.component("trend-line-chart", {
resolve()
})
//然后异步执行echarts的初始化函数
newPromise.then(() => {
newPromise.then(() => {
var series =[]
for (let i = 0; i < data.data.length; i++) {
series.push({
name:data.legend[i],
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: true,
lineStyle: {
normal: {
width: 2,
if(data && data.data){
for (let i = 0; i < data.data.length; i++) {
series.push({
name:data.legend[i],
type: "line",
smooth: true,
symbol: "circle",
symbolSize: 5,
showSymbol: true,
lineStyle: {
normal: {
width: 2,
},
},
},
data: data.data[i],
})
data: data.data[i],
})
}
}
var unit = ''
if(data.unit){
unit = '单位:'+data.unit

File diff suppressed because one or more lines are too long

View File

@ -3,34 +3,616 @@
<el-row>
<el-col :span="6">
<module-one-3-1 label="设备概况">
<div class="czz-number">
<div class="czz-number-content">
<div class="czz-number-img czz-number-img-blue">
<img src="images/circle_icon_25.png">
</div>
<div class="survey_content_number">
<p>升降机总数</p>
<div class="survey_content_value"><span v-cloak v-html="deviceToal"></span> </div>
</div>
</div>
<div class="czz-number-content">
<div class="czz-number-img czz-number-img-green">
<img src="images/circle_icon_9.png">
</div>
<div class="survey_content_number">
<p>监控总数</p>
<div class="survey_content_value survey_content_value_color_green"><span v-cloak
v-html="deviceOnlineCount"></span> </div>
</div>
</div>
</div>
<certificate-bar-chart :data="certificateData" :height="100"></certificate-bar-chart>
<div class="rank-chart" style="height: calc(100% - 254px);">
<div class="rank-chart-title">监控列表</div>
<div class="list-max" style="height: calc(100% - 63px);">
<div class="list-min" style="height: calc(100% - 0px);" id="listMin" @mouseout="listMinMouseout"
@mouseover="listMinMouseover">
<div class="list-for" v-for="(item, i) in listData" @click="onTowerCraneList(i)">
<div :class="index == i ? 'list-con active' : 'list-con'">
<div class="list-top">
<div class="list-img">
<img src="images/list_img_tj.png">
</div>
<div class="list-info">
<div class="list-info-name">设备名称<span>{{ item.deviceName }}</span></div>
<div class="list-info-name">
设备状态
<span class="list-info-state" v-if="item.deviceState != 0">线</span>
<span class="list-info-state active" v-if="item.deviceState == 0">线</span>
</div>
</div>
</div>
<div class="list-bottom">
<el-row>
<el-col :span="10">
<div class="list-details">司机<span v-cloak>{{ item.driverName }}</span></div>
</el-col>
<el-col :span="14">
<div class="list-details">电话<span v-cloak>{{ item.driverPhone }}</span></div>
</el-col>
<el-col :span="10">
<div class="list-details">安全员<span v-cloak>{{ item.safetyOfficerName }}</span></div>
</el-col>
<el-col :span="14">
<div class="list-details">电话<span v-cloak>{{ item.safetyOfficerPhone }}</span></div>
</el-col>
</el-row>
</div>
<div class="list-time">最后一次启用时间<span v-cloak>{{ item.lastEnabledTime }}</span></div>
</div>
</div>
</div>
</div>
</div>
</module-one-3-1>
</el-col>
<el-col :span="18">
<el-row>
<el-col :span="16">
<div class="safe-height">
<el-row>
<el-col :span="6">
<div class="screen-module">
<div class="safe-small">
<div class="safe-small-title">运行次数</div>
<div class="safe-small-content">
<div class="safe-small-details">
<p>本月</p>
<span v-cloak v-html="topInfo.top0"></span>
</div>
<div class="safe-small-details">
<p>累计</p>
<span v-cloak v-html="topInfo.top1"></span>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="6">
<div class="screen-module">
<div class="safe-small">
<div class="safe-small-title">超载次数</div>
<div class="safe-small-content">
<div class="safe-small-details">
<p>本月</p>
<span v-cloak v-html="topInfo.top2"></span>
</div>
<div class="safe-small-details">
<p>累计</p>
<span v-cloak v-html="topInfo.top3"></span>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="6">
<div class="screen-module">
<div class="safe-small">
<div class="safe-small-title">超载率%</div>
<div class="safe-small-content">
<div class="safe-small-details">
<p>本月</p>
<span v-cloak v-html="topInfo.top4"></span>
</div>
<div class="safe-small-details">
<p>累计</p>
<span v-cloak v-html="topInfo.top5"></span>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="6">
<div class="screen-module">
<div class="safe-small">
<div class="safe-small-title">违章次数</div>
<div class="safe-small-content">
<div class="safe-small-details">
<p>本月</p>
<span v-cloak v-html="topInfo.top6"></span>
</div>
<div class="safe-small-details">
<p>累计</p>
<span v-cloak v-html="topInfo.top7"></span>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div class="safe-tower-crane-max">
<div class="safe-tower-crane-min" @mouseout="listMinMouseout" @mouseover="listMinMouseover">
<el-row>
<el-col :span="2">
<div class="safe-tower-left" @click="safeTowerLeft"></div>
</el-col>
<el-col :span="20">
<div class="safe-tower-content-max">
<transition :name="direction">
<component :is="comName" :value="dumbwaiterValue"></component>
</transition>
</div>
</el-col>
<el-col :span="2">
<div class="safe-tower-right" @click="safeTowerRight"></div>
</el-col>
</el-row>
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<div class="analyse-max">
<div class="analyse-min" style="height: auto">
<div class="analyse-title">
<div class="analyse-text">报警分析</div>
<div class="analyse-equipment">升降机监测</div>
</div>
<div style="padding: 30px 0">
<el-row>
<el-col :span="8">
<div class="time-study-value">
<p>今日报警数</p>
<div class="analyse-num"><span v-cloak v-html="dayWarnCount"></span> </div>
</div>
<div class="time-study-value">
<p>本周报警数</p>
<div class="analyse-num"><span v-cloak v-html="weekWarnCount"></span> </div>
</div>
</el-col>
<el-col :span="16">
<div class="survey-oil-title">
<div class="survey-oil-hr"></div>
<div class="survey-oil-text">报警类型</div>
</div>
<div class="analyse-number-max" id="afootOverflowType" @mouseout="listMinMouseoutType"
@mouseover="listMinMouseoverType">
<div class="glr-login-number-max analyse-num-max" v-for="item in warningList">
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe">
<div v-cloak><img src="images/text_red_spot.png">{{ item.warnType }}</div>
<div class="glr-rate-value glr-rate-red-value">
<span v-cloak>{{ item.warnCount }}</span>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
<div class="analyse-map">
<div class="analyse-title">
<div class="analyse-text">正在发生</div>
</div>
<div class="afoot-content safe-afoot-content">
<div class="afoot-overflow safe-afoot-overflow" id="afootOverflow" @mouseout="warningListMinMouseout"
@mouseover="warningListMinMouseover">
<div v-if="warningData.length == 0" class="not-data"></div>
<div v-if="warningData.length > 0" class="afoot-con-for" style="height: 180px"
v-for="item in warningData">
<div class="afoot-machinery-nam safe-afoot-machinery-nam" v-cloak>{{ item.warn_context }}</div>
<div class="afoot-machinery-info">
<div class="afoot-machinery-img">
<img :src="item.images" v-if="item.images">
</div>
<div class="afoot-machinery-data">
<div class="afoot-machinery-state" v-cloak>{{ item.warn_value }}</div>
<div class="afoot-machinery-time" v-cloak>{{ item.warn_time }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
<div style="padding: 0 30px">
<div class="analyse-title analyse_title_blue" style="width: 450px;">
<div class="analyse-text">运行数据</div>
</div>
<el-row>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_5.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>高度</div>
<p><span v-cloak v-html="footInfo.foot0"></span> m</p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_6.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>楼层</div>
<p><span v-cloak v-html="footInfo.foot1"></span> </p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_7.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>当前人数</div>
<p><span v-cloak v-html="footInfo.foot2"></span> </p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_8.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>当前载重</div>
<p><span v-cloak v-html="footInfo.foot3"></span> t</p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_9.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>倾角1</div>
<p><span v-cloak v-html="footInfo.foot4"></span> °</p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_9.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>倾角2</div>
<p><span v-cloak v-html="footInfo.foot5"></span> °</p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_10.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>风速</div>
<p><span v-cloak v-html="footInfo.foot6"></span> m/s</p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_11.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>速度</div>
<p><span v-cloak v-html="footInfo.foot7"></span> m/s</p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_12.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>速度方向</div>
<p><span v-cloak v-html="footInfo.foot8"></span></p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_2.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>前门状态</div>
<p><span :class="footInfo.foot9 == '打开' ? 'open' : 'close'" v-cloak v-html="footInfo.foot9"></span></p>
</div>
</div>
</el-col>
<el-col :span="4">
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_13.png">
</div>
</div>
<div class="xhz-current-value-data">
<div>后门状态</div>
<p><span :class="footInfo.foot10 == '打开' ? 'open' : 'close'" v-cloak v-html="footInfo.foot10"></span></p>
</div>
</div>
</el-col>
</el-row>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import '@/components/module/module-one-3-1'
import '@/components/certificate-bar-chart'
import '@/components/dumbwaiter-1'
import '@/components/dumbwaiter-2'
export default {
//
name: 'JhbigscreenDumbwaiter',
data() {
return {
deviceToal: 4,
deviceOnlineCount: 10,
certificateData: [],
listData: [],
interval: undefined, //
//
index: 0,
//
dumbwaiterValue: {},
comName: 'dumbwaiter-1',
direction: 'right',
deviceId: 0,
topInfo: {
top0: 0,
top1: 0,
top2: 4250,
top3: 68730,
top4: 0,
top5: 0,
top6: 17000,
top7: 274920,
},
footInfo: {
foot0: 10,
foot1: 10,
foot2: 10,
foot3: 10,
foot4: 10,
foot5: 10,
foot6: 10,
foot7: 10,
foot8: 10,
foot9: '',
foot10: '',
},
warningData: [],
dayWarnCount: 22,
weekWarnCount: 999,
//
warningTypeInterval: undefined,
warningTypeIndex: 0,
warningList: [],
warningInterval: undefined,
forIndex: 0,
warningData: []
};
},
mounted() {
this.certificateData = JSON.parse('[{"text":"在线数量","value":5},{"text":"离线数量","value":1}]');
this.listData = JSON.parse('[{"createUserid":null,"ratedSpeed":"1.8","delFlag":"0","deviceId":"3223081738","deviceName":"2#-2","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-09 15:35:42","safetyOfficerName":"马宁","maxHeight":120.5,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"张巧团","driverPhone":"17324808902","id":5,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"4.9","delFlag":"0","deviceId":"3223081741","deviceName":"3223081741","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-10 10:32:49","safetyOfficerName":"马宁","maxHeight":160.2,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":null,"driverPhone":null,"id":6,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"4.9","delFlag":"0","deviceId":"3223081748","deviceName":"3223081748","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-10 10:46:36","safetyOfficerName":"马宁","maxHeight":187.2,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":null,"driverPhone":null,"id":7,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"1.6","delFlag":"0","deviceId":"3223081722","deviceName":"3#-1","ratedPeopleCount":"9","entryTime":null,"lastEnabledTime":"2024-03-10 09:48:34","safetyOfficerName":"马宁","maxHeight":122.9,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"高军平","driverPhone":"15139573902","id":8,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"1.6","delFlag":"0","deviceId":"3223081749","deviceName":"3#-2","ratedPeopleCount":"9","entryTime":null,"lastEnabledTime":"2024-03-09 13:47:07","safetyOfficerName":"马宁","maxHeight":124.8,"createTime":"2023-09-12 18:25:13","cageSize":null,"ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"郭伟娟","driverPhone":"15239586568","id":9,"deviceState":"0","projectId":"98"}]');
this.warningList = [{ warnType: '报警类型A', warnCount: 4 }, { warnType: '报警类型B', warnCount: 4 }, { warnType: '报警类型C', warnCount: 4 }, { warnType: '报警类型D', warnCount: 4 }, { warnType: '报警类型E', warnCount: 4 }, { warnType: '报警类型F', warnCount: 4 }, { warnType: '报警类型G', warnCount: 4 }, { warnType: '报警类型H', warnCount: 4 },]
this.warningData = [{ warn_value: "预警A", images: ['images/831.jpg'], warn_context: '告警内容', warn_time: '24-02-02 14:00', project_abbreviation: 'xxx项目' },
{ warn_value: "预警A", images: ['images/831.jpg'], warn_context: '告警内容', time: '24-02-02 14:00', project_abbreviation: 'xxx项目' },
{ warn_value: "预警A", images: ['images/831.jpg'], warn_context: '告警内容', time: '24-02-02 14:00', project_abbreviation: 'xxx项目' },]
//list
if (this.listData.length > 0) {
this.interval = setInterval(this.automaticRoll, 10000);
}
//
this.warningTypeInterval = setInterval(this.automaticRollType, 5000);
//
this.warningInterval = setInterval(this.safeAutomaticRoll, 5000);
this.index = 0
this.deviceId = this.listData[0].id
this.updateDumbwaiterValue();
},
methods: {
onTowerCraneList(n) {
this.index = n
this.deviceId = this.listData[n].id
//
this.direction = 'right'
if (this.comName == 'dumbwaiter-1') {
this.comName = 'dumbwaiter-2'
} else {
this.comName = 'dumbwaiter-1'
}
},
//
listMinMouseover() {
clearInterval(this.interval);
},
listMinMouseout() {
this.interval = setInterval(this.automaticRoll, 10000);
},
automaticRoll() {
//
if (this.direction == 'right') {
if (this.index == this.listData.length - 1) {
this.index = 0
} else {
this.index = this.index + 1
}
} else {
if (this.index == 0) {
this.index = this.listData.length - 1
} else {
this.index = this.index - 1
}
}
if (this.comName == 'dumbwaiter-1') {
this.comName = 'dumbwaiter-2'
} else {
this.comName = 'dumbwaiter-1'
}
var height = $(".list-for").innerHeight()
$("#listMin").animate({ scrollTop: (height * this.index) + 'px' })
this.deviceId = this.listData[this.index].deviceId;
this.updateDumbwaiterValue();
},
updateDumbwaiterValue() {
this.dumbwaiterValue = {
name: this.listData[this.index].deviceName,
cageSize: this.listData[this.index].cageSize,
loadCapacity: this.listData[this.index].ratedLoad,
numberPeople: this.listData[this.index].ratedPeopleCount,
liftingHeight: this.listData[this.index].ratedPeopleCount,
runningSpeed: this.listData[this.index].ratedSpeed,
enterTime: this.listData[this.index].entryTime
}
},
safeTowerLeft() {
this.direction = 'left'
this.automaticRoll()
},
safeTowerRight() {
//
this.direction = 'right'
this.automaticRoll()
},
//
automaticRollType() {
var height = $(".glr-login-number-max").innerHeight()
if ($("#afootOverflowType").scrollTop() == height * this.warningList.length - $("#afootOverflowType").innerHeight()) {
this.warningTypeIndex = 0
} else {
this.warningTypeIndex = this.warningTypeIndex + 1
}
$("#afootOverflowType").animate({ scrollTop: (height * this.warningTypeIndex) + 'px' })
},
listMinMouseoverType() {
clearInterval(this.warningTypeInterval);
},
listMinMouseoutType() {
this.warningTypeInterval = setInterval(this.automaticRollType, 5000);
},
//
safeAutomaticRoll() {
var height = $(".safe-afoot-overflow").innerHeight()
if (this.forIndex == this.warningData.length) {
this.forIndex = 0
} else {
this.forIndex = this.forIndex + 1
}
$("#afootOverflow").animate({ scrollTop: (height * this.forIndex) + 'px' })
},
warningListMinMouseover() {
clearInterval(this.warningInterval);
},
warningListMinMouseout() {
this.warningInterval = setInterval(this.safeAutomaticRoll, 5000);
},
},
};
</script>
<style lang="less">
.project-dumbwaiter {}
.project-dumbwaiter {
.left-enter {
left: -100%;
transform: translateX(-100%);
}
.left-leave-to {
left: 0;
transform: translateX(100%);
position: absolute;
}
.left-enter-active,
.left-leave-active {
transition: all 1s ease;
}
.right-enter {
left: 100%;
transform: translateX(100%);
}
.right-leave-to {
left: 0;
transform: translateX(-100%);
position: absolute;
}
.right-enter-active,
.right-leave-active {
transition: all 1s ease;
}
}
</style>

View File

@ -165,10 +165,70 @@
</module-one-2-2>
</el-col>
<el-col :span="6">
<module-one-1-1 label="监测时长">
</module-one-1-1>
<module-one-1-1 label="变化速率统计">
</module-one-1-1>
<module-one-2-1 label="监测时长">
<div style="padding:4px;">
<div class="mon-time-row1">
<img src="images/security1.gif" class="time-img" />
<div class="time-info">
<div style="color:#cbdaff;font-size:16px;">监测时长()</div>
<div style="color:#5bf8b5;font-size:24px;font-weight: bold;">145</div>
</div>
</div>
<div class="analyse_title_blue analyse-title">
<div class="analyse-text">监测点</div>
</div>
</div>
<div class="sjk-chart-line-title scroll mon-points">
<div v-for="(it, idx) in pointData" :key="idx" :class="(selPoint?.id || 0) == it.id ? 'active' : ''"
class="title-item" @click="selPoint=it">{{
it.name }}</div>
</div>
<div style="padding:10px;" class="mon-point-info">
<div class="mon-title">
监测点数据
</div>
<div v-if="selPoint">
<div class="glr-title mon-point-title" style="margin-top:10px;">{{ selPoint.name }}</div>
<div class="mon-point-row">
<span class="survey_content_number sp-lbl">实时位移</span>
<span class="sp-data">N:{{ selPoint.pN }}mm</span>
<span class="sp-data">E:{{ selPoint.pE }}mm</span>
<span class="sp-data">Z:{{ selPoint.pZ }}mm</span>
</div>
<div class="mon-point-row">
<span class="survey_content_number sp-lbl">沉降</span>
<span class="sp-data">数据:{{ selPoint.sedD }}mm</span>
<span class="sp-data"></span>
<span class="mon-arr sp-data" :class="'mon-arr-' + selPoint.sedS">
<span v-if="selPoint.sedS == 'A'"></span>
<span v-else></span>
{{ selPoint.sedM }}</span>
</div>
<div class="mon-point-row">
<span class="survey_content_number sp-lbl">累计位移</span>
<span class="sp-data">数据:{{ selPoint.disD }}mm</span>
<span class="sp-data"></span>
<span class="mon-arr sp-data" :class="'mon-arr-' + selPoint.disS">
<span v-if="selPoint.disS == 'A'"></span>
<span v-else></span>
{{ selPoint.disM }}</span>
</div>
<div class="mon-point-row">
<span class="survey_content_number sp-lbl">位移速率</span>
<span class="sp-data">数据:{{ selPoint.ratD }}mm/d</span>
<span class="sp-data"></span>
<span class="mon-arr sp-data" :class="'mon-arr-' + selPoint.ratS">
<span v-if="selPoint.ratS == 'A'"></span>
<span v-else></span>
{{ selPoint.ratM }}</span>
</div>
</div>
<div v-else class="div-no-data" style="padding-top:100px">
<img src="images/nodata.png" style="width: 120px;">
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div>
</div>
</module-one-2-1>
</el-col>
</el-row>
<el-row>
@ -180,7 +240,7 @@
<div :class="btnNav == 1 ? 'active' : ''" @click="onClickPoint(1)"></div>
<div :class="btnNav == 2 ? 'active' : ''" @click="onClickPoint(2)"></div>
<div :class="btnNav == 3 ? 'active' : ''" @click="onClickPoint(3)"></div>
</div>
</div>
<div class="trend-chart-max" v-if="btnNav == 1">
<trend-line-chart :height="220" :chartdata="CollWeiyiPointData"
:data="CollWeiyiPointDataData"></trend-line-chart>
@ -230,6 +290,7 @@ export default {
data() {
return {
selPoint: {},
monTotal: 3,
onlineDevTotal: 3,
classifyBarData: [],
@ -249,15 +310,19 @@ export default {
offLine: true,
loading: false,
btnNav: 1,
CollWeiyiPointData:[],
CollWeiyiPointDataData:[],
CollQingxiePointDataX:[],
CollQingxiePointDataXdData:[],
CollQingxiePointDataY:[],
CollQingxiePointDataYdData:[],
YingLiPointData:[],
YingLiPointDataData:[],
CollWeiyiPointData: {},
CollWeiyiPointDataData: [],
CollQingxiePointDataX: {},
CollQingxiePointDataXdData: [],
CollQingxiePointDataY: {},
CollQingxiePointDataYdData: [],
YingLiPointData: {},
YingLiPointDataData: [],
pointData: []
};
},
@ -268,14 +333,23 @@ export default {
this.forBitMappedImageData = JSON.parse('[{"sensorTypeName":"位移(WY)","pointName":"位移26","drawId":"7039969819126403072","sensorInfoId":"7042034685840703494","url":"","xpixels":1492.266916,"sortValue":1,"createData":"2023-03-20 20:06:19","top":86.56728596535274,"fileSize":"2276*1280","left":607.8571428571429,"ypixels":117.403425,"sensorType":"CollWeiyiPoint","statusTime":"2024-03-09 22:40:04","otherProjectId":"1634117283072266241","isBase":"0","sensorSmallType":"24","drawName":"御井路公租房.jpg","status":"0","state":true,"imgUrl":"images/place_chenjiang_green.png"},{"sensorTypeName":"沉降(CJ)","pointName":"沉降53","drawId":"7039969819126403072","sensorInfoId":"7039970088807718912","url":"","xpixels":423.054061,"sortValue":1,"createData":"2023-03-20 20:06:19","top":152.63871453678132,"fileSize":"2276*1280","left":211.42857142857142,"ypixels":336.059302,"sensorType":"CollWeiyiPoint","statusTime":"2024-03-09 22:40:04","otherProjectId":"1634117283072266241","isBase":"1","sensorSmallType":"80","drawName":"御井路公租房.jpg","status":"0","state":true,"imgUrl":"images/place_chenjiang_blue.png"},{"sensorTypeName":"倾斜(QX)","pointName":"倾斜44","drawId":"7039969819126403072","sensorInfoId":"7039970088841273344","url":"","xpixels":387.71104,"sortValue":1,"createData":"2023-03-13 11:22:53","top":112.99585739392417,"fileSize":"2276*1280","left":317.1428571428571,"ypixels":766.483595,"sensorType":"CollQingxiePoint","statusTime":"2024-03-09 22:40:04","otherProjectId":"1634117283072266241","isBase":"0","sensorSmallType":"33","drawName":"御井路公租房.jpg","status":"0","state":true,"imgUrl":"images/place_qingxie_green.png"}]')
this.forBitMappedImageDataPJ = JSON.parse('[{"top":205.49585739392415,"left":224.64285714285714,"fileSize":"2276*1280","pointName":"倾斜45","sensorType":"CollQingxiePoint","id":1831,"otherProjectId":"1634117283072266241","project_name":"XXXXX项目EPC总承包项目","sensorInfoId":"7052577632253038592","url":"","status":"2","state":true,"imgUrl":"images/pj_grey.png"},{"top":271.56728596535277,"left":179.71428571428572,"fileSize":"2276*1280","pointName":"倾斜46","sensorType":"CollQingxiePoint","id":1831,"otherProjectId":"1634117283072266241","project_name":"XXXXX项目EPC总承包项目","sensorInfoId":"7052577632253038596","url":"","status":"2","state":true,"imgUrl":"images/pj_grey.png"},{"top":337.6387145367813,"left":171.78571428571428,"fileSize":"2276*1280","pointName":"倾斜47","sensorType":"CollQingxiePoint","id":1831,"otherProjectId":"1634117283072266241","project_name":"XXXXX项目EPC总承包项目","sensorInfoId":"7052577632253038600","url":"","status":"2","state":true,"imgUrl":"images/pj_grey.png"},{"top":245.13871453678132,"left":211.42857142857142,"fileSize":"2276*1280","pointName":"倾斜48","sensorType":"CollQingxiePoint","id":1831,"otherProjectId":"1634117283072266241","project_name":"XXXXX项目EPC总承包项目","sensorInfoId":"7052896778106015744","url":"","status":"2","state":true,"imgUrl":"images/pj_grey.png"},{"top":311.2101431082099,"left":211.42857142857142,"fileSize":"2276*1280","pointName":"倾斜49","sensorType":"CollQingxiePoint","id":1831,"otherProjectId":"1634117283072266241","project_name":"XXXXX项目EPC总承包项目","sensorInfoId":"7052896778106015748","url":"","status":"2","state":true,"imgUrl":"images/pj_grey.png"},{"top":350.85300025106704,"left":185,"fileSize":"2276*1280","pointName":"倾斜50","sensorType":"CollQingxiePoint","id":1831,"otherProjectId":"1634117283072266241","project_name":"XXXXX项目EPC总承包项目","sensorInfoId":"7052896778106015752","url":"","status":"2","state":true,"imgUrl":"images/pj_grey.png"}]');
this.legendArrData = JSON.parse('[{"type":"CollWeiyiPoint","class":"sjk-icon-legend-right-icon","url":"images/legend_chenjiang.png","text":"沉降"},{"type":"CollQingxiePoint","class":"sjk-icon-legend-right-icon","url":"images/legend_qingxie.png","text":"倾斜"}]')
this.CollWeiyiPointDataData=JSON.parse('[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30]]');
this.CollWeiyiPointData=JSON.parse('{"dataX":["2024-03-03","2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09"],"data":[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30]],"legend":["位移26","沉降53","阈值上限","阈值下限"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"mm"}');
this.CollQingxiePointDataX=JSON.parse('{"dataX":["2024-03-03","2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09"],"data":[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"legend":["位移26","沉降53","阈值上限","阈值下限"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"°(X方向)"}');
this.CollQingxiePointDataXdData=JSON.parse('[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]]');
this.CollQingxiePointDataY=JSON.parse('{"dataX":["2024-03-03","2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09"],"data":[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"legend":["位移26","沉降53","阈值上限","阈值下限"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"°(Y方向)"}');
this.CollQingxiePointDataYdData=JSON.parse('[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]]');
this.YingLiPointData=JSON.parse('{"dataX":["2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09","2024-03-10"],"data":[["0","0","0","0","0","0"],["0","0","0","0","0","0"],["0","0","0","0","0","0"]],"legend":["ZD-YW-1","ZD-YW-2","ZD-YW-3"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"KN"}');
this.YingLiPointDataData=JSON.parse('[["0","0","0","0","0","0"],["0","0","0","0","0","0"],["0","0","0","0","0","0"]]');
this.CollWeiyiPointDataData = JSON.parse('[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30]]');
this.CollWeiyiPointData = JSON.parse('{"dataX":["2024-03-03","2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09"],"data":[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30]],"legend":["位移26","沉降53","阈值上限","阈值下限"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"mm"}');
this.CollQingxiePointDataX = JSON.parse('{"dataX":["2024-03-03","2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09"],"data":[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"legend":["位移26","沉降53","阈值上限","阈值下限"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"°(X方向)"}');
this.CollQingxiePointDataXdData = JSON.parse('[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]]');
this.CollQingxiePointDataY = JSON.parse('{"dataX":["2024-03-03","2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09"],"data":[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]],"legend":["位移26","沉降53","阈值上限","阈值下限"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"°(Y方向)"}');
this.CollQingxiePointDataYdData = JSON.parse('[["0","0","0","0","0","0","0"],["0","0","0","0","0","0","0"],[1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]]');
this.YingLiPointData = JSON.parse('{"dataX":["2024-03-04","2024-03-05","2024-03-06","2024-03-07","2024-03-08","2024-03-09","2024-03-10"],"data":[["0","0","0","0","0","0"],["0","0","0","0","0","0"],["0","0","0","0","0","0"]],"legend":["ZD-YW-1","ZD-YW-2","ZD-YW-3"],"color":["#a83836","#ffd900","#16a951","#ab4c90","#1785aa","#622a1d","#f26839","#e29c46","#808080","#067749","#8c4356","#a88e44","#88ada6","#789262","#ca6924","#a1afc9","#ae7001","#748a98","#549688","#b36d61","#426666","#a98175","#8a6c3a","#a88462","#574167","#f99070","#8a6c3a","#96cd55","#50606d","#c9dd23","#6b6883","#2e4e7d","#a88462","#b35b43","#c89b40","#cca4e3","#698aab","#9b4400","#a69abe","#725e83","#75878b","#9ba88e","#675758","#675758","#ab4c90","#ab4c90","#f39801","#7b8d43","#745398","#b3ada1"],"unit":"KN"}');
this.YingLiPointDataData = JSON.parse('[["0","0","0","0","0","0"],["0","0","0","0","0","0"],["0","0","0","0","0","0"]]');
this.pointData = "1,2,3,4,5,6,7,8".split(",").map(d => {//,9,10,11,12,13,14,15,16,17
return {
id: d, name: "监测点0" + (d < 10 ? '0' + d : '' + d), pN: '-14', pE: '-0.4', pZ: '-0.2',
sedD: '-0.2', sedM: '12', sedS: 'A',
disD: '1.5', disM: "12", disS: 'A',
ratD: '0.23', ratM: 12, ratS: 'D'
}
});
this.selPoint = this.pointData[0];
this.init();
},
@ -451,6 +525,67 @@ export default {
.sjk-img-min {
height: 100%;
}
.mon-time-row1 {
display: flex;
justify-content: center;
align-items: center;
padding: 10px;
.time-img {
height: 120px;
}
.time-info {
text-align: center;
line-height: 40px;
}
}
.sjk-chart-line-title.mon-points {
display: block;
max-height: 60px;
min-height: 60px;
overflow-y: auto;
.title-item {
display: inline-block;
cursor: pointer;
font-size: 9px;
}
}
.mon-point-info {
.mon-title {
border-bottom: dotted 1px #918c8c;
line-height: 24px;
}
.mon-point-title {
color: #51b5ff;
}
.mon-point-row{
line-height: 60px;
font-size:12px;
.sp-data{
display: inline-block;
width:105px;
}
.sp-lbl{
display: inline-block;
width:110px;
}
.mon-arr{
font-size:16px;
font-weight: bold;
&.mon-arr-A{
color:red;
}
&.mon-arr-D{
color:green;
}
}
}
}
}
</style>

View File

@ -1,31 +1,299 @@
<template>
<div class="project-personnel-position">
<!-- -->
<div class="project-personnel-position">
<baidu-maps v-if="showMap" :data="personnelListData"></baidu-maps>
<div class="people-left" style="height: calc(100vh - 130px);">
<div class="people-search">
<input type="text" placeholder="搜索工人" @keyup="selectByName($event)" />
</div>
<div class="czz-number">
<div class="czz-number-content">
<div class="czz-number-img czz-number-img-blue">
<img src="images/circle_icon_11.png">
</div>
<div class="survey_content_number">
<p>总人数</p>
<div class="survey_content_value"><span id="personNum"></span> </div>
</div>
</div>
<div class="czz-number-content">
<div class="czz-number-img czz-number-img-green">
<img src="images/circle_icon_10.png">
</div>
<div class="survey_content_number">
<p>安全帽在线</p>
<div class="survey_content_value survey_content_value_color_green"><span id="personNumHem"></span> </div>
</div>
</div>
</div>
<div class="rank-chart">
<div class="rank-chart-title">人员列表<span id="listNum"></span></div>
<div class="list-max">
<div class="list-min people-list-min" id="listMin" @mouseout="peopleListMinMouseout"
@mouseover="peopleListMinMouseover">
<div class="list-for" v-for="(item, i) in personnelListData" @click="onTowerCraneList(i)">
<div :class="index == i ? 'people-list-con active' : 'people-list-con'">
<div class="people-list-top">
<div class="people-list-img">
<img :src="item.imgUrl" v-if="item.imgUrl">
</div>
<div class="list-info">
<div class="people-info-name">
<span v-cloak>{{ item.name }}</span>
<span class="people-info-work" v-cloak>{{ item.work }}</span>
<div class="people-list-state" v-if="item.state == 0" v-cloak>线</div>
<div class="people-list-state active" v-if="item.state == 1" v-cloak>线</div>
</div>
<div class="people-info-name">
<div class="people-battery-max">
<div :class="item.battery > 20 ? 'people-battery-bgd' : 'people-battery-bgd active'">
<div class="people-battery-padding">
<div :class="item.battery > 20 ? 'people-battery' : 'people-battery active'"
:style="{ 'width': item.battery + '%' }">
<!--电池-->
</div>
</div>
</div>
<div :class="item.battery > 20 ? 'people-battery-value' : 'people-battery-value active'"
v-cloak>
{{ item.battery }}%</div>
</div>
<div>
<span class="people-info-action" v-if="item.action == 0"></span>
<span class="people-info-action active" v-if="item.action == 1"></span>
</div>
</div>
</div>
</div>
<div class="list-bottom">
<el-row>
<el-col :span="14">
<div class="list-details">今日工时<span v-cloak>{{ item.working_hours }}</span></div>
</el-col>
<el-col :span="10">
<div class="list-details">本月出勤<span v-cloak>{{ item.attendance }}</span></div>
</el-col>
<el-col :span="24">
<div class="list-details">定位时间<span v-cloak>{{ item.positioning_time }}</span></div>
</el-col>
</el-row>
</div>
<div class="people-info-address" v-cloak>{{ item.address }}</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
//
name: 'JhbigscreenPersonnelPosition',
data() {
return {
};
<div class="people-right" style="height: calc(100vh - 130px);">
<div class="analyse-min">
<div class="analyse-title">
<div class="analyse-text">预警分析</div>
<div class="analyse-equipment">人员定位</div>
</div>
<el-row>
<el-col :span="8">
<div class="time-study-value">
<p>今日预警数</p>
<div class="analyse-num"><span id="dayNum">0</span> </div>
</div>
<div class="time-study-value">
<p>本周预警数</p>
<div class="analyse-num"><span id="weekNum">0</span> </div>
</div>
</el-col>
<el-col :span="16">
<div class="survey-oil-title">
<div class="survey-oil-hr"></div>
<div class="survey-oil-text">预警类型</div>
</div>
<div class="analyse-number-max" id="afootOverflowType" @mouseout="listMinMouseoutType"
@mouseover="listMinMouseoverType">
<div class="glr-login-number-max analyse-num-max" v-for="item in warningType">
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe">
<div><img src="images/text_red_spot.png" v-cloak>{{ item.name }}</div>
<div class="glr-rate-value glr-rate-red-value"><span v-cloak>{{ item.data }}</span></div>
</div>
</div>
</div>
</el-col>
</el-row>
</div>
<div>
<div class="analyse-title">
<div class="analyse-text">正在发生</div>
</div>
<div class="afoot-content" v-if="warningData && warningData.length>0">
<div class="afoot-overflow hj-afoot-overflow" id="afootOverflow" @mouseout="listMinMouseout"
@mouseover="listMinMouseover">
<div :class="forIndex == i ? 'afoot-con-for active' : 'afoot-con-for '" v-for="(item, i) in warningData">
<div class="afoot-machinery-nam" v-cloak>{{ item.equipment }}</div>
<div class="afoot-machinery-info">
<div class="afoot-machinery-img">
<img :src="item.images">
</div>
<div class="afoot-machinery-data">
<div class="afoot-machinery-state" v-cloak>{{ item.content }}</div>
<div class="afoot-machinery-time" v-cloak>{{ item.time }}</div>
</div>
</div>
</div>
</div>
</div>
<div v-else class="div-no-data afoot-content" style="padding-top:100px">
<img src="images/nodata.png" style="width: 120px;">
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div>
</div>
</div>
</div>
</template>
<script>
import '@/components/baidu-maps'
export default {
//
name: 'JhbigscreenPersonnelPosition',
data() {
return {
//
personnelListData: [],
index: 0,
listInterval: undefined,
//
warningType: [],
warningTypeInterval: undefined,
warningTypeIndex: 0,
//
warningData: [],
warningInterval: undefined,
forIndex: 0,
personnelListData: [],
showMap: true,
};
},
beforeCreate() {
},
mounted() {
this.warningType=JSON.parse('[{"data":0,"name":"低电量"},{"data":0,"name":"离线"},{"data":0,"name":"长时间静止"}]');
this.warningData = [{
equipment: "TDX_889939994",
images: ['images/831.jpg'],
content: '告警内容',
time: '24-02-02 14:00',
project_abbreviation: 'xxx项目'
}, {
equipment: "TDX_889939994",
images: ['images/831.jpg'],
content: '告警内容',
time: '24-02-02 14:00',
project_abbreviation: 'xxx项目'
}, {
equipment: "TDX_889939994",
images: ['images/831.jpg'],
content: '告警内容',
time: '24-02-02 14:00',
project_abbreviation: 'xxx项目'
},]
this.init();
},
methods: {
init() {
//
this.initMap()
this.listInterval = setInterval(this.automaticRollList, 5000);
//
this.warningTypeInterval = setInterval(this.automaticRollType, 5000);
//
this.warningInterval = setInterval(this.automaticRoll, 5000);
},
mounted() {
//
initMap() {
this.locationPerson("1", "")
},
methods: {
locationPerson(id, nameStr) {
document.querySelector("#personNum").innerHTML = "0";
document.querySelector("#personNumHem").innerHTML = "0";
document.querySelector("#listNum").innerHTML = "0";
},
};
</script>
/*人员列表*/
onTowerCraneList(n) {
this.index = n
},
automaticRollList() {
if (this.index == this.personnelListData.length - 1) {
this.index = 0
} else {
this.index = this.index + 1
}
var height = $(".list-for").innerHeight()
$("#listMin").animate({ scrollTop: (height * this.index) + 'px' })
},
peopleListMinMouseout() {
this.listInterval = setInterval(this.automaticRollList, 5000);
},
peopleListMinMouseover() {
clearInterval(this.listInterval);
},
//
automaticRollType() {
var height = $(".glr-login-number-max").innerHeight()
if ($("#afootOverflowType").scrollTop() == height * this.warningType.length - $("#afootOverflowType").innerHeight()) {
this.warningTypeIndex = 0
} else {
this.warningTypeIndex = this.warningTypeIndex + 1
}
$("#afootOverflowType").animate({ scrollTop: (height * this.warningTypeIndex) + 'px' })
},
listMinMouseoverType() {
clearInterval(this.warningTypeInterval);
},
listMinMouseoutType() {
this.warningTypeInterval = setInterval(this.automaticRollType, 5000);
},
//
automaticRoll() {
var height = $(".afoot-con-for").innerHeight()
if (this.forIndex == this.warningData.length) {
this.forIndex = 0
} else {
this.forIndex = this.forIndex + 1
}
$("#afootOverflow").animate({ scrollTop: (height * this.forIndex) + 'px' })
},
listMinMouseover() {
clearInterval(this.warningInterval);
},
listMinMouseout() {
this.warningInterval = setInterval(this.automaticRoll, 5000);
},
},
};
</script>
<style lang="less">
.project-personnel-position{
}
.project-personnel-position {}
</style>

View File

@ -59,6 +59,11 @@ const routes = [
name: 'dumbwaiter',
meta:{nav:34,},
component: () => import(/* webpackChunkName: "dumbwaiter" */ '../pages/safe/dumbwaiter.vue')
}, {
path: '/personnelPosition',
name: 'personnelPosition',
meta:{nav:35,},
component: () => import(/* webpackChunkName: "personnelPosition" */ '../pages/safe/personnelPosition.vue')
}
, {
path: '/excavation',