无人机管理后台前端(已迁走)
chenyao
2025-09-25 8f1c3411eea739db54ba4940ee4bed7fdd67681a
feat:增加飞行日志和返航高度
6 files modified
1 files renamed
168 ■■■■ changed files
src/option/job/jobserver.js 4 ●●● patch | view | raw | blame | history
src/types/device-cmd.js 2 ●●● patch | view | raw | blame | history
src/views/device/addDevice.vue 4 ●●●● patch | view | raw | blame | history
src/views/device/airport.vue 13 ●●●● patch | view | raw | blame | history
src/views/job/components/TaskTop/TaskIndustry.vue 8 ●●●● patch | view | raw | blame | history
src/views/monitor/log/flightLog.vue 126 ●●●● patch | view | raw | blame | history
src/views/tickets/orderLog.vue 11 ●●●●● patch | view | raw | blame | history
src/option/job/jobserver.js
@@ -11,7 +11,9 @@
export default {
  tip: false,
  searchShow: true,
  searchMenuSpan: 6,
  // searchGutter: 10,
  searchMenuPosition: 'right',
  searchMenuSpan: 12,
  border: true,
  index: true,
  viewBtn: true,
src/types/device-cmd.js
@@ -146,7 +146,7 @@
    disabled: true,
  },
  {
    label: '4g 增强',
    label: '4G 增强',
    status: '--',
    operateText: '开启',
    cmdKey: DeviceCmd.SdrWorkModeSwitch,
src/views/device/addDevice.vue
@@ -74,8 +74,8 @@
                searchGutter: 30,
                tip: false,
                searchShow: true,
                searchMenuSpan: 6,
                searchGutter: 30,
                searchMenuPosition: 'right',
                searchMenuSpan: 10,
                border: true,
                index: true,
                indexLabel: '序号',
src/views/device/airport.vue
@@ -306,7 +306,9 @@
        searchGutter: 30,
        tip: false,
        searchShow: true,
        searchMenuSpan: 6,
        // searchMenuSpan: 16,
        searchMenuPosition: 'right',
        searchMenuSpan: 8,
        border: true,
        index: true,
        indexLabel: '序号',
@@ -465,8 +467,8 @@
            ],
          },
          {
            label: '是否激活',
            prop: 'esim_activate_state',
            label: '4G增强',
            prop: 'link_workmode',
            labelWidth: 145,
            width: 160,
            overHidden: true,
@@ -475,9 +477,8 @@
            align: 'center',
            formatter: (row, column, cellValue) => {
              const statusMap = {
                0: '未知',
                1: '未激活',
                2: '已激活'
                0: '关',
                1: '开',
              };
              return statusMap[cellValue] || '/';
            }
src/views/job/components/TaskTop/TaskIndustry.vue
@@ -29,8 +29,8 @@
            color: '#363636',
            fontSize: 12,
        },
        itemWidth: 2, // 减小图例标记的宽度
        itemHeight: 6, // 减小图例标记的高度
        itemWidth: 8, // 减小图例标记的宽度
        itemHeight: 8, // 减小图例标记的高度
        itemGap: 8, // 减小图例项之间的间距
        formatter: '{name}', // 简化图例文本
    },
@@ -43,14 +43,14 @@
      center: ['30%', '50%'],
            data: [],
            label: {
                show: true,
                show: false,
                position: 'outside',
                formatter: '{c}',
                fontSize: 12,
                color: '#000',
            },
            labelLine: {
                show: true,
                show: false,
                length: 10,
                length2: 10,
                lineStyle: {
src/views/monitor/log/flightLog.vue
File was renamed from src/views/flightLog/flightLog.vue
@@ -1,9 +1,9 @@
<!-- 飞行日志 -->
<template>
  <div class="flight">
    <div class="search-box">
    <div class="ztzf-search-mange">
      <el-form :model="params" inline>
        <div style="display: flex;justify-content: space-between">
        <div class="search-contain">
          <div>
            <el-form-item label="任务名称:">
              <el-input v-model="params.jobName" placeholder="请输入任务名称" clearable />
@@ -23,63 +23,58 @@
              />
            </el-form-item>
          </div>
          <div>
            <el-form-item>
              <el-button type="primary" @click="getList">搜索</el-button>
              <el-button @click="cancelSearch">清空</el-button>
            </el-form-item>
          <div class="btns">
            <el-button type="primary" @click="getList" :icon="Search">搜索</el-button>
            <el-button @click="cancelSearch" :icon="Delete">清空</el-button>
          </div>
        </div>
      </el-form>
      <!-- <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 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 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">
            <template #default="scope">
              {{ timeFormatConvert(scope.row.start_time) }}
            </template>
          </el-table-column>
          <el-table-column prop="end_time" label="结束时间" align="center">
            <template #default="scope">
              {{ timeFormatConvert(scope.row.end_time) }}
            </template>
          </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)" clearable>
                <el-option
                  v-for="item in tagList"
                  :key="item.id"
                  :label="item.label_name"
                  :value="item.id"
                ></el-option>
              </el-select>
            </template>
          </el-table-column>
          <el-table-column label="操作" width="300" 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(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>
<!--      <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-tabs>-->
      <el-table border :data="tableList" class="custom-header">
        <el-table-column label="序号" type="index" width="60"></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">
          <template #default="scope">
            {{ timeFormatConvert(scope.row.start_time) }}
          </template>
        </el-table-column>
        <el-table-column prop="end_time" label="结束时间" align="center">
          <template #default="scope">
            {{ timeFormatConvert(scope.row.end_time) }}
          </template>
        </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)" clearable>-->
<!--              <el-option-->
<!--                v-for="item in tagList"-->
<!--                :key="item.id"-->
<!--                :label="item.label_name"-->
<!--                :value="item.id"-->
<!--              ></el-option>-->
<!--            </el-select>-->
<!--          </template>-->
<!--        </el-table-column>-->
        <el-table-column label="操作" width="300" 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(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>
    </div>
    <div class="pagination">
@@ -115,6 +110,7 @@
import { downloadXls } from '@/utils/util';
import { exportBlob } from '@/api/common'
import { ElMessage, ElMessageBox, ElLoading } from 'element-plus';
import { Delete, Search } from '@element-plus/icons-vue';
const total = ref(0)
let rangTime = ref([])
@@ -217,13 +213,13 @@
  getList()
}
function handleTabClick() {
  if (tabType.value === '全部') {
    handleAll()
  } else if (tabType.value === '收藏') {
    handleStartList()
  }
}
// function handleTabClick() {
//   if (tabType.value === '全部') {
//     handleAll()
//   } else if (tabType.value === '收藏') {
//     handleStartList()
//   }
// }
// 收藏
function handleStar(row) {
@@ -299,7 +295,7 @@
}
onMounted(() => {
  tagManageList()
  // tagManageList()
  getList()
})
</script>
@@ -314,9 +310,9 @@
  border-radius: 5px;
  display: flex;
  flex-direction: column;
  .search-box {
    height: 30px;
  }
  //.search-box {
  //  height: 30px;
  //}
  :deep(.el-input) {
    .el-input__wrapper {
src/views/tickets/orderLog.vue
@@ -281,7 +281,7 @@
              ></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
          <el-col :span="7">
            <el-form-item label="关联航线" prop="file_id">
              <el-select
                v-model="form.file_id"
@@ -298,6 +298,15 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="5">
            <el-form-item label="安全返航真高" prop="rth_altitude">
              <el-input-number
                v-model="form.rth_altitude"
                :min="30"
                :max="300"
              ></el-input-number>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">