husq
2023-10-06 e9a27d01836d1d489f0210d4d64838666831b89f
飞机操作栏机场样式修改、去除无人机图标信息
3 files modified
258 ■■■■■ changed files
src/components/GMap.vue 233 ●●●●● patch | view | raw | blame | history
src/pages/page-web/index.vue 14 ●●●● patch | view | raw | blame | history
src/types/device.ts 11 ●●●● patch | view | raw | blame | history
src/components/GMap.vue
@@ -113,13 +113,13 @@
            <a-col span="6">
              <a-tooltip title="海拔高度">
                <span>ASL</span>
                <span class="ml5">{{ deviceInfo.device.height === str ? str : deviceInfo.device.height.toFixed(2) + ' m'}}</span>
                <span class="ml5">{{ deviceInfo.device.height === str ? str : deviceInfo.device.height.toFixed(2) + 'm'}}</span>
              </a-tooltip>
            </a-col>
            <a-col span="6">
              <a-tooltip title="高于起飞高度">
                <span>ALT</span>
                <span class="ml5">{{ deviceInfo.device.elevation === str ? str : deviceInfo.device.elevation.toFixed(2) +' m' }}</span>
                <span class="ml5">{{ deviceInfo.device.elevation === str ? str : deviceInfo.device.elevation.toFixed(2) + 'm' }}</span>
              </a-tooltip>
            </a-col>
            <a-col span="6">
@@ -197,10 +197,10 @@
              {{ EDockModeText[deviceInfo.dock.basic_osd?.mode_code] }}</a-col>
            <!-- <a-col span="1">{{ hmsInfo[sn]?.length || 1 }}</a-col> -->
            <a-col span="1" class="num" v-if="hmsInfo[sn]">{{ hmsInfo[sn]?.length }}</a-col>
            <a-col span="14" v-if="hmsInfo[sn] && hmsInfo[sn].length>0" style="width: 100%;padding-left:5px ;">
            <a-col span="14" v-if="hmsInfo[sn] && hmsInfo[sn].length > 0" style="width: 100%;padding-left:5px ;">
              <a-tooltip :title="hmsInfo[sn][0].message_zh">
              <div class="overflow">{{ hmsInfo[sn][0].message_zh }}</div>
            </a-tooltip>
                <div class="overflow">{{ hmsInfo[sn][0].message_zh }}</div>
              </a-tooltip>
            </a-col>
          </a-row>
          <a-row>
