From 02409bfbe15f22fc3b5dccadabfd860a660a49d9 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sat, 11 Oct 2025 10:37:14 +0800
Subject: [PATCH] feat: 名称修改

---
 src/views/flightLog/flightLog.vue |  258 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 183 insertions(+), 75 deletions(-)

diff --git a/src/views/flightLog/flightLog.vue b/src/views/flightLog/flightLog.vue
index ecaf5a1..1d5023b 100644
--- a/src/views/flightLog/flightLog.vue
+++ b/src/views/flightLog/flightLog.vue
@@ -3,6 +3,14 @@
   <div class="flight">
     <div class="search-box">
       <el-form :model="params" inline>
+        <div style="display: flex;justify-content: space-between">
+          <div>
+            <el-form-item label="任务名称:">
+            <el-input v-model="params.jobName" placeholder="请输入任务名称" clearable />
+          </el-form-item>
+          <el-form-item label="任务编号:">
+            <el-input v-model="params.jobInfoNum" placeholder="请输入任务编号" clearable />
+          </el-form-item>
         <el-form-item label="日期:">
           <el-date-picker
             v-model="rangTime"
@@ -14,19 +22,28 @@
             @change="changeselect"
           />
         </el-form-item>
+      </div>
+      <div>
         <el-form-item>
           <el-button type="primary" @click="getList">搜索</el-button>
-          <el-button @click="cancelSearch">取消</el-button>
+          <el-button @click="cancelSearch">清空</el-button>
         </el-form-item>
+      </div>
+      </div>
       </el-form>
-      <div>
+      <!-- <div>
         <el-button :type="tabType === '全部'?'primary':'default'" @click="handleAll"><el-icon><Folder /></el-icon>全部</el-button>
         <el-button :type="tabType === '收藏'?'primary':'default'" @click="handleStartList"><el-icon><Star /></el-icon>我的收藏</el-button>
-      </div>
+      </div> -->
     </div>
     <div class="mange-table">
+      <el-tabs v-model="tabType" class="demo-tabs" @tab-click="handleTabClick">
+        <el-tab-pane label="全部" name="全部"></el-tab-pane>
+        <el-tab-pane label="我的收藏" name="收藏"></el-tab-pane>
 			<el-table border :data="tableList" class="custom-header">
-				<el-table-column label="序号" type="index" width="60"></el-table-column>
+				<el-table-column label="序号" type="index" width="60" align="center"></el-table-column>
+        <el-table-column prop="job_name" label="任务名称" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="job_info_num" label="任务编号" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="title" label="飞行类型" align="center" show-overflow-tooltip></el-table-column>
         <el-table-column prop="device_name" label="无人机" align="center"></el-table-column>
         <el-table-column prop="start_time" label="开始时间" align="center">
@@ -41,7 +58,7 @@
         </el-table-column>
         <el-table-column prop="end_time" label="标签" align="center">
           <template #default="scope">
-            <el-select v-model="scope.row.label_id" @change="handleUpdateLabel(scope.row)">
+            <el-select v-model="scope.row.label_id" @change="handleUpdateLabel(scope.row)" clearable>
               <el-option
                 v-for="item in tagList"
                 :key="item.id"
@@ -51,16 +68,21 @@
             </el-select>
           </template>
         </el-table-column>
-				<el-table-column label="操作" width="200" align="center">
+				<el-table-column label="操作" width="340" align="center">
 					<template #default="scope">
-            <!-- <el-button icon="el-icon-view" type="text" @click="handleDetail(scope.row)">查看</el-button> -->
-						<!-- <el-button icon="el-icon-delete" type="text" @click="handleDelete">删除</el-button> --> 
-            <el-button type="text" @click="handleStar(scope.row)"><el-icon><Star /></el-icon>{{ scope.row.is_favorite ? '取消收藏':'收藏' }}</el-button>
+            <el-button icon="el-icon-view" type="text" @click="handleDetail(scope.row)">查看</el-button>
+            <el-button icon="el-icon-view" type="text" v-if="!scope.row.isHL" @click="handleWarnInfo(scope.row)">警告</el-button>
+						<el-button icon="el-icon-delete" type="text" @click="handleDelete(scope.row)">删除</el-button>
+            <el-button type="text" @click="handleStar(scope.row)">
+              <el-icon><Star /></el-icon>
+              {{ scope.row.is_favorite ? '取消收藏':'收藏' }}</el-button>
             <el-button type="text" @click="handleExport(scope.row)"><el-icon><Download /></el-icon>导出</el-button>
 					</template>
 				</el-table-column>
 			</el-table>
+    </el-tabs>
 		</div>
+
 		<div class="pagination">
 			<el-pagination class="ztzf-pagination" popper-class="custom-pagination-dropdown" background
 				:page-sizes="[10, 20, 30, 40, 50, 100]" :size="size" v-model:current-page="params.page"
@@ -68,40 +90,45 @@
 				@size-change="handleSizeChange" @current-change="handleCurrentChange" />
 		</div>
   </div>
