Hwf hace 3 meses
padre
commit
9c269cb3c3

+ 5 - 1
src/components/TimeAxis/index.vue

@@ -135,8 +135,10 @@ const changeSpeed = () => {
   timeAxisState.speed = timeAxisState.speed === 1 ? 2 : 1;
 };
 
+let activeName = ref('');
 // 外部数据传入,开始播放
 const initDataToPlay = (obj) => {
+  activeName.value = obj.name;
   timeAxisState.type = obj.type;
   originalData = obj.data;
   timeAxisState.data = obj.data;
@@ -535,7 +537,9 @@ const clearObj = () => {
     }
   }
 };
-const clearData = () => {
+const clearData = (name) => {
+  if (activeName.value !== name) return;
+  activeName.value = '';
   timeAxisState.playing = false;
   timeAxisState.data = [];
   clearObj();

+ 1 - 0
src/types/components.d.ts

@@ -33,6 +33,7 @@ declare module 'vue' {
     ElSelect: typeof import('element-plus/es')['ElSelect']
     ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
     ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
+    ElSlider: typeof import('element-plus/es')['ElSlider']
     ElStep: typeof import('element-plus/es')['ElStep']
     ElSteps: typeof import('element-plus/es')['ElSteps']
     ElSwitch: typeof import('element-plus/es')['ElSwitch']

+ 1 - 1
src/utils/request.ts

@@ -113,7 +113,7 @@ service.interceptors.response.use(
     // 未设置状态码则默认成功状态
     const code = res.data.code || HttpStatus.SUCCESS;
     // 获取错误信息
-    const msg = errorCode[code] || res.data.msg || res.errmsg || errorCode['default'];
+    const msg = errorCode[code] || res.data.msg || res.errmsg || res.detail || errorCode['default'];
     // 二进制数据则直接返回
     if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
       return res.data;

+ 1 - 1
src/views/globalMap/RightMenu/KeyVehicles.vue

@@ -101,7 +101,7 @@ const handleTrack = (item) => {
         lnglat: [item.lng, item.lat]
       });
     });
-    initDataToPlay({ type: 'track', data: trajectory });
+    initDataToPlay({ type: 'track', data: trajectory, name: '重点车辆' });
   });
 };
 // 调用函数

+ 7 - 4
src/views/globalMap/RightMenu/MobileCommandVehicle.vue

@@ -44,9 +44,9 @@
 
 <script setup lang="ts">
 import { Search } from '@element-plus/icons-vue';
-import { onMounted, reactive } from 'vue';
 import { getMobileCommandVehicleList, getMobileCommandVehicleTrajectory } from '@/api/globalMap/MobileCommandVehicle';
-const trackPlayback = inject('trackPlayback');
+import { parseTime } from '@/utils/ruoyi';
+const initDataToPlay = inject('initDataToPlay');
 // 数据列表,直接定义为数组
 const dataList = ref([]);
 //入参
@@ -88,9 +88,12 @@ const handleTrack = (item) => {
   getMobileCommandVehicleTrajectory(item.id).then((res) => {
     const trajectory = [];
     res.rows.forEach((item) => {
-      trajectory.push([item.longitude, item.latitude]);
+      trajectory.push({
+        time: !!item.create_time ? parseTime(item.create_time, '{h}:{i}') : '',
+        lnglat: [item.longitude, item.latitude]
+      });
     });
-    trackPlayback(trajectory);
+    initDataToPlay({ type: 'track', data: trajectory, name: '移动指挥车' });
   });
 };
 //调用函数

+ 7 - 4
src/views/globalMap/RightMenu/MobilePlatform.vue

@@ -51,10 +51,10 @@
 <script setup lang="ts">
 import { Search } from '@element-plus/icons-vue';
 import { getMobileWorkstationList, getMobileWorkstationTrajectory } from '@/api/globalMap/MobilePlatform';
-import { onMounted, reactive } from 'vue';
 import { getStartMiniParam } from '@/api/emergencyCommandMap/communication';
 import { showSuccessMsg } from '@/utils/notification';
-const trackPlayback = inject('trackPlayback');
+import { parseTime } from '@/utils/ruoyi';
+const initDataToPlay = inject('initDataToPlay');
 // 数据列表,直接定义为数组
 const dataList = ref([]);
 //入参