@@ -253,6 +253,58 @@
                    <span class="ml5">{{ deviceInfo.dock.link_osd?.media_file_detail?.remain_upload }}</span>
                  </a-tooltip>
                </div>
              </div>
            </a-col>
            <!-- <a-col span="12">
                <a-tooltip title="激活时间">
                  <span><FieldTimeOutlined /></span>
                  <span class="ml5">{{ new Date((deviceInfo.dock.work_osd?.activation_time ?? 0) * 1000).toLocaleString() }}
                  </span>
                </a-tooltip>
              </a-col> -->
          </a-row>
          <a-row>
            <!-- <a-col span="12">
                <a-tooltip title="累计运行时间">
                  <span><HistoryOutlined /></span>
                  <span class="ml5">
                    <span v-if="deviceInfo.dock.work_osd?.acc_time >= 2592000"> {{ Math.floor(deviceInfo.dock.work_osd?.acc_time / 2592000) }}m </span>
                    <span v-if="(deviceInfo.dock.work_osd?.acc_time % 2592000) >= 86400"> {{ Math.floor((deviceInfo.dock.work_osd?.acc_time % 2592000) / 86400) }}d </span>
                    <span v-if="(deviceInfo.dock.work_osd?.acc_time % 2592000 % 86400) >= 3600"> {{ Math.floor((deviceInfo.dock.work_osd?.acc_time % 2592000 % 86400) / 3600) }}h </span>
                    <span v-if="(deviceInfo.dock.work_osd?.acc_time % 2592000 % 86400 % 3600) >= 60"> {{ Math.floor((deviceInfo.dock.work_osd?.acc_time % 2592000 % 86400 % 3600) / 60) }}min </span>
                    <span>{{ Math.floor(deviceInfo.dock.work_osd?.acc_time % 2592000 % 86400 % 3600 % 60) }} s</span>
                  </span>
                </a-tooltip>
              </a-col> -->
            <a-col span="9">
              <a-tooltip title="设备上的无人机">
                <span>
                  <RocketOutlined />
                </span>
                <span class="ml5">{{ DroneInDockEnum[deviceInfo.dock.basic_osd?.drone_in_dock] }}</span>
              </a-tooltip>
            </a-col>
            <a-col span="15" style="width: 100%;">
              <div class="env-box span5 op_btn">
                <a-col span="6">
                  <a-tooltip title="设备湿度">
                    <span>💦</span>
                    <span class="ml5">{{ deviceInfo.dock.basic_osd?.humidity }}</span>
                  </a-tooltip>
                </a-col>
                <a-col span="8">
                  <a-button :class="[showMonitor ? 'active-color' : 'unactive-color']" class="width-100" type="primary"
                    size="small" @click="openMonitor">
                    监控
                  </a-button>
                </a-col>
                <a-col span="2"></a-col>
                <a-col span="8">
                  <a-button :class="[showOption ? 'active-color' : 'unactive-color']" class="width-100" type="primary"
                    :disabled="dockControlPanelVisible" size="small" @click="openFlySetting">
                    操作
                  </a-button>
                </a-col>
              </div>
            </a-col>
            <!-- <a-col span="12">
@@ -353,19 +405,20 @@
                </a-tooltip>
              </a-col>
            </a-row> -->
          <a-row class="p5" justify="space-between">
          <!-- <a-row class="p5" justify="space-between">
            <a-col span="11">
              <a-button :class="[showMonitor?'active-color':'unactive-color']" class="width-100" type="primary" size="small" @click="openMonitor">
              <a-button :class="[showMonitor ? 'active-color' : 'unactive-color']" class="width-100" type="primary"
                size="small" @click="openMonitor">
                监控
              </a-button>
            </a-col>
            <a-col span="11">
              <a-button :class="[showOption?'active-color':'unactive-color']" class="width-100" type="primary" :disabled="dockControlPanelVisible" size="small"
                @click="openFlySetting">
              <a-button :class="[showOption ? 'active-color' : 'unactive-color']" class="width-100" type="primary"
                :disabled="dockControlPanelVisible" size="small" @click="openFlySetting">
                操作
              </a-button>
            </a-col>
          </a-row>
          </a-row> -->
          <!-- 机场控制面板 -->
          <DockControlPanel v-if="dockControlPanelVisible" :sn="osdVisible.gateway_sn" :deviceInfo="deviceInfo"
            @close-control-panel="closeOperate">
@@ -374,7 +427,7 @@
      </div>
      <a-row class="p5" v-if="showMonitor" justify="center" align="middle">
        <!-- <a-spin :spinning="spinning"> -->
          <Jessibuca v-if="airPortUrl" @timeout="airTimeout" :videoUrl="airPortUrl" width="100%" height="300px" />
        <Jessibuca v-if="airPortUrl" @timeout="airTimeout" :videoUrl="airPortUrl" width="100%" height="300px" />
        <!-- </a-spin> -->
      </a-row>
      <!--  飞机-->