-  <!-- <el-dialog class="ztzf-dialog" append-to-body v-model="isShowView" title="查看"
-		:width="pxToRem(600)" :close-on-click-modal="false" :destroy-on-close="true">
-		<div class="content">
-      <table class="view-table" border>
-        <tr>
-          <td class="label">空域类型</td>
-          <td class="value">{{ rowView.model_name }}</td>
-          <td class="label">创建时间</td>
-          <td class="value">{{ rowView.alg_type }}</td>
-        </tr>
-      </table>
+  <el-dialog class="ztzf-dialog" append-to-body v-model="isShowView" title="查看"
+		:width="pxToRem(1000)" :close-on-click-modal="false" :destroy-on-close="true">
+		<!-- <div class="content"> -->
+      <el-table border :data="tableDataDetails" height="466">
+        <el-table-column label="序号" type="index" width="60"></el-table-column>
+        <el-table-column prop="flight_type" label="飞行类型" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="latitude" label="经度" align="center"></el-table-column>
+        <el-table-column prop="longitude" label="纬度" align="center"></el-table-column>
+        <el-table-column prop="height" label="高度" align="center"></el-table-column>
+        <el-table-column prop="elevation" label="海拔高度" align="center"></el-table-column>
+      </el-table>
+      <div class="pagination" style="display: flex;justify-content: end;margin-top: 10px;">
+        <el-pagination class="ztzf-pagination" popper-class="custom-pagination-dropdown" background
+          :page-sizes="[10, 20, 30, 40, 50, 100]" :size="size" v-model:current-page="detailParams.current"
+          v-model:page-size="detailParams.size" layout="total, sizes, prev, pager, next, jumper" :total="detailTotal"
+          @size-change="handleSizeChangeDetails" @current-change="handleCurrentChangeDetails" />
+    <!-- </div> -->
     </div>
 	</el-dialog>
-  <el-dialog class="ztzf-dialog" append-to-body v-model="isShowEditView" title="新增"
-		:width="pxToRem(800)" :close-on-click-modal="false" :destroy-on-close="true">
-		<div class="content-edit">
-      <el-form ref="ruleFormRef" :model="editParams" :rules="rules" inline>
-        <el-form-item label="空域名称">
-          <el-input v-model="editParams.model_name" />
-        </el-form-item>
-        <div class="btns">
-          <el-button type="primary" @click="submit(ruleFormRef)">确认</el-button>
-          <el-button @click="isShowEditView = false">取消</el-button>
-        </div>
-      </el-form>
-    </div>
-	</el-dialog> -->
+  <el-dialog class="ztzf-dialog" append-to-body v-model="isShowWarnView" title="查看警告信息" :width="pxToRem(1000)" :close-on-click-modal="false" :destroy-on-close="true">
+    <el-table border :data="warningList" height="300">
+      <el-table-column label="序号" type="index" width="60" align="center"></el-table-column>
+      <el-table-column prop="warn_info" label="内容" align="center" show-overflow-tooltip></el-table-column>
+    </el-table>
+    <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="isShowWarnView = false">取 消</el-button>
+          <el-button type="primary" @click="hlSubmit">忽略</el-button>
+        </span>
+    </template>
+  </el-dialog>
 </template>
 <script setup>
-import { getHistoryTrack, cancelStar, addStar, updateDroneFlight } from '@/api/logs';
+import { getHistoryTrack, cancelStar, addStar, updateDroneFlight, droneFlightLogInfoPage } from '@/api/logs';
 import { flightLogPage } from '@/api/airspace/airspace';
 import { downloadXls } from '@/utils/util';
 import { exportBlob } from '@/api/common'
 import { ElMessage, ElMessageBox, ElLoading } from 'element-plus';
+import { dateNow } from '@/utils/date';
 
 const total = ref(0)
 let rangTime = ref([])
@@ -111,26 +138,17 @@
   page_size: 10,
   startTime: '',
   endTime: '',
+  jobName: '',
+  jobInfoNum: '',
 });
 
 let tableList = ref([])
 
-// let isShowView = ref(false)
-
-// let rowView = ref({})
-
-// let isShowEditView = ref(false)
+let isShowView = ref(false)
+let isShowWarnView = ref(false)
+let warningList = ref([])
 
 let tabType = ref('全部')
-// const ruleFormRef = ref()
-// let editParams = ref({
-//   model_name: '',
-//   alg_type: '',
-//   qua_rate: '',
-//   pass_rate: '',
-//   event_type: '',
-//   remark: ''
-// })
 
 function timeFormatConvert(time) {
   if (!time) return '/'
@@ -139,21 +157,46 @@
 }
 
 function cancelSearch() {
+  rangTime.value = []
   params.value = {
-    isFavorite: false,
+    startTime: '',
+    endTime: '',
+    isFavorite: tabType.value === '收藏' ? true : false,
     page: '1',
     page_size: '10',
+    jobName: '',
+    jobInfoNum: '',
   }
   getList()
 }
 
 function getList() {
-  console.log(rangTime.value, '333')
   params.value.startTime = rangTime.value?.length ? rangTime.value[0].getTime() : ''
-  params.value.endTime = rangTime.value?.length? rangTime.value[1].getTime() : ''
+  params.value.endTime = rangTime.value?.length? new Date(
+    rangTime.value[1].getFullYear(),
+    rangTime.value[1].getMonth(),
+    rangTime.value[1].getDate(),
+    23, 59, 59
+  ).getTime() : ''
   getHistoryTrack(params.value).then(res => {
-    tableList.value = res.data.data.list || []
+    tableList.value = res.data.data.list.map(item => {
+      return {
+        ...item,
+        isHL: false,
+        children: [{
+          id: item.id,
+          time: timeFormatConvert(dateNow()),
+          warn_info: '信号受到干扰,请谨慎飞行'
+        },
+          {
+            id: item.id,
+            time: timeFormatConvert(dateNow()),
+            warn_info: '风速较大,请谨慎飞行'
+          }],
+      }
+    })
     total.value = res.data.data.pagination.total || 0
+
   })
 }
 
