From 9d1860ff6666bb83c4fce426dbbfaf952930b658 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期二, 08 四月 2025 11:03:48 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/shehong-vehicle-supervision
---
src/view/home/index.vue | 129 ++++++++++++++++++++----------------------
1 files changed, 62 insertions(+), 67 deletions(-)
diff --git a/src/view/home/index.vue b/src/view/home/index.vue
index b1a0bdb..f7ca11f 100644
--- a/src/view/home/index.vue
+++ b/src/view/home/index.vue
@@ -154,8 +154,8 @@
}}
</div>
<div class="info">
- {{ item.vehicleNumber }} {{ item.warnType }}
- {{ item.keepTime }} {{ item.startTime }}
+ {{ item.vehicleNumber }} {{ item.warnType }} {{ item.keepTime }}
+ {{ item.startTime }}
</div>
</div>
</div>
@@ -205,7 +205,7 @@
getCarWarnList,
getWarnGroupCount,
getWarnGroupCountTop10,
- getCarInfoById,
+ getRealVideo,
} from "./service";
export default {
data() {
@@ -251,6 +251,10 @@
}
},
},
+ filters: {
+
+ },
+
created() {
window.toCarDetail = (record) => {
this.toCarDetail(record);
@@ -446,6 +450,7 @@
"AMap.AutoComplete",
"AMap.Geocoder",
"AMap.MarkerCluster",
+ "AMap.Geocoder",
],
})
.then((AMap) => {
@@ -546,9 +551,21 @@
this.infoWindow.open(this.map, e.target.getPosition());
try {
- // 并行请求车辆信息和视频地址
- const [carInfoRes, videoRes] = await Promise.all([
- this.getCarInfo(item.id),
+ // 使用高德地图API获取地址信息
+ const geocoder = new this.AMap.Geocoder();
+ const location = [Number(item.longitude), Number(item.latitude)];
+
+ const [addressResult, videoRes] = await Promise.all([
+ new Promise((resolve) => {
+ geocoder.getAddress(location, (status, result) => {
+ if (status === "complete" && result.regeocode) {
+ console.log("result", result,'status',status);
+ resolve(result.regeocode.formattedAddress);
+ } else {
+ resolve("未知地址");
+ }
+ });
+ }),
this.getVideoUrl(item.id),
]);
@@ -556,28 +573,29 @@
this.infoWindow.setContent(
this.listRender({
...item,
- ...carInfoRes.data,
+ drivingTime:this.formatterTime(item.drivingTime || 0) ,
+ location: addressResult,
videoUrl: videoRes.data.url,
})
);
- if (flvjs.isSupported()) {
- this.flvPlayer = flvjs.createPlayer({
- type: "flv",
- isLive: true,
- cors: true,
- hasAudio: true,
- hasVideo: true,
- url: videoRes.data.url,
- enableWorker: true,
- enableStashBuffer: false,
- seekType: "range",
- });
- let video = document.getElementById("monitoringCard");
- this.flvPlayer.attachMediaElement(video);
- this.flvPlayer.load();
- this.flvPlayer.play();
- }
+ // if (flvjs.isSupported()) {
+ // this.flvPlayer = flvjs.createPlayer({
+ // type: "flv",
+ // isLive: true,
+ // cors: true,
+ // hasAudio: true,
+ // hasVideo: true,
+ // url: videoRes.data.url,
+ // enableWorker: true,
+ // enableStashBuffer: false,
+ // seekType: "range",
+ // });
+ // let video = document.getElementById("monitoringCard");
+ // this.flvPlayer.attachMediaElement(video);
+ // this.flvPlayer.load();
+ // this.flvPlayer.play();
+ // }
} catch (error) {
this.infoWindow.setContent(
'<div style="padding: 20px;text-align: center;color: red;">获取车辆信息失败</div>'
@@ -590,50 +608,18 @@
});
}
},
-
- // 获取车辆信息
- async getCarInfo(carId) {
+ // 获取视频地址
+ async getVideoUrl(carId) {
try {
- const res = await getCarInfoById({ id: carId });
- if (res) {
- return {
- data: {
- ...res,
- id: carId,
- },
- };
- }
- return {
- data: {
- id: carId,
- },
- };
+ const res = await getRealVideo({ id: carId });
+ return res;
} catch (error) {
return {
data: {
- licensePlate: "",
- driver: "",
- location: "",
- coordinates: "",
- speed: "0km/h",
- drivingTime: "0小时0分钟",
+ url: "",
},
};
}
- },
-
- // 获取视频地址
- async getVideoUrl(carId) {
- // TODO: 替换为实际的API调用
- return new Promise((resolve) => {
- setTimeout(() => {
- resolve({
- data: {
- url: "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
- },
- });
- }, 500);
- });
},
listRender(record) {
@@ -645,7 +631,6 @@
id="monitoringCard"
:controls="false"
autoplay
- src="${record.videoUrl}"
width="620">
</video>
<div style="position: absolute; right: 11px; top: 10px">
@@ -666,21 +651,21 @@
record.vehicleNumber || ""
}</div>
<div style="font-weight: 500; font-size: 18px;color: rgba(0, 0, 0, 0.85);line-height: 25px;">驾驶员:${
- record.driverName||''
+ record.driverName || ""
}</div>
</div>
<div style="display: flex; justify-content: space-between">
- <div style="font-weight: 500; font-size: 14px; color: rgba(0, 0, 0, 0.65);line-height: 26px;">位置:${
+ <div style="font-weight: 500; font-size: 14px; color: rgba(0, 0, 0, 0.65);line-height: 26px;width: 200px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" title="${record.location}">位置:${
record.location
}</div>
<div style="font-weight: 500;font-size: 14px; color: rgba(0, 0, 0, 0.65);line-height: 26px;">经纬度:${
- record.longitude +',' + record.latitude
+ record.longitude + "," + record.latitude
}</div>
</div>
<div style="display: flex; justify-content: space-between">
<div style="font-weight: 500;font-size: 14px; color: rgba(0, 0, 0, 0.65);line-height: 26px;">当前时速:${
- record.speed
- }</div>
+ record.speed || ""
+ }${record.speed && "km/h"}</div>
<div style="font-weight: 500;font-size: 14px; color: rgba(0, 0, 0, 0.65);line-height: 26px;">驾驶时长:${
record.drivingTime
}</div>
@@ -693,6 +678,16 @@
</div>
</div>`;
},
+ formatterTime(value) {
+ if (!value) return "";
+ const hours = Math.floor(value / 60);
+ const minutes = value % 60;
+ if (hours > 0) {
+ return `${hours}小时${minutes}分钟`;
+ } else {
+ return `${minutes}分钟`;
+ }
+ },
// 获取预警情况统计
getCountList() {
echarts.dispose(document.getElementById("countChart"));
--
Gitblit v1.7.1