@@ -394,21 +447,28 @@
              {{ !deviceInfo.device ? EModeText[EModeCode.Disconnected] : EModeText[deviceInfo.device?.mode_code]
              }}</a-col>
            <a-col span="15">
              <a-select :showArrow="false" v-model:value="aircraSelected" :bordered="false" :options="aircraftList" :placeholder="aircraftList.length==0?'N/A':'请选择'" :disabled="aircraftList.length==0?true:false" size="small" style="width:100%;background-color: #5d5f61;color: #fff;" @change="selectChange"></a-select>
              <a-select :showArrow="false" v-model:value="aircraSelected" :bordered="false" :options="aircraftList"
                :placeholder="aircraftList.length == 0 ? 'N/A' : '请选择'" :disabled="aircraftList.length == 0 ? true : false"
                size="small" style="width:100%;background-color: #5d5f61;color: #fff;" @change="selectChange"></a-select>
            </a-col>
          </a-row>
          <a-row align="middle" justify="center">
            <a-col span="24"> <div v-if="deviceInfo.device?.mode_code == 14 || !deviceInfo.device" style="color:#494949;" class="flex-display flex-justify-center mt5 mb5">当前设备已关机,无法进行直播</div> </a-col>
            <a-col span="24">
              <div v-if="deviceInfo.device?.mode_code == 14 || !deviceInfo.device" style="color:#494949;"
                class="flex-display flex-justify-center mt5 mb5">当前设备已关机,无法进行直播</div>
            </a-col>
          </a-row>
          <a-row class="p5" align="middle" justify="space-between">
            <a-col span="11">
              <a-button :disabled="deviceInfo.device?.mode_code == 14 || !deviceInfo.device?true:false" :class="[showAircraft?'active-color':'unactive-color']" class="width-100" type="primary"  size="small" @click="openAircra">
              <a-button :disabled="deviceInfo.device?.mode_code == 14 || !deviceInfo.device ? true : false"
                :class="[showAircraft ? 'active-color' : 'unactive-color']" class="width-100" type="primary" size="small"
                @click="openAircra">
                飞行控制
              </a-button>
            </a-col>
            <a-col span="11">
              <a-button :class="[openDroneControl?'active-color':'unactive-color']" class="width-100" type="primary"  size="small"
                @click="openDeviceSetting">
              <a-button :class="[openDroneControl ? 'active-color' : 'unactive-color']" class="width-100" type="primary"
                size="small" @click="openDeviceSetting">
                操作
              </a-button>
            </a-col>
@@ -418,12 +478,12 @@
      <!-- 飞机直播 -->
      <a-row class="p5" v-if="showAircraft">
        <!-- <a-spin :spinning="spinning"> -->
          <Jessibuca v-if="aircraftUrl" @timeout="flyTimeout" :videoUrl="aircraftUrl" width="100%" height="300px" />
        <Jessibuca v-if="aircraftUrl" @timeout="flyTimeout" :videoUrl="aircraftUrl" width="100%" height="300px" />
        <!-- </a-spin> -->
      </a-row>
      <!-- 飞机图标信息 -->
      <div class="osd-info flex-1">
          <!-- <a-row align="middle">
        <!-- <a-row align="middle">
            <a-col span="6">
              <a-tooltip title="向上质量">
                <span>