@@ -163,6 +206,57 @@
   tabType.value = '全部'
   getList()
 }
+// 查看
+let tableDataDetails = ref([])
+let detailTotal = ref(0)
+let detailParams = ref({
+  current: 1,
+  size: 10,
+  flightId: ''
+})
+function handleDetail(row) {
+  isShowView.value = true
+  detailParams.value.current = 1
+  detailParams.value.flightId = row.id
+  detailTotal.value = 0
+  droneFlightLogInfoPage(detailParams.value).then(res => {
+    tableDataDetails.value = res.data.data.records
+    detailTotal.value = res.data.data.total
+  })
+}
+// 警告信息
+let saveId = ref('')
+function handleWarnInfo(row) {
+  isShowWarnView.value = true
+  saveId.value = row.id
+  warningList.value = tableList.value.find(item => item.id === row.id).children
+}
+function hlSubmit() {
+  // 设置isHL为true
+  tableList.value.map(item => {
+    if (item.id === saveId.value) {
+      item.isHL = true
+      isShowWarnView.value = false
+    }
+  })
+}
+// 分页
+function handleSizeChangeDetails(val) {
+  detailParams.value.size = val
+  detailParams.value.current = 1
+  droneFlightLogInfoPage(detailParams.value).then(res => {
+    tableDataDetails.value = res.data.data.records
+    detailTotal.value = res.data.data.total
+  })
+}
+function handleCurrentChangeDetails(val) {
+  detailParams.value.current = val
+  droneFlightLogInfoPage(detailParams.value).then(res => {
+    tableDataDetails.value = res.data.data.records
+    detailTotal.value = res.data.data.total
+  })
+}
+
 
 function handleStartList() {
   params.value.isFavorite = true
@@ -171,21 +265,16 @@
   getList()
 }
 
-// async function submit(formValidate) {
-//   if (!formValidate) return
-//   await formValidate.validate((valid, fields) => {
-//     if (valid) {
-//       algorithmManageEdit(editParams.value).then(res => {
-//         isShowEditView.value = false
-//         getList()
-//       })
-//     } 
-//   })
-// }
+function handleTabClick() {
+  if (tabType.value === '全部') {
+    handleAll()
+  } else if (tabType.value === '收藏') {
+    handleStartList()
+  }
+}
 
 // 收藏
 function handleStar(row) {
-  console.log(row, '5555')
   if (row.is_favorite) {
     cancelStar(row.id).then(res => {
       ElMessage.success('取消收藏成功')
@@ -203,7 +292,26 @@
 function handleUpdateLabel(row) {
   updateDroneFlight({ id: row.id, label_id: row.label_id }).then(res => {
     // getList()
-    ElMessage.success('标签成功')
+    ElMessage.success('设置标签成功')
+  })
+}
+
+// 删除
+function handleDelete(row) {
+  ElMessageBox.confirm('确定删除该条数据?', '提示', {
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
+    type: 'warning',
+  }).then(() => {
+    updateDroneFlight({ is_deleted: 1, id: row.id }).then(res => {
+      ElMessage.success('删除成功')
+      getList()
+    })
+  }).catch(() => {
+    ElMessage({
+      type: 'info',
+      message: '已取消删除'
+    })
   })
 }
 
@@ -255,7 +363,7 @@
     display: flex;
     flex-direction: column;
     .search-box {
-      height: 80px;
+      height: 30px;
     }
 
     :deep(.el-input) {
@@ -286,23 +394,23 @@
       }
     }
   }
-  
+
  .content {
   padding: 20px;
-  
+
   .view-table {
     width: 100%;
     border-collapse: collapse;
     border: 1px solid #EBEEF5;
-    
+
     tr {
       &:not(:last-child) {
         border-bottom: 1px solid #EBEEF5;
       }
-      
+
       td {
         padding: 12px 10px;
-        
+
         &.label {
           width: 140px;
           text-align: right;
@@ -310,7 +418,7 @@
           // background-color: #F5F7FA;
           border-right: 1px solid #EBEEF5;
         }
-        
+
         &.value {
           width: 180px;
           // color: #303133;
@@ -326,7 +434,7 @@
       :deep(.el-form-item__label) {
         width: 120px;
       }
-      
+
     }
     .btns {
         display: flex;
@@ -334,4 +442,4 @@
       }
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3