1654 lines
40 KiB
Vue
1654 lines
40 KiB
Vue
<template>
|
|
<view class="addIssue">
|
|
<view class="fixedheader">
|
|
<headers :showBack="true" :themeType="true">
|
|
<view class="headerName">
|
|
桥机监测
|
|
</view>
|
|
</headers>
|
|
</view>
|
|
<view class="search-box" :style="{paddingTop: mobileTopHeight + 44 + 'px'}">
|
|
<u-collapse>
|
|
<u-collapse-item>
|
|
<view @click="bridgeInfo.collapseFlag = !bridgeInfo.collapseFlag" class="collapse-header"
|
|
slot="title-all">
|
|
<view>
|
|
<view></view>
|
|
<view>{{ bridgeInfo.bridgeName || '全部'}}</view>
|
|
</view>
|
|
<view>
|
|
<view>{{bridgeCraneDevList.length > 0 ? bridgeCraneDevList.length - 1 : 0}}台</view>
|
|
<view class="arrow-bottom"></view>
|
|
</view>
|
|
</view>
|
|
<view class="collapse-content" v-show="bridgeInfo.collapseFlag">
|
|
<view @click="onBridgeCraneDevClick(item)"
|
|
:class="{'view-active': item.devId == bridgeInfo.bridgeId}"
|
|
v-for="item in bridgeCraneDevList" :key="item.devId">{{item.devName}}</view>
|
|
</view>
|
|
</u-collapse-item>
|
|
</u-collapse>
|
|
<u-tabs :bar-height="4" :font-size="28" active-color="#498CEC" inactive-color="#B3B3B3" :bar-width="140"
|
|
:list="list" :is-scroll="false" :current="current" @change="currentChange"></u-tabs>
|
|
</view>
|
|
<view class="content">
|
|
<template v-if="current == 0">
|
|
<view class="box-main1" v-if="!bridgeInfo.bridgeId">
|
|
<view class="box-main1_header">
|
|
今日桥机工作情况
|
|
</view>
|
|
<view class="main1-item" v-for="(item, index) in bridgeTodayList" :key="item.id">
|
|
<view class="main1-item-top">
|
|
<view :class="`item-image${index}`"></view>
|
|
<view class="item-top_right">
|
|
<view>
|
|
<view>{{item.title}}</view>
|
|
<view>{{item.countNum}}次</view>
|
|
</view>
|
|
<view class="schedule">
|
|
<view
|
|
:style="`width: ${Math.abs(item.countPer) >= 100 ? 100 : Math.abs(item.countPer)}%`">
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="main1-item-bottom">
|
|
<view class="">
|
|
<view class=""></view>
|
|
<view class="">相比昨日</view>
|
|
</view>
|
|
<view class="">
|
|
<view class="">{{item.countPer}}%</view>
|
|
<view :class="item.countPer >= 0 ? 'bottom-image_up' : 'bottom-image_down'"></view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="box-main4" v-else>
|
|
<view class="content-box content-box1">
|
|
<view class="box-main1_header">
|
|
实时监控
|
|
<view class="" @click="onClickType(5)">
|
|
<view>{{videoInfo.videoName}}</view>
|
|
<view></view>
|
|
</view>
|
|
</view>
|
|
<view class="bridge-video" v-if="!videoShow && videoFlag">
|
|
<!-- APP环境使用web-view -->
|
|
<!-- #ifdef APP-PLUS -->
|
|
<video v-if="!isYsy" class="videoBox" id="myVideo" :custom-cache="false"
|
|
:src="playUrlFilter" controls autoplay></video>
|
|
<!-- #endif -->
|
|
<!-- H5环境使用ezuikit -->
|
|
<!-- #ifdef H5 -->
|
|
<my-player-m3u8 v-if="!isYsy && playUrlFilter" :showMask="true" :src="playUrlFilter"
|
|
:autoplay="true" />
|
|
<video v-else class="videoBox" id="myVideo" :custom-cache="false" :src="playUrlFilter"
|
|
controls autoplay>
|
|
</video>
|
|
<!-- #endif -->
|
|
<view v-if="isYsy && playUrlFilter && accessToken"
|
|
:style="{width: '100%', height: '225px'}">
|
|
<!-- H5环境使用ezuikit -->
|
|
<!-- #ifdef H5 -->
|
|
<iframe :src="ysyPlayUrl" :style="webviewStyles" frameborder="0"
|
|
:scrolling="'no'"></iframe>
|
|
<!-- #endif -->
|
|
<!-- APP环境使用web-view -->
|
|
<!-- #ifdef APP-PLUS -->
|
|
<web-view :src="ysyPlayUrl" :style="webviewStyles"
|
|
:webview-styles="webviewConfig"></web-view>
|
|
<!-- #endif -->
|
|
</view>
|
|
</view>
|
|
<view class="bridge-video" v-else>
|
|
<view class="videoBox1"></view>
|
|
</view>
|
|
</view>
|
|
<view class="content-box content-box2">
|
|
<view class="box-main1_header">
|
|
桥机实时数据
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>上传时间:</view>
|
|
<view>{{bridgeCraneNewestInfo.uploadTime}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>设备类型:</view>
|
|
<view>{{bridgeCraneNewestInfo.devType}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>本次工作时间(h):</view>
|
|
<view>{{bridgeCraneNewestInfo.workTime}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>累计工作时间(h):</view>
|
|
<view>{{bridgeCraneNewestInfo.cumulativeWorkingTime}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>工作循环次数(次):</view>
|
|
<view>{{bridgeCraneNewestInfo.operatingCycleNumber}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>总重量(t):</view>
|
|
<view>{{bridgeCraneNewestInfo.neiweight5}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>前天车小车行程(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance1}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>后天车小车行程(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance2}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>前天车前部安全距离(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance10}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>后天车前部安全距离(级):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance12}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>前天车后部安全距离(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance11}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>后天车后部安全距离(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance13}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>大车行程(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance7}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>大车偏斜行程(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance14}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>前天车吊钩速度(min):</view>
|
|
<view>{{bridgeCraneNewestInfo.speed1}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>前天车吊钩高度(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance5}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>前天车吊钩重量(t):</view>
|
|
<view>{{bridgeCraneNewestInfo.neiweight1}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>后天车吊钩速度(min):</view>
|
|
<view>{{bridgeCraneNewestInfo.speed2}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>后天车吊钩高度(m):</view>
|
|
<view>{{bridgeCraneNewestInfo.distance6}}</view>
|
|
</view>
|
|
<view class="box-main4_item">
|
|
<view>后天车吊钩重量(t):</view>
|
|
<view>{{bridgeCraneNewestInfo.neiweight2}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
<view class="box-main2" v-else-if="current == 1">
|
|
<view class="content-box content-box1">
|
|
<view class="box-main1_header">
|
|
报警统计
|
|
</view>
|
|
<view class="box-main2-time">
|
|
<view @click="alarmByCodeClick(item)"
|
|
:class="{'time-active': item.id == countAlarmByCodeInfo.timeActive}"
|
|
v-for="item in timeList" :key="item.id">
|
|
{{item.title}}
|
|
</view>
|
|
</view>
|
|
<template v-if="countAlarmByCodeList.length > 0">
|
|
<view class="box-main2-box_charts">
|
|
<qiun-data-charts type="ring" :opts="opts2" :chartData="chartData2" />
|
|
</view>
|
|
<view class="box-main2-box_roll">
|
|
<view class="box-main2-box" v-for="(item,index) in countAlarmByCodeList" :key="index">
|
|
<view class="bg_color" :style="{'background-color': colorList[index]}"></view>
|
|
<view>{{item.name}}</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
<view class="new-nodata_height2" v-else>
|
|
<view class="new-nodata">
|
|
<view></view>
|
|
<text>暂无数据...</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="content-box content-box2">
|
|
<view class="box-main1_header">
|
|
今日桥机工作情况
|
|
</view>
|
|
<template v-if="bridgeCraneAlarmList.length > 0">
|
|
<view class="content-box2_main" v-for="item in bridgeCraneAlarmList" :key="item.id">
|
|
<view class="box2_main_top">
|
|
<view>
|
|
<view></view>
|
|
<view>{{item.devName}}</view>
|
|
</view>
|
|
<view>
|
|
{{item.alarmTime}}
|
|
</view>
|
|
</view>
|
|
<view class="box2_main_bottom">
|
|
<view></view>
|
|
<view>告警信息:{{alarmTypeCodeListUp(item.alarmTypeCode)}}</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
<view class="new-nodata_height2" v-else>
|
|
<view class="new-nodata">
|
|
<view></view>
|
|
<text>暂无数据...</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="box-main3" v-else-if="current == 2">
|
|
<view class="content-box content-box1" v-if="!bridgeInfo.bridgeId">
|
|
<view class="box-main1_header">
|
|
运载排行榜
|
|
</view>
|
|
<view class="box-main2-time">
|
|
<view @click="workTimeByWorkerClick(item)"
|
|
:class="{'time-active': item.id == countWorkTimeByWorkerInfo.timeActive}"
|
|
v-for="item in timeList" :key="item.id">
|
|
{{item.title}}
|
|
</view>
|
|
</view>
|
|
<template v-if="countWorkTimeByWorkerList.length > 0">
|
|
<view class="box-main3_item" :class="`box-main3_item${index}`"
|
|
v-for="(item, index) in countWorkTimeByWorkerList" :key="index">
|
|
<view>
|
|
<view>{{item.workerName || '--'}}</view>
|
|
<view>{{item.neiweight5}}</view>
|
|
</view>
|
|
<view>
|
|
<view></view>
|
|
<view>运载量NO.{{index + 1}}</view>
|
|
</view>
|
|
<view></view>
|
|
</view>
|
|
</template>
|
|
<view class="new-nodata_height2" v-else>
|
|
<view class="new-nodata">
|
|
<view></view>
|
|
<text>暂无数据...</text>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="content-box content-box2">
|
|
<view class="box-main1_header">
|
|
近7天工作时长统计趋势图
|
|
</view>
|
|
<view class="box-main2-box_charts">
|
|
<view class="box_charts-title">工作时长(H)</view>
|
|
<qiun-data-charts tooltipFormat="defaultTooltip" type="area" :opts="opts1"
|
|
:chartData="chartData1" />
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<u-toast ref="uToast" />
|
|
<u-popup :mask-close-able="false" v-model="videoShow" :closeable="false" mode="bottom">
|
|
<view class="content-popup">
|
|
<view class="content-popup_header"> 实时监控 </view>
|
|
<scroll-view v-if="bridgeVideoList.length > 0" scroll-y="true" style="height: 800rpx;">
|
|
<TreeView @node-click="onSupervisorClick" :multiple="false" checked-bg-color="rgba(81,129,246,0.1)"
|
|
:data="bridgeVideoList" :children-key="'children'" :label-key="'videoName'" :id-key="'id'"
|
|
:value="[videoId]" />
|
|
</scroll-view>
|
|
<view class="new-nodata_height" v-else>
|
|
<view class="new-nodata">
|
|
<view></view>
|
|
<text>暂无数据...</text>
|
|
</view>
|
|
</view>
|
|
<view class="confrim-btn">
|
|
<view @click="onCancelClick(5)">取消</view>
|
|
<view @click="onSubmitType(5)">确定</view>
|
|
</view>
|
|
</view>
|
|
</u-popup>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
isJSON
|
|
} from "@/utils/tool.js"
|
|
import MyPlayerM3u8 from '@/components/my-player-m3u8/my-player-m3u8.vue';
|
|
import TreeView from "@/components/tree-view/TreeView.vue";
|
|
export default {
|
|
components: {
|
|
MyPlayerM3u8,
|
|
TreeView
|
|
},
|
|
data() {
|
|
return {
|
|
mobileTopHeight: 0,
|
|
projectDetail: {},
|
|
list: [{
|
|
name: '实时数据'
|
|
}, {
|
|
name: '报警记录'
|
|
}, {
|
|
name: '工效分析'
|
|
}],
|
|
current: 0,
|
|
bridgeTodayList: [{
|
|
id: 1,
|
|
title: "今日累计循环工作次数",
|
|
countNum: 0,
|
|
countPer: 0,
|
|
}, {
|
|
id: 2,
|
|
title: "今日累计违章报警次数",
|
|
countNum: 0,
|
|
countPer: 0,
|
|
}],
|
|
bridgeInfo: {
|
|
collapseFlag: false, // 控制筛选
|
|
bridgeId: "",
|
|
bridgeName: "",
|
|
bridgeCraneDevId: "",
|
|
},
|
|
chartData2: {},
|
|
opts2: {
|
|
padding: [5, 5, 5, 5],
|
|
dataLabel: false,
|
|
enableScroll: false,
|
|
tooltipShow: false,
|
|
title: {
|
|
name: "",
|
|
},
|
|
subtitle: {
|
|
name: '',
|
|
},
|
|
legend: {
|
|
show: false,
|
|
},
|
|
extra: {
|
|
pie: {
|
|
activeOpacity: 0,
|
|
activeRadius: 0,
|
|
offsetAngle: 0,
|
|
labelWidth: 0,
|
|
border: false,
|
|
borderWidth: 0,
|
|
borderColor: "#FFFFFF"
|
|
}
|
|
}
|
|
},
|
|
colorList: ['#C62828', '#F20081', '#AB47BC', '#9F8FBD', '#3949AB', '#2196F3 ', '#48C7D7', '#0097A7',
|
|
'#8BC34A', '#C0CA33', '#FBC02D',
|
|
'#FF9800', '#8D6E63', '#607D8B', '#c00000', '#ff0000', '#ffc000', '#ffff00', '#00b0f0', '#0070c0',
|
|
'#92d050', '#00b050', '#002060', '#7030a0', '#262626',
|
|
'#a6a6a6', '#660010', '#b21016'
|
|
],
|
|
timeActive: 1,
|
|
timeList: [{
|
|
id: 1,
|
|
title: "今日"
|
|
}, {
|
|
id: 2,
|
|
title: "近7天"
|
|
}, {
|
|
id: 3,
|
|
title: "近30天"
|
|
}],
|
|
chartData1: {},
|
|
opts1: {
|
|
padding: [50, 15, 5, 15],
|
|
enableScroll: false,
|
|
dataLabel: false,
|
|
color: ['#2B8CF3'],
|
|
xAxis: {
|
|
disableGrid: false,
|
|
calibration: true,
|
|
fontColor: "#B3B3B3",
|
|
},
|
|
yAxis: {
|
|
gridType: "dash",
|
|
dashLength: 2,
|
|
disabled: false,
|
|
gridColor: "#B3B3B3",
|
|
data: [{
|
|
calibration: true,
|
|
fontColor: "#B3B3B3",
|
|
// position: "left",
|
|
// title: "工作时长(H)",
|
|
}]
|
|
},
|
|
title: {
|
|
name: "",
|
|
},
|
|
subtitle: {
|
|
name: '',
|
|
},
|
|
legend: {
|
|
show: false,
|
|
},
|
|
extra: {
|
|
area: {
|
|
type: "curve",
|
|
opacity: 1,
|
|
addLine: true,
|
|
width: 2,
|
|
gradient: true,
|
|
activeType: "hollow"
|
|
}
|
|
},
|
|
},
|
|
// 设备列表
|
|
bridgeCraneDevList: [],
|
|
// 司机运载列表
|
|
countWorkTimeByWorkerList: [],
|
|
countWorkTimeByWorkerInfo: {
|
|
timeActive: 1,
|
|
startDate: "",
|
|
endDate: "",
|
|
},
|
|
// 报警统计
|
|
countAlarmByCodeList: [],
|
|
countAlarmByCodeInfo: {
|
|
timeActive: 1,
|
|
startDate: "",
|
|
endDate: "",
|
|
},
|
|
// 今日桥机工种情况
|
|
bridgeCraneAlarmList: [],
|
|
// 工作循环数据信息
|
|
bridgeCraneNewestInfo: {},
|
|
// 获取设备监控
|
|
bridgeVideoList: [],
|
|
accessToken: "",
|
|
url: "",
|
|
videoInfo: {
|
|
id: "",
|
|
videoName: "",
|
|
},
|
|
// 监理人员
|
|
videoShow: false,
|
|
videoId: "",
|
|
projectVideoConfig: {},
|
|
videoFlag: true,
|
|
}
|
|
},
|
|
onLoad(opts) {
|
|
this.projectDetail = JSON.parse(uni.getStorageSync('projectDetail'));
|
|
this.getBridgeCraneDevList();
|
|
},
|
|
mounted() {
|
|
var that = this
|
|
uni.getSystemInfo({
|
|
success(res) {
|
|
that.mobileTopHeight = res.statusBarHeight ? res.statusBarHeight : 0;
|
|
uni.setStorageSync('systemInfo', res)
|
|
console.log(res)
|
|
}
|
|
})
|
|
},
|
|
onPageScroll(e) {
|
|
// e.scrollTop 表示当前页面滚动的距离
|
|
console.log('页面滚动距离:', e.scrollTop);
|
|
var that = this
|
|
// 创建查询请求
|
|
const query = uni.createSelectorQuery().in(this);
|
|
// 选择目标节点并获取其信息
|
|
query.select('.bridge-video').boundingClientRect(data => {
|
|
console.log(data.top); // 输出节点信息
|
|
if((that.mobileTopHeight + 44) < data.top) {
|
|
that.videoFlag = true;
|
|
} else {
|
|
that.videoFlag = false;
|
|
}
|
|
}).exec();
|
|
// 在这里编写你的滚动相关逻辑
|
|
},
|
|
methods: {
|
|
// 多选下拉 5 监控
|
|
onClickType(type) {
|
|
console.log(1111, this.videoInfo)
|
|
if (type == 5) {
|
|
this.videoId = this.videoInfo.id;
|
|
this.videoShow = true;
|
|
}
|
|
},
|
|
// 监理人员
|
|
onSupervisorClick(id, checked, label) {
|
|
this.videoId = id;
|
|
},
|
|
onSubmitType(type) {
|
|
if (type == 5) {
|
|
const find = this.bridgeVideoList.find(item => this.videoId == item.id);
|
|
if (find) {
|
|
this.videoInfo = find;
|
|
this.getPlayUrl();
|
|
}
|
|
this.videoShow = false;
|
|
}
|
|
},
|
|
onCancelClick(type) {
|
|
if (type == 5) {
|
|
this.videoId = this.videoInfo.id;
|
|
this.videoShow = false;
|
|
}
|
|
},
|
|
onBridgeCraneDevClick(row) {
|
|
this.bridgeInfo.bridgeId = row.devId;
|
|
this.bridgeInfo.bridgeCraneDevId = row.id;
|
|
this.bridgeInfo.bridgeName = row.devName;
|
|
this.currentChange(this.current);
|
|
this.bridgeInfo.collapseFlag = false;
|
|
},
|
|
// 列表查询桥机设备信息
|
|
getBridgeCraneDevList() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneDev/list',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
},
|
|
method: "GET",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.bridgeCraneDevList = [{
|
|
id: "",
|
|
devName: "全部"
|
|
},
|
|
...res.result,
|
|
];
|
|
}
|
|
}
|
|
})
|
|
},
|
|
currentChange(index) {
|
|
this.current = index;
|
|
if (this.current == 0) {
|
|
if (!this.bridgeInfo.bridgeId) {
|
|
this.getBridgeCraneAlarmCountAlarmToday();
|
|
} else {
|
|
this.getBridgeCraneDevQueryById();
|
|
this.getNewestDataBridgeCraneData();
|
|
}
|
|
} else if (this.current == 1) {
|
|
this.getBridgeCraneAlarmPage();
|
|
this.alarmByCodeClick({
|
|
id: this.countAlarmByCodeInfo.timeActive,
|
|
});
|
|
} else if (this.current == 2) {
|
|
this.getBridgeCraneDataCountWorkTimeByDate();
|
|
if (!this.bridgeInfo.bridgeId) {
|
|
this.workTimeByWorkerClick({
|
|
id: this.countWorkTimeByWorkerInfo.timeActive,
|
|
});
|
|
}
|
|
}
|
|
},
|
|
// 通过id查询桥机设备信息
|
|
getBridgeCraneDevQueryById() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneDev/queryById',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
id: this.bridgeInfo.bridgeCraneDevId,
|
|
},
|
|
method: "get",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.bridgeVideoList = Array.isArray(res.result.videoList) ? res.result.videoList : [];
|
|
that.projectVideoConfig = res.result.projectVideoConfig;
|
|
if (that.bridgeVideoList.length > 0) {
|
|
const resultInfo = that.bridgeVideoList[0];
|
|
that.videoInfo = resultInfo;
|
|
that.getPlayUrl();
|
|
}
|
|
}
|
|
}
|
|
})
|
|
},
|
|
getPlayUrl() {
|
|
var that = this
|
|
var json = {
|
|
itemId: this.videoInfo.videoItemId
|
|
}
|
|
if (this.projectVideoConfig.videoType == 3) {
|
|
json.streamType = this.videoInfo.defaultStreamType || 1;
|
|
json.type = 'rtsp' //rtsp或者hls
|
|
}
|
|
this.sendRequest({
|
|
url: "xmgl/videoItem/getVideoItemInfo",
|
|
data: json,
|
|
method: "post",
|
|
success(res) {
|
|
switch (that.projectVideoConfig.videoType) {
|
|
case 1:
|
|
// that.url=res.result.videoInfo.hdFlvAddress
|
|
that.url = res.result.videoInfo
|
|
that.accessToken = res.result.accessToken
|
|
break;
|
|
default:
|
|
that.url = res.result.videoInfo.url
|
|
break;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 查询最新的一条桥机工作循环数据信息
|
|
getNewestDataBridgeCraneData() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneData/getNewestData',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
devId: this.bridgeInfo.bridgeId,
|
|
},
|
|
method: "post",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.bridgeCraneNewestInfo = res.result;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 分页列表查询桥机报警数据信息
|
|
getBridgeCraneAlarmPage() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneAlarm/page',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
alarmTime_begin: this.$dayjs().format("YYYY-MM-DD"),
|
|
alarmTime_end: this.$dayjs().format("YYYY-MM-DD"),
|
|
devId: this.bridgeInfo.bridgeId,
|
|
pageNo: 1,
|
|
pageSize: -1,
|
|
},
|
|
method: "get",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.bridgeCraneAlarmList = res.result.records;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
alarmByCodeClick(row) {
|
|
this.countAlarmByCodeInfo.timeActive = row.id;
|
|
if (row.id == 1) {
|
|
this.countAlarmByCodeInfo.startDate = this.$dayjs().format("YYYY-MM-DD");
|
|
this.countAlarmByCodeInfo.endDate = this.$dayjs().format("YYYY-MM-DD");
|
|
} else if (row.id == 2) {
|
|
this.countAlarmByCodeInfo.startDate = this.$dayjs().subtract(6, "day").format("YYYY-MM-DD");
|
|
this.countAlarmByCodeInfo.endDate = this.$dayjs().format("YYYY-MM-DD");
|
|
} else if (row.id == 3) {
|
|
this.countAlarmByCodeInfo.startDate = this.$dayjs().subtract(29, "day").format("YYYY-MM-DD");
|
|
this.countAlarmByCodeInfo.endDate = this.$dayjs().format("YYYY-MM-DD");
|
|
}
|
|
this.getBridgeCraneAlarmCountAlarmByCode();
|
|
},
|
|
// 报警统计
|
|
getBridgeCraneAlarmCountAlarmByCode() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneAlarm/countAlarmByCode',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
startDate: this.countAlarmByCodeInfo.startDate,
|
|
endDate: this.countAlarmByCodeInfo.endDate,
|
|
devId: this.bridgeInfo.bridgeId,
|
|
},
|
|
method: "post",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.countAlarmByCodeList = res.result.map(item => {
|
|
return {
|
|
...item,
|
|
name: item.monitorParamCodeName || item.monitorParamCode,
|
|
value: item.num,
|
|
}
|
|
});
|
|
that.opts2.color = that.colorList;
|
|
that.chartData2 = {
|
|
series: [{
|
|
data: that.countAlarmByCodeList,
|
|
}]
|
|
};
|
|
}
|
|
}
|
|
})
|
|
},
|
|
workTimeByWorkerClick(row) {
|
|
this.countWorkTimeByWorkerInfo.timeActive = row.id;
|
|
if (row.id == 1) {
|
|
this.countWorkTimeByWorkerInfo.startDate = this.$dayjs().format("YYYY-MM-DD");
|
|
this.countWorkTimeByWorkerInfo.endDate = this.$dayjs().format("YYYY-MM-DD");
|
|
} else if (row.id == 2) {
|
|
this.countWorkTimeByWorkerInfo.startDate = this.$dayjs().subtract(6, "day").format("YYYY-MM-DD");
|
|
this.countWorkTimeByWorkerInfo.endDate = this.$dayjs().format("YYYY-MM-DD");
|
|
} else if (row.id == 3) {
|
|
this.countWorkTimeByWorkerInfo.startDate = this.$dayjs().subtract(29, "day").format("YYYY-MM-DD");
|
|
this.countWorkTimeByWorkerInfo.endDate = this.$dayjs().format("YYYY-MM-DD");
|
|
}
|
|
this.getBridgeCraneDataCountWorkTimeByWorker();
|
|
},
|
|
// 司机工效分析(司机运载排行榜)
|
|
getBridgeCraneDataCountWorkTimeByWorker() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneData/countWorkTimeByWorker',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
startDate: this.countWorkTimeByWorkerInfo.startDate,
|
|
endDate: this.countWorkTimeByWorkerInfo.endDate,
|
|
devId: this.bridgeInfo.bridgeId,
|
|
},
|
|
method: "post",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.countWorkTimeByWorkerList = res.result;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 近一段时间工作时长统计趋势图(每日)
|
|
getBridgeCraneDataCountWorkTimeByDate() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneData/countWorkTimeByDate',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
startDate: this.$dayjs().subtract(6, "day").format("YYYY-MM-DD"),
|
|
endDate: this.$dayjs().format("YYYY-MM-DD"),
|
|
devId: this.bridgeInfo.bridgeId,
|
|
},
|
|
method: "post",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.chartData1 = {
|
|
categories: res.result.map(item => that.$dayjs(item.date).format("MM-DD")),
|
|
series: [{
|
|
data: res.result.map(item => item.workTime || 0),
|
|
}]
|
|
};
|
|
}
|
|
}
|
|
})
|
|
},
|
|
// 今日累计违章报警次数
|
|
getBridgeCraneAlarmCountAlarmToday() {
|
|
var that = this
|
|
this.sendRequest({
|
|
url: 'xmgl/bridgeCraneData/countByToday',
|
|
data: {
|
|
projectSn: this.projectDetail.projectSn,
|
|
},
|
|
method: "post",
|
|
success(res) {
|
|
if (res.code == 200) {
|
|
that.bridgeTodayList[0].countNum = res.result.liftNumToday || 0;
|
|
that.bridgeTodayList[0].countPer = res.result.liftNumTodayThanYesterdayPct || 0;
|
|
that.bridgeTodayList[1].countNum = res.result.alarmNumToday || 0;
|
|
that.bridgeTodayList[1].countPer = res.result.alarmNumTodayThanYesterdayPct || 0;
|
|
}
|
|
}
|
|
})
|
|
},
|
|
showToast(title, type) {
|
|
this.$refs.uToast.show({
|
|
title: title,
|
|
type: type,
|
|
})
|
|
},
|
|
},
|
|
computed: {
|
|
playUrlFilter() {
|
|
//
|
|
// let url = "";
|
|
// if(this.videoConfig && this.videoConfig.videoType == 1) {
|
|
// url = this.url
|
|
// } else if (this.url) {
|
|
// url = 'rtsp://42.180.188.17' + this.url.substring(20);
|
|
// }
|
|
console.log(88888, this.url);
|
|
return this.url
|
|
},
|
|
isYsy() {
|
|
console.info(this.projectVideoConfig?.videoType, '======')
|
|
return this.projectVideoConfig?.videoType == 1
|
|
},
|
|
ysyPlayUrl() {
|
|
// 萤石云播放地址
|
|
return `https://open.ys7.com/ezopen/h5/iframe?url=${this.playUrlFilter}&template=simple&autoplay=1&accessToken=${this.accessToken}`
|
|
},
|
|
alarmTypeCodeListUp() {
|
|
return (val) => {
|
|
const alarmTypeCodeList = [{
|
|
id: 1,
|
|
title: "制动打开",
|
|
},
|
|
{
|
|
id: 2,
|
|
title: "限位到",
|
|
},
|
|
{
|
|
id: 3,
|
|
title: "超载报警",
|
|
},
|
|
{
|
|
id: 4,
|
|
title: "超速报警",
|
|
},
|
|
{
|
|
id: 5,
|
|
title: "偏斜报警",
|
|
},
|
|
{
|
|
id: 6,
|
|
title: "上升",
|
|
},
|
|
{
|
|
id: 7,
|
|
title: "下降",
|
|
},
|
|
{
|
|
id: 8,
|
|
title: "前移",
|
|
},
|
|
{
|
|
id: 9,
|
|
title: "后移",
|
|
},
|
|
{
|
|
id: 10,
|
|
title: "左移",
|
|
},
|
|
{
|
|
id: 11,
|
|
title: "右移",
|
|
},
|
|
{
|
|
id: 12,
|
|
title: "断开",
|
|
},
|
|
];
|
|
const find = alarmTypeCodeList.find((item) => item.id == val);
|
|
return find ? find.title : "--";
|
|
};
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.new-nodata_height {
|
|
min-height: 800rpx;
|
|
position: relative;
|
|
}
|
|
|
|
.new-nodata_height2 {
|
|
min-height: 500rpx;
|
|
position: relative;
|
|
}
|
|
|
|
.content-popup {
|
|
.content-popup_main {
|
|
padding: 26rpx 0;
|
|
|
|
>view {
|
|
width: 100%;
|
|
height: 80rpx;
|
|
background-color: #ffffff;
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #1a1a1a;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
>view:not(:first-child) {
|
|
margin-top: 20rpx;
|
|
}
|
|
|
|
.popup_main_active {
|
|
background-color: rgba(81, 129, 246, 0.1);
|
|
color: #5181f6;
|
|
}
|
|
}
|
|
|
|
uni-scroll-view {
|
|
margin: 26rpx 0;
|
|
}
|
|
|
|
.content-popup_header {
|
|
height: 86rpx;
|
|
box-shadow: 0rpx 8rpx 10rpx -8rpx rgba(81, 129, 246, 0.42);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-weight: 800;
|
|
font-size: 30rpx;
|
|
color: #1a1a1a;
|
|
}
|
|
|
|
.confrim-btn {
|
|
padding: 18rpx 26rpx;
|
|
background-color: #ffffff;
|
|
box-shadow: 0rpx -8rpx 8rpx 0rpx rgba(0, 0, 0, 0.05);
|
|
display: flex;
|
|
|
|
>view {
|
|
width: 50%;
|
|
height: 76rpx;
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
>view:first-child {
|
|
background-color: rgba(81, 129, 246, 0.1);
|
|
border-radius: 6rpx 0rpx 0rpx 6rpx;
|
|
color: #5181f6;
|
|
}
|
|
|
|
>view:last-child {
|
|
background-color: #5181f6;
|
|
border-radius: 0rpx 6rpx 6rpx 0rpx;
|
|
color: #ffffff;
|
|
}
|
|
}
|
|
}
|
|
|
|
.content {
|
|
padding: 26rpx;
|
|
// height: calc(100vh - 88rpx - 88rpx - 118rpx - 26rpx);
|
|
// height: calc(82vh);
|
|
overflow: auto;
|
|
|
|
.box-main4 {
|
|
|
|
.content-box2 {
|
|
margin-top: 26rpx;
|
|
|
|
.box-main4_item {
|
|
margin-top: 26rpx;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
font-weight: 500;
|
|
font-size: 28rpx;
|
|
|
|
>view:first-child {
|
|
// width: 40%;
|
|
width: 51%;
|
|
color: #808080;
|
|
}
|
|
|
|
>view:last-child {
|
|
width: 60%;
|
|
color: #4D4D4D;
|
|
text-align: right;
|
|
}
|
|
}
|
|
}
|
|
|
|
.content-box1 {
|
|
overflow: auto;
|
|
position: relative;
|
|
|
|
/* 确保视频能够随页面滚动 */
|
|
.bridge-video {
|
|
margin-top: 26rpx;
|
|
|
|
/deep/ .m3u8-player,
|
|
.player-m3u8 {
|
|
width: 100%;
|
|
height: 304rpx;
|
|
|
|
}
|
|
|
|
.videoBox {
|
|
width: 100%;
|
|
height: 304rpx;
|
|
}
|
|
|
|
.videoBox1 {
|
|
width: 100%;
|
|
height: 304rpx;
|
|
background-color: #000000;
|
|
}
|
|
}
|
|
|
|
.box-main1_header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
|
|
>view {
|
|
display: flex;
|
|
align-items: center;
|
|
font-weight: 500;
|
|
font-size: 26rpx;
|
|
color: #808080;
|
|
|
|
>view:last-child {
|
|
width: 32rpx;
|
|
height: 32rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon2.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
margin-left: 10rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.content-box {
|
|
width: 100%;
|
|
padding: 26rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 16rpx;
|
|
}
|
|
}
|
|
|
|
.box-main3 {
|
|
.content-box2 {
|
|
margin-top: 26rpx;
|
|
|
|
.box-main2-box_charts {
|
|
margin-top: 26rpx;
|
|
height: 368rpx;
|
|
background: linear-gradient(180deg, #E9F1FC 0%, #FFFFFF 100%);
|
|
position: relative;
|
|
|
|
.box_charts-title {
|
|
font-weight: 500;
|
|
font-size: 22rpx;
|
|
color: #B3B3B3;
|
|
position: absolute;
|
|
top: 26rpx;
|
|
left: 20rpx;
|
|
}
|
|
}
|
|
}
|
|
|
|
.content-box1 {
|
|
.box-main3_item2 {
|
|
background: linear-gradient(90deg, #F8D8DA 0%, #FFFFFF 100%);
|
|
|
|
>view:nth-child(3) {
|
|
width: 35%;
|
|
background: linear-gradient(90deg, #F5D5B1 0%, #C0631C 100%);
|
|
}
|
|
|
|
>view:nth-child(2) {
|
|
color: #D9BB99;
|
|
|
|
>view:first-child {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon9.png');
|
|
}
|
|
}
|
|
}
|
|
|
|
.box-main3_item1 {
|
|
background: linear-gradient(90deg, #D4E3F7 0%, #FFFFFF 100%);
|
|
|
|
>view:nth-child(3) {
|
|
width: 65%;
|
|
background: linear-gradient(90deg, #F9F7F8 0%, #949A9E 100%);
|
|
}
|
|
|
|
>view:nth-child(2) {
|
|
color: #C2C2C2;
|
|
|
|
>view:first-child {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon8.png');
|
|
}
|
|
}
|
|
}
|
|
|
|
.box-main3_item0 {
|
|
background: linear-gradient(90deg, #FAEDD8 0%, #FFFFFF 100%);
|
|
|
|
>view:nth-child(3) {
|
|
width: 100%;
|
|
background: linear-gradient(90deg, #FFD700 0%, #F4AF4D 100%);
|
|
}
|
|
|
|
>view:nth-child(2) {
|
|
color: #FFD700;
|
|
|
|
>view:first-child {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon7.png');
|
|
}
|
|
}
|
|
}
|
|
|
|
.box-main3_item {
|
|
width: 100%;
|
|
padding: 20rpx 26rpx;
|
|
|
|
border-radius: 16rpx;
|
|
margin-top: 26rpx;
|
|
|
|
>view:nth-child(3) {
|
|
|
|
height: 10rpx;
|
|
border-radius: 94rpx;
|
|
margin-top: 6rpx;
|
|
}
|
|
|
|
>view:nth-child(2) {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-top: 14rpx;
|
|
font-weight: 800;
|
|
font-size: 26rpx;
|
|
|
|
>view:first-child {
|
|
width: 36rpx;
|
|
height: 22rpx;
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
margin-right: 20rpx;
|
|
}
|
|
}
|
|
|
|
>view:nth-child(1) {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #1A1A1A;
|
|
|
|
>view:last-child {
|
|
font-weight: 800;
|
|
font-size: 26rpx;
|
|
color: #FFD700;
|
|
}
|
|
}
|
|
}
|
|
|
|
.box-main2-time {
|
|
display: flex;
|
|
margin-top: 26rpx;
|
|
|
|
>view {
|
|
width: 144rpx;
|
|
height: 60rpx;
|
|
background-color: #EFF3F7;
|
|
border-radius: 50rpx;
|
|
font-weight: 500;
|
|
font-size: 26rpx;
|
|
color: #1A1A1A;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-right: 26rpx;
|
|
}
|
|
|
|
.time-active {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-bg2.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
.content-box {
|
|
width: 100%;
|
|
padding: 26rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 16rpx;
|
|
}
|
|
}
|
|
|
|
.box-main2 {
|
|
.content-box2 {
|
|
margin-top: 26rpx;
|
|
|
|
.content-box2_main {
|
|
padding: 26rpx;
|
|
background: #EFF3F7;
|
|
border-radius: 8rpx;
|
|
margin-top: 26rpx;
|
|
|
|
.box2_main_bottom {
|
|
margin-top: 26rpx;
|
|
padding: 26rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 8rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 30rpx;
|
|
color: #000000;
|
|
|
|
>view:first-child {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon6.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
margin-right: 30rpx;
|
|
}
|
|
}
|
|
|
|
.box2_main_top {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-weight: 500;
|
|
|
|
>view:last-child {
|
|
font-size: 26rpx;
|
|
color: #B3B3B3;
|
|
}
|
|
|
|
>view:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
>view:first-child {
|
|
width: 76rpx;
|
|
height: 76rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon5.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
|
|
>view:last-child {
|
|
font-size: 30rpx;
|
|
color: #498CEC;
|
|
margin-left: 36rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.content-box1 {
|
|
.box-main2-time {
|
|
display: flex;
|
|
margin-top: 26rpx;
|
|
|
|
>view {
|
|
width: 144rpx;
|
|
height: 60rpx;
|
|
background-color: #EFF3F7;
|
|
border-radius: 50rpx;
|
|
font-weight: 500;
|
|
font-size: 26rpx;
|
|
color: #1A1A1A;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-right: 26rpx;
|
|
}
|
|
|
|
.time-active {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-bg2.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
}
|
|
|
|
.box-main2-box_charts {
|
|
height: 348rpx;
|
|
}
|
|
|
|
.box-main2-box_roll {
|
|
overflow-y: scroll;
|
|
margin-top: 26rpx;
|
|
max-height: 408rpx;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: space-between;
|
|
|
|
.box-main2-box {
|
|
width: 50%;
|
|
font-size: 28rpx;
|
|
color: #1A1A1A;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.bg_color {
|
|
width: 32rpx;
|
|
height: 20rpx;
|
|
border-radius: 8rpx;
|
|
margin-right: 20rpx;
|
|
}
|
|
}
|
|
|
|
>view:nth-child(n + 3) {
|
|
margin-top: 26rpx;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
.content-box {
|
|
width: 100%;
|
|
padding: 26rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 16rpx;
|
|
}
|
|
}
|
|
|
|
.box-main1 {
|
|
width: 100%;
|
|
height: 100%;
|
|
background: #FFFFFF;
|
|
border-radius: 16rpx;
|
|
padding: 26rpx;
|
|
|
|
.main1-item {
|
|
margin-top: 26rpx;
|
|
width: 100%;
|
|
// height: 244rpx;
|
|
border-radius: 8rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-bg1.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
|
|
|
|
.main1-item-bottom {
|
|
padding: 24rpx 26rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
|
|
>view:last-child {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
>view:first-child {
|
|
font-weight: 500;
|
|
font-size: 26rpx;
|
|
color: #1A1A1A;
|
|
}
|
|
|
|
.bottom-image_up {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-up.png');
|
|
}
|
|
|
|
.bottom-image_down {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-down.png');
|
|
}
|
|
|
|
>view:last-child {
|
|
width: 30rpx;
|
|
height: 30rpx;
|
|
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
margin-left: 26rpx;
|
|
}
|
|
}
|
|
|
|
>view:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
>view:last-child {
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #4D4D4D;
|
|
margin-left: 10rpx;
|
|
}
|
|
|
|
>view:first-child {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon3.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
.main1-item-top {
|
|
padding: 34rpx 22rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.item-image0 {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon10.png');
|
|
}
|
|
|
|
.item-image1 {
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon4.png');
|
|
}
|
|
|
|
>view:first-child {
|
|
width: 76rpx;
|
|
height: 76rpx;
|
|
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
|
|
.item-top_right {
|
|
margin-left: 36rpx;
|
|
flex: 1;
|
|
|
|
.schedule {
|
|
width: 100%;
|
|
height: 20rpx;
|
|
background: #EFF3F7;
|
|
border-radius: 94rpx;
|
|
margin-top: 34rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
>view {
|
|
width: 50%;
|
|
height: 8rpx;
|
|
background: #498CEC;
|
|
border-radius: 94rpx;
|
|
position: relative;
|
|
}
|
|
|
|
>view::after {
|
|
content: "";
|
|
width: 20rpx;
|
|
height: 20rpx;
|
|
background: rgba(255, 136, 0, 0.3);
|
|
border-radius: 50%;
|
|
position: absolute;
|
|
right: -10rpx;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
}
|
|
|
|
>view::before {
|
|
content: "";
|
|
width: 12rpx;
|
|
height: 12rpx;
|
|
background: #FF8800;
|
|
border-radius: 50%;
|
|
position: absolute;
|
|
right: -6rpx;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
}
|
|
}
|
|
|
|
>view:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
|
|
>view:first-child {
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #498CEC;
|
|
}
|
|
|
|
>view:last-child {
|
|
font-weight: bold;
|
|
font-size: 32rpx;
|
|
color: #1A1A1A;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.box-main1_header {
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #1A1A1A;
|
|
}
|
|
}
|
|
|
|
/deep/ .u-collapse-item {
|
|
position: relative;
|
|
}
|
|
|
|
/deep/ .u-collapse-body {
|
|
width: calc(100% - 52rpx);
|
|
height: initial !important;
|
|
position: absolute;
|
|
top: 134rpx;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
z-index: 11;
|
|
}
|
|
|
|
.collapse-content {
|
|
width: 100%;
|
|
padding: 16rpx 26rpx;
|
|
max-height: 472rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 16rpx;
|
|
border: 4rpx solid #DDEEFD;
|
|
overflow-y: auto;
|
|
|
|
>view:not(:last-child) {
|
|
border-bottom: 2rpx solid #DDEEFD;
|
|
}
|
|
|
|
>view {
|
|
margin-top: 16rpx;
|
|
padding: 10rpx 40rpx 26rpx;
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
color: #1A1A1A;
|
|
}
|
|
|
|
.view-active {
|
|
background: #DDEEFD;
|
|
}
|
|
}
|
|
|
|
/deep/ .u-collapse-head {
|
|
padding: 0;
|
|
background: #FFFFFF;
|
|
}
|
|
|
|
.collapse-header {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
background: #FFFFFF;
|
|
border: 2rpx solid #DDEEFD;
|
|
padding: 36rpx 26rpx;
|
|
|
|
>view {
|
|
display: flex;
|
|
align-items: center;
|
|
font-weight: 500;
|
|
font-size: 30rpx;
|
|
|
|
>view:last-child {
|
|
margin-left: 26rpx;
|
|
}
|
|
}
|
|
|
|
>view:first-child {
|
|
color: #1A1A1A;
|
|
|
|
>view:first-child {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon1.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
}
|
|
|
|
>view:last-child {
|
|
color: #4D4D4D;
|
|
|
|
.arrow-bottom {
|
|
width: 40rpx;
|
|
height: 40rpx;
|
|
background-image: url('@/static/bridgeCraneMonitor/index-icon2.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
}
|
|
}
|
|
|
|
.addIssue {
|
|
min-height: 100vh;
|
|
background-color: #F2F3F7;
|
|
// max-height: 100vh;
|
|
// overflow: hidden;
|
|
}
|
|
|
|
|
|
|
|
.fixedheader {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
z-index: 999;
|
|
|
|
/deep/ .headerBox {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.headerName {
|
|
z-index: 1;
|
|
}
|
|
}
|
|
|
|
.new-nodata {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
|
|
>view {
|
|
width: 300rpx;
|
|
height: 300rpx;
|
|
background-image: url('@/static/staffAttendance/nodata.png');
|
|
background-repeat: no-repeat;
|
|
background-size: 100% 100%;
|
|
}
|
|
|
|
>text {
|
|
font-size: 22rpx;
|
|
color: #808080;
|
|
margin-top: 60rpx;
|
|
}
|
|
}
|
|
</style> |