2160 lines
112 KiB
HTML
2160 lines
112 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<link rel="stylesheet" href="https://cdn.makalu.cc/css/element-ui/index.css">
|
||
<link rel="stylesheet" href="/css/largeScreenLayout.css">
|
||
<link rel="stylesheet" href="/css/largeScreenStyle.css">
|
||
<link rel="stylesheet" href="/css/amplifyModuleStyle.css">
|
||
<title>数字化集成管控平台</title>
|
||
<style>
|
||
.el-table {
|
||
background: none;
|
||
}
|
||
|
||
.el-table td {
|
||
border: none;
|
||
color: #c9d9fa;
|
||
}
|
||
|
||
.el-table th {
|
||
background: #1a3956;
|
||
}
|
||
|
||
.el-table thead {
|
||
color: #ffffff;
|
||
}
|
||
|
||
.el-table--enable-row-hover .el-table__body tr:hover > td {
|
||
background: #002d56;
|
||
}
|
||
|
||
.el-table__body-wrapper::-webkit-scrollbar {
|
||
width: 0px;
|
||
height: 0px;
|
||
}
|
||
|
||
.el-table::before {
|
||
background: none;
|
||
}
|
||
|
||
.el-carousel__container {
|
||
height: 510px;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div id="app">
|
||
<!--大屏背景-->
|
||
<background-video></background-video>
|
||
<!--大屏内容-->
|
||
<div class="screen-content-max">
|
||
<screen-header :nav="1" @itemdata="onItemData"></screen-header>
|
||
<div class="screen-content">
|
||
<el-row>
|
||
<el-col :span="6">
|
||
<module-one-1-1 label="项目概况" :amplify="true" name="amplify-xmkg">
|
||
<div class="company-name-max">
|
||
<div class="company-project-introduction" @click="projectIntroduction">
|
||
<span>项目简介</span>
|
||
<img src="/images/check_icon.png">
|
||
</div>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<div class="company-name">
|
||
<div class="company-img"><img src="/images/company_13.png"></div>
|
||
<div class="company-info">
|
||
<div class="company-title">建设单位</div>
|
||
<el-tooltip class="item" effect="dark" placement="top-end">
|
||
<div slot="content" style="font-size: 20px;" v-cloak>{{buildUnit}}</div>
|
||
<div class="company-text" v-cloak>{{buildUnit}}</div>
|
||
</el-tooltip>
|
||
<div class="company-person-info" v-cloak>{{buildUnitManagerName}}
|
||
{{phone_show == 0 ? buildUnitManagerPhone : ''}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="company-name">
|
||
<div class="company-img"><img src="/images/company_14.png"></div>
|
||
<div class="company-info">
|
||
<div class="company-title">设计单位</div>
|
||
<el-tooltip class="item" effect="dark" placement="top-end">
|
||
<div slot="content" style="font-size: 20px;" v-cloak>{{designUnit}}
|
||
</div>
|
||
<div class="company-text" v-cloak>{{designUnit}}</div>
|
||
</el-tooltip>
|
||
<div class="company-person-info" v-cloak>{{designUnitManagerName}}
|
||
{{phone_show == 0 ? designUnitManagerPhone : ''}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<div class="company-name">
|
||
<div class="company-img"><img src="/images/company_15.png"></div>
|
||
<div class="company-info">
|
||
<div class="company-title">总包单位</div>
|
||
<el-tooltip class="item" effect="dark" placement="top-end">
|
||
<div slot="content" style="font-size: 20px;" v-cloak>{{allUnit}}</div>
|
||
<div class="company-text" v-cloak>{{allUnit}}</div>
|
||
</el-tooltip>
|
||
<div class="company-person-info" v-cloak>{{allUnitManagerName}}
|
||
{{phone_show == 0 ? allUnitManagerPhone : ''}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="company-name">
|
||
<div class="company-img"><img src="/images/company_11.png"></div>
|
||
<div class="company-info">
|
||
<div class="company-title">监理单位</div>
|
||
<el-tooltip class="item" effect="dark" placement="top-end">
|
||
<div slot="content" style="font-size: 20px;" v-cloak>
|
||
{{supervisorUnit}}
|
||
</div>
|
||
<div class="company-text" v-cloak>{{supervisorUnit}}</div>
|
||
</el-tooltip>
|
||
<div class="company-person-info" v-cloak>{{supervisorUnitManagerName}}
|
||
{{phone_show == 0 ? supervisorUnitManagerPhone : ''}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<div class="company-name">
|
||
<div class="company-img"><img src="/images/company_12.png"></div>
|
||
<div class="company-info">
|
||
<div class="company-title">检测机构</div>
|
||
<el-tooltip class="item" effect="dark" placement="top-end">
|
||
<div slot="content" style="font-size: 20px;" v-cloak>{{testingUnit}}
|
||
</div>
|
||
<div class="company-text" v-cloak>{{testingUnit}}</div>
|
||
</el-tooltip>
|
||
<div class="company-person-info" v-cloak>{{testingUnitManagerName}}
|
||
{{phone_show == 0 ? testingUnitManagerPhone : ''}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="company-name">
|
||
<div class="company-img"><img src="/images/company_10.png"></div>
|
||
<div class="company-info">
|
||
<div class="company-title">勘察单位</div>
|
||
<el-tooltip class="item" effect="dark" placement="top-end">
|
||
<div slot="content" style="font-size: 20px;" v-cloak>{{surveyUnit}}
|
||
</div>
|
||
<div class="company-text" v-cloak>{{surveyUnit}}</div>
|
||
</el-tooltip>
|
||
<div class="company-person-info" v-cloak>{{surveyUnitManagerName}}
|
||
{{phone_show == 0 ? surveyUnitManagerPhone : ''}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
</module-one-1-1>
|
||
<module-one-1-1 label="劳务人员概况" :amplify="true" name="amplify-lwrygk">
|
||
<div class="warning-info">
|
||
<div class="warning-info-title">
|
||
<div :class="infoNav==1?'active':''" @click="onWarningInfoNav(1,'今日出勤')">今日出勤</div>
|
||
<div :class="infoNav==0?'active':''" @click="onWarningInfoNav(0,'在岗人数')">在岗人数</div>
|
||
</div>
|
||
<el-row>
|
||
<el-col :span="8">
|
||
<div class="survey_content">
|
||
<div class="survey_content_img">
|
||
<img :src="surveyUrl">
|
||
</div>
|
||
</div>
|
||
<div class="survey_content_number labour-survey_content_number">
|
||
<div class="survey_content_value"><span v-html="lwDataTotal"></span> 人</div>
|
||
<p v-cloak>{{staffText}}</p>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="16">
|
||
<staff-survey-chart :height="220" :data="laborPersonnelData"
|
||
@personnel="clickBarPersonnel"
|
||
:width="145"></staff-survey-chart>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
</module-one-1-1>
|
||
<module-one-1-1 label="设备概况" :amplify="true" name="amplify-sbgk">
|
||
<div class="survey_title">
|
||
<div class="survey_title_btn">
|
||
<div :class="overview==0?'survey_title_btn_min active':'survey_title_btn_min'"
|
||
@click="onClickoOverview(0)">设备数量
|
||
</div>
|
||
</div>
|
||
<div class="survey_title_btn">
|
||
<div :class="overview==1?'survey_title_btn_min active':'survey_title_btn_min'"
|
||
@click="onClickoOverview(1)">绑定数量
|
||
</div>
|
||
</div>
|
||
<div class="survey_title_btn">
|
||
<div :class="overview==2?'survey_title_btn_min active':'survey_title_btn_min'"
|
||
@click="onClickoOverview(2)">监测数量
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="survey_content">
|
||
<div class="survey_content_img">
|
||
<img :src="surveyUrlSb">
|
||
</div>
|
||
<div class="survey_content_number">
|
||
<p v-cloak>{{showOverviewLabel}}</p>
|
||
<div class="survey_content_value"><span v-cloak>{{showOverviewData.countNum}}</span> 台</div>
|
||
</div>
|
||
</div>
|
||
<div class="survey_title">
|
||
<div class="survey_title_btn">
|
||
<div class="survey_text survey_text_zy"></div>
|
||
<div class="survey_text_value">
|
||
<p>自有</p>
|
||
<span v-cloak>{{showOverviewData.zyNum}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="survey_title_btn">
|
||
<div class="survey_text survey_text_zl"></div>
|
||
<div class="survey_text_value">
|
||
<p>租赁</p>
|
||
<span v-cloak>{{showOverviewData.zlNum}}</span>
|
||
</div>
|
||
</div>
|
||
<div class="survey_title_btn">
|
||
<div class="survey_text survey_text_fb"></div>
|
||
<div class="survey_text_value">
|
||
<p>分包</p>
|
||
<span v-cloak>{{showOverviewData.fbNum}}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</module-one-1-1>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="modify-project-amount" @mouseout="costMouseout" @mouseover="costMouseover">
|
||
<div class="modify-btn"><img src="/images//foot_left.png" @click="modifyLeftBtn"></div>
|
||
<div class="modify-content" id="modifyContent" ref="modifyContent">
|
||
<div class="modify-content-overflow" style="width: 3360px;">
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>计划开工日期/实际开工日期</p>
|
||
<div v-if="projectOverview.planStartTime != undefined"><span v-cloak style="font-size: 16px;">{{projectOverview.planStartTime}}/{{projectOverview.actualStartDate}}</span>
|
||
</div>
|
||
<div v-if="projectOverview.planStartTime == undefined"><span>暂无数据</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!--<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>实际开工日期</p>
|
||
<div v-if="projectOverview.actualStartDate != undefined"><span v-cloak>{{projectOverview.actualStartDate}}</span>
|
||
</div>
|
||
<div v-if="projectOverview.actualStartDate == undefined"><span>暂无数据</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>-->
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>计划竣工日期</p>
|
||
<div v-if="projectOverview.planEndDate != undefined"><span v-cloak>{{projectOverview.planEndDate}}</span>
|
||
</div>
|
||
<div v-if="projectOverview.planEndDate == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>合同工期</p>
|
||
<div v-if="projectOverview.contractMoney != undefined"><span v-cloak>{{projectOverview.contractMoney}}</span>
|
||
天
|
||
</div>
|
||
<div v-if="projectOverview.contractMoney == undefined"><span>暂无数据</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>本月完成</p>
|
||
<div v-if="projectOverview.monthMoney != undefined"><span v-cloak>{{projectOverview.monthMoney}}</span>
|
||
万元
|
||
</div>
|
||
<div v-if="projectOverview.monthMoney == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>年累完成</p>
|
||
<div v-if="projectOverview.yearMoney != undefined"><span v-cloak>{{projectOverview.yearMoney}}</span>
|
||
万元
|
||
</div>
|
||
<div v-if="projectOverview.yearMoney == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>开累完成</p>
|
||
<div v-if="projectOverview.kaileiMoney != undefined"><span v-cloak>{{projectOverview.kaileiMoney}}</span>
|
||
万元
|
||
</div>
|
||
<div v-if="projectOverview.kaileiMoney == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>工程造价</p>
|
||
<div v-if="projectOverview.allMoney != undefined"><span v-cloak>{{projectOverview.allMoney}} </span>
|
||
万元
|
||
</div>
|
||
<div v-if="projectOverview.allMoney == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>建筑面积</p>
|
||
<div v-if="projectOverview.allArea != undefined"><span v-cloak>{{projectOverview.allArea}}</span>
|
||
平方米
|
||
</div>
|
||
<div v-if="projectOverview.allArea == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>占地面积</p>
|
||
<div v-if="projectOverview.floorArea"><span v-cloak>{{projectOverview.floorArea}}</span>
|
||
平方米
|
||
</div>
|
||
<div v-if="projectOverview.floorArea == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!--滚动需要多余复制3组数数据-->
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>计划开工日期/实际开工日期</p>
|
||
<div v-if="projectOverview.planStartTime != undefined"><span v-cloak style="font-size: 16px;">{{projectOverview.planStartTime}}/{{projectOverview.actualStartDate}}</span>
|
||
</div>
|
||
<div v-if="projectOverview.planStartTime == undefined"><span>暂无数据</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!--<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>实际开工日期</p>
|
||
<div v-if="projectOverview.actualStartDate != undefined"><span v-cloak>{{projectOverview.actualStartDate}}</span>
|
||
</div>
|
||
<div v-if="projectOverview.actualStartDate == undefined"><span>暂无数据</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>-->
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>计划竣工日期</p>
|
||
<div v-if="projectOverview.planEndDate != undefined"><span v-cloak>{{projectOverview.planEndDate}}</span>
|
||
</div>
|
||
<div v-if="projectOverview.planEndDate == undefined"><span>暂无数据</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="project-amount">
|
||
<div class="project-amount-bgd">
|
||
<div class="project-amount-con">
|
||
<p>合同工期</p>
|
||
<div v-if="projectOverview.contractMoney != undefined"><span v-cloak>{{projectOverview.contractMoney}}</span>
|
||
天
|
||
</div>
|
||
<div v-if="projectOverview.contractMoney == undefined"><span>暂无数据</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<div class="modify-btn"><img src="/images/foot_right.png" @click="modifyRightBtn"></div>
|
||
</div>
|
||
<div class="aerial-view-max">
|
||
<div class="aerial-view-min">
|
||
<el-carousel trigger="click" v-if="projectOverview.newCarouselVideo.length <= 0">
|
||
<el-carousel-item v-for="item in projectOverview.newCarouselImg" :interval="5000">
|
||
<img :src="item.url" v-if="item.url&&item.url.length > 0">
|
||
</el-carousel-item>
|
||
</el-carousel>
|
||
<div v-if="projectOverview.newCarouselVideo.length > 0">
|
||
<video muted autoplay="autoplay" controls loop="loop">
|
||
<source :src="projectOverview.newCarouselVideo[0].url">
|
||
</video>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<module-one-1-2 label="项目里程碑">
|
||
<div class="dangerous-max">
|
||
<div class="dangerous-tab">
|
||
<div :class="activeNum==i?'active':''" v-if="dangerName != ''"
|
||
v-for="(item,i) in dangerName" @click="changeData(item.id,i)" v-cloak>{{item.danger_name}}
|
||
</div>
|
||
</div>
|
||
<div class="dangerous-timeline-max">
|
||
<div class="dangerous-timeline-min" :style="{width: maxWidth+'px'}">
|
||
<div class="dangerous-timeline-con" v-for="item in timeAxisData" style="font-size: 14px;">
|
||
<div class="dangerous-text" v-cloak>{{item.title}}</div>
|
||
<div class="dangerous-dot">
|
||
<div class="dangerous-dot-item"></div>
|
||
</div>
|
||
<div class="dangerous-time-max">
|
||
<div class="dangerous-time-min" v-cloak>计划:{{item.planTime}}</div>
|
||
<div class="dangerous-time-min" v-cloak>实际:{{item.actualTime ==
|
||
''?'--':item.actualTime}}
|
||
</div>
|
||
<div class="project-expect-state dangerous-time-nav"
|
||
v-if="item.state==0&&item.actualTime">正常完成
|
||
</div>
|
||
<div class="project-expect-state dangerous-time-nav active"
|
||
v-if="item.state==1&&item.actualTime" v-cloak>逾期{{item.expectDays}}天
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="strip-max" v-if="maxWidth > 0" :style="{width: maxWidth+'px'}">
|
||
<div class="strip-min" :style="{width:minWidth+'px'}"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</module-one-1-2>
|
||
</el-col>
|
||
<el-col :span="6">
|
||
<div style="padding: 10px;">
|
||
<div class="analyse-title analyse_title_blue">
|
||
<div class="analyse-text">安全生产</div>
|
||
</div>
|
||
<div class="safe-production ">
|
||
<div style="padding-right: 10px;">第</div>
|
||
<people-number :number="workSafetyNumber" unit="天"></people-number>
|
||
<div class="safe-production-time" v-cloak>{{workSafetyTime}}</div>
|
||
</div>
|
||
<div class="analyse-title analyse_title_blue">
|
||
<div class="analyse-text">环境监测</div>
|
||
</div>
|
||
</div>
|
||
<div class="weather-forecast">
|
||
<div class="weather-forecast-list">
|
||
<div class="weather-forecast-date">{{showDay(0)}}</div>
|
||
<div class="weather-forecast-img">
|
||
<img v-if="cityWeather.showapi_res_body" :src="cityWeather.showapi_res_body.f1.day_weather_pic">
|
||
</div>
|
||
<div class="weather-forecast-temp" v-cloak>
|
||
{{(cityWeather.showapi_res_body ? cityWeather.showapi_res_body.f1.night_air_temperature : 0) + ' ℃ ~ '
|
||
+ (cityWeather.showapi_res_body? cityWeather.showapi_res_body.f1.day_air_temperature : 0) + " ℃"}}
|
||
</div>
|
||
</div>
|
||
<div class="weather-forecast-list">
|
||
<div class="weather-forecast-date">{{showDay(1)}}</div>
|
||
<div class="weather-forecast-img">
|
||
<img v-if="cityWeather.showapi_res_body" :src="cityWeather.showapi_res_body.f2.day_weather_pic">
|
||
</div>
|
||
<div class="weather-forecast-temp" v-cloak>
|
||
{{(cityWeather.showapi_res_body ? cityWeather.showapi_res_body.f2.night_air_temperature : 0) + ' ℃ ~ '
|
||
+ (cityWeather.showapi_res_body ? cityWeather.showapi_res_body.f2.day_air_temperature : 0) + " ℃"}}
|
||
</div>
|
||
</div>
|
||
<div class="weather-forecast-list">
|
||
<div class="weather-forecast-date">{{showDay(2)}}</div>
|
||
<div class="weather-forecast-img">
|
||
<img v-if="cityWeather.showapi_res_body" :src="cityWeather.showapi_res_body.f3.day_weather_pic">
|
||
</div>
|
||
<div class="weather-forecast-temp" v-cloak>
|
||
{{(cityWeather.showapi_res_body ? cityWeather.showapi_res_body.f3.night_air_temperature : 0) + ' ℃ ~ '
|
||
+ (cityWeather.showapi_res_body ? cityWeather.showapi_res_body.f3.day_air_temperature : 0) + " ℃"}}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="xhz-device-data" style="margin-bottom: 32px;">
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<div class="xhz-device-data-min">
|
||
<div class="survey_content">
|
||
<div class="survey_content_img xhz-education_bgd">
|
||
<img src="/images/qy.png">
|
||
</div>
|
||
</div>
|
||
<div class="xhz-current-value-data">
|
||
<div>当前气压</div>
|
||
<p><span v-cloak>{{cityWeather.environment ? cityWeather.environment.hpa : 0}}</span> hPa</p>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="xhz-device-data-min">
|
||
<div class="survey_content">
|
||
<div class="survey_content_img xhz-education_bgd">
|
||
<img src="/images/hj_PM10.png">
|
||
</div>
|
||
</div>
|
||
<div class="xhz-current-value-data">
|
||
<div>当前PM10</div>
|
||
<p><span v-cloak>{{cityWeather.environment ? cityWeather.environment.pm10 : 0}}</span> ug/m³</p>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="xhz-device-data-min">
|
||
<div class="survey_content">
|
||
<div class="survey_content_img xhz-education_bgd">
|
||
<img src="/images/hj_wendu.png">
|
||
</div>
|
||
</div>
|
||
<div class="xhz-current-value-data">
|
||
<div>当前温度</div>
|
||
<p><span v-cloak>{{cityWeather.environment ? cityWeather.environment.temperature : 0}}</span> ℃</p>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="xhz-device-data-min">
|
||
<div class="survey_content">
|
||
<div class="survey_content_img xhz-education_bgd">
|
||
<img src="/images/hj_shidu.png">
|
||
</div>
|
||
</div>
|
||
<div class="xhz-current-value-data">
|
||
<div>当前湿度</div>
|
||
<p><span v-cloak>{{cityWeather.environment ? cityWeather.environment.humidity : 0}}</span> %RH</p>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
<module-one-1-1 label="告警分析">
|
||
<div style="padding-top: 30px;">
|
||
<el-row>
|
||
<el-col :span="8">
|
||
<div class="time-study-value">
|
||
<p>今日告警数</p>
|
||
<!--<div class="analyse-num"><span>{{warning.warnDeviceNum}}</span> 台</div>-->
|
||
<div class="analyse-num"><span v-cloak>{{showWarnDeviceNum}}</span> 条</div>
|
||
</div>
|
||
<div class="time-study-value">
|
||
<p>本周告警数</p>
|
||
<!--<div class="analyse-num"><span>{{warning.warnNum}}</span> 条</div>-->
|
||
<div class="analyse-num"><span v-cloak>{{showWarnNum}}</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">{{item.name}}</div>
|
||
<div class="glr-rate-value glr-rate-red-value"><span>{{item.value}}</span></div>
|
||
</div>
|
||
</div>
|
||
<div class="glr-login-number-max analyse-num-max" v-for="(item,i) in warningList" @click="onOpenPopup(i,item.warningCategory)">
|
||
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
|
||
<div class="glr-login-number analyse-login-numbe">
|
||
<div class="glr-login-number-sz"><img src="/images//text_red_spot.png" v-cloak>{{showWarningCategory(item.warningCategory)}}</div>
|
||
<div class="glr-rate-value glr-rate-red-value">
|
||
<span v-cloak>{{item.dayCount}}/{{item.weekCount}}</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
|
||
</module-one-1-1>
|
||
</el-col>
|
||
<!--<el-col :span="6">
|
||
<div class="analyse-max">
|
||
<div class="analyse-map">
|
||
<div class="analyse-title">
|
||
<div class="analyse-text">正在发生</div>
|
||
</div>
|
||
<div class="afoot-content" style="padding: 15px 15px 15px 15px;">
|
||
<div class="afoot-overflow" id="afootOverflow" @mouseout="listMinMouseout"
|
||
@mouseover="listMinMouseover">
|
||
<div class="afoot-con-for" v-for="item in warningData">
|
||
<div class="afoot-machinery-nam" v-cloak>{{item.equipment}}</div>
|
||
<div class="afoot-machinery-info">
|
||
<div class="afoot-machinery-img">
|
||
<el-image
|
||
style="width: 70px; height: 70px"
|
||
:src="item.images"
|
||
:preview-src-list="[item.images]" v-if="item.images">
|
||
</el-image>
|
||
<img :src="item.warningImages" v-else="item.warningImages">
|
||
<!– <img :src="item.warningImages" v-if="item.warningImages">–>
|
||
</div>
|
||
<div class="afoot-machinery-data">
|
||
<div class="afoot-machinery-state" v-cloak>{{item.warningContent}} -- {{item.warningName}}</div>
|
||
<div class="afoot-machinery-time" v-cloak>{{item.warningTime}}</div>
|
||
</div>
|
||
</div>
|
||
<div class="afoot-machinery-project" v-cloak>项目:{{item.projectName}}</div>
|
||
<div class="afoot-machinery-project" v-if="item.warningAddress != ''" v-cloak>
|
||
地址:{{item.warningAddress}}
|
||
</div>
|
||
<machinery-baidu-map :data="item"
|
||
v-if="item.latitude !=''"></machinery-baidu-map>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="analyse-min">
|
||
<div class="analyse-title">
|
||
<div class="analyse-text">报警分析</div>
|
||
</div>
|
||
<el-row>
|
||
<el-col :span="8">
|
||
<div class="time-study-value">
|
||
<p>今日报警数</p>
|
||
<!–<div class="analyse-num"><span>{{warning.warnDeviceNum}}</span> 台</div>–>
|
||
<div class="analyse-num"><span v-cloak>{{showWarnDeviceNum}}</span> 条</div>
|
||
</div>
|
||
<div class="time-study-value">
|
||
<p>本周报警数</p>
|
||
<!–<div class="analyse-num"><span>{{warning.warnNum}}</span> 条</div>–>
|
||
<div class="analyse-num"><span v-cloak>{{showWarnNum}}</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">{{item.name}}</div>
|
||
<div class="glr-rate-value glr-rate-red-value"><span>{{item.value}}</span></div>
|
||
</div>
|
||
</div> –>
|
||
<div class="glr-login-number-max analyse-num-max" v-for="(item,i) in warningList" @click="onOpenPopup(i,item.warningCategory)">
|
||
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
|
||
<div class="glr-login-number analyse-login-numbe">
|
||
<div class="glr-login-number-sz"><img src="/images//text_red_spot.png" v-cloak>{{item.warningCategory}}</div>
|
||
<div class="glr-rate-value glr-rate-red-value">
|
||
<span v-cloak>{{item.dayCount}}/{{item.weekCount}}</span></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
</div>
|
||
</el-col>-->
|
||
|
||
</el-row>
|
||
</div>
|
||
</div>
|
||
|
||
<transition name="el-zoom-in-top">
|
||
<div class="popup-project-introduction-max" v-show="popupShow" style="display: none"
|
||
@click="closeProjectIntroductionAll">
|
||
<div class="popup-project-introduction-min">
|
||
<div class="popup-project-introduction-con">
|
||
<div class="popup-project-introduction-title">
|
||
<div>项目简介</div>
|
||
<div class="popup-project-introduction-close" @click="closeProjectIntroduction">×</div>
|
||
</div>
|
||
<div class="popup-project-introduction-details">
|
||
<div class="popup-project-introduction-info">
|
||
<div v-if="projectOverview.introduce != ''" v-html="projectOverview.introduce"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</transition>
|
||
|
||
<transition name="el-zoom-in-top">
|
||
<div class="popup-project-introduction-max" v-show="personnelShow" style="display: none"
|
||
@click="closeProjectIntroductionAll">
|
||
<div class="popup-project-introduction-min">
|
||
<div class="popup-project-introduction-con">
|
||
<div class="popup-project-introduction-title">
|
||
<div v-cloak>{{labourTableTitle}}</div>
|
||
<div class="popup-project-introduction-close" @click="closeProjectIntroduction">×</div>
|
||
</div>
|
||
<div class="popup-project-introduction-details">
|
||
<div class="popup-project-introduction-info">
|
||
<el-table :data="labourTableData.data" style="width: 100%" height="500"
|
||
:row-style="rowStyle" @cell-mouse-enter="tableMouseEnter"
|
||
@cell-mouse-leave="tableMouseLeave" ref="tableRoll">
|
||
<el-table-column align="center" :label="item.label" :width="item.width"
|
||
v-for="item in labourTableData.label">
|
||
<template slot-scope="scope">
|
||
<el-image @click="imgAmplify(scope.row.userphoto)"
|
||
style="width: 50px; height: 50px" :src="scope.row.userphoto"
|
||
fit="cover" :preview-src-list="srcList"
|
||
v-if="item.data == 'userphoto'"></el-image>
|
||
<div v-if="item.data == 'idcardnum'" class="" v-cloak>
|
||
{{scope.row[item.data].replace(/^(.{6})(?:\d+)(.{4})$/,"\$1****\$2")}}
|
||
</div>
|
||
<div v-if="item.data != 'userphoto' && item.data != 'idcardnum'" class="" v-cloak>
|
||
{{scope.row[item.data]}}
|
||
</div>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</transition>
|
||
|
||
|
||
<transition name="el-zoom-in-top">
|
||
<div class="popup-project-introduction-max" v-show="warningShow" style="display: none"
|
||
@click="closeProjectIntroductionAll">
|
||
<div class="popup-project-introduction-min">
|
||
<div class="popup-project-introduction-con">
|
||
<div class="popup-project-introduction-title">
|
||
<div>告警列表</div>
|
||
<div class="popup-project-introduction-close" @click="closeProjectIntroduction">×</div>
|
||
</div>
|
||
<div class="popup-project-introduction-details">
|
||
<div class="sjk-chart-line-title sjk-chart-line-title-border" >
|
||
<div v-for="(item,i) in warningList" :class="warningNav==i?'active':''" @click="onWarningNavBtn(i,item.warningCategory)">{{showWarningCategory(item.warningCategory)}}</div>
|
||
</div>
|
||
<div class="warning-popup-project-introduction-info" @scroll="scrollEventFn" ref="mianscroll">
|
||
<div class="warning-popup-project-for" v-for="item in warningListData">
|
||
<el-row>
|
||
<el-col :span="16">
|
||
<div class="warning-popup-project-data">
|
||
<div class="warning-popup-project-data-left">
|
||
<el-image
|
||
style="width: 60px; height: 60px"
|
||
:src="item.images"
|
||
:preview-src-list="[item.images]" v-if="item.images">
|
||
</el-image>
|
||
<img :src="item.warningImages" v-else="item.warningImages" width="60" height="60">
|
||
<div class="warning-popup-project-data-left-value">
|
||
<div class="warning-popup-color-blue" v-html="item.equipment"></div>
|
||
<div v-html="item.warning_time"></div>
|
||
</div>
|
||
</div>
|
||
<div class="warning-popup-project-data-right">
|
||
<div v-if="item.warningValue != ''">实际值:<span class="warning-popup-color-red" v-html="item.warningValue"></span></div>
|
||
<!--<div>预警值:<span class="warning-popup-color-blue" v-html="item.warningValue"></span></div>-->
|
||
</div>
|
||
</div>
|
||
<div class="warning-popup-project-data">
|
||
<div class="warning-popup-project-data-right">
|
||
<div>告警类型:<span class="warning-popup-color-silvery" v-cloak>{{item.warningName.replaceAll("预警","告警")}}</span></div>
|
||
<div>整改时间:<span class="warning-popup-color-blue"
|
||
v-html="item.processedTime==''?item.afootTime:item.processedTime"></span></div>
|
||
</div>
|
||
<div class="warning-popup-project-data-right">
|
||
<div style="width: 200%;">告警内容:<span class="warning-popup-color-silvery" v-cloak>{{item.warningContent.replaceAll("报警","告警")}}</span></div>
|
||
<div>整改人:<span class="warning-popup-color-blue"
|
||
v-html="item.processedUser==''?item.afootUser:item.processedUser"></span></div>
|
||
</div>
|
||
</div>
|
||
<div class="warning-popup-project-data">
|
||
<div class="warning-popup-project-data-right">
|
||
<div>告警时间:<span class="warning-popup-color-silvery" v-html="item.warningTime"></span></div>
|
||
</div><div class="warning-popup-project-data-right">
|
||
<div>整改方案:<span class="warning-popup-color-blue"
|
||
v-html="item.processedUser==''?item.afootUser:item.processedUser"></span></div>
|
||
</div>
|
||
</div>
|
||
<!-- <div class="warning-popup-color">整改方案:<span class="warning-popup-color-blue" v-html="item.processedRemarks==''?item.afootRemarks:item.processedRemarks"></span></div>-->
|
||
</el-col>
|
||
<el-col :span="8">
|
||
<machinery-baidu-map :data="item" :height="180" v-if="item.latitude !=''"></machinery-baidu-map>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</transition>
|
||
|
||
</div>
|
||
</body>
|
||
<script src="https://cdn.makalu.cc/js/moment/2.24.0/moment.min.js"></script>
|
||
<script type="text/javascript" src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=5M76qMCiVjSG7bGOTcYmZdg0MQinsKve"></script>
|
||
<script src="https://cdn.makalu.cc/js/moment/2.24.0/moment.min.js"></script>
|
||
<script src="https://cdn.makalu.cc/js/vue/vue.js"></script>
|
||
<script src="https://cdn.makalu.cc/js/element-ui/index.js"></script>
|
||
<script src="/js/jquery-3.0.0.min.js"></script>
|
||
<script src="/js/echarts.js"></script>
|
||
|
||
<!--module-->
|
||
<script src="/components/module/module-one-1-1.js"></script>
|
||
<script src="/components/module/module-one-1-2.js"></script>
|
||
<!--组件-->
|
||
<script src="/components/background_video.js"></script>
|
||
<script src="/components/header.js"></script>
|
||
<script src="/components/header-btn.js"></script>
|
||
<script src="/components/staff-survey-chart.js"></script>
|
||
<script src="/components/machinery-baidu-map.js"></script>
|
||
<script src="/components/people-number.js"></script>
|
||
|
||
|
||
<!--放大组件-->
|
||
<script src="/components/amplify/xiangmugaikuang/amplify-xmkg.js"></script>
|
||
<script src="/components/amplify/xiangmugaikuang/amplify-lwrygk.js"></script>
|
||
<script src="/components/amplify/xiangmugaikuang/amplify-sbgk.js"></script>
|
||
|
||
<!-- 请求依赖 -->
|
||
<script src="https://cdn.makalu.cc/js/axios/axios.min.js"></script>
|
||
<script>
|
||
let requestUrl = "https://jzgj.crfeb.com.cn/largeScreen/digitalConstruction/";
|
||
let deptId = 131;
|
||
var vm = new Vue({
|
||
el: '#app',
|
||
data() {
|
||
return {
|
||
workSafetyTimeTimeout: undefined,
|
||
cityWeather:{},
|
||
workSafetyNumber:0,
|
||
workSafetyTime:"00时00分00秒",
|
||
//项目概况
|
||
phone_show:'',
|
||
buildUnit: '',
|
||
buildUnitManagerName: '',
|
||
buildUnitManagerPhone: '',
|
||
designUnit: '',
|
||
designUnitManagerName: '',
|
||
designUnitManagerPhone: '',
|
||
allUnit: '',
|
||
allUnitManagerName: '',
|
||
allUnitManagerPhone: '',
|
||
supervisorUnit: '',
|
||
supervisorUnitManagerName: '',
|
||
supervisorUnitManagerPhone: '',
|
||
testingUnit: '',
|
||
testingUnitManagerName: '',
|
||
testingUnitManagerPhone: '',
|
||
surveyUnit: '',
|
||
surveyUnitManagerName: '',
|
||
surveyUnitManagerPhone: '',
|
||
top: 0,
|
||
introduceInterval: undefined,
|
||
show: true,
|
||
popupShow: false,
|
||
//项目信息
|
||
projectOverview: {
|
||
introduce: '',
|
||
engineering: '',
|
||
contractMoney: '',
|
||
allArea: '',
|
||
aerialView: '',
|
||
planStartTime: '',
|
||
planEndDate: '',
|
||
actualStartDate: '',
|
||
allMoney: 0,
|
||
contractMoney: 0,
|
||
kaileiMoney: 0,
|
||
newCarouselImg: [],
|
||
newCarouselVideo: [],
|
||
},
|
||
//造价
|
||
costIndex: 0,
|
||
direction: 'right',
|
||
costInterval: undefined,
|
||
//劳务人员
|
||
infoNav: 1,
|
||
staffText: '今日出勤',
|
||
surveyUrl: '/images/survey_icon_5.png',
|
||
laborPersonnelData: [
|
||
// { text:"职工", value:52 },
|
||
// { text:"劳务派遣", value:45 },
|
||
// { text:"其他", value:20 },
|
||
],
|
||
personnelShow: false,
|
||
lwDataTotal: 0,
|
||
labourTableTitle: '',
|
||
labourTableData: {
|
||
label: [],
|
||
data: []
|
||
},
|
||
srcList: [],
|
||
tableInterval: '',
|
||
rowStyle: {
|
||
color: '#B6CFEF',
|
||
fontSize: '12px',
|
||
height: '32px'
|
||
},
|
||
//设备概况
|
||
overview: 0,
|
||
overviewInterval: '',
|
||
surveyUrlSb: '/images/survey_icon_1.png',
|
||
showOverviewLabel: '设备数量',
|
||
showOverviewData: {},
|
||
//正在发生
|
||
warningData: [],
|
||
|
||
//重大节点预期预警
|
||
maxWidth: 0,
|
||
minWidth: 0,
|
||
timeAxisData: [],
|
||
dangerName: [],
|
||
activeNum: 0,
|
||
//正在发生
|
||
warningInterval: undefined,
|
||
forIndex: 0,
|
||
//预警类型
|
||
warningType: [],
|
||
warning: {},
|
||
warningList: [],
|
||
warningTypeInterval: undefined,
|
||
warningTypeIndex: 0,
|
||
projectId: '',
|
||
projectName: '',
|
||
showWarnDeviceNum:'',
|
||
showWarnNum:'',
|
||
|
||
|
||
//模块放大
|
||
amplifyShow: false,
|
||
|
||
//预警列表弹窗
|
||
warningShow:false,
|
||
warningNav:0,
|
||
warningListData:[],
|
||
pageNo:1,
|
||
pageFlag:true,
|
||
warningTypeId:'',
|
||
flag:true,
|
||
labourTableTitle:""
|
||
}
|
||
},
|
||
// computed: {
|
||
// showWarnNum() {
|
||
// let num = 0
|
||
// for (let war of this.warningList) {
|
||
// num += war.warnNum
|
||
// }
|
||
// return num
|
||
// },
|
||
// showWarnDeviceNum() {
|
||
// let num = 0
|
||
// for (let war of this.warningList) {
|
||
// num += war.warnDeviceNum
|
||
// }
|
||
// return num
|
||
// },
|
||
// showWarningData() {
|
||
// let arr = []
|
||
// for (let war of this.warningList) {
|
||
// for (let data of war.warningData) {
|
||
// arr.push(data)
|
||
// }
|
||
// }
|
||
// return arr
|
||
// }
|
||
// },
|
||
created() {
|
||
this.init()
|
||
},
|
||
mounted() {
|
||
|
||
},
|
||
methods: {
|
||
init() {
|
||
this.getCityWeather()
|
||
chooseMenu = {
|
||
mainMenu: 0,
|
||
itemMenu: 0,
|
||
}
|
||
localStorage.setItem("chooseMenu", JSON.stringify(chooseMenu));
|
||
//项目基本信息
|
||
this.tableProject(JSON.parse(localStorage.getItem("data")).id)
|
||
//劳务人员概况
|
||
this.getLWData(this.infoNav);
|
||
// this.introduceInterval = setInterval(this.timer,50);
|
||
//设备概况
|
||
this.getOverviewData();
|
||
//设备概况点击事件定时器
|
||
this.overviewInterval = setInterval(this.overviewClick, 5000);
|
||
//重大节点预期预警
|
||
//this.getTimeAxisData(JSON.parse(localStorage.getItem("data")).id)
|
||
//项目里程碑
|
||
this.getProjectTimeAxisData(JSON.parse(localStorage.getItem("data")).id)
|
||
//报警分析
|
||
this.getProjectWarningTypeList();
|
||
this.getProjectWarningList("","");
|
||
|
||
// this.getWarnAnalysis();
|
||
// this.gainBYSWarning()
|
||
// this.gainAIWarningData()
|
||
// this.getHJWarningData()
|
||
//项目概况
|
||
this.tableProject(JSON.parse(localStorage.getItem("data")).id)
|
||
//正在发生 定时器
|
||
this.warningInterval = setInterval(this.automaticRoll, 5000);
|
||
//预警类型 定时器
|
||
this.warningTypeInterval = setInterval(this.automaticRollType, 5000);
|
||
// 造价 定时器
|
||
this.costInterval = setInterval(this.manufacturingCostRoll,5000);
|
||
|
||
//劳务人员概况弹窗 自动滚动
|
||
this.tableInterval = setInterval(this.tableScroll, 50);
|
||
let that = this
|
||
this.workSafetyTimeTimeout = setInterval(function(){
|
||
that.workSafetyTime = moment().format("HH时mm分ss秒")
|
||
},1000)
|
||
},
|
||
//项目概况
|
||
//查询项目基本信息
|
||
tableProject(projectId) {
|
||
axios({
|
||
method: 'post',
|
||
url: "/api/project/info",
|
||
data: {
|
||
"project_id": projectId
|
||
}
|
||
}).then(res => {
|
||
console.log(res)
|
||
this.projectId = projectId;
|
||
this.phone_show = res.data.data.phone_show
|
||
this.buildUnit = res.data.data.build_unit
|
||
this.buildUnitManagerName = res.data.data.build_unit_manager_name
|
||
this.buildUnitManagerPhone = res.data.data.build_unit_manager_phone
|
||
this.designUnit = res.data.data.design_unit
|
||
this.designUnitManagerName = res.data.data.design_unit_manager_name
|
||
this.designUnitManagerPhone = res.data.data.design_unit_manager_phone
|
||
this.allUnit = res.data.data.all_unit
|
||
this.allUnitManagerName = res.data.data.all_unit_manager_name
|
||
this.allUnitManagerPhone = res.data.data.all_unit_manager_phone
|
||
this.supervisorUnit = res.data.data.supervisor_unit
|
||
this.supervisorUnitManagerName = res.data.data.supervisor_unit_manager_name
|
||
this.supervisorUnitManagerPhone = res.data.data.supervisor_unit_manager_phone
|
||
this.testingUnit = res.data.data.testing_unit
|
||
this.testingUnitManagerName = res.data.data.testing_unit_manager_name
|
||
this.testingUnitManagerPhone = res.data.data.testing_unit_manager_phone
|
||
this.surveyUnit = res.data.data.survey_unit
|
||
this.surveyUnitManagerName = res.data.data.survey_unit_manager_name
|
||
this.surveyUnitManagerPhone = res.data.data.survey_unit_manager_phone
|
||
this.projectOverview.allArea = res.data.data.all_area;
|
||
this.projectOverview.allMoney = res.data.data.all_money;
|
||
this.projectOverview.contractMoney = res.data.data.contract_monery;
|
||
this.projectOverview.yearMoney = res.data.data.year_money;
|
||
this.projectOverview.monthMoney = res.data.data.month_money;
|
||
this.projectOverview.kaileiMoney = res.data.data.kailei_money;
|
||
this.projectOverview.aerialView = res.data.data.middle_img;
|
||
this.projectOverview.introduce = res.data.data.project_overview;
|
||
this.projectOverview.planStartTime = res.data.data.plan_start_date;
|
||
this.projectOverview.planEndDate = res.data.data.plan_end_date;
|
||
this.projectOverview.actualStartDate = res.data.data.actual_start_date;
|
||
this.projectOverview.floorArea = res.data.data.floorArea;
|
||
let TempNewCarouselVideo = []
|
||
let TempNewCarouselImg = []
|
||
//展示项目级轮播图
|
||
res.data.data.fileUrl.split(",").forEach(item => {
|
||
let type = item.substr(item.lastIndexOf(".") + 1)
|
||
if (type != 'jpg' && type != "png" && type != 'jpeg') {
|
||
TempNewCarouselVideo.push({url: item})
|
||
} else {
|
||
TempNewCarouselImg.push({url: item})
|
||
}
|
||
})
|
||
this.projectOverview.newCarouselImg = TempNewCarouselImg
|
||
this.projectOverview.newCarouselVideo = TempNewCarouselVideo
|
||
|
||
if(this.projectId == "196"){
|
||
this.workSafetyNumber = 475
|
||
|
||
}else{
|
||
this.workSafetyNumber = moment().diff(moment(this.projectOverview.actualStartDate), 'days')
|
||
}
|
||
}).catch(err => {
|
||
|
||
})
|
||
},
|
||
//项目介绍弹窗
|
||
projectIntroduction() {
|
||
this.popupShow = true
|
||
},
|
||
closeProjectIntroduction() {
|
||
this.popupShow = false
|
||
this.personnelShow = false
|
||
this.warningShow = false
|
||
},
|
||
closeProjectIntroductionAll(e) {
|
||
if (e.target.className == 'popup-project-introduction-max') {
|
||
this.popupShow = false
|
||
this.personnelShow = false
|
||
this.warningShow = false
|
||
}
|
||
},
|
||
|
||
//打开预警类型弹窗
|
||
onOpenPopup(index,warningTypeId){
|
||
this.warningShow = true
|
||
this.warningNav = index
|
||
this.warningTypeId = warningTypeId;
|
||
this.pageNo = 1;
|
||
this.warningListData = [];
|
||
this.getProjectWarningList(warningTypeId,1);
|
||
},
|
||
onWarningNavBtn(n,warningTypeId){
|
||
this.warningNav = n;
|
||
this.pageNo = 1;
|
||
this.warningTypeId = warningTypeId;
|
||
this.warningListData = [];
|
||
this.getProjectWarningList(warningTypeId,1);
|
||
},
|
||
//滚动分页
|
||
scrollEventFn(e){
|
||
if (e.srcElement.scrollTop + e.srcElement.clientHeight > e.srcElement.scrollHeight - 5 && this.flag ) {
|
||
console.log("倒低了");
|
||
this.flag = false;
|
||
this.pageNo = this.pageNo+1;
|
||
if(this.pageFlag){
|
||
this.getProjectWarningList(this.warningTypeId,this.pageNo);
|
||
}
|
||
}
|
||
|
||
},
|
||
|
||
//劳务人员概况
|
||
getLWData(infoNav) {
|
||
this.lwLoading = true;
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getAllUserData?token=" + JSON.parse(localStorage.getItem("data")).smz_token + "&deptId=131&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id + "&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id, {}).then(res => {
|
||
this.lwLoading = false;
|
||
var laborPersonnelData = [];
|
||
if (infoNav == 0) {
|
||
laborPersonnelData.push({text: "特种作业人员", value: res.data.whiteUserInfo.specialTotal, type: 2})
|
||
laborPersonnelData.push({text: "劳务人员(不含特种人员)", value: res.data.whiteUserInfo.unSpecialTotal, type: 1})
|
||
laborPersonnelData.push({text: "管理人员", value: res.data.whiteUserInfo.glrs, type: 0})
|
||
this.lwDataTotal = parseInt(res.data.whiteUserInfo.specialTotal)+parseInt(res.data.whiteUserInfo.unSpecialTotal)+parseInt(res.data.whiteUserInfo.glrs)
|
||
} else {
|
||
laborPersonnelData.push({text: "特种作业人员", value: res.data.cqUserInfo.specialTotal, type: 2})
|
||
laborPersonnelData.push({text: "劳务人员(不含特种人员)", value: res.data.cqUserInfo.unSpecialTotal, type: 1})
|
||
laborPersonnelData.push({text: "管理人员", value: res.data.cqUserInfo.glrs, type: 0})
|
||
this.lwDataTotal = res.data.rcrs
|
||
}
|
||
this.ljaqjy = res.data.jspxrs;
|
||
var safetyEducationData = [];
|
||
var safetyEducationData2 = [];
|
||
safetyEducationData.push({
|
||
text: "培训通过率",
|
||
value: (res.data.jspxrs * res.data.pxtgl / 100).toFixed(0)
|
||
});
|
||
safetyEducationData2.push({text: "接受培训率", value: res.data.jspxrs});
|
||
this.safetyEducationData = safetyEducationData;
|
||
this.safetyEducationData2 = safetyEducationData2;
|
||
this.laborPersonnelData = laborPersonnelData;
|
||
this.pxTotal = res.data.jspxrs;
|
||
}).catch(err => {
|
||
})
|
||
|
||
},
|
||
//劳务人员概况
|
||
onWarningInfoNav(n, text) {
|
||
this.infoNav = n
|
||
this.staffText = text
|
||
this.getLWData(this.infoNav);
|
||
if (n == 0) {
|
||
this.surveyUrl = '../../images/survey_icon_4.png'
|
||
} else {
|
||
this.surveyUrl = '../../images/survey_icon_5.png'
|
||
}
|
||
},
|
||
clickBarPersonnel(index) {// 2 管理人员 1 劳务人员 0 特种作业人员
|
||
this.personnelShow = true
|
||
if (this.infoNav == 0) {
|
||
if (index == 2) {
|
||
this.labourTableTitle = '管理人员'
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getUnCqUserList?token="+JSON.parse(localStorage.getItem("data")).smz_token+"&maxDay=6&team_type=2&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id, {}).then(res => {
|
||
this.labourTableData.label = [
|
||
{
|
||
label: '照片',
|
||
width: '',
|
||
data: 'userphoto'
|
||
},
|
||
{
|
||
label: '姓名',
|
||
width: '80',
|
||
data: 'name'
|
||
},
|
||
{
|
||
label: '身份证号',
|
||
width: '',
|
||
data: 'idcardnum'
|
||
},
|
||
{
|
||
label: '年龄',
|
||
width: '80',
|
||
data: 'age'
|
||
},
|
||
{
|
||
label:'劳务公司',
|
||
width:'',
|
||
data:'enterprise_name'
|
||
},
|
||
/*{
|
||
label: '职务',
|
||
width: '',
|
||
data: 'post'
|
||
},
|
||
{
|
||
label: '职称',
|
||
width: '',
|
||
data: 'titles'
|
||
},*/
|
||
];
|
||
|
||
if (res.data.state == 'OK') {
|
||
this.labourTableData.data = res.data.data;
|
||
} else {
|
||
this.labourTableData.data = []
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
} else if (index == 1) {
|
||
this.labourTableTitle = '劳务人员(不含特种人员)'
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getUnCqUserList?token="+JSON.parse(localStorage.getItem("data")).smz_token+"&maxDay=6&special_flag=2&team_type=1&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id, {}).then(res => {
|
||
this.labourTableData.label = [
|
||
{
|
||
label: '照片',
|
||
width: '',
|
||
data: 'userphoto'
|
||
},
|
||
{
|
||
label: '姓名',
|
||
width: '80',
|
||
data: 'name'
|
||
},
|
||
{
|
||
label: '身份证号',
|
||
width: '',
|
||
data: 'idcardnum'
|
||
},
|
||
{
|
||
label: '年龄',
|
||
width: '80',
|
||
data: 'age'
|
||
},
|
||
{
|
||
label:'劳务公司',
|
||
width:'',
|
||
data:'enterprise_name'
|
||
},
|
||
{
|
||
label: '工种',
|
||
width: '',
|
||
data: 'work_type'
|
||
},
|
||
];
|
||
if (res.data.state == 'OK') {
|
||
this.labourTableData.data = res.data.data;
|
||
} else {
|
||
this.labourTableData.data = []
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
} else if (index == 0) {
|
||
this.labourTableTitle = '特种作业人员'
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getUnCqUserList?token="+JSON.parse(localStorage.getItem("data")).smz_token+"&maxDay=6&special_flag=1&team_type=1&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id, {}).then(res => {
|
||
this.labourTableData.label = [
|
||
{
|
||
label: '照片',
|
||
width: '',
|
||
data: 'userphoto'
|
||
},
|
||
{
|
||
label: '姓名',
|
||
width: '80',
|
||
data: 'name'
|
||
},
|
||
{
|
||
label: '身份证号',
|
||
width: '',
|
||
data: 'idcardnum'
|
||
},
|
||
{
|
||
label: '年龄',
|
||
width: '80',
|
||
data: 'age'
|
||
},
|
||
{
|
||
label:'劳务公司',
|
||
width:'',
|
||
data:'enterprise_name'
|
||
},
|
||
{
|
||
label: '工种',
|
||
width: '',
|
||
data: 'work_type'
|
||
},
|
||
];
|
||
if (res.data.state == 'OK') {
|
||
this.labourTableData.data = res.data.data;
|
||
} else {
|
||
this.labourTableData.data = []
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
}
|
||
|
||
} else {
|
||
if (index == 2) {
|
||
this.labourTableTitle = '管理人员'
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getCqUserInfoList?token=" + JSON.parse(localStorage.getItem("data")).smz_token + "&team_type=2&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id, {}).then(res => {
|
||
this.labourTableData.label = [
|
||
{
|
||
label: '照片',
|
||
width: '',
|
||
data: 'userphoto'
|
||
},
|
||
{
|
||
label: '姓名',
|
||
width: '80',
|
||
data: 'name'
|
||
},
|
||
{
|
||
label: '身份证号',
|
||
width: '',
|
||
data: 'idcardnum'
|
||
},
|
||
{
|
||
label: '年龄',
|
||
width: '80',
|
||
data: 'age'
|
||
},
|
||
{
|
||
label:'劳务公司',
|
||
width:'',
|
||
data:'enterprise_name'
|
||
},
|
||
/* {
|
||
label: '职务',
|
||
width: '',
|
||
data: 'post'
|
||
},
|
||
{
|
||
label: '职称',
|
||
width: '',
|
||
data: 'titles'
|
||
},*/
|
||
];
|
||
|
||
if (res.data.state == 'OK') {
|
||
this.labourTableData.data = res.data.data;
|
||
} else {
|
||
this.labourTableData.data = []
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
} else if (index == 1) {
|
||
this.labourTableTitle = '劳务人员(不含特种人员)'
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getCqUserInfoList?token=" + JSON.parse(localStorage.getItem("data")).smz_token + "&team_type=1&special_flag=2&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id, {}).then(res => {
|
||
this.labourTableData.label = [
|
||
{
|
||
label: '照片',
|
||
width: '',
|
||
data: 'userphoto'
|
||
},
|
||
{
|
||
label: '姓名',
|
||
width: '80',
|
||
data: 'name'
|
||
},
|
||
{
|
||
label: '身份证号',
|
||
width: '',
|
||
data: 'idcardnum'
|
||
},
|
||
{
|
||
label: '年龄',
|
||
width: '80',
|
||
data: 'age'
|
||
},
|
||
{
|
||
label:'劳务公司',
|
||
width:'',
|
||
data:'enterprise_name'
|
||
},
|
||
{
|
||
label: '工种',
|
||
width: '',
|
||
data: 'work_type'
|
||
},
|
||
];
|
||
if (res.data.state == 'OK') {
|
||
this.labourTableData.data = res.data.data;
|
||
} else {
|
||
this.labourTableData.data = []
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
} else if (index == 0) {
|
||
this.labourTableTitle = '特种作业人员'
|
||
axios.post("https://smz.makalu.cc/mkl/screenApi/getCqUserInfoList?token=" + JSON.parse(localStorage.getItem("data")).smz_token + "&team_type=1&special_flag=1&deptId=131&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id, {}).then(res => {
|
||
this.labourTableData.label = [
|
||
{
|
||
label: '照片',
|
||
width: '',
|
||
data: 'userphoto'
|
||
},
|
||
{
|
||
label: '姓名',
|
||
width: '80',
|
||
data: 'name'
|
||
},
|
||
{
|
||
label: '身份证号',
|
||
width: '',
|
||
data: 'idcardnum'
|
||
},
|
||
{
|
||
label: '年龄',
|
||
width: '80',
|
||
data: 'age'
|
||
},
|
||
{
|
||
label:'劳务公司',
|
||
width:'',
|
||
data:'enterprise_name'
|
||
},
|
||
{
|
||
label: '工种',
|
||
width: '',
|
||
data: 'work_type'
|
||
},
|
||
];
|
||
if (res.data.state == 'OK') {
|
||
this.labourTableData.data = res.data.data;
|
||
} else {
|
||
this.labourTableData.data = []
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
}
|
||
}
|
||
},
|
||
imgAmplify(url) {
|
||
this.srcList.push(url)
|
||
},
|
||
|
||
|
||
//设备概况数据
|
||
getOverviewData() {
|
||
axios.post(requestUrl + "getEquipmentOverview?deptId=" + deptId + "&projectId=" + JSON.parse(localStorage.getItem("data")).jzgj + "&typtProjectId=" + JSON.parse(localStorage.getItem("data")).id + "&typtDeptId=" + JSON.parse(localStorage.getItem("data")).dept_id, {}).then(res => {
|
||
this.overviewData = [res.data.data.count, res.data.data.bind, res.data.data.monitor];
|
||
this.showOverviewData = this.overviewData[0];
|
||
}).catch(err => {
|
||
})
|
||
},
|
||
//设备概况点击事件定时器方法
|
||
overviewClick() {
|
||
if (this.overview < 2) {
|
||
this.overview = this.overview + 1
|
||
} else {
|
||
this.overview = 0
|
||
}
|
||
this.showOverviewData = this.overviewData[this.overview];
|
||
if (this.overview == 0) {
|
||
this.showOverviewLabel = '设备数量'
|
||
this.surveyUrlSb = '/images/survey_icon_1.png'
|
||
} else if (this.overview == 1) {
|
||
this.showOverviewLabel = '绑定数量'
|
||
this.surveyUrlSb = '/images/survey_icon_2.png'
|
||
} else {
|
||
this.showOverviewLabel = '监测数量'
|
||
this.surveyUrlSb = '/images/survey_icon_3.png'
|
||
}
|
||
},
|
||
//设备概况点击事件
|
||
onClickoOverview(n) {
|
||
this.overview = n
|
||
this.showOverviewData = this.overviewData[this.overview];
|
||
if (this.overview == 0) {
|
||
this.showOverviewLabel = '设备数量'
|
||
this.surveyUrlSb = '/images/survey_icon_1.png'
|
||
} else if (this.overview == 1) {
|
||
this.showOverviewLabel = '绑定数量'
|
||
this.surveyUrlSb = '/images/survey_icon_2.png'
|
||
} else {
|
||
this.showOverviewLabel = '监测数量'
|
||
this.surveyUrlSb = '/images/survey_icon_3.png'
|
||
}
|
||
},
|
||
//本周时间
|
||
getWeekStartAndEnd(){
|
||
let data = new Date() //当前日期
|
||
let year = Number(data.getFullYear());//当前年
|
||
let month = Number(data.getMonth())+1;
|
||
let nowMonth =Number(data.getMonth()); //当前月
|
||
let day = Number(data.getDate()); //当天
|
||
//计算某日是本月第几周
|
||
let mydate=new Date(year,month-1,day);
|
||
let weekday=mydate.getDay(); //获取该日是星期几,0代表星期日//今天本周的第几天
|
||
if(weekday == 0){
|
||
weekday = 7;
|
||
}
|
||
|
||
//本周的开始时间
|
||
let startDate = new Date(year, nowMonth, day + 1 - weekday);
|
||
let startyear = startDate.getFullYear();
|
||
let startmonth = (startDate.getMonth()+1) < 10 ? '0'+(startDate.getMonth()+1): startDate.getMonth()+1;
|
||
let startday = startDate.getDate() < 10 ? '0'+startDate.getDate() :startDate.getDate();
|
||
let startTime =startyear+'-'+startmonth+'-'+startday
|
||
|
||
//本周的结束时间
|
||
let endDate = new Date(year, nowMonth, day + 7 - weekday);
|
||
let sendyear = endDate.getFullYear();
|
||
let endmonth = (endDate.getMonth()+1) < 10 ? '0'+(endDate.getMonth()+1): endDate.getMonth()+1;
|
||
let endday = endDate.getDate() < 10 ? '0'+endDate.getDate() :endDate.getDate();
|
||
let endTime =sendyear+'-'+endmonth+'-'+endday
|
||
return {"startTime":startTime,"endTime":endTime};
|
||
},
|
||
//报警分析
|
||
getProjectWarningTypeList(){
|
||
let timeParam = this.getWeekStartAndEnd();
|
||
console.log(timeParam);
|
||
axios.get("/api/warning/getProjectWarningTypeList",
|
||
{
|
||
params: {
|
||
"deptId": 131,
|
||
"projectId": JSON.parse(localStorage.getItem("data")).id,
|
||
"startDate": timeParam.startTime,
|
||
"endDate": timeParam.endTime
|
||
}
|
||
}
|
||
).then(res => {
|
||
this.warningList = res.data.list;
|
||
this.showWarnNum = res.data.weekNum;
|
||
}).catch(err => {
|
||
})
|
||
},
|
||
getProjectWarningList(warningTypeId,pageNo){
|
||
axios.get("/api/warning/getProjectWarningList",
|
||
{
|
||
params: {
|
||
"deptId": 131,
|
||
"projectId": JSON.parse(localStorage.getItem("data")).id,
|
||
"warningType":warningTypeId,
|
||
"pageNo":pageNo ==""?null:(pageNo - 1) * 10
|
||
}
|
||
}
|
||
).then(res => {
|
||
if(warningTypeId == ""){
|
||
this.showWarnDeviceNum = res.data.length;
|
||
this.warningData = res.data;
|
||
}else{
|
||
for(let i = 0;i<res.data.length;i++){
|
||
this.warningListData.push(res.data[i]);
|
||
}
|
||
this.pageFlag = res.data.length < 10?false:true;
|
||
this.flag = res.data.length>0?true:false;
|
||
}
|
||
|
||
}).catch(err => {
|
||
})
|
||
},
|
||
getWarnAnalysis() {
|
||
//机械预警
|
||
axios.get("https://jzgj.crfeb.com.cn/largeScreen/digitalConstruction/getWarnAnalysis",
|
||
{
|
||
params: {
|
||
"deptId": 131,
|
||
"projectId": JSON.parse(localStorage.getItem("data")).jzgj,
|
||
"typtProjectId": JSON.parse(localStorage.getItem("data")).dept_id
|
||
}
|
||
}
|
||
).then(res => {
|
||
let data = res.data.data;
|
||
this.warningType = data.type;
|
||
this.warning = data.count;
|
||
data.list.map(x => {
|
||
x.images = "/images/warning_jixie.png"
|
||
})
|
||
this.warningData = data.list;
|
||
if (data.list.length > 0) {
|
||
this.warningList.push({
|
||
type: "机械预警",
|
||
warningData: data.list,
|
||
warnDeviceNum: 0,
|
||
warnNum: data.list.length
|
||
})
|
||
}
|
||
|
||
this.getDeviceWarnData();
|
||
|
||
}).catch(err => {
|
||
})
|
||
},
|
||
getDeviceWarnData() {
|
||
//安全预警
|
||
axios.get("https://aqzg.makalu.cc/api/statistics/getDeviceWarnData", {
|
||
params: {
|
||
"deptId": 131,
|
||
"projectId": JSON.parse(localStorage.getItem("data")).aqzg
|
||
}
|
||
}
|
||
).then(res => {
|
||
let objArray = [];
|
||
for (let i = 0; i < res.data.length; i++) {
|
||
let obj = {
|
||
"images": "/images/warning_jixie.png",
|
||
"address": "",
|
||
"latitude": "",
|
||
"equipment": res.data[i].towerName,
|
||
"time": res.data[i].warn_time,
|
||
"projectName": res.data[i].project_abbreviation,
|
||
"content": res.data[i].warn_context,
|
||
"longitude": ""
|
||
}
|
||
objArray.push(obj);
|
||
}
|
||
this.warning = {
|
||
warnDeviceNum: parseInt(this.warning.warnDeviceNum) + parseInt(res.data.length),
|
||
warnNum: this.warning.warnNum
|
||
};
|
||
|
||
let tmpObj = {
|
||
type: "安全预警",
|
||
warnDeviceNum: parseInt(this.warning.warnDeviceNum) + parseInt(res.data.length),
|
||
warnNum: this.warning.warnNum
|
||
}
|
||
this.getDeviceWarnWeekData(tmpObj);
|
||
|
||
for (let i = 0; i < this.warningData.length; i++) {
|
||
objArray.push(this.warningData[i]);
|
||
}
|
||
this.warningData = objArray;
|
||
|
||
/* if (res.data.length > 0) {
|
||
this.warningList.push({
|
||
type: "安全预警",
|
||
warningData: objArray,
|
||
warnDeviceNum: parseInt(this.warning.warnDeviceNum) + parseInt(res.data.length),
|
||
warnNum: this.warning.warnNum
|
||
})
|
||
}
|
||
*/
|
||
|
||
let array = this.arrCheck(res.data);
|
||
let warningType = this.warningType;
|
||
for (let i = 0; i < warningType.length; i++) {
|
||
array.push(warningType[i]);
|
||
}
|
||
this.warningType = array;
|
||
}).catch(err => {
|
||
});
|
||
},
|
||
arrCheck(arr) {
|
||
let map = {};
|
||
let dest = [];
|
||
for (let i = 0; i < arr.length; i++) {
|
||
let field = arr[i];
|
||
if (!map[field.warn_context]) {
|
||
dest.push({
|
||
name: field.warn_context,
|
||
value: 1
|
||
});
|
||
map[field.warn_context] = field;
|
||
} else {
|
||
for (let j = 0; j < dest.length; j++) {
|
||
let fieldd = dest[j];
|
||
if (fieldd.name == field.warn_context) {
|
||
fieldd.value = fieldd.value + 1;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return dest;
|
||
},
|
||
/**
|
||
* 获取设备周预警,安全智管
|
||
*/
|
||
getDeviceWarnWeekData(obj) {
|
||
var now = new Date();
|
||
var nowTime = now.getTime();
|
||
var day = now.getDay();
|
||
var oneDayTime = 24 * 60 * 60 * 1000;
|
||
var MondayTime = nowTime - (day - 1) * oneDayTime;
|
||
var SundayTime = nowTime + (7 - day) * oneDayTime;
|
||
axios.get("https://aqzg.makalu.cc/api/statistics/getDeviceWarnData", {
|
||
params: {
|
||
"deptId": 131,
|
||
"projectId": JSON.parse(localStorage.getItem("data")).aqzg,
|
||
"startDate": this.format(new Date(MondayTime)),
|
||
"endDate": this.format(new Date(SundayTime))
|
||
}
|
||
}
|
||
).then(res => {
|
||
this.warning = {
|
||
warnDeviceNum: this.warning.warnDeviceNum,
|
||
warnNum: parseInt(this.warning.warnNum) + parseInt(res.data.length)
|
||
};
|
||
|
||
let tmp = {}
|
||
let devn = 0
|
||
for (let re of res.data) {
|
||
if (!tmp[re.towerName]) {
|
||
tmp[re.towerName] = true
|
||
devn++
|
||
}
|
||
}
|
||
|
||
let tmpObj = {
|
||
type: "安全预警",
|
||
warningData: res.data,
|
||
warnDeviceNum: obj.warnDeviceNum,
|
||
warnNum: res.data.length
|
||
}
|
||
this.gainPDXWarning(tmpObj)
|
||
}).catch(err => {
|
||
console.log(err);
|
||
})
|
||
},
|
||
//格式化时间
|
||
format(dat) {
|
||
//获取年月日,时间
|
||
var year = dat.getFullYear();
|
||
var mon = (dat.getMonth() + 1) < 10 ? "0" + (dat.getMonth() + 1) : dat.getMonth() + 1;
|
||
var data = dat.getDate() < 10 ? "0" + (dat.getDate()) : dat.getDate();
|
||
var hour = dat.getHours() < 10 ? "0" + (dat.getHours()) : dat.getHours();
|
||
var min = dat.getMinutes() < 10 ? "0" + (dat.getMinutes()) : dat.getMinutes();
|
||
var seon = dat.getSeconds() < 10 ? "0" + (dat.getSeconds()) : dat.getSeconds();
|
||
var newDate = year + "-" + mon + "-" + data + " " + hour + ":" + min + ":" + seon;
|
||
return newDate;
|
||
},
|
||
//造价
|
||
modifyLeftBtn() {
|
||
this.direction = 'left'
|
||
this.manufacturingCostRoll()
|
||
},
|
||
modifyRightBtn() {
|
||
this.direction = 'right'
|
||
this.manufacturingCostRoll()
|
||
},
|
||
manufacturingCostRoll() {
|
||
var width = $(".project-amount").innerWidth() * 3
|
||
if (this.direction == 'right') {
|
||
if (this.costIndex == 3) {
|
||
this.costIndex = 0
|
||
this.$refs.modifyContent.scrollLeft = 0
|
||
} else {
|
||
this.costIndex = this.costIndex + 1
|
||
}
|
||
} else {
|
||
if (this.costIndex == 0) {
|
||
this.costIndex = 3
|
||
this.$refs.modifyContent.scrollLeft = 2520
|
||
} else {
|
||
this.costIndex = this.costIndex - 1
|
||
}
|
||
}
|
||
$(this.$refs.modifyContent).animate({scrollLeft: (width * this.costIndex) + 'px'})
|
||
this.direction = 'right'
|
||
},
|
||
costMouseover() {
|
||
clearInterval(this.costInterval);
|
||
},
|
||
costMouseout() {
|
||
this.costInterval = setInterval(this.manufacturingCostRoll, 5000);
|
||
},
|
||
//head选择项目返回值
|
||
onItemData(e) {
|
||
if (e.type == 1) {
|
||
location.href = 'toIndex'
|
||
} else {
|
||
location.reload();
|
||
}
|
||
this.tableProject(e.id)
|
||
},
|
||
//项目概况
|
||
timer() {
|
||
let that = this
|
||
this.$nextTick(function () {
|
||
let height = that.$refs.introduce.offsetHeight
|
||
let content = that.$refs.content.offsetHeight
|
||
if (this.top == -height) {
|
||
this.show = false
|
||
this.top = content
|
||
} else {
|
||
this.show = true
|
||
this.top -= 1
|
||
}
|
||
})
|
||
},
|
||
TimerEnter() {//鼠标移入停止滚动
|
||
clearInterval(this.introduceInterval);
|
||
},
|
||
TimerLeave() {//鼠标离开继续滚动
|
||
this.introduceInterval = setInterval(this.timer, 50);
|
||
},
|
||
getProjectTimeAxisData(){
|
||
/*var timeAxisData = [
|
||
{
|
||
title:'项目开工',
|
||
planTime:'2022-09-01',
|
||
actualTima:'2022-09-01',
|
||
expectDays:'0',
|
||
state:0, // 0 正常完工 1 预期
|
||
},
|
||
{
|
||
title:'筏板开始施工',
|
||
planTime:'2022-11-29',
|
||
actualTima:'2022-11-29',
|
||
expectDays:'0',
|
||
state:0, // 0 正常完工 1 预期
|
||
},
|
||
{
|
||
title:'车库主体结构施工完成',
|
||
planTime:'2023-05-15',
|
||
actualTima:'',
|
||
expectDays:'0',
|
||
state:0, // 0 正常完工 1 预期
|
||
},{
|
||
title:'主楼结构施工完成',
|
||
planTime:'2023-08-31',
|
||
actualTima:'',
|
||
expectDays:'0',
|
||
state:0, // 0 正常完工 1 预期
|
||
},{
|
||
title:'1-6号楼外窗20层完成,精装修完成12层',
|
||
planTime:'2023-12-31',
|
||
actualTima:'',
|
||
expectDays:'0',
|
||
state:0, // 0 正常完工 1 预期
|
||
},
|
||
{
|
||
title:'计划竣工日期',
|
||
planTime:'2024-08-21',
|
||
actualTima:'',
|
||
expectDays:'0',
|
||
state:0, // 0 正常完工 1 预期
|
||
},
|
||
|
||
]*/
|
||
let that = this
|
||
axios.post("/api/project/selectSonList",{
|
||
"projectId":JSON.parse(localStorage.getItem("data")).id
|
||
}).then(res => {
|
||
let timeAxisData = res.data.data
|
||
let index = 0
|
||
for (let i = 0; i < timeAxisData.length; i++) {
|
||
if(!timeAxisData[i].actualTime){
|
||
// index = i-1
|
||
break
|
||
}
|
||
index++;
|
||
}
|
||
that.maxWidth = timeAxisData.length * 200
|
||
if(index == timeAxisData.length || index == 0){
|
||
that.minWidth = that.minWidth + (index*200)
|
||
}else{
|
||
that.minWidth = that.minWidth + (index*200 -100)
|
||
}
|
||
that.timeAxisData = timeAxisData
|
||
})
|
||
|
||
},
|
||
//重大节点预期预警
|
||
getTimeAxisData(projectId) {
|
||
var timeAxisData = []
|
||
//请求数据
|
||
axios({
|
||
method: 'post',
|
||
url: "/api/danger/queryProjectDanger",
|
||
data: {
|
||
"project_id": projectId
|
||
}
|
||
}).then(res => {
|
||
if (res.data.code == 200) {
|
||
|
||
this.dangerName = res.data.data.danger_name
|
||
timeAxisData = res.data.data.dangerList
|
||
|
||
var index = timeAxisData.length - 1
|
||
for (let i = 0; i < timeAxisData.length; i++) {
|
||
if (timeAxisData[i].actualTima == '') {
|
||
index = i - 1
|
||
break
|
||
}
|
||
}
|
||
this.maxWidth = timeAxisData.length * 200
|
||
if (index == timeAxisData.length - 1) {
|
||
this.minWidth = this.minWidth + (index * 200 + 100)
|
||
} else {
|
||
this.minWidth = this.minWidth + (index * 200)
|
||
}
|
||
|
||
this.timeAxisData = timeAxisData
|
||
} else {
|
||
this.timeAxisData = []
|
||
}
|
||
|
||
}).catch(err => {
|
||
|
||
})
|
||
},
|
||
|
||
changeData(id, i) {
|
||
this.activeNum = i
|
||
this.timeAxisData = []
|
||
var timeAxisDataA = []
|
||
//请求数据
|
||
axios({
|
||
method: 'post',
|
||
url: "/api/danger/queryProjectId",
|
||
data: {
|
||
"project_id": JSON.parse(localStorage.getItem("data")).id,
|
||
"danger_id": id
|
||
}
|
||
}).then(res => {
|
||
if (res.data.code == 200) {
|
||
|
||
timeAxisDataA = res.data.dangerList
|
||
|
||
var index = timeAxisDataA.length - 1
|
||
for (let i = 0; i < timeAxisDataA.length; i++) {
|
||
if (timeAxisDataA[i].actualTima == '') {
|
||
index = i - 1
|
||
break
|
||
}
|
||
}
|
||
this.maxWidth = timeAxisDataA.length * 200
|
||
if (index == timeAxisDataA.length - 1) {
|
||
this.minWidth = this.minWidth + (index * 200 + 100)
|
||
} else {
|
||
this.minWidth = this.minWidth + (index * 200)
|
||
}
|
||
|
||
this.timeAxisData = timeAxisDataA
|
||
} else {
|
||
this.timeAxisData = []
|
||
}
|
||
|
||
}).catch(err => {
|
||
|
||
})
|
||
|
||
},
|
||
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, 10000);
|
||
},
|
||
// 人员弹窗表格滚动 方法 --------- 开始
|
||
tableScroll() {
|
||
let maxHeight = this.$refs.tableRoll.$el.querySelectorAll('.el-table__body')[0].offsetHeight;
|
||
let clientHeight = this.$refs.tableRoll.bodyWrapper.clientHeight;
|
||
if (Math.abs(this.$refs.tableRoll.bodyWrapper.scrollTop - (maxHeight - clientHeight)) < 5) { //预留5像素误差
|
||
this.$refs.tableRoll.bodyWrapper.scrollTop = 0;
|
||
} else {
|
||
this.$refs.tableRoll.bodyWrapper.scrollTop += 1;//32是每一行表格的高度,每秒滚一行
|
||
}
|
||
},
|
||
tableMouseEnter() {//鼠标移入停止滚动
|
||
clearInterval(this.tableInterval);
|
||
},
|
||
tableMouseLeave() {//鼠标离开继续滚动
|
||
this.tableInterval = setInterval(this.tableScroll, 50);
|
||
},
|
||
// 人员弹窗滚动 方法 ------ 结束
|
||
/**
|
||
* 获取配电箱异常信息
|
||
*/
|
||
gainPDXWarning(obj) {
|
||
let that = this
|
||
$.post("/api/iot/power/warringList?pageNum=1&pageSize=10",
|
||
{
|
||
type: "配电箱",
|
||
startTime: moment().day(0).format("YYYY-MM-DD 23:59:59"),
|
||
endTime: moment().day(7).format("YYYY-MM-DD 23:59:59")
|
||
},
|
||
res => {
|
||
//console.log(res);
|
||
for (let row of res.rows) {
|
||
obj.warningData.push(row)
|
||
}
|
||
obj.warnDeviceNum += 0
|
||
obj.warnNum += res.total
|
||
if (obj.warnNum > 0) {
|
||
this.warningList.push(obj)
|
||
}
|
||
})
|
||
},
|
||
/**
|
||
* 获取标养室异常信息
|
||
*/
|
||
gainBYSWarning() {
|
||
let that = this
|
||
$.post(
|
||
"/api/iot/power/warringList?pageNum=1&pageSize=10",
|
||
{
|
||
type: "标养室",
|
||
startTime: moment().day(0).format("YYYY-MM-DD 23:59:59"),
|
||
endTime: moment().day(7).format("YYYY-MM-DD 23:59:59")
|
||
},
|
||
res => {
|
||
let tmp = {
|
||
type: "质量预警",
|
||
warningData: res.rows,
|
||
warnDeviceNum: 24,
|
||
warnNum: res.total
|
||
}
|
||
$.post(
|
||
"/api/iot/power/warringList?pageNum=1&pageSize=10",
|
||
{
|
||
type: "标养室",
|
||
startTime: moment().format("YYYY-MM-DD 00:00:00"),
|
||
endTime: moment().format("YYYY-MM-DD 23:59:59")
|
||
},
|
||
res => {
|
||
//console.log(res);
|
||
tmp.warnDeviceNum = res.total
|
||
that.warningList.push(tmp)
|
||
}
|
||
)
|
||
}
|
||
)
|
||
},
|
||
gainAIWarningData() {
|
||
axios.post("https://aqzg.makalu.cc/api/video/getAnalysisDetailList", {
|
||
projectId: JSON.parse(localStorage.getItem("data")).aqzg,
|
||
// dataNum:50
|
||
}).then(res => {
|
||
this.warningList.push({
|
||
type: "AI预警",
|
||
warningData: res.data,
|
||
warnDeviceNum: res.data.length,
|
||
warnNum: res.data.length
|
||
})
|
||
}).catch(err => {
|
||
})
|
||
},
|
||
getHJWarningData() {
|
||
axios.get("/mkl/api/getWaringIngBaseInfo?projectId="+JSON.parse(localStorage.getItem("data")).smz, {
|
||
}).then(res => {
|
||
if(res.data.data.length > 0 ) {
|
||
var data = res.data.data;
|
||
this.warningList.push({
|
||
type: "环境预警",
|
||
warningData: res.data.data,
|
||
warnDeviceNum: res.data.data.length,
|
||
warnNum: res.data.data.length
|
||
})
|
||
}
|
||
}).catch(err => {
|
||
})
|
||
},
|
||
|
||
getCityWeather(){
|
||
let that = this
|
||
axios.post("/api/iot/power/getCityWeather",{
|
||
id: JSON.parse(localStorage.getItem("data")).id
|
||
}).then(res => {
|
||
if(res.data.code == 0){
|
||
that.cityWeather= res.data.data
|
||
}
|
||
})
|
||
},
|
||
showDay(n){
|
||
if(n==0) {
|
||
return "今天"
|
||
} else if(n == 1) {
|
||
return "明天"
|
||
} else {
|
||
return "后天"
|
||
}
|
||
// return moment().add(n,'days').format("MM月DD日")
|
||
},
|
||
showWarningCategory(str){
|
||
let name = ""
|
||
switch (str){
|
||
case "AI预警":
|
||
name = "安全着装告警"
|
||
break
|
||
case "安全预警":
|
||
name = "监测告警"
|
||
break
|
||
case "质量预警":
|
||
name = "标养室告警"
|
||
break
|
||
}
|
||
return name
|
||
}
|
||
},
|
||
// 表格滚动调用的函数
|
||
beforeDestroy() {
|
||
clearInterval(this.tableInterval);
|
||
},
|
||
})
|
||
</script>
|
||
</html> |