|
|
@@ -1,24 +1,27 @@
|
|
|
<template>
|
|
|
<div class="taskList">
|
|
|
- <div class="taskList-left" v-if="state.collapsed">
|
|
|
- <div class="taskList-left-title">
|
|
|
- <div>
|
|
|
- 当前机场
|
|
|
+ <a-spin :spinning="state.onlineDockListLoading" v-if="state.collapsed">
|
|
|
+ <div class="taskList-left">
|
|
|
+ <div class="taskList-left-title">
|
|
|
+ <div>
|
|
|
+ 当前机场
|
|
|
+ </div>
|
|
|
+ <a-checkbox v-model:checked="checkState.checkAll" :indeterminate="checkState.indeterminate"
|
|
|
+ @change="onCheckAllChange">
|
|
|
+ 全选
|
|
|
+ </a-checkbox>
|
|
|
</div>
|
|
|
- <a-checkbox v-model:checked="checkState.checkAll" :indeterminate="checkState.indeterminate"
|
|
|
- @change="onCheckAllChange">
|
|
|
- 全选
|
|
|
- </a-checkbox>
|
|
|
- </div>
|
|
|
- <div v-for="(dock, index) in state.onlineDockList" :key="dock.sn">
|
|
|
- <div :class="[
|
|
|
- 'taskList-left-item',
|
|
|
- checkState.checkSnList.includes(dock.sn) ? 'taskList-left-item-selected' : ''
|
|
|
- ]" @click="onClickCheckItem(dock.sn)">
|
|
|
- <Airport :dock="dock" :look-info="false" />
|
|
|
+ <div v-for="(dock, index) in state.onlineDockList" :key="dock.sn">
|
|
|
+ <div :class="[
|
|
|
+ 'taskList-left-item',
|
|
|
+ checkState.checkSnList.includes(dock.sn) ? 'taskList-left-item-selected' : ''
|
|
|
+ ]" @click="onClickCheckItem(dock.sn)">
|
|
|
+ <Airport :dock="dock" :look-info="false" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+ <div class="taskList-left-fill"></div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </a-spin>
|
|
|
<div :style="{ width: state.collapsed ? 'calc(100% - 250px)' : '100%' }">
|
|
|
<Search :onClickCollapsed="() => { state.collapsed = !state.collapsed }" :onClickCreateTask="() => { }"
|
|
|
:onClickSearch="onClickSearch" :onClickReset="onClickReset" />
|
|
|
@@ -111,6 +114,7 @@ import { EDeviceTypeName } from '/@/types'
|
|
|
|
|
|
interface State {
|
|
|
collapsed: boolean,
|
|
|
+ onlineDockListLoading: boolean,
|
|
|
onlineDockList: OnlineDevice[],
|
|
|
query: any,
|
|
|
listLoading: boolean,
|
|
|
@@ -119,6 +123,7 @@ interface State {
|
|
|
|
|
|
const state: State = reactive({
|
|
|
collapsed: true,
|
|
|
+ onlineDockListLoading: false,
|
|
|
onlineDockList: [],
|
|
|
query: undefined,
|
|
|
listLoading: false,
|
|
|
@@ -149,43 +154,50 @@ const hmsInfo = computed({
|
|
|
})
|
|
|
|
|
|
const fetchOnlineDock = async () => {
|
|
|
- const res = await getDeviceTopo(getWorkspaceId());
|
|
|
- if (res.code !== 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- const list = state.onlineDockList;
|
|
|
- res.data.forEach((gateway: any) => {
|
|
|
- const child = gateway.children
|
|
|
- const device: OnlineDevice = {
|
|
|
- model: child?.device_name,
|
|
|
- callsign: child?.nickname,
|
|
|
- sn: child?.device_sn,
|
|
|
- mode: EModeCode.Disconnected,
|
|
|
- gateway: {
|
|
|
- model: gateway?.device_name,
|
|
|
- callsign: gateway?.nickname,
|
|
|
- sn: gateway?.device_sn,
|
|
|
- domain: gateway?.domain
|
|
|
- },
|
|
|
- payload: []
|
|
|
+ state.onlineDockListLoading = true;
|
|
|
+ try {
|
|
|
+ const res = await getDeviceTopo(getWorkspaceId());
|
|
|
+ if (res.code !== 0) {
|
|
|
+ return;
|
|
|
}
|
|
|
- child?.payloads_list.forEach((payload: any) => {
|
|
|
- device.payload.push({
|
|
|
- index: payload.index,
|
|
|
- model: payload.model,
|
|
|
- payload_name: payload.payload_name,
|
|
|
- payload_sn: payload.payload_sn,
|
|
|
- control_source: payload.control_source,
|
|
|
- payload_index: payload.payload_index
|
|
|
+ const list = state.onlineDockList;
|
|
|
+ res.data.forEach((gateway: any) => {
|
|
|
+ const child = gateway.children
|
|
|
+ const device: OnlineDevice = {
|
|
|
+ model: child?.device_name,
|
|
|
+ callsign: child?.nickname,
|
|
|
+ sn: child?.device_sn,
|
|
|
+ mode: EModeCode.Disconnected,
|
|
|
+ gateway: {
|
|
|
+ model: gateway?.device_name,
|
|
|
+ callsign: gateway?.nickname,
|
|
|
+ sn: gateway?.device_sn,
|
|
|
+ domain: gateway?.domain
|
|
|
+ },
|
|
|
+ payload: []
|
|
|
+ }
|
|
|
+ child?.payloads_list.forEach((payload: any) => {
|
|
|
+ device.payload.push({
|
|
|
+ index: payload.index,
|
|
|
+ model: payload.model,
|
|
|
+ payload_name: payload.payload_name,
|
|
|
+ payload_sn: payload.payload_sn,
|
|
|
+ control_source: payload.control_source,
|
|
|
+ payload_index: payload.payload_index
|
|
|
+ })
|
|
|
})
|
|
|
+ if (EDeviceTypeName.Dock === gateway.domain) {
|
|
|
+ list.push(device)
|
|
|
+ }
|
|
|
})
|
|
|
- if (EDeviceTypeName.Dock === gateway.domain) {
|
|
|
- list.push(device)
|
|
|
- }
|
|
|
- })
|
|
|
- state.onlineDockList = list;
|
|
|
- checkState.checkAll = true;
|
|
|
- checkState.checkSnList = list.map(item => item.sn);
|
|
|
+ state.onlineDockList = list;
|
|
|
+ checkState.checkAll = true;
|
|
|
+ checkState.checkSnList = list.map(item => item.sn);
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ } finally {
|
|
|
+ state.onlineDockListLoading = false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const fetchList = async () => {
|
|
|
@@ -407,6 +419,7 @@ const onClickDelete = (id: string, name: string) => {
|
|
|
height: calc(100vh - 146px);
|
|
|
padding: 10px 8px 0;
|
|
|
background-color: #232323;
|
|
|
+ overflow-y: auto;
|
|
|
margin-right: 20px;
|
|
|
|
|
|
&-title {
|
|
|
@@ -430,6 +443,11 @@ const onClickDelete = (id: string, name: string) => {
|
|
|
border-color: #1fa3f6;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ &-fill {
|
|
|
+ width: 100%;
|
|
|
+ height: 20px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|