From 1894e98229bb29c92bddae1fd87d4786494531b2 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Tue, 15 Apr 2025 20:28:02 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/views/Home/EventOverviewDetail/EventOverviewDetailRight.vue | 30 ++++
src/api/home/common.js | 15 ++
src/hooks/useMapAggregation/useMapAggregation.js | 57 ++++++--
src/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventOverviewDetailLeft.vue | 14 +
src/views/Home/SearchBox.vue | 133 +++++++++++++++++-
src/views/SignMachineNest/MachineLeft/InspectionRaskDetails.vue | 4
src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceEvent.vue | 8
src/components/CommonDateTime.vue | 19 ++
src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJobDetails/DeviceJobDetails.vue | 57 ++++---
src/assets/images/home/homeLeft/inspection-reset.png | 0
src/store/modules/home.js | 12 +
src/views/Home/HomeLeft/InspectionRaskDetails/InspectionRaskDetailsDialog.vue | 40 +++--
src/assets/images/home/homeLeft/inspection-select.png | 0
src/assets/images/task/reset.png | 0
src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJob.vue | 18 +
15 files changed, 324 insertions(+), 83 deletions(-)
diff --git a/src/api/home/common.js b/src/api/home/common.js
index 0ebc986..d1b21fe 100644
--- a/src/api/home/common.js
+++ b/src/api/home/common.js
@@ -25,3 +25,18 @@
params,
})
}
+// 机巢搜索
+export const searchByKeyword = params => {
+ return request({
+ url: `/drone-device-core/map/amap/searchByKeyword?keyword=${params}`,
+ method: 'get',
+ })
+}
+// 地址搜索
+export const selectDeviceList = params => {
+ return request({
+ url: `/drone-device-core/manage/api/v1/devices/selectDeviceList`,
+ method: 'post',
+ params,
+ })
+}
diff --git "a/src/assets/images/home/homeLeft/in\342\200\214spection-select.png" "b/src/assets/images/home/homeLeft/in\342\200\214spection-select.png"
index 83290a0..a5e5dbe 100644
--- "a/src/assets/images/home/homeLeft/in\342\200\214spection-select.png"
+++ "b/src/assets/images/home/homeLeft/in\342\200\214spection-select.png"
Binary files differ
diff --git "a/src/assets/images/home/homeLeft/\342\200\214inspection-reset.png" "b/src/assets/images/home/homeLeft/\342\200\214inspection-reset.png"
index 5db6e1b..1ec388d 100644
--- "a/src/assets/images/home/homeLeft/\342\200\214inspection-reset.png"
+++ "b/src/assets/images/home/homeLeft/\342\200\214inspection-reset.png"
Binary files differ
diff --git a/src/assets/images/task/reset.png b/src/assets/images/task/reset.png
index 07cbd8e..7ba76fb 100644
--- a/src/assets/images/task/reset.png
+++ b/src/assets/images/task/reset.png
Binary files differ
diff --git a/src/components/CommonDateTime.vue b/src/components/CommonDateTime.vue
index 07202e5..393e9b7 100644
--- a/src/components/CommonDateTime.vue
+++ b/src/components/CommonDateTime.vue
@@ -25,8 +25,10 @@
<script setup>
import dayjs from 'dayjs';
+import { useStore } from 'vuex'
import { ref, defineEmits } from 'vue';
+const store = useStore()
const emit = defineEmits(['change']);
const model = defineModel();
@@ -57,9 +59,22 @@
let timeClick = (item,index) => {
checked.value = item;
- model.value = dateRanges[item];
- emit('change', dateRanges[item],timeListEnum[index]);
+ const newDateRange = dateRanges[item];
+ store.commit('setEventTimeType', [checked.value, timeListEnum[index]]);
+ model.value = newDateRange;
+ emit('change', newDateRange, timeListEnum[index]);
};
+onMounted(() => {
+ // 如果父组件传入了值,就使用父组件的值 by cpz
+ if (model.value && model.value.length === 2) {
+ // 根据传入的日期判断是哪个时间范围
+ const startDate = model.value[0];
+ const endDate = model.value[1];
+ if (startDate !== endDate) {
+ checked.value = 'week';
+ }
+ }
+});
</script>
<style scoped lang="scss">
diff --git a/src/hooks/useMapAggregation/useMapAggregation.js b/src/hooks/useMapAggregation/useMapAggregation.js
index 246ef47..3565f3c 100644
--- a/src/hooks/useMapAggregation/useMapAggregation.js
+++ b/src/hooks/useMapAggregation/useMapAggregation.js
@@ -13,6 +13,7 @@
import cesiumOperation from '@/utils/cesium-tsa'
import { getDeviceRegion, getDeviceRegionCount, getEventDetails, getMapEvents } from '@/api/home/aggregation'
import { PolyGradientMaterial } from '@/utils/cesium/Material'
+import { start } from 'nprogress'
/**
* 机巢聚合功能
*/
@@ -53,6 +54,20 @@
const store = useStore()
const userAreaCode = computed(() => store.state.user.userInfo.detail.areaCode)
const selectedAreaCode = computed(() => store.state.user.selectedAreaCode)
+
+
+ const eventTimeType = computed(() => store.state.home.eventTimeType)
+ const eventTimeRang = computed(() => store.state.home.eventTimeRang)
+
+ let needFly = true
+
+ const combinedValues = computed(() => ({
+ selectedAreaCode: selectedAreaCode.value,
+ eventTimeType: eventTimeType.value,
+ eventTimeRang: eventTimeRang.value,
+ }))
+
+ let saveParams = { area_code: '', date_enum: 'CURRENT_WEEK' }
// 确定缩放比例
@@ -105,6 +120,7 @@
// 事件散点
let eventList = []
function processChildren (childrens) {
+ // console.log(childrens, '事件点')
return (childrens || []).map(item => {
const arr = processChildren(item.childrens)
if (item.data) {
@@ -118,13 +134,15 @@
if (arr.length !== 0) {
returnObj.childrens = arr
}
+ console.log(returnObj, '111111')
return returnObj
})
}
// 获取事件聚合
- function getMapEventCount (area_code) {
- return getMapEvents({ area_code,date_enum:'CURRENT_WEEK' }).then(res => {
+ function getMapEventCount (params) {
+ console.log(5555555)
+ return getMapEvents(params).then(res => {
const resData = res?.data?.data
if (resData?.data) {
eventList = resData?.data
@@ -163,7 +181,9 @@
const initMapData = async areaCode => {
eventList = []
if (!areaCode) return
- const list = type === 'device' ? await getDeviceCount(areaCode) : await getMapEventCount(areaCode)
+ saveParams.area_code = areaCode
+ console.log(type, '444')
+ const list = type === 'device' ? await getDeviceCount(areaCode) : await getMapEventCount(saveParams)
const splashedList = type === 'device'
? await getDeviceList(areaCode)
: eventList.map(i => ({ eventId: i.id, latitude: Number(i.latitude), longitude: Number(i.longitude), type: 'event' }))
@@ -219,19 +239,23 @@
}
}
+ watch(combinedValues, async (newValue, oldValue) => {
+ if (newValue.eventTimeType) {
+ saveParams = { area_code: newValue.selectedAreaCode, date_enum: store.state.home.eventTimeParams }
+ }
- let needFly = true
+ if (newValue.eventTimeRang) {
+ saveParams = { area_code: newValue.selectedAreaCode, start_date: newValue.eventTimeRang[0], end_date: newValue.eventTimeRang[1] }
+ }
- watch(
- selectedAreaCode,
- async (newValue, oldValue) => {
- needFly = true
- if (!viewer) return
- viewer.scene.postRender.removeEventListener(determineScaling)
- initMapData(newValue).then(() => {
- viewer.scene.postRender.addEventListener(determineScaling)
- })
- },
+ needFly = true
+ if (!viewer) return
+ viewer.scene.postRender.removeEventListener(determineScaling)
+
+ initMapData(newValue.selectedAreaCode).then(() => {
+ viewer.scene.postRender.addEventListener(determineScaling)
+ })
+ },
{ deep: true }
)
@@ -437,10 +461,15 @@
let clickTargets = viewer.scene.drillPick(click.position).map(item => item.id)
if (!clickTargets.length) return
+ console.log(clickTargets, 11111)
+
let deviceAggregationFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'deviceAggregation')
let deviceFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'device')
+ // "event"
let eventFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'event')
+ // let eventFind = findTypeItem(clickTargets, (item) => item?.properties?.customData?._value?.data?.type === 'eventAggregation')
currentEntity = deviceAggregationFind || deviceFind || eventFind
+
if (!currentEntity) return
if (!currentEntity?.position?._value) return
// 一定要移除
diff --git a/src/store/modules/home.js b/src/store/modules/home.js
index ee79c47..73618a3 100644
--- a/src/store/modules/home.js
+++ b/src/store/modules/home.js
@@ -14,6 +14,10 @@
singleTotal: {}, // 统计单个机巢数据
// 项目id
selectedWorkSpaceId: window.localStorage.getItem('bs_workspace_id'),
+ // 事件 日 周 月 年
+ eventTimeType: 'day',
+ eventTimeParams: 'CURRENT_WEEK',
+ eventTimeRang: '',
wsMessage: {},
deviceState: {
gatewayInfo: {},
@@ -113,6 +117,14 @@
dock.work_osd = info.host
}
},
+ setEventTimeType : (state, data) => {
+ console.log('33333')
+ state.eventTimeType = data[0]
+ state.eventTimeParams = data[1]
+ },
+ setEventTimeRang : (state, time) => {
+ state.eventTimeRang = time
+ },
},
getters: {
test(state) {
diff --git a/src/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventOverviewDetailLeft.vue b/src/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventOverviewDetailLeft.vue
index 1b6ba6d..276130c 100644
--- a/src/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventOverviewDetailLeft.vue
+++ b/src/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventOverviewDetailLeft.vue
@@ -23,12 +23,18 @@
import EventTrendAnalysis from '@/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventTrendAnalysis.vue'
import EventTop5 from '@/views/Home/EventOverviewDetail/EventOverviewDetailLeft/EventTop5.vue'
-const today = dayjs().format('YYYY-MM-DD')
-const timeArr = ref([today, today])
+// 选中机巢默认日
+// const today = dayjs().format('YYYY-MM-DD')
+// const timeArr = ref([today, today])
+// 选中事件默认为周
+const startOfWeek = dayjs().startOf('week').add(1, 'day').format('YYYY-MM-DD')
+const endOfWeek = dayjs().endOf('week').add(1, 'day').format('YYYY-MM-DD')
+const timeArr = ref([startOfWeek, endOfWeek])
+
const store = useStore()
const params = ref({
- date_enum: 'TODAY',
+ date_enum: 'CURRENT_WEEK',
end_date: undefined,
start_date: undefined,
})
@@ -65,7 +71,7 @@
align-items: center;
.dateTime {
- width: 356px;
+ width: 400px;
margin: 0 0 8px 0;
}
diff --git a/src/views/Home/EventOverviewDetail/EventOverviewDetailRight.vue b/src/views/Home/EventOverviewDetail/EventOverviewDetailRight.vue
index 43638a5..edfc854 100644
--- a/src/views/Home/EventOverviewDetail/EventOverviewDetailRight.vue
+++ b/src/views/Home/EventOverviewDetail/EventOverviewDetailRight.vue
@@ -114,11 +114,17 @@
import cesiumOperation from '@/utils/cesium-tsa'
import CommonTitle from '@/components/CommonTitle.vue'
import { pxToRem } from '@/utils/rem'
+import { useStore } from 'vuex'
+const store = useStore()
+// const eventTimeRange = computed(() => store.state.home.eventTimeRange)
const timeFormat = 'YYYY-MM-DD HH:mm:ss'
const today = dayjs().format(timeFormat)
-const oneWeekAgo = dayjs().subtract(7, 'day').format(timeFormat)
-const timeArr = ref([oneWeekAgo, today])
+// const oneWeekAgo = dayjs().subtract(7, 'day').format(timeFormat)
+// const timeArr = ref([oneWeekAgo, today])
+const startOfWeek = dayjs().startOf('week').add(1, 'day').format(timeFormat)
+const endOfWeek = dayjs().endOf('week').add(1, 'day').format(timeFormat)
+const timeArr = ref([startOfWeek, endOfWeek])
const deviceList = ref([])
const total = ref(0)
@@ -211,6 +217,8 @@
const [start_date, end_date] = timeArr.value
params.value.start_date = start_date
params.value.end_date = end_date
+ // 提交数据,更新聚合
+ store.commit('setEventTimeRang', timeArr.value);
// 重置
getEventStatusNumFun()
getEventList()
@@ -237,6 +245,24 @@
})
}
+const getDateRange = unit => {
+ if (unit === 'today') {
+ return [dayjs().format('YYYY-MM-DD HH:mm:ss'), dayjs().format('YYYY-MM-DD HH:mm:ss')];
+ }
+ return [dayjs().startOf(unit).format('YYYY-MM-DD HH:mm:ss'), dayjs().endOf(unit).format('YYYY-MM-DD HH:mm:ss')];
+};
+
+// 监听事件时间范围变化
+watch(() => store.state.home.eventTimeType, (newVal) => {
+ timeArr.value = getDateRange(newVal);
+ const [start_date, end_date] = getDateRange(newVal);
+ params.value.start_date = start_date
+ params.value.end_date = end_date
+ getEventStatusNumFun()
+ getEventList()
+ getList()
+}, { immediate: false,deep: true })
+
onMounted(() => {
getDeviceList()
getDictList()
diff --git a/src/views/Home/HomeLeft/InspectionRaskDetails/InspectionRaskDetailsDialog.vue b/src/views/Home/HomeLeft/InspectionRaskDetails/InspectionRaskDetailsDialog.vue
index 2e8deca..777af0c 100644
--- a/src/views/Home/HomeLeft/InspectionRaskDetails/InspectionRaskDetailsDialog.vue
+++ b/src/views/Home/HomeLeft/InspectionRaskDetails/InspectionRaskDetailsDialog.vue
@@ -54,8 +54,8 @@
/>
</el-form-item>
<el-form-item>
- <div class="reset" @click="handleReset"></div>
- <div class="searchs" @click="handleSearch"></div>
+ <div class="reset" @click="handleReset">重置</div>
+ <div class="searchs" @click="handleSearch">搜索</div>
</el-form-item>
</div>
</el-form>
@@ -86,8 +86,8 @@
? 'distributed'
: scope.row.status === 3
? 'finish '
- : scope.row.status === 4
- ? 'cancel '
+
+
: 'fail '
"
>
@@ -97,10 +97,9 @@
: scope.row.status === 2
? '执行中'
: scope.row.status === 3
- ? '完成'
- : scope.row.status === 4
- ? '取消'
- : '失败'
+ ? '已执行'
+
+ : '执行失败'
}}
</span>
</template>
@@ -112,11 +111,11 @@
<span>{{ scope.row.event_number ? scope.row.event_number : '/' }}</span>
</template>
</el-table-column>
- <el-table-column label="操作" width="80"><div class="ztzf-view ">查看</div></el-table-column>
+ <el-table-column label="操作" width="80"><div class="ztzf-view">查看</div></el-table-column>
</el-table>
</div>
<!-- 分页 -->
- <div style="display: flex;justify-content: center">
+ <div style="display: flex; justify-content: center">
<el-pagination
class="ztzf-pagination"
v-model:current-page="pageParams.current"
@@ -151,8 +150,8 @@
{ label: '待执行', value: 1 },
{ label: '执行中', value: 2 },
{ label: '已完成', value: 3 },
- { label: '已取消', value: 4 },
- { label: '执行失败', value: 5 },
+
+ { label: '执行失败', value: 4 },
]
// 设备页面参数
const devicePageParams = ref({
@@ -217,10 +216,12 @@
}
// 获取任务列表
const getJobList = () => {
+// 事件状态:0 =待处理,1=待分拨,2=待处理,3=处理中,4=已完成 5=已完结
jobList(taskDetailParams).then(res => {
if (res.data.code !== 0) return
taskDetailData.value = res.data.data.records
total.value = res.data.data.total
+
})
}
// 机巢列表数据
@@ -278,8 +279,6 @@
}
:deep() {
-
-
.el-form-item__label {
font-family: Segoe UI, Segoe UI;
font-weight: 400;
@@ -303,6 +302,10 @@
cursor: pointer;
background: url('/src/assets/images/home/homeLeft/inspection-reset.png') no-repeat center;
background-size: 100% 100%;
+ color: #fff;
+ font-weight: bold;
+ font-size: 14px;
+ text-align: center;
}
.searchs {
margin-left: 23px;
@@ -311,6 +314,10 @@
height: 32px;
background: url('/src/assets/images/home/homeLeft/inspection-select.png') no-repeat center;
background-size: 100% 100%;
+ color: #fff;
+ font-weight: bold;
+ font-size: 14px;
+ text-align: center;
}
.tabledata {
padding: 0 16px;
@@ -338,10 +345,7 @@
</style>
<style lang="scss">
.inspection-rask-details-dialog {
- width: 1270px;
+ width: 1270px;
height: 856px;
-
-
-
}
</style>
diff --git a/src/views/Home/SearchBox.vue b/src/views/Home/SearchBox.vue
index 7cceb4b..e27cf63 100644
--- a/src/views/Home/SearchBox.vue
+++ b/src/views/Home/SearchBox.vue
@@ -1,7 +1,7 @@
<template>
- <div class="searchBox">
+ <div class="searchBox" ref="searchBoxRef">
<div class="searchInput">
- <el-select v-model="value" placeholder="请选择查询">
+ <el-select v-model="optionsValue" @change="optionChange" placeholder="请选择查询">
<el-option
v-for="item in options"
:key="item.value"
@@ -10,9 +10,9 @@
/>
</el-select>
- <el-input v-model="input3" placeholder="请输入搜索关键字"></el-input>
+ <el-input v-model="searchKey" @focus="handleFocus" placeholder="请输入搜索关键字"></el-input>
</div>
- <div class="searchBtn"></div>
+ <div class="searchBtn" @click="searchClick"></div>
<div class="region">
<el-tree-select
v-model="treeValue"
@@ -25,20 +25,30 @@
/>
</div>
</div>
+ <div class="select-down-list" ref="selectDownRef" v-show="isSelectDown">
+ <div class="item" v-for="item in downList" @click="selectedValue(item)">{{ item.nickname || item.name }}</div>
+ </div>
</template>
<script setup>
import { getRegion } from '@/api/home';
+import { searchByKeyword, selectDeviceList } from '@/api/home/common';
import { useStore } from 'vuex';
+import cesiumOperation from '@/utils/cesium-tsa'
+
+const { flyTo } = cesiumOperation()
const store = useStore();
-const input3 = ref('');
+const searchKey = ref('');
const userAreaCode = computed(() => store.state.user.userInfo.detail.areaCode);
const selectedAreaCode = computed(() => store.state.user.selectedAreaCode);
-const value = ref('Option1');
+const areaValue = ref('江西省');
const treeValue = ref(userAreaCode.value);
let first = true;
+const searchBoxRef = ref(null);
+const selectDownRef = ref(null);
-function treeChange(value) {
+function treeChange(value, node) {
+ areaValue.value = node.label;
store.commit('setSelectedAreaCode', value);
}
@@ -62,20 +72,123 @@
});
};
+const optionsValue = ref('1');
const options = [
{
- value: 'Option1',
+ value: '1',
label: '机巢',
},
{
- value: 'Optio44n1',
+ value: '2',
label: '地址',
},
];
-onMounted(() => {});
+const isSelectDown = ref(false);
+// 下拉数据列表
+const machineNestList = ref([]);
+// 地址搜索结果
+const downList = ref([]);
+const position = ref({});
+
+// 获取机巢搜索结果
+const getDeviceList = async () => {
+ const res = await selectDeviceList({
+ keyword: searchKey.value,
+ });
+ if (res.data.code !== 0) return;
+ machineNestList.value = res?.data?.data || [];
+ downList.value = res?.data?.data || [];
+};
+// 获取地址搜索结果
+const getAddressList = async () => {
+ const res = await searchByKeyword(encodeURIComponent(`${areaValue.value}+${searchKey.value}`));
+ if (res.data.code !== 0) return;
+ downList.value = res?.data?.data.tips || [];
+ if (downList.value.length > 0) {
+ isSelectDown.value = true;
+ }
+};
+// 搜索结果
+const searchClick = () => {
+ const longitude = Number(position.value.longitude)
+ const latitude = Number(position.value.latitude)
+ flyTo({ longitude, latitude }, 1, 1000)
+};
+
+// 地址和机巢的切换
+const optionChange = () => {
+ searchKey.value = '';
+ downList.value = [];
+};
+// 输入框获取焦点
+const handleFocus = () => {
+ if (optionsValue.value === '1') {
+ isSelectDown.value = true;
+ downList.value = machineNestList.value;
+ }
+};
+// 机巢下拉获取值
+const selectedValue = item => {
+ searchKey.value = item.nickname || item.name;
+ if (optionsValue.value === '1') {
+ position.value = item;
+ } else {
+ position.value = { longitude: item.location.split(',')[0], latitude: item.location.split(',')[1] };
+ }
+
+ isSelectDown.value = false;
+};
+
+// 监听搜索关键字变化
+watch(searchKey, async (newVal) => {
+ if (optionsValue.value === '2') {
+ await getAddressList();
+ }
+}, { immediate: false });
+
+onMounted(() => {
+ getDeviceList();
+ document.addEventListener('click', handleClickOutside);
+});
+
+onUnmounted(() => {
+ document.removeEventListener('click', handleClickOutside);
+});
+
+const handleClickOutside = (event) => {
+ if (!searchBoxRef.value?.contains(event.target) && !selectDownRef.value?.contains(event.target)) {
+ isSelectDown.value = false;
+ }
+};
</script>
<style scoped lang="scss">
+.select-down-list {
+ position: absolute;
+ top: 188px;
+ left: 45%;
+ transform: translateX(-45%);
+ width: 220px;
+ height: 256px;
+ overflow-y: auto;
+ background: linear-gradient( 180deg, #0D3556 0%, #012350 100%);
+ border-radius: 0px 0px 8px 8px;
+ border: 1px solid;
+ border-image: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(115, 192, 255, 1)) 1 1;
+ &::-webkit-scrollbar {
+ width: 0;
+ display: none;
+ }
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
+ .item {
+ color: #FFFFFF;
+ height: 32px;
+ line-height: 32px;
+ text-align: center;
+ cursor: pointer;
+ }
+}
.searchBox {
width: 420px;
height: 43px;
diff --git a/src/views/SignMachineNest/MachineLeft/InspectionRaskDetails.vue b/src/views/SignMachineNest/MachineLeft/InspectionRaskDetails.vue
index 42e9381..98c6ac5 100644
--- a/src/views/SignMachineNest/MachineLeft/InspectionRaskDetails.vue
+++ b/src/views/SignMachineNest/MachineLeft/InspectionRaskDetails.vue
@@ -1,6 +1,6 @@
-<!-- 巡检任务数据 -->
+<!-- 任务事件概况 -->
<template>
- <common-title title="巡检任务详情" :style="{ marginLeft: pxToRem(14) }"></common-title>
+ <common-title title="任务事件概况" :style="{ marginLeft: pxToRem(14) }"></common-title>
<div class="inspection-rask-details">
<CommonDateTime :style="{ top: pxToRem(14),marginLeft: pxToRem(10) }" v-model="newTime" @change="getData"></CommonDateTime>
<div class="chart-container" ref="chartRef"></div>
diff --git a/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceEvent.vue b/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceEvent.vue
index e5eb341..587af5b 100644
--- a/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceEvent.vue
+++ b/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceEvent.vue
@@ -6,7 +6,7 @@
>件
</p>
</div>
- <div class="deviceevent-table ztzf-table">
+ <div class="deviceevent-table ztzf-table" >
<el-table :data="list" :row-class-name="tableRowClassName"
style="width: 100%;"
:row-style="{ height: '38px', fontSize: '14px', 'text-align': 'center' }"
@@ -40,10 +40,10 @@
<el-pagination
class="ztzf-pagination"
background
- :page-sizes="[10, 20, 30, 50]"
+
v-model:current-page="sizeParams.current"
v-model:page-size="sizeParams.size"
- layout="prev, pager, next,sizes, jumper"
+ layout="prev, pager, next, jumper"
:total="total"
@change="pageChange"
/>
@@ -79,6 +79,7 @@
const resData = res?.data?.data || {}
list.value = resData.records
total.value = resData.total
+
})
@@ -127,6 +128,7 @@
// 表格
.deviceevent-table {
padding: 0 17px;
+
}
// 分页
diff --git a/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJob.vue b/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJob.vue
index 89a9c0d..4999956 100644
--- a/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJob.vue
+++ b/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJob.vue
@@ -2,8 +2,9 @@
<div class="devicejob-container">
<div class="machineTableDetailsTitle">
<p>
- 相关任务<span>{{ total }}</span
- >次
+ 相关任务
+ <span>{{ total }}</span>
+ 次
</p>
</div>
<div class="devicelob-table ztzf-table">
@@ -35,10 +36,10 @@
<el-pagination
class="ztzf-pagination"
background
- :page-sizes="[10, 20, 30, 50]"
+
v-model:current-page="sizeParams.current"
v-model:page-size="sizeParams.size"
- layout=" prev, pager, next,sizes, jumper"
+ layout=" prev, pager, next, jumper"
:total="total"
@change="pageChange"
/>
@@ -120,8 +121,15 @@
// 表格
.devicelob-table {
padding: 0 17px;
+ // height: 280px;
+ // overflow: hidden;
+ // overflow-y: scroll !important;
}
-
+// :deep(::-webkit-scrollbar) {
+// width: 0;
+// display: none;
+// background: none !important;
+// }
// 分页
:deep(.el-pagination) {
diff --git a/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJobDetails/DeviceJobDetails.vue b/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJobDetails/DeviceJobDetails.vue
index 11be511..e40f4c2 100644
--- a/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJobDetails/DeviceJobDetails.vue
+++ b/src/views/SignMachineNest/MachineRight/MachineStatus/MachineTableDetails/DeviceJob/DeviceJobDetails/DeviceJobDetails.vue
@@ -18,7 +18,7 @@
<div v-for="(item, index) in infoList" :key="index">
<div class="itemBox">
<div class="itemTitle">{{ item.name }}:</div>
- <div class="itemValue">{{ item.value ? item.value :''}}</div>
+ <div class="itemValue">{{ item.value ? item.value : '' }}</div>
</div>
</div>
</div>
@@ -37,17 +37,24 @@
<p class="more">更多</p>
</div>
<div class="imgListBox">
- <el-image
- class="imgItem"
- v-for="(item, index) in achievementList"
- :key="index"
- :src="item.url"
- :preview-src-list="achievementList.map(i => i.url)"
- show-progress
- preview-teleported
- :initial-index="index"
- fit="cover"
- />
+ <!-- 图片显示 -->
+ <template v-if="mediaType === 'image'">
+ <el-image
+ class="imgItem"
+ v-for="(item, index) in achievementList"
+ :key="index"
+ :src="item.url"
+ :preview-src-list="achievementList.map(i => i.url)"
+ show-progress
+ preview-teleported
+ :initial-index="index"
+ fit="cover"
+ />
+ </template>
+ <!-- 视频显示 -->
+ <template v-else-if="mediaType === 'video'">
+ <video v-for="(item, index) in achievementList" :key="index" :src="item.url" controls></video>
+ </template>
</div>
</div>
<DeviceJobDetailsMap v-if="isShow" class="contentRight" :detailsData="detailsData" />
@@ -90,34 +97,38 @@
creator_name: null,
way_lines: [],
})
+// 任务成果
+const mediaType = ref('')
const total = ref(0)
const achievementList = ref([])
const wayLineJodInfoId = inject('wayLineJodInfoId')
const getAchievement = () => {
getJobInfoFiles({ jobInfoId: wayLineJodInfoId.value }).then(res => {
+ for (let i = 0; i < res.data.data.length; i++) {
+ const url = res.data.data[i].url || ''
+ const ext = String(url)?.split('.')?.pop().toLowerCase() || ''
+ const images = ['jpg', 'jpeg', 'png', 'gif', 'webp']
+ const videos = ['mp4', 'webm', 'ogg', 'mov']
+ mediaType.value = images.includes(ext) ? 'image' : videos.includes(ext) ? 'video' : ''
+ }
+
achievementList.value = res.data.data
total.value = res.data.data.length
})
}
const getDetails = () => {
getJobDetails({ wayLineJobInfoId: wayLineJodInfoId.value }).then(res => {
- console.log('res',res);
-
detailsData.value = res.data.data
infoList.value.forEach(item => {
if (item.name === '任务时间') {
- item.value = detailsData.value.begin_time.slice(0,10) + '-' + detailsData.value.end_time.slice(0,10)
-
- }
- else if (item.name === '任务频次') {
- item.value === undefined ?'': detailsData.value.rep_rule_type + '-' + detailsData.value.rep_rule_val
- }
- else {
+ item.value = detailsData.value.begin_time.slice(0, 10) + '-' + detailsData.value.end_time.slice(0, 10)
+ } else if (item.name === '任务频次') {
+ item.value = detailsData.value.rep_rule_type + ' -- ' + detailsData.value.rep_rule_val
+ } else {
item.value = detailsData.value?.[item.field] || ''
}
})
flystatus.value = res.data.data.ai_type_str
- // console.log('历史任务详情', res.data.data)
})
}
@@ -231,7 +242,7 @@
.imgListBox {
display: flex;
flex-wrap: wrap;
- gap: 0 10px;
+ gap: 10px;
.imgItem {
width: 200px;
--
Gitblit v1.9.3