@@ -547,63 +607,63 @@
              </a-tooltip>
            </a-col>
          </a-row> -->
          <a-row align="middle">
              <a-col span="6" class="flex-row flex-align-center flex-justify-start">
                <a-tooltip title="飞行模式">
                <span>
                  <ControlOutlined class="fz16" />
                </span>
                <span class="ml5">{{ deviceInfo.device ? EGear[deviceInfo.device?.gear] : str }}</span>
              </a-tooltip>
              </a-col>
            <a-col span="6">
              <a-tooltip title="RTK">
                <span>
                  <TrademarkOutlined class="fz14" />
                </span>
                <span class="ml5">{{ deviceInfo.device ? deviceInfo.device.position_state.rtk_number : str }}</span>
              </a-tooltip>
            </a-col>
            <a-col span="6">
              <a-tooltip title="无人机电池电量">
                <span>
                  <ThunderboltOutlined class="fz14" />
                </span>
                <span class="ml5">{{ deviceInfo.device && deviceInfo.device.battery.capacity_percent !== str ?
                  deviceInfo.device?.battery.capacity_percent + ' %' : str }}</span>
              </a-tooltip>
            </a-col>
          </a-row>
          <a-row align="middle" class="mt10">
            <a-col span="6">
              <a-tooltip title="海拔高度">
                <span>ASL</span>
                <span class="ml5">{{ !deviceInfo.device || deviceInfo.device.height === str ? str :
                  deviceInfo.device?.height.toFixed(2) + ' m' }}</span>
              </a-tooltip>
            </a-col>
            <a-col span="6">
              <a-tooltip title="高于起飞高度">
                <span>ALT</span>
                <span class="ml5">{{ !deviceInfo.device || deviceInfo.device.elevation === str ? str :
                  deviceInfo.device?.elevation.toFixed(2) + ' m' }}</span>
              </a-tooltip>
            </a-col>
            <a-col span="6">
              <a-tooltip title="水平速度">
                <span>H.S</span>
                <span class="ml5">{{ !deviceInfo.device || deviceInfo.device?.horizontal_speed === str ? str :
                  deviceInfo.device?.horizontal_speed.toFixed(2) + ' m/s' }}</span>
              </a-tooltip>
            </a-col>
            <a-col span="6">
              <a-tooltip title="垂直速度">
                <span>V.S</span>
                <span class="ml5">{{ !deviceInfo.device || deviceInfo.device.vertical_speed === str ? str :
                  deviceInfo.device?.vertical_speed.toFixed(2) + ' m/s' }}</span>
              </a-tooltip>
            </a-col>
          </a-row>
        <!-- <a-row align="middle">
          <a-col span="6" class="flex-row flex-align-center flex-justify-start">
            <a-tooltip title="飞行模式">
              <span>
                <ControlOutlined class="fz16" />
              </span>
              <span class="ml5">{{ deviceInfo.device ? EGear[deviceInfo.device?.gear] : str }}</span>
            </a-tooltip>
          </a-col>
          <a-col span="6">
            <a-tooltip title="RTK">
              <span>
                <TrademarkOutlined class="fz14" />
              </span>
              <span class="ml5">{{ deviceInfo.device ? deviceInfo.device.position_state.rtk_number : str }}</span>
            </a-tooltip>
          </a-col>
          <a-col span="6">
            <a-tooltip title="无人机电池电量">
              <span>
                <ThunderboltOutlined class="fz14" />
              </span>
              <span class="ml5">{{ deviceInfo.device && deviceInfo.device.battery.capacity_percent !== str ?
                deviceInfo.device?.battery.capacity_percent + ' %' : str }}</span>
            </a-tooltip>
          </a-col>
        </a-row>
        <a-row align="middle" class="mt10">
          <a-col span="6">
            <a-tooltip title="海拔高度">
              <span>ASL</span>
              <span class="ml5">{{ !deviceInfo.device || deviceInfo.device.height === str ? str :
                deviceInfo.device?.height.toFixed(2) + ' m' }}</span>
            </a-tooltip>
          </a-col>
          <a-col span="6">
            <a-tooltip title="高于起飞高度">
              <span>ALT</span>
              <span class="ml5">{{ !deviceInfo.device || deviceInfo.device.elevation === str ? str :
                deviceInfo.device?.elevation.toFixed(2) + ' m' }}</span>
            </a-tooltip>
          </a-col>
          <a-col span="6">
            <a-tooltip title="水平速度">
              <span>H.S</span>
              <span class="ml5">{{ !deviceInfo.device || deviceInfo.device?.horizontal_speed === str ? str :
                deviceInfo.device?.horizontal_speed.toFixed(2) + ' m/s' }}</span>
            </a-tooltip>
          </a-col>
          <a-col span="6">
            <a-tooltip title="垂直速度">
              <span>V.S</span>
              <span class="ml5">{{ !deviceInfo.device || deviceInfo.device.vertical_speed === str ? str :
                deviceInfo.device?.vertical_speed.toFixed(2) + ' m/s' }}</span>
            </a-tooltip>
          </a-col>
        </a-row> -->
      </div>
      <!-- 飞行控制 -->
      <!-- <div class="fly-control flex-display">
