From 171a5597caa5887da782db59ca4ab643b163b84d Mon Sep 17 00:00:00 2001
From: husq <931347610@qq.com>
Date: Sat, 28 Oct 2023 20:52:52 +0800
Subject: [PATCH] 实施航线逻辑修改、页面修改

---
 src/components/GMap.vue     |   19 +++++++--
 src/hooks/use-cesium-tsa.ts |   17 ++++++++
 src/utils/time.ts           |   38 +++++++++++++++++++
 3 files changed, 69 insertions(+), 5 deletions(-)

diff --git a/src/components/GMap.vue b/src/components/GMap.vue
index 595dc27..d0f79ca 100644
--- a/src/components/GMap.vue
+++ b/src/components/GMap.vue
@@ -177,12 +177,18 @@
         <div class="flex-align-center flex-justify-center"  style="display: flex;">
           <div v-if="osdVisible.latest_wayline_job" class="flex-column flex-align-center flex-justify-center">
               <div class="task_wrapper">
-                <div class="task_content">
+                <div class="task_content task_content_way" v-if="deviceInfo.device && deviceInfo.device?.mode_code === 5">
+                  <div class="task_status">
+                    <ContainerOutlined />
+                    <span>执行任务中</span>
+                  </div>
+                </div>
+                <div class="task_content" v-else>
                   <div class="task_status">
                     <ContainerOutlined />
                     <span>待执行</span>
                   </div>
-                  <div class="task_info">{{convertTimestampToDate(osdVisible.latest_wayline_job.begin_time)}}</div>
+                  <div class="task_info">{{osdVisible.latest_wayline_job.is_later ? '今天': '明天'}}{{convertTimestampToDate(osdVisible.latest_wayline_job.begin_time, 'hh:mm')}}</div>
                 </div>
                 <div class="task_title">{{osdVisible.latest_wayline_job.name}}</div>
               </div>
@@ -764,7 +770,7 @@
   BorderOutlined, LineOutlined, ControlOutlined, TrademarkOutlined, ArrowDownOutlined,
   ThunderboltOutlined, SignalFilled, GlobalOutlined, HistoryOutlined, CloudUploadOutlined, RocketOutlined,
   FieldTimeOutlined, CloudOutlined, CloudFilled, FolderOpenOutlined, RobotFilled, ArrowUpOutlined, CarryOutOutlined,
-  DesktopOutlined, CloseOutlined
+  DesktopOutlined, CloseOutlined, ContainerOutlined
 } from '@ant-design/icons-vue'
 import { EDeviceTypeName } from '../types'
 import DockControlPanel from './g-map/DockControlPanel.vue'
@@ -778,6 +784,7 @@
     BorderOutlined,
     LineOutlined,
     CloseOutlined,
+    ContainerOutlined,
     ControlOutlined,
     TrademarkOutlined,
     ThunderboltOutlined,
@@ -1598,9 +1605,13 @@
   align-items: center;
   font-size: 12px;
   .task_content {
-    background-color: #19be6b;
+    background-color: #41bbfa;
     padding: 2px 4px;
   }
+
+  .task_content_way {
+    background-color: #19be6b;
+  }
   .task_title {
     margin-left: 5px;
     font-size: 14px;
diff --git a/src/hooks/use-cesium-tsa.ts b/src/hooks/use-cesium-tsa.ts
index d70dfcf..6f6d60d 100644
--- a/src/hooks/use-cesium-tsa.ts
+++ b/src/hooks/use-cesium-tsa.ts
@@ -20,11 +20,17 @@
   outlineWidth: number,
   [key: string]: any
 }
+interface polyline {
+  width?: number
+  material?: Cesium.Color
+  [key: string]: any
+}
 interface pointOption {
   longitude: number
   latitude: number
   point?: pointSetting
   billboard?: billboardSetting
+  polyline?: polyline
   label?: labelSetting
   id?: string
   heading?: number
@@ -153,6 +159,14 @@
     })
   }
 
+  // 添加线段
+  const addPolyline = (pointOption: pointOption) => {
+    viewer?.entities.add({
+      polyline: pointOption.polyline,
+      id: pointOption.id,
+    })
+  }
+
   // 通过点ID删除
   function removeById (id:string) {
     viewer?.entities.removeById(id)
@@ -276,6 +290,7 @@
     roadPattern,
     patternMap,
     getEntityById,
-    updateEntityPosition
+    updateEntityPosition,
+    addPolyline
   }
 }
diff --git a/src/utils/time.ts b/src/utils/time.ts
index 2d450de..c7b9d9a 100644
--- a/src/utils/time.ts
+++ b/src/utils/time.ts
@@ -66,3 +66,41 @@
   const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate())
   return Y + M + D
 }
+
+// 获取时间戳对应的日期
+export const getDateFromTimestamp = (timestamp:number) => {
+  const date = new Date(timestamp)
+  const year = date.getFullYear()
+  const month = date.getMonth() + 1
+  const day = date.getDate()
+  const hours = date.getHours()
+  const minutes = date.getMinutes()
+  const seconds = date.getSeconds()
+  return { year, month, day, hours, minutes, seconds }
+}
+
+// 将日期设置为今天的日期,返回时间戳
+export const setTodayTime = (dateObj:any) => {
+  const today = new Date()
+  const year = today.getFullYear()
+  const month = today.getMonth()
+  const day = today.getDate()
+  const { hours, minutes, seconds } = dateObj
+  return new Date(year, month, day, hours, minutes, seconds).getTime()
+}
+
+// 判断任务状态是否是当天进行对比
+export const isToday = (timestamp:number) => {
+  const { hours, minutes, seconds } = getDateFromTimestamp(timestamp)
+  const todayTaskTimestamp = setTodayTime({ hours, minutes, seconds })
+  // 判断传过来的时间戳是否是今天任务时间时间戳
+  if (timestamp === todayTaskTimestamp) {
+    return true
+  } else if (todayTaskTimestamp < timestamp) {
+    return false
+  } else {
+    const oneDayTimestamp = 24 * 60 * 60 * 1000
+    timestamp += oneDayTimestamp
+    isToday(timestamp)
+  }
+}

--
Gitblit v1.9.3