@@ -135,9 +135,12 @@ const handleTrack = (item) => {
   getMobileWorkstationTrajectory(item.id).then((res) => {
     const trajectory = [];
     res.rows.forEach((item) => {
-      trajectory.push([item.longitude, item.latitude]);
+      trajectory.push({
+        time: !!item.create_time ? parseTime(item.create_time, '{h}:{i}') : '',
+        lnglat: [item.longitude, item.latitude]
+      });
     });
-    trackPlayback(trajectory);
+    initDataToPlay({ type: 'track', data: trajectory, name: '手机工作台' });
   });
 };
 //调用函数

+ 7 - 4
src/views/globalMap/RightMenu/MobileUnmannedVehicle.vue

@@ -48,13 +48,13 @@
 
 <script setup lang="ts">
 import { Search } from '@element-plus/icons-vue';
-import { onMounted, reactive } from 'vue';
 import { getDroneResourcesList, getDroneResourcesTrajectory, getDroneResourcesVideo } from '@/api/globalMap/MobileUnmannedVehicle';
+import { parseTime } from '@/utils/ruoyi';
 const getDataMethod = ref(null);
 const showMoreVideos = () => {
   getDataMethod.value = () => getDroneResourcesVideo(id);
 };
-const trackPlayback = inject('trackPlayback');
+const initDataToPlay = inject('initDataToPlay');
 // 数据列表,直接定义为数组
 const dataList = ref([]);
 //入参
@@ -96,9 +96,12 @@ const handleTrack = (item) => {
   getDroneResourcesTrajectory(item.id).then((res) => {
     const trajectory = [];
     res.rows.forEach((item) => {
-      trajectory.push([item.longitude, item.latitude]);
+      trajectory.push({
+        time: !!item.create_time ? parseTime(item.create_time, '{h}:{i}') : '',
+        lnglat: [item.longitude, item.latitude]
+      });
     });
-    trackPlayback(trajectory);
+    initDataToPlay({ type: 'track', data: trajectory, name: '机动无人机' });
   });
 };
 //调用函数

+ 8 - 7
src/views/globalMap/RightMenu/SatellitePhone.vue

@@ -45,10 +45,10 @@
 
 <script setup lang="ts">
 import { Search } from '@element-plus/icons-vue';
-import { onMounted, reactive } from 'vue';
 import { getSatellitePhoneList, getSatellitePhoneTrajectory } from '@/api/globalMap/SatellitePhone';
+import { parseTime } from '@/utils/ruoyi';
 
-const trackPlayback = inject('trackPlayback');
+const initDataToPlay = inject('initDataToPlay');
 
 // 数据列表,直接定义为数组
 const dataList = ref([]);
@@ -91,13 +91,14 @@ const handleConnect = () => {};
 const handleCollaborate = () => {};
 // 轨迹
 const handleTrack = (item) => {
-  getSatellitePhoneTrajectory(item.id).then((res) => {
-    const trajectory = [];
-    res.rows.forEach((item) => {
-      trajectory.push([item.longitude, item.latitude]);
+  const trajectory = [];
+  res.rows.forEach((item) => {
+    trajectory.push({
+      time: !!item.create_time ? parseTime(item.create_time, '{h}:{i}') : '',
+      lnglat: [item.longitude, item.latitude]
     });
-    trackPlayback(trajectory);
   });
+  initDataToPlay({ type: 'track', data: trajectory, name: '卫星电话' });
 };
 
 //调用函数

+ 3 - 2
src/views/globalMap/index.vue

@@ -275,8 +275,9 @@ const clickMenu = (item, dataList) => {
       mapStore.setIsMapSelect(true);
     }
   }
-  if (['重点车辆'].includes(item.name) && !item.checked) {
-    timeAxisRef.value.clearData();
+  // 菜单关闭,移除车辆
+  if (['手机工作台', '重点车辆', '移动指挥车', '机动无人机', '卫星电话'].includes(item.name) && !item.checked) {
+    timeAxisRef.value.clearData(item.name);
   }
 };
 const handleHideCommunicationSupport = () => {