815 lines
25 KiB
Vue
815 lines
25 KiB
Vue
<template>
|
||
<!-- 运行信息 -->
|
||
<vue-scroll style="height: 100%">
|
||
<div class="operationInfo">
|
||
<div class="title whiteBlock">
|
||
<el-form :inline="true" size="medium" class="demo-form-inline">
|
||
<el-form-item :label="$t('message.lifter.devName')">
|
||
<el-select
|
||
v-model="devSn"
|
||
:placeholder="
|
||
$t('message.lifter.pleaseSelect') + $t('message.lifter.devName')
|
||
" @visible-change='visibleChange'
|
||
>
|
||
<el-option
|
||
:label="item.devName"
|
||
v-for="(item, index) in lifterList"
|
||
:key="index"
|
||
:value="item.devSn"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" @click="getListData" plain>{{
|
||
$t("message.lifter.demand")
|
||
}}</el-button>
|
||
<!-- <el-button type="warning" plain @click="refresh">{{
|
||
$t("message.lifter.refresh")
|
||
}}</el-button> -->
|
||
</el-form-item>
|
||
</el-form>
|
||
</div>
|
||
|
||
<div class="content whiteBlock">
|
||
<div class="bottom_info flex" style="height: 398px">
|
||
<div class="T_H_wrap" style="margin-right: 12px">
|
||
<div class="load whiteBlock">
|
||
<div class="state_title pageTitle">{{ $t("message.lifter.realTimeVideo") }}</div>
|
||
<div style="margin-bottom: 15px">
|
||
<el-select
|
||
size="small"
|
||
v-model="videoId"
|
||
:placeholder="$t('message.lifter.pleaseSelectVideo')"
|
||
@change="getVideo"
|
||
@visible-change='visibleChange'
|
||
>
|
||
<el-option
|
||
v-for="item in videoList"
|
||
:key="item.id"
|
||
:label="item.videoName"
|
||
:value="item.id"
|
||
>
|
||
</el-option>
|
||
</el-select>
|
||
<el-button type="primary" size="small" style="margin-left: 10px;height:32px" plain
|
||
>{{ $t("message.lifter.demand") }}</el-button
|
||
>
|
||
</div>
|
||
<videoModule
|
||
class="playVideoBox"
|
||
:type="'1x1'"
|
||
:value="selectList"
|
||
:displayBottomMod="false"
|
||
:winNumBer="1"
|
||
:autoplay="false"
|
||
:showCaptrue="false"
|
||
:showControl="false"
|
||
:showPlayback="false"
|
||
></videoModule>
|
||
</div>
|
||
</div>
|
||
<div class="T_H_wrap" style="margin-right: 12px">
|
||
<div class="load whiteBlock">
|
||
<div class="flex2">
|
||
<div class="state_title pageTitle">{{company == 'longguang'? $t("message.lifter.currentLiftOperator") : $t("message.lifter.currentElevatorDriver") }}</div>
|
||
<el-button
|
||
type="primary"
|
||
size="small"
|
||
style="margin-left: 10px; margin-bottom: 15px"
|
||
@click="showDriver = true"
|
||
plain
|
||
>{{company == 'longguang'? $t("message.lifter.viewLiftOperator") : $t("message.lifter.viewDriverList") }}</el-button
|
||
>
|
||
</div>
|
||
<vue-scroll style="height: 86%;">
|
||
<div class="driver_info" v-if="company == 'longguang' || item.idCard == realTimeDevData.driverIdCard" v-for="item in driverList">
|
||
<img
|
||
class="imgHead"
|
||
:src="fileUrl + item.fieldAcquisitionUrl"
|
||
v-if="item.fieldAcquisitionUrl"
|
||
width=""
|
||
/>
|
||
<img src="@/assets/images/profile_photo.png" v-else />
|
||
<div>{{ $t("message.lifter.fullName") }}:{{ item.workerName }}</div>
|
||
<div>{{ $t("message.lifter.contactNumber") }}:{{ item.emergentPhone }}</div>
|
||
</div>
|
||
<!-- <div class="driver_info" v-for="item in driverList">-->
|
||
<!-- <img-->
|
||
<!-- :src="realTimeDevData.fieldAcquisitionUrl"-->
|
||
<!-- v-if="realTimeDevData.fieldAcquisitionUrl"-->
|
||
<!-- />-->
|
||
<!-- <img src="@/assets/images/profile_photo.png" v-else />-->
|
||
<!-- <div>姓名:{{ realTimeDevData.driverName }}</div>-->
|
||
<!-- <div>上岗时间:{{ realTimeDevData.reciveTime }}</div>-->
|
||
<!-- </div>-->
|
||
</vue-scroll>
|
||
</div>
|
||
</div>
|
||
<div class="T_H_wrap">
|
||
<div class="load whiteBlock">
|
||
<div class="state_title pageTitle">{{ $t("message.lifter.recentWork") }}</div>
|
||
<div class="flex">
|
||
<el-date-picker style="width: 300px"
|
||
v-model="timeValue"
|
||
type="daterange"
|
||
size="small"
|
||
:range-separator="$t('message.lifter.to')"
|
||
:start-placeholder="$t('message.lifter.startDate')"
|
||
value-format="yyyy-MM-dd"
|
||
:end-placeholder="$t('message.lifter.deadline')"
|
||
@change="getTime"
|
||
>
|
||
</el-date-picker>
|
||
<el-button
|
||
type="primary"
|
||
size="small"
|
||
style="margin-left: 10px"
|
||
plain
|
||
@click="getRecentWorkList"
|
||
>{{ $t("message.lifter.demand") }}</el-button
|
||
>
|
||
</div>
|
||
|
||
<el-table
|
||
:data="workList"
|
||
class="tables"
|
||
style="width: 100%; min-height: 180px"
|
||
>
|
||
<el-table-column prop="startTime" :label="$t('message.lifter.startTime')" width="180">
|
||
</el-table-column>
|
||
<el-table-column prop="endTime" :label="$t('message.lifter.endTime')" width="180">
|
||
</el-table-column>
|
||
<el-table-column prop="workTime" :label="$t('message.lifter.workingHours')">
|
||
</el-table-column>
|
||
<el-table-column prop="loading" :label="$t('message.lifter.liftingWeight')"> </el-table-column>
|
||
<el-table-column prop="driverName" :label="company == 'longguang'? $t('message.lifter.liftOperator') : $t('message.lifter.driver') ">
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="direction_data_wrap flex" style="margin-top: 5px">
|
||
<div class="data_wrap whiteBlock" >
|
||
<div class="state_title pageTitle">
|
||
{{ $t("message.lifter.realTimeData") }}
|
||
</div>
|
||
<div class="flex">
|
||
<div class="data_type">
|
||
<div class="type bg1 flex2">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata11.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.load") }}</div>
|
||
</div>
|
||
<div class="value">{{ realTimeData.loading?realTimeData.loading:0 }} kg</div>
|
||
</div>
|
||
<div class="type bg1 flex2 marg_t">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata13.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.weightPercentage") }}</div>
|
||
</div>
|
||
<div class="value">{{ realTimeData.loadRatio?realTimeData.loadRatio:0 }} %</div>
|
||
</div>
|
||
</div>
|
||
<div class="data_type">
|
||
<div class="type bg2 flex2">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata2.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.altitude") }}</div>
|
||
</div>
|
||
<div class="value">{{ realTimeData.height?realTimeData.height:0 }} m</div>
|
||
</div>
|
||
<!-- 预警 -->
|
||
<div class="type bg2 flex2 marg_t">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata10.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.alarmStatus") }}</div>
|
||
</div>
|
||
<div class="value">{{realTimeData.isAlarm==1? $t("message.lifter.abnormal") : $t("message.lifter.normal") }}</div>
|
||
</div>
|
||
</div>
|
||
<div class="data_type">
|
||
<div class="type bg3 flex2">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata12.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.heightPercentage") }}</div>
|
||
</div>
|
||
<div v-if="floorNumS" class="value">{{ floorNumS?floorNumS:"--" }} %</div>
|
||
</div>
|
||
<div class="type bg3 flex2 marg_t">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata6.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.currentSpeed") }}</div>
|
||
</div>
|
||
<div class="value">{{realTimeData.speed?realTimeData.speed:0}}m/s</div>
|
||
</div>
|
||
</div>
|
||
<div class="data_type">
|
||
<div class="type bg4 flex2">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata4.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.dipAngle") }}X</div>
|
||
</div>
|
||
<div class="value">{{ realTimeData.dipAngleX?realTimeData.dipAngleX:0 }} °</div>
|
||
</div>
|
||
<div class="type bg4 flex2 marg_t">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata6.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.airSpeed") }}</div>
|
||
</div>
|
||
<div class="value">{{realTimeData.windSpeed?realTimeData.windSpeed:0}} m/s</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="data_type">
|
||
<div class="type bg5 flex2">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata5.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.dipAngle") }}Y</div>
|
||
</div>
|
||
<div class="value">{{ realTimeData.dipAngleY?realTimeData.dipAngleY:0 }} °</div>
|
||
</div>
|
||
<div class="type bg5 flex2 marg_t">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata2.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.currentFloor") }}</div>
|
||
</div>
|
||
<div class="value">{{realTimeData.floorNum}}</div>
|
||
</div>
|
||
</div>
|
||
<div class="data_type">
|
||
<div class="type bg6 flex2">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata14.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.numberOfPeople") }}</div>
|
||
</div>
|
||
<div class="value">{{ realTimeData.peopleNumber?realTimeData.peopleNumber:0 }}</div>
|
||
</div>
|
||
<div class="type bg6 flex2 marg_t">
|
||
<div class="left">
|
||
<img
|
||
src="@/assets/images/towericon/towercurrentdata10.png"
|
||
/>
|
||
<div>{{ $t("message.lifter.equipmentStatus") }}</div>
|
||
</div>
|
||
<div class="value">{{devonline===0? $t("message.lifter.offLine") : $t("message.lifter.onLine") }}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bottom_info flex">
|
||
<div class="T_H_wrap" style="margin-right: 12px">
|
||
<div class="load whiteBlock">
|
||
<div class="state_title pageTitle">
|
||
{{
|
||
$t("message.lifter.realTime") +
|
||
$t("message.lifter.liftingWeight")
|
||
}}
|
||
</div>
|
||
<div style="height: 85%; width: 100%" ref="liftingWeight"></div>
|
||
</div>
|
||
<!-- <div class="altitude">
|
||
<div class="state_title pageTitle">{{$t('message.lifter.realTime')+$t('message.lifter.inclination')}}</div>
|
||
<div style="height: 85%; width: 100%" ref="gradient"></div>
|
||
</div> -->
|
||
</div>
|
||
<div class="T_H_wrap">
|
||
<div class="load whiteBlock">
|
||
<div class="state_title pageTitle">
|
||
{{
|
||
$t("message.lifter.realTime") + $t("message.lifter.altitude")
|
||
}}
|
||
</div>
|
||
<div style="height: 85%; width: 100%" ref="height"></div>
|
||
</div>
|
||
<!-- <div class="altitude">
|
||
<div class="state_title pageTitle">{{$t('message.lifter.realTime')+$t('message.lifter.alarm')}}</div>
|
||
<div style="height: 85%; width: 100%" ref="alarm"></div>
|
||
</div> -->
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<!-- 查看司机信息 -->
|
||
<el-dialog :modal-append-to-body="false" :title="company == 'longguang'? $t('message.lifter.liftOperator') : $t('message.lifter.driverInfo') " :visible.sync="showDriver" width="667px">
|
||
<div class="dialog_content">
|
||
<el-table :data="driverList" class="tables" style="width: 100%">
|
||
<el-table-column prop="workerName" :label="$t('message.lifter.fullName')"> </el-table-column>
|
||
<el-table-column prop="emergentPhone" :label="$t('message.lifter.contactNumber')">
|
||
</el-table-column>
|
||
<el-table-column prop="address" :label="$t('message.lifter.photo')">
|
||
<template slot-scope="scope">
|
||
<img
|
||
:src="fileUrl + scope.row.fieldAcquisitionUrl"
|
||
@click="openImg(fileUrl + scope.row.fieldAcquisitionUrl)"
|
||
width="20"
|
||
alt=""
|
||
srcset=""
|
||
/>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
|
||
</div>
|
||
</vue-scroll>
|
||
</template>
|
||
<script>
|
||
import echarts from 'echarts4';;
|
||
import {
|
||
getLifterListApi,
|
||
getLifterCurrentDataApi,
|
||
getSelectLifterBySnApi,
|
||
getSelectLifterWorkCycleListApi,
|
||
getTodayLifterCurrentDataListApi
|
||
} from "@/assets/js/api/lifter";
|
||
|
||
import {
|
||
hidePluginWindow,showPluginWindow
|
||
} from "@/components/videoModule/isc_plugin/video_isc_plugin.js";
|
||
|
||
|
||
import videoModule from "@/components/videoModule/videoModule.vue";
|
||
export default {
|
||
components: {
|
||
videoModule,
|
||
},
|
||
data() {
|
||
return {
|
||
projectSn: "",
|
||
lifterList: [],
|
||
devSn: "",
|
||
realTimeData: {
|
||
loading: 0,
|
||
loadRatio: 0,
|
||
height: 0,
|
||
heightRatio: 0,
|
||
biasAngle: 0,
|
||
biasRatio: 0,
|
||
peopleNumber: 0,
|
||
dipAngleX:0,
|
||
speed:0,
|
||
floorNum:0,
|
||
windSpeed:0,
|
||
isAlarm:0
|
||
},
|
||
videoId: "",
|
||
videoList: [],
|
||
selectList: [], //视频数据源
|
||
realTimeDevData: {},
|
||
showDriver: false,
|
||
timeValue: "",
|
||
fileUrl: "",
|
||
workList: [],
|
||
driverList:[],
|
||
startTime:'',
|
||
endTime:'',
|
||
echartsArr:[],
|
||
devonline:0,
|
||
maxHeight:'',
|
||
floorNumS:"",
|
||
company:COMPANY
|
||
};
|
||
},
|
||
created() {
|
||
this.projectSn = this.$store.state.projectSn;
|
||
this.fileUrl = this.$store.state.FILEURL;
|
||
this.getLifterList();
|
||
},
|
||
mounted() {
|
||
|
||
},
|
||
methods: {
|
||
openImg(src){
|
||
window.open(src)
|
||
},
|
||
//下拉框聚焦
|
||
visibleChange(val){
|
||
if(val){
|
||
hidePluginWindow();
|
||
}else{
|
||
showPluginWindow();
|
||
}
|
||
},
|
||
|
||
|
||
|
||
//选择时间时
|
||
getTime(val) {
|
||
if (val) {
|
||
this.startTime = val[0];
|
||
this.endTime = val[1];
|
||
} else {
|
||
this.startTime = "";
|
||
this.endTime = "";
|
||
}
|
||
},
|
||
|
||
//获取近期工作数据列表
|
||
getRecentWorkList() {
|
||
let data = {
|
||
endTime: this.endTime,
|
||
startTime: this.startTime,
|
||
devSn: this.devSn,
|
||
};
|
||
getSelectLifterWorkCycleListApi(data).then((res) => {
|
||
if (res.code == 200) {
|
||
this.workList = res.result;
|
||
}
|
||
});
|
||
},
|
||
|
||
|
||
//获取设备列表下拉
|
||
getLifterList() {
|
||
let data = {
|
||
projectSn: this.projectSn,
|
||
};
|
||
getLifterListApi(data).then((res) => {
|
||
if (res.code == 200) {
|
||
this.lifterList = res.result;
|
||
if(res.result.length>0){
|
||
this.devSn = res.result[0].devSn;
|
||
this.getListData();
|
||
this.getSelectLifterBySn();
|
||
this.getRecentWorkList();
|
||
this.getTodayLifterCurrentDataList();
|
||
}
|
||
|
||
}
|
||
});
|
||
},
|
||
|
||
//获取 设备 视频列表
|
||
getSelectLifterBySn(){
|
||
let data = {
|
||
devSn:this.devSn
|
||
}
|
||
getSelectLifterBySnApi(data).then(res=>{
|
||
this.maxHeight = res.result.lifter.maxHeight
|
||
if(res.code==200){
|
||
this.videoList = res.result.videoList;
|
||
this.devonline=res.result.lifter.devonline
|
||
this.driverList = res.result.driverList;
|
||
if(res.result.videoList.length>0){
|
||
this.videoId = res.result.videoList[0].id;
|
||
this.getVideo(res.result.videoList[0].id);
|
||
}
|
||
}
|
||
})
|
||
},
|
||
|
||
//获取实时数据
|
||
getListData() {
|
||
let data = {
|
||
devSn: this.devSn,
|
||
};
|
||
getLifterCurrentDataApi(data).then((res) => {
|
||
if (res.code == 200) {
|
||
if (res.result) {
|
||
this.realTimeData = res.result;
|
||
console.log(this.maxHeight);
|
||
if (!this.maxHeight){
|
||
this.$message.error(this.$t('message.lifter.theHeightIsZero'));
|
||
return
|
||
}
|
||
let Num = res.result.height/this.maxHeight*100
|
||
this.floorNumS = Num.toFixed(2)
|
||
this.getSelectLifterBySn();
|
||
this.realTimeDevData = res.result;
|
||
this.getTodayLifterCurrentDataList();
|
||
|
||
}else{
|
||
this.realTimeData= {
|
||
loading: 0,
|
||
loadRatio: 0,
|
||
height: 0,
|
||
heightRatio: 0,
|
||
biasAngle: 0,
|
||
biasRatio: 0,
|
||
peopleNumber: 0,
|
||
dipAngleX:0,
|
||
speed:0,
|
||
floorNum:0,
|
||
windSpeed:0,
|
||
isAlarm:0
|
||
}
|
||
this.echartsArr = []
|
||
this.createdEcharts();
|
||
}
|
||
}
|
||
});
|
||
},
|
||
|
||
//选择的视频
|
||
getVideo(val) {
|
||
for (let i = 0; i < this.videoList.length; i++) {
|
||
if (val == this.videoList[i].id) {
|
||
this.selectList = [this.videoList[i]];
|
||
}
|
||
}
|
||
},
|
||
|
||
//刷新
|
||
refresh() {
|
||
this.devSn = "";
|
||
},
|
||
//获取图表数据
|
||
getTodayLifterCurrentDataList(){
|
||
let data = {
|
||
devSn:this.devSn
|
||
};
|
||
getTodayLifterCurrentDataListApi(data).then(res=>{
|
||
if(res.code==200){
|
||
if(res.result){
|
||
this.echartsArr = res.result;
|
||
|
||
}else{
|
||
this.echartsArr = []
|
||
}
|
||
this.createdEcharts(); //创建图表
|
||
}
|
||
})
|
||
},
|
||
|
||
|
||
|
||
//创建图表
|
||
createdEcharts() {
|
||
var chart1 = echarts.init(this.$refs.liftingWeight);
|
||
// var chart2 = echarts.init(this.$refs.gradient);
|
||
var chart3 = echarts.init(this.$refs.height);
|
||
// var chart4 = echarts.init(this.$refs.alarm);
|
||
chart1.clear();
|
||
// chart2.clear();
|
||
chart3.clear();
|
||
// chart4.clear();
|
||
chart1.setOption(this.getOption(0));
|
||
// chart2.setOption(this.getOption(1));
|
||
chart3.setOption(this.getOption(2));
|
||
// chart4.setOption(this.getOption(3));
|
||
},
|
||
//图表信息
|
||
getOption(index) {
|
||
let heightArr = [];
|
||
let loadArr = [];
|
||
let timeArr = [];
|
||
for(let i =0; i<this.echartsArr.length; i++){
|
||
let time = this.echartsArr[i].reciveTime.substring(12);
|
||
heightArr.push(this.echartsArr[i].height);
|
||
loadArr.push(this.echartsArr[i].loading);
|
||
timeArr.push(time)
|
||
}
|
||
var colors = ["#3A7BFF", "#55CBBB", "#B59CF2", "#F3D025"];
|
||
var opt = {
|
||
color: colors,
|
||
tooltip: {
|
||
trigger: "axis",
|
||
},
|
||
grid: {
|
||
top: 30,
|
||
bottom: 30,
|
||
},
|
||
// legend: {},
|
||
xAxis: {
|
||
type: "category",
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
data: timeArr,
|
||
axisLabel: {
|
||
//X轴刻度配置
|
||
interval: "auto", //0:表示全部显示不间隔;auto:表示自动根据刻度个数和宽度自动设置间隔个数
|
||
},
|
||
},
|
||
yAxis: {
|
||
name: [
|
||
this.$t("message.lifter.load") + "(kg)",
|
||
this.$t("message.lifter.angle") + "(°)",
|
||
this.$t("message.lifter.altitude") + "(m)",
|
||
this.$t("message.lifter.alarm") +
|
||
"(" +
|
||
this.$t("message.lifter.next") +
|
||
")",
|
||
][index],
|
||
axisTick: {
|
||
show: false,
|
||
},
|
||
axisLine: {
|
||
show: false,
|
||
},
|
||
splitLine: {
|
||
lineStyle: {
|
||
color: "#eee",
|
||
},
|
||
},
|
||
},
|
||
dataZoom: [
|
||
{
|
||
show: true,
|
||
// realtime: true,
|
||
start: 0,
|
||
end: 100,
|
||
height: 8,
|
||
borderColor: "transparent",
|
||
backgroundColor: "#e8e8e8",
|
||
filterColor: "#999999",
|
||
bottom: 0,
|
||
},
|
||
],
|
||
series: [
|
||
{
|
||
name: [
|
||
this.$t("message.lifter.load"),
|
||
this.$t("message.lifter.angle"),
|
||
this.$t("message.lifter.altitude"),
|
||
this.$t("message.lifter.alarm"),
|
||
][index],
|
||
type: "line",
|
||
symbol: "none",
|
||
smooth: true,
|
||
data: index==0?loadArr:heightArr,
|
||
// markLine: getMarkLine(index),
|
||
itemStyle: {
|
||
normal: {
|
||
lineStyle: {
|
||
color: colors[index],
|
||
},
|
||
areaStyle: {
|
||
color: colors[index],
|
||
opacity: 0.1,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
],
|
||
};
|
||
return opt;
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style lang="less" scoped>
|
||
.flex {
|
||
display: flex;
|
||
}
|
||
.flex2 {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
.operationInfo {
|
||
width: 100%;
|
||
height: 100%;
|
||
.title {
|
||
padding: 0 20px;
|
||
padding-top: 17px;
|
||
height: 70px;
|
||
box-sizing: border-box;
|
||
}
|
||
.content {
|
||
margin-top: 12px;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
height: 298px;
|
||
.pageTitle {
|
||
line-height: 20px;
|
||
}
|
||
.direction_data_wrap {
|
||
box-sizing: border-box;
|
||
height: 260px;
|
||
width: 100%;
|
||
|
||
.data_wrap {
|
||
width: 100%;
|
||
height: 100%;
|
||
padding: 12px 20px;
|
||
box-sizing: border-box;
|
||
.data_type {
|
||
width: 16%;
|
||
margin-right: 12px;
|
||
.type {
|
||
width: 100%;
|
||
height: 80px;
|
||
border-radius: 8px;
|
||
box-sizing: border-box;
|
||
padding: 10px 15px;
|
||
color: #ffffff;
|
||
font-size: 14px;
|
||
line-height: 20px;
|
||
text-align: center;
|
||
.left {
|
||
width: 45%;
|
||
}
|
||
}
|
||
.value {
|
||
font-size: 24px;
|
||
font-weight: 500;
|
||
text-align: right;
|
||
}
|
||
}
|
||
.marg_t {
|
||
margin-top: 12px;
|
||
}
|
||
}
|
||
}
|
||
.bottom_info {
|
||
width: 100%;
|
||
height: calc(100%);
|
||
margin-top: 12px;
|
||
box-sizing: border-box;
|
||
.T_H_wrap {
|
||
width: 50%;
|
||
height: 100%;
|
||
box-sizing: border-box;
|
||
.load {
|
||
width: 100%;
|
||
height: calc(100% - 6px);
|
||
// background: #fff;
|
||
padding: 12px 20px;
|
||
box-sizing: border-box;
|
||
}
|
||
.altitude {
|
||
margin-top: 12px;
|
||
width: 100%;
|
||
height: calc(50% - 6px);
|
||
background: #fff;
|
||
padding: 12px 20px;
|
||
box-sizing: border-box;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
.playVideoBox {
|
||
height: calc(100% - 90px);
|
||
}
|
||
|
||
.driver_info {
|
||
/*text-align: center;*/
|
||
line-height: 25px;
|
||
margin-top: 100px;
|
||
.imgHead{
|
||
width: 100px;
|
||
}
|
||
img {
|
||
margin-bottom: 18px;
|
||
}
|
||
div {
|
||
padding: 0 20px;
|
||
text-align: left;
|
||
}
|
||
}
|
||
|
||
.bg1 {
|
||
background-color: #7ba6ff;
|
||
background-image: none;
|
||
}
|
||
.bg2 {
|
||
background-color: #55cbbb;
|
||
}
|
||
.bg3 {
|
||
background-color: #84ccf3;
|
||
}
|
||
.bg4 {
|
||
background-color: #b59cf2;
|
||
}
|
||
.bg5 {
|
||
background-color: #f6b87d;
|
||
}
|
||
.bg6 {
|
||
background-color: #9ed96b;
|
||
}
|
||
}
|
||
</style>
|