@@ -628,7 +688,8 @@
        </div>
      </div>
      <!-- 飞行指令 -->
      <DroneControlPanel v-model="openDroneControl" :sn="osdVisible.gateway_sn" :deviceInfo="deviceInfo" :payloads="osdVisible.payloads">
      <DroneControlPanel v-model="openDroneControl" :sn="osdVisible.gateway_sn" :deviceInfo="deviceInfo"
        :payloads="osdVisible.payloads">
      </DroneControlPanel>
    </div>
  </div>
@@ -706,10 +767,10 @@
    const useGMapManageHook = useGMapManage()
    const deviceTsaUpdateHook = deviceTsaUpdate()
    interface SelectOption {
  value: any,
  label: string,
  more?: any
}
      value: any,
      label: string,
      more?: any
    }
    // 打开飞行控制
    const openDroneControl = ref(false)
    const root = getRoot()
@@ -1119,7 +1180,7 @@
      onCloseControlPanel,
    } = useDockControl()
    // 关闭设备控制方法
    const closeOperate = (sn:string) => {
    const closeOperate = (sn: string) => {
      if (deviceInfo.dock.basic_osd?.mode_code === 2) {
        onCloseControlPanel(sn)
      } else {
@@ -1394,9 +1455,11 @@
  white-space: nowrap;
  text-overflow: ellipsis;
}
.osd-info {
  margin: 15px 10px;
}
.num {
  padding: 0 5px;
  background-color: #ff9900;
@@ -1409,9 +1472,14 @@
  padding-right: 20px;
}
.op_btn {
  justify-content: space-between;
}
.osd>div:not(.dock-control-panel) {
  margin-top: 5px;
  padding-left: 5px;
  margin-bottom: 5px;
}
.circle {
@@ -1456,5 +1524,4 @@
  position: absolute;
  min-height: 2px;
  border-radius: 2px;
}
</style>
}</style>
src/pages/page-web/index.vue
@@ -1,17 +1,27 @@
<!--
 * @Author: husq 931347610@qq.com
 * @Date: 2023-09-13 18:21:08
 * @LastEditors: husq 931347610@qq.com
 * @LastEditTime: 2023-10-06 13:39:12
 * @FilePath: \Cloud-API-Demo-Web\src\pages\page-web\index.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<template>
  <div class="login flex-column flex-justify-center flex-align-center m0 b0">
    <a-image :preview="false" style="width: 17vw; height: 10vw; margin-bottom: 50px" :src="djiLogo" />
    <p class="fz35 pb50" style="color: #2d8cf0">无人机操作系统</p>
    <a-form layout="inline" :model="formState" class="flex-row flex-justify-center flex-align-center">
      <a-form-item>
        <a-input v-model:value="formState.username" placeholder="Username">
        <a-input v-model:value="formState.username" placeholder="请输入用户名">
          <template #prefix>
            <UserOutlined style="color: rgba(0, 0, 0, 0.25)" />
          </template>
        </a-input>
      </a-form-item>
      <a-form-item>
        <a-input v-model:value="formState.password" type="password" placeholder="Password">
        <a-input v-model:value="formState.password" type="password" placeholder="请输入密码">
          <template #prefix>
            <LockOutlined style="color: rgba(0, 0, 0, 0.25)" />
          </template>
src/types/device.ts
@@ -300,14 +300,15 @@
}
export enum RainfallEnum {
  NONE = 0,
  LIGHT_RAIN = 1,
  MODERATE_RAIN = 2,
  HEAVY_RAIN = 3,
  '正常' = 0,
  '小雨' = 1,
  '中雨' = 2,
  '大雨' = 3,
}
export enum DroneInDockEnum {
  OUTSIDE, INSIDE
  '外部' = 0,
  '内部' = 1
}
export interface DockBasicOsd {