| | |
| | | <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"> |
| | |
| | | {{ 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> |
| | |
| | | <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"> |
| | |
| | | </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"> |
| | |
| | | </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> |
| | | <!-- 飞机--> |
| | |
| | | {{ !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> |
| | |
| | | <!-- 飞机直播 --> |
| | | <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> |
| | |
| | | </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"> |
| | |
| | | </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> |
| | |
| | | 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() |
| | |
| | | onCloseControlPanel, |
| | | } = useDockControl() |
| | | // 关闭设备控制方法 |
| | | const closeOperate = (sn:string) => { |
| | | const closeOperate = (sn: string) => { |
| | | if (deviceInfo.dock.basic_osd?.mode_code === 2) { |
| | | onCloseControlPanel(sn) |
| | | } else { |
| | |
| | | white-space: nowrap; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .osd-info { |
| | | margin: 15px 10px; |
| | | } |
| | | |
| | | .num { |
| | | padding: 0 5px; |
| | | background-color: #ff9900; |
| | |
| | | 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 { |
| | |
| | | position: absolute; |
| | | min-height: 2px; |
| | | border-radius: 2px; |
| | | } |
| | | </style> |
| | | }</style> |