@@ -1,7 +1,8 @@ | |||
<template> | |||
<n-layout-header class="layout__header" bordered> | |||
<div class="header__logo"> | |||
<n-image height="18" src="/logo.png" preview-disabled /> | |||
<!-- <n-image height="18" src="/logo.png" preview-disabled /> --> | |||
汤山林场巡检管理平台 | |||
</div> | |||
<n-dropdown trigger="hover" :options="options" @select="handleSelect"> | |||
@@ -87,6 +88,8 @@ export default defineComponent({ | |||
} | |||
.header__logo{ | |||
height: 18px; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.user_msg { | |||
display: flex; |
@@ -29,7 +29,7 @@ | |||
<div class="video__item"> | |||
<div class="item__weather"> | |||
<ul> | |||
<li v-for="(item,index) in weatherList" :key="index">{{ item.label }}:{{ item.value }}</li> | |||
<li v-for="(item,index) in weatherList" :key="index"> {{ item.label }}: {{ item.value }} </li> | |||
</ul> | |||
</div> | |||
<!-- <VideoPlayer :options="getVideoOptions.outer" /> --> | |||
@@ -85,8 +85,8 @@ export default { | |||
const parm = res.data.wth?.parm || [] | |||
data.weatherList = parm.length !== 0 ? [ | |||
// { label: '天气', value: '' }, | |||
{ label: '气温', value: parm.tmp + '℃' }, | |||
{ label: '湿度', value: parm.hum + 'RH' }, | |||
{ label: '气温', value: (parm.tmp / 10) + '℃' }, | |||
{ label: '湿度', value: (parm.hum / 10) + 'RH' }, | |||
{ label: '风度', value: parm.wspd + 'm/s' }, | |||
{ label: '风向', value: parm.wdir } | |||
] : [] |
@@ -4,16 +4,17 @@ | |||
<p class="card__title--left">待飞行任务</p> | |||
<p class="card__title--right" @click="handlePreviewMore">查看更多<SvgIcon icon-class="arrow" /></p> | |||
</div> | |||
<div> | |||
<div class="card__table"> | |||
<n-data-table | |||
:bordered="false" | |||
:single-column="true" | |||
:columns="columns" | |||
:data="tableData" | |||
:pagination="false" | |||
:max-heght="350" | |||
> | |||
<template #empty> | |||
无数据 | |||
<img src="@/assets/images/no-task.png" alt=""> | |||
</template> | |||
</n-data-table> | |||
</div> | |||
@@ -46,7 +47,7 @@ export default { | |||
}, | |||
{ | |||
title: '创建人', | |||
key: 'inspectionType', | |||
key: 'createUser', | |||
align: 'center' | |||
} | |||
] | |||
@@ -58,7 +59,7 @@ export default { | |||
* @return {*} | |||
*/ | |||
const loadDataTable = (async function() { | |||
const res = await getTaskList({ page: 1, limit: 6 }) | |||
const res = await getTaskList({ page: 1, limit: 6, status: 1 }) | |||
if (res.code === 0) { | |||
data.tableData = res.data.records | |||
} | |||
@@ -102,7 +103,9 @@ export default { | |||
} | |||
} | |||
} | |||
.card__table{ | |||
height: calc(100% - 40px); | |||
} | |||
::v-deep(.n-data-table){ | |||
.n-data-table-tr{ | |||
.n-data-table-th{ |
@@ -91,6 +91,7 @@ export default { | |||
function handleAirportChange(value) { | |||
if (value === data.airportIdBack) return | |||
data.airportIdBack = value | |||
data.videoForm.taskId = null | |||
missionLive(value) | |||
.then(res => { | |||
if (res.code === 0) { | |||
@@ -105,12 +106,13 @@ export default { | |||
} | |||
function handleVideoChange(value) { | |||
const row = data.taskOptions.find((item) => { return item.id === value }) | |||
if (!value) { | |||
data.liveUrl = { ...data.airportUrl } | |||
} else { | |||
data.liveUrl = { | |||
origin: 'http://101.43.84.72:8080/live/34020000001320000001@34020000001320000001.flv', | |||
analyse: 'http://101.43.84.72:8080/live/34020000001320000001@34020000001320000001.flv' | |||
origin: row.videoUrl, | |||
analyse: row.aiVideoUrl | |||
} | |||
} | |||
} |
@@ -11,7 +11,7 @@ | |||
<n-gi><span>林场名称</span></n-gi> | |||
<n-gi><span>{{ reportDetail.lcName }}</span></n-gi> | |||
<n-gi><span>巡查里程</span></n-gi> | |||
<n-gi><span>{{ reportDetail?.mission?.mileage/1000 }}公里</span></n-gi> | |||
<n-gi><span>{{ reportDetail?.mission?.mileage / 1000 }}公里</span></n-gi> | |||
</n-grid> | |||
</div> | |||
</div> | |||
@@ -20,7 +20,7 @@ | |||
<div> | |||
<n-grid :cols="2"> | |||
<n-gi><span>气象信息</span></n-gi> | |||
<n-gi><span v-for="(item,index) in weatherList" :key="index"> {{ item.label }}: {{ item.value }} </span></n-gi> | |||
<n-gi><span v-for="(item,index) in weatherList" :key="index"> {{ item.label }}: {{ item.value }} </span></n-gi> | |||
<n-gi><span>巡检方式</span></n-gi> | |||
<n-gi><span>{{ reportDetail.lcName }}</span></n-gi> | |||
<n-gi><span>巡检设备</span></n-gi> |
@@ -41,7 +41,7 @@ | |||
</template> | |||
<script> | |||
import { defineComponent, computed, reactive, toRefs, ref, watch } from 'vue' | |||
import { defineComponent, computed, reactive, toRefs, ref, watch, nextTick } from 'vue' | |||
import { Map, View, Feature } from 'ol' | |||
import 'ol/ol.css' | |||
import { Tile, Vector as VectorLayer } from 'ol/layer' | |||
@@ -181,7 +181,7 @@ export default defineComponent({ | |||
} | |||
const len = Math.abs(params.currentTime - data.aiVideoInfo.currentTime) | |||
if ((params.status === 'skip' || len > 3) && data.canSkip) { | |||
aiVideoRef.value.seekTime(params.currentTime + 0.1) | |||
aiVideoRef.value?.seekTime(params.currentTime + 0.1) | |||
data.canSkip = false | |||
setTimeout(() => { | |||
data.canSkip = true | |||
@@ -194,7 +194,7 @@ export default defineComponent({ | |||
} | |||
const len = Math.abs(params.currentTime - data.videoInfo.currentTime) | |||
if ((params.status === 'skip' || len > 3) && data.canSkip) { | |||
videoRef.value.seekTime(params.currentTime + 0.1) | |||
videoRef.value?.seekTime(params.currentTime + 0.1) | |||
data.canSkip = false | |||
setTimeout(() => { | |||
data.canSkip = true | |||
@@ -209,12 +209,15 @@ export default defineComponent({ | |||
watch([() => props.visible, () => data.videoStatus], ([visible, status]) => { | |||
if (visible) { | |||
// initTrack(formatTradeList(data.trackList), 'route') | |||
nextTick(() => { | |||
if (!data.mapData) { | |||
initMap() | |||
initTrack(formatTradeList(data.trackList), 'route') | |||
} | |||
}) | |||
} | |||
if (status.status === 'ready' && status.aiStatus === 'ready') { | |||
startAllVideo() | |||
initMap() | |||
initTrack(formatTradeList(data.trackList), 'route') | |||
} | |||
}, { deep: true }) | |||