From 4dccbb68399da2d46943b8d613585afb49aa5455 Mon Sep 17 00:00:00 2001 From: "sean.zhou" Date: Fri, 22 Jul 2022 20:48:54 +0800 Subject: [PATCH] V1.1.0 for dock --- README.md | 6 +- package-lock.json | 30 +- package.json | 20 +- src/api/http/config.ts | 38 +- src/api/http/request.ts | 40 +- src/api/layer.ts | 3 +- src/api/manage.ts | 113 +++- src/api/media.ts | 17 +- src/api/pilot-bridge.ts | 266 +++++--- src/api/wayline.ts | 52 +- src/api/websocket.ts | 21 +- src/assets/icons/cloudapi.png | Bin 0 -> 13840 bytes src/assets/icons/dji_logo.png | Bin 0 -> 34562 bytes src/assets/icons/dock.png | Bin 0 -> 8887 bytes src/assets/icons/drone.png | Bin 0 -> 6571 bytes src/assets/icons/m30.png | Bin 0 -> 38952 bytes src/assets/icons/no-data.png | Bin 0 -> 50918 bytes src/assets/icons/rc.png | Bin 0 -> 8999 bytes src/components/GMap.vue | 624 +++++++++++++++++- src/components/MediaPanel.vue | 192 ++++-- src/components/TaskPanel.vue | 182 +++++ src/components/livestream-agora.vue | 350 ++++++++++ src/components/livestream-others.vue | 378 +++++++++++ src/components/wayline-panel.vue | 5 +- src/constants/index.ts | 7 +- src/hooks/use-g-map-cover.ts | 10 +- src/hooks/use-g-map-tsa.ts | 96 +++ src/pages/page-pilot/pilot-bind.vue | 54 ++ src/pages/page-pilot/pilot-home.vue | 599 ++++++++++++++--- src/pages/page-pilot/pilot-index.vue | 96 +-- src/pages/page-pilot/pilot-liveshare.vue | 301 ++++++--- src/pages/page-pilot/pilot-media.vue | 96 +-- src/pages/project-app/home.vue | 57 ++ src/pages/project-app/index.vue | 164 +---- .../project-app/projects/create-plan.vue | 251 +++++++ src/pages/project-app/projects/devices.vue | 518 +++++++++++++++ src/pages/project-app/projects/dock.vue | 100 +++ src/pages/project-app/projects/layer.vue | 10 +- src/pages/project-app/projects/livestream.vue | 96 +-- src/pages/project-app/projects/media.vue | 1 - src/pages/project-app/projects/members.vue | 169 +++++ src/pages/project-app/projects/task.vue | 38 ++ src/pages/project-app/projects/tsa.vue | 458 ++++++++++++- src/pages/project-app/projects/wayline.vue | 204 +++++- src/pages/project-app/projects/workspace.vue | 140 ++++ src/pages/project-app/sidebar.vue | 50 +- src/pages/project-app/topbar.vue | 97 +++ src/router/index.ts | 114 +++- src/store/index.ts | 121 +++- src/styles/common.scss | 14 +- src/styles/fonts.scss | 2 +- src/types/device.ts | 198 ++++++ src/types/enums.ts | 110 ++- src/types/live-stream.ts | 55 ++ src/types/wayline.ts | 30 + src/utils/common.ts | 8 + tsconfig.json | 5 +- vite.config.ts | 2 +- yarn.lock | 15 +- 59 files changed, 5829 insertions(+), 794 deletions(-) create mode 100644 src/assets/icons/cloudapi.png create mode 100644 src/assets/icons/dji_logo.png create mode 100644 src/assets/icons/dock.png create mode 100644 src/assets/icons/drone.png create mode 100644 src/assets/icons/m30.png create mode 100644 src/assets/icons/no-data.png create mode 100644 src/assets/icons/rc.png create mode 100644 src/components/TaskPanel.vue create mode 100644 src/components/livestream-agora.vue create mode 100644 src/components/livestream-others.vue create mode 100644 src/hooks/use-g-map-tsa.ts create mode 100644 src/pages/page-pilot/pilot-bind.vue create mode 100644 src/pages/project-app/home.vue create mode 100644 src/pages/project-app/projects/create-plan.vue create mode 100644 src/pages/project-app/projects/devices.vue create mode 100644 src/pages/project-app/projects/dock.vue create mode 100644 src/pages/project-app/projects/members.vue create mode 100644 src/pages/project-app/projects/task.vue create mode 100644 src/pages/project-app/projects/workspace.vue create mode 100644 src/pages/project-app/topbar.vue create mode 100644 src/types/device.ts create mode 100644 src/types/live-stream.ts create mode 100644 src/types/wayline.ts create mode 100644 src/utils/common.ts diff --git a/README.md b/README.md index 2071047..faf73ce 100644 --- a/README.md +++ b/README.md @@ -6,15 +6,15 @@ The launch of the Cloud API mainly solves the problem of developers reinventing ## Docker -If you don't want to install the development environment, you can try deploying with docker. [Click the link to download.](https://terra-sz-hc1pro-cloudapi.oss-cn-shenzhen.aliyuncs.com/c0af9fe0d7eb4f35a8fe5b695e4d0b96/docker/cloud_api_sample_docker_1.0.0.zip) +If you don't want to install the development environment, you can try deploying with docker. [Click the link to download.](https://terra-sz-hc1pro-cloudapi.oss-cn-shenzhen.aliyuncs.com/c0af9fe0d7eb4f35a8fe5b695e4d0b96/docker/cloud_api_sample_docker.zip) ## Usage -For more documentation, please visit the [DJI Developer Documentation](https://developer.dji.com/cn/document/209883f1-f2ad-406e-b99c-be7498df7f10). +For more documentation, please visit the [DJI Developer Documentation](https://developer.dji.com/doc/cloud-api-tutorial/cn/). ## Latest Release -Cloud API 1.0.0 was released on 21 March 2022. For more information, please visit the [Release Note](https://developer.dji.com/cn/document/87026f9b-e906-4809-9aba-870f569061b5). +Cloud API 1.1.0 was released on 22 July 2022. For more information, please visit the [Release Note](https://developer.dji.com/doc/cloud-api-tutorial/cn/). ## License diff --git a/package-lock.json b/package-lock.json index 5ae7c05..ccce315 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@amap/amap-jsapi-loader": "^1.0.1", "@ant-design/icons-vue": "^6.0.1", "@vitejs/plugin-legacy": "^1.6.2", - "agora-rtc-sdk-ng": "latest", + "agora-rtc-sdk-ng": "^4.12.1", "ant-design-vue": "^2.2.8", "axios": "^0.21.1", "query-string": "^7.0.1", @@ -1226,9 +1226,17 @@ } }, "node_modules/agora-rtc-sdk-ng": { - "version": "4.9.1", - "resolved": "https://registry.npmmirror.com/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.9.1.tgz", - "integrity": "sha512-Jogn3TQC7VdA7uZjGYmaAs0XzgYBgGs6nGA67/dQVjqC7kiwAfkQsAuvbevE/qxrVJmLfqtDTNxP40IFvnTlgQ==" + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.12.1.tgz", + "integrity": "sha512-kmc+ZyKDdnY/BN3iAwBs+MSgTX8Zkc6THFSIAXN9WebjZ/F+N/JXItoNEcgQe3MdTABUli6w3pZ+iObnDqVkBw==", + "dependencies": { + "agora-rte-extension": "^1.0.22" + } + }, + "node_modules/agora-rte-extension": { + "version": "1.0.23", + "resolved": "https://registry.npmmirror.com/agora-rte-extension/-/agora-rte-extension-1.0.23.tgz", + "integrity": "sha512-X2cGBg+L5ZJIFU91qvMASvRsBfg1HXTktVG3YROw9wxHsILSI7jgF9R9XraLc3fNX/UjovaYAlUW+hiJe0v6Xw==" }, "node_modules/ajv": { "version": "6.12.6", @@ -8774,9 +8782,17 @@ "requires": {} }, "agora-rtc-sdk-ng": { - "version": "4.9.1", - "resolved": "https://registry.npmmirror.com/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.9.1.tgz", - "integrity": "sha512-Jogn3TQC7VdA7uZjGYmaAs0XzgYBgGs6nGA67/dQVjqC7kiwAfkQsAuvbevE/qxrVJmLfqtDTNxP40IFvnTlgQ==" + "version": "4.12.1", + "resolved": "https://registry.npmmirror.com/agora-rtc-sdk-ng/-/agora-rtc-sdk-ng-4.12.1.tgz", + "integrity": "sha512-kmc+ZyKDdnY/BN3iAwBs+MSgTX8Zkc6THFSIAXN9WebjZ/F+N/JXItoNEcgQe3MdTABUli6w3pZ+iObnDqVkBw==", + "requires": { + "agora-rte-extension": "^1.0.22" + } + }, + "agora-rte-extension": { + "version": "1.0.23", + "resolved": "https://registry.npmmirror.com/agora-rte-extension/-/agora-rte-extension-1.0.23.tgz", + "integrity": "sha512-X2cGBg+L5ZJIFU91qvMASvRsBfg1HXTktVG3YROw9wxHsILSI7jgF9R9XraLc3fNX/UjovaYAlUW+hiJe0v6Xw==" }, "ajv": { "version": "6.12.6", diff --git a/package.json b/package.json index 85f213a..89acf7c 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@amap/amap-jsapi-loader": "^1.0.1", "@ant-design/icons-vue": "^6.0.1", "@vitejs/plugin-legacy": "^1.6.2", - "agora-rtc-sdk-ng": "latest", + "agora-rtc-sdk-ng": "^4.12.1", "ant-design-vue": "^2.2.8", "axios": "^0.21.1", "query-string": "^7.0.1", @@ -61,21 +61,39 @@ "agora-rtc-sdk-ng", "ant-design-vue", "ant-design-vue/es", + "ant-design-vue/es/avatar/style/css", + "ant-design-vue/es/breadcrumb/style/css", "ant-design-vue/es/button/style/css", + "ant-design-vue/es/checkbox/style/css", + "ant-design-vue/es/col/style/css", + "ant-design-vue/es/collapse/style/css", + "ant-design-vue/es/date-picker/style/css", "ant-design-vue/es/divider/style/css", "ant-design-vue/es/drawer/style/css", + "ant-design-vue/es/dropdown/style/css", + "ant-design-vue/es/empty/style/css", "ant-design-vue/es/form/style/css", "ant-design-vue/es/image/style/css", "ant-design-vue/es/input/style/css", + "ant-design-vue/es/layout/style/css", + "ant-design-vue/es/menu/style/css", "ant-design-vue/es/message/style/css", "ant-design-vue/es/modal/style/css", + "ant-design-vue/es/pagination/style/css", + "ant-design-vue/es/popconfirm/style/css", + "ant-design-vue/es/popover/style/css", + "ant-design-vue/es/progress/style/css", "ant-design-vue/es/radio/style/css", + "ant-design-vue/es/row/style/css", "ant-design-vue/es/select/style/css", + "ant-design-vue/es/space/style/css", + "ant-design-vue/es/spin/style/css", "ant-design-vue/es/switch/style/css", "ant-design-vue/es/table/style/css", "ant-design-vue/es/tooltip/style/css", "ant-design-vue/es/tree/style/css", "axios", + "moment", "reconnecting-websocket", "vconsole", "vue", diff --git a/src/api/http/config.ts b/src/api/http/config.ts index 6b12882..fafe023 100644 --- a/src/api/http/config.ts +++ b/src/api/http/config.ts @@ -1,20 +1,36 @@ export const CURRENT_CONFIG = { + // license + appId: 'Please enter the app id.', // You need to go to the development website to apply. + appKey: 'Please enter the app key.', // You need to go to the development website to apply. + appLicense: 'Please enter the app license.' // You need to go to the development website to apply. + + // http baseURL: 'Please enter the backend access address prefix.', // This url must end with "/". Example: 'http://192.168.1.1:6789/' websocketURL: 'Please enter the WebSocket access address.', // Example: 'ws://192.168.1.1:6789/api/v1/ws' - rtmpURL: 'Please enter the rtmp access address.', // Example: 'rtmp://192.168.1.1/live/' - gb28181Para: - 'serverIP=Please enter the server ip.&serverPort=Please enter the server port.&serverID=Please enter the server id.' + - '&agentID=Please enter the agent id.&agentPassword=Please enter the agent password' + - '&localPort=Please enter the local port.&channel=Please enter the channel.', - rtspPara: 'userName=Please enter the username.&password=Please enter the password&port=Please enter the port.', - amapKey: 'Please enter the amap key.', + // livestreaming + // RTMP Note: This IP is the address of the streaming server. If you want to see livestream on web page, you need to convert the RTMP stream to WebRTC stream. + rtmpURL: 'Please enter the rtmp access address.', // Example: 'rtmp://192.168.1.1/live/' + // GB28181 Note:If you don't know what these parameters mean, you can go to Pilot2 and select the GB28181 page in the cloud platform. Where the parameters same as these parameters. + gbServerIp: 'Please enter the server ip.', + gbServerPort: 'Please enter the server port.', + gbServerId: 'Please enter the server id.', + gbAgentId: 'Please enter the agent id', + gbPassword: 'Please enter the agent password', + gbAgentPort: 'Please enter the local port.', + gbAgentChannel: 'Please enter the channel.', + // RTSP + rtspUserName: 'Please enter the username.', + rtspPassword: 'Please enter the password.', + rtspPort: '8554', + // Agora agoraAPPID: 'Please enter the agora app id.', - agoraToken: 'Please enter the agora token.', + agoraToken: 'Please enter the agora temporary token.', agoraChannel: 'Please enter the agora channel.', - appId: 'Please enter the app id.', // You need to go to the development website to apply. - appKey: 'Please enter the app key.', // You need to go to the development website to apply. - appLicense: 'Please enter the app license.' // You need to go to the development website to apply. + // map + // You can apply on the AMap website. + amapKey: 'Please enter the amap key.', + } diff --git a/src/api/http/request.ts b/src/api/http/request.ts index d1a0d6f..d668b89 100644 --- a/src/api/http/request.ts +++ b/src/api/http/request.ts @@ -1,10 +1,14 @@ import axios from 'axios' import { uuidv4 } from '/@/utils/uuid' import { CURRENT_CONFIG } from './config' +import { message } from 'ant-design-vue' +import router from '/@/router' +import { ELocalStorageKey, ERouterName, EUserType } from '/@/types/enums' export * from './type' + const REQUEST_ID = 'X-Request-Id' function getAuthToken () { - return localStorage.getItem('x-auth-token') + return localStorage.getItem(ELocalStorageKey.Token) } const instance = axios.create({ @@ -17,7 +21,7 @@ const instance = axios.create({ instance.interceptors.request.use( config => { - config.headers['X-Auth-Token'] = getAuthToken() + config.headers[ELocalStorageKey.Token] = getAuthToken() // config.headers[REQUEST_ID] = uuidv4() config.baseURL = CURRENT_CONFIG.baseURL return config @@ -28,10 +32,15 @@ instance.interceptors.request.use( ) instance.interceptors.response.use( - response => response, + response => { + console.info('URL: ' + response.config.baseURL + response.config.url, '\nData: ', response.data, '\nResponse:', response) + if (response.data.code && response.data.code !== 0) { + message.error(response.data.message) + } + return response + }, err => { const requestId = err?.config?.headers && err?.config?.headers[REQUEST_ID] - console.info('') if (requestId) { console.info(REQUEST_ID, ':', requestId) } @@ -46,15 +55,26 @@ instance.interceptors.response.use( } // @See: https://github.com/axios/axios/issues/383 if (!err.response || !err.response.status) { - console.log('The network is abnormal, please check the network and try again') - } else if (err.response?.status !== 200) { - console.log(`ERROR_CODE: ${err.response?.status}`) + message.error('The network is abnormal, please check the backend service and try again') + return } - if (err.response?.status === 403) { - // window.location.href = '/' + if (err.response?.status !== 200) { + message.error(`ERROR_CODE: ${err.response?.status}`) } + // if (err.response?.status === 403) { + // // window.location.href = '/' + // } if (err.response?.status === 401) { - console.log(err.response) + console.error(err.response) + const flag: number = Number(localStorage.getItem(ELocalStorageKey.Flag)) + switch (flag) { + case EUserType.Web: + router.push(ERouterName.PROJECT) + break + case EUserType.Pilot: + router.push(ERouterName.PILOT) + break + } } return Promise.reject(err) diff --git a/src/api/layer.ts b/src/api/layer.ts index 1c97320..9501201 100644 --- a/src/api/layer.ts +++ b/src/api/layer.ts @@ -1,8 +1,9 @@ +import { ELocalStorageKey } from '../types/enums' import request, { IWorkspaceResponse } from '/@/api/http/request' import { mapLayers } from '/@/constants/mock-layers' import { elementGroupsReq, PostElementsBody, PutElementsBody } from '/@/types/mapLayer' const PREFIX = '/map/api/v1' -const workspace_id = localStorage.getItem('workspace-id') +const workspace_id = localStorage.getItem(ELocalStorageKey.WorkspaceId) type UnknownResponse = Promise> // get elements group // export const getLayers = async (reqParams: elementGroupsReq): UnknownResponse => { diff --git a/src/api/manage.ts b/src/api/manage.ts index 305fcb0..1fe6b06 100644 --- a/src/api/manage.ts +++ b/src/api/manage.ts @@ -1,12 +1,31 @@ -import request, { IWorkspaceResponse } from '/@/api/http/request' +import request, { CommonListResponse, IListWorkspaceResponse, IPage, IWorkspaceResponse } from '/@/api/http/request' const HTTP_PREFIX = '/manage/api/v1' // login -interface loginBody { +export interface LoginBody { username: string, - password: string + password: string, + flag: number, } -export const login = async function (body: loginBody): Promise> { +export interface BindBody { + device_sn: string, + user_id: string, + workspace_id: string, + domain?: string +} +export interface HmsQueryBody { + sns: string[], + children_sn: string, + device_sn: string, + language: string, + level: number | string, + begin_time: number, + end_time: number, + message: string, + domain: string, +} + +export const login = async function (body: LoginBody): Promise> { const url = `${HTTP_PREFIX}/login` const result = await request.post(url, body) return result.data @@ -20,23 +39,23 @@ export const refreshToken = async function (body: {}): Promise> { +export const getPlatformInfo = async function (): Promise> { const url = `${HTTP_PREFIX}/workspaces/current` - const result = await request.get(url, body) + const result = await request.get(url) return result.data } // Get User Info -export const getUserInfo = async function (body: {}): Promise> { +export const getUserInfo = async function (): Promise> { const url = `${HTTP_PREFIX}/users/current` - const result = await request.get(url, body) + const result = await request.get(url) return result.data } // Get Device Topo -export const getDeviceTopo = async function (body: {}): Promise> { - const url = `${HTTP_PREFIX}/devices/devices` - const result = await request.get(url, body) +export const getDeviceTopo = async function (workspace_id: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices` + const result = await request.get(url) return result.data } @@ -60,3 +79,75 @@ export const stopLivestream = async function (body: {}): Promise> { + const url = `${HTTP_PREFIX}/live/streams/update` + const result = await request.post(url, body) + return result.data +} + +export const getAllUsersInfo = async function (wid: string, body: IPage): Promise> { + const url = `${HTTP_PREFIX}/users/${wid}/users?&page=${body.page}&page_size=${body.page_size}` + const result = await request.get(url) + return result.data +} + +export const updateUserInfo = async function (wid: string, user_id: string, body: {}): Promise> { + const url = `${HTTP_PREFIX}/users/${wid}/users/${user_id}` + const result = await request.put(url, body) + return result.data +} + +export const bindDevice = async function (body: BindBody): Promise> { + const url = `${HTTP_PREFIX}/devices/${body.device_sn}/binding` + const result = await request.post(url, body) + return result.data +} + +export const unbindDevice = async function (device_sn: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${device_sn}/unbinding` + const result = await request.delete(url) + return result.data +} + +export const getDeviceBySn = async function (workspace_id: string, device_sn: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/${device_sn}` + const result = await request.get(url) + return result.data +} + +export const getBindingDevices = async function (workspace_id: string, body: IPage, domain: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/bound?&page=${body.page}&page_size=${body.page_size}&domain=${domain}` + const result = await request.get(url) + return result.data +} + +export const updateDevice = async function (body: {}, workspace_id: string, device_sn: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/${device_sn}` + const result = await request.put(url, body) + return result.data +} + +export const getUnreadDeviceHms = async function (workspace_id: string, device_sn: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/hms/${device_sn}` + const result = await request.get(url) + return result.data +} + +export const updateDeviceHms = async function (workspace_id: string, device_sn: string): Promise> { + const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/hms/${device_sn}` + const result = await request.put(url) + return result.data +} + +export const getDeviceHms = async function (body: HmsQueryBody, workspace_id: string, pagination: IPage): Promise> { + let url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/hms?page=${pagination.page}&pageSize=${pagination.page_size}` + + `&level=${body.level ?? ''}&beginTime=${body.begin_time ?? ''}&endTime=${body.end_time ?? ''}&message=${body.message ?? ''}&language=${body.language}` + body.sns.forEach((sn: string) => { + if (sn !== '') { + url = url.concat(`&deviceSn=${sn}`) + } + }) + const result = await request.get(url) + return result.data +} \ No newline at end of file diff --git a/src/api/media.ts b/src/api/media.ts index 8cdec5c..9cf48d9 100644 --- a/src/api/media.ts +++ b/src/api/media.ts @@ -1,9 +1,18 @@ -import request from '/@/api/http/request' +import request, { IPage, IWorkspaceResponse } from '/@/api/http/request' const HTTP_PREFIX = '/media/api/v1' // Get Media Files -export const getMediaFiles = async function (wid: string, body: {}): Promise { - const url = `${HTTP_PREFIX}/files/${wid}/files` - const result = await request.get(url, body) +export const getMediaFiles = async function (wid: string, pagination: IPage): Promise> { + const url = `${HTTP_PREFIX}/files/${wid}/files?page=${pagination.page}&page_size=${pagination.page_size}` + const result = await request.get(url) return result.data } +// Download Media File +export const downloadMediaFile = async function (workspaceId: string, fingerprint: string): Promise { + const url = `${HTTP_PREFIX}/files/${workspaceId}/file/${fingerprint}/url` + const result = await request.get(url, { responseType: 'blob' }) + if (result.data.code) { + return result.data + } + return result +} diff --git a/src/api/pilot-bridge.ts b/src/api/pilot-bridge.ts index a126522..61bdf4e 100644 --- a/src/api/pilot-bridge.ts +++ b/src/api/pilot-bridge.ts @@ -1,95 +1,151 @@ +import { message } from 'ant-design-vue' +import { EComponentName, EPhotoType, ERouterName } from '../types' +import { CURRENT_CONFIG } from './http/config' +import { EVideoPublishType, LiveStreamStatus } from '../types/live-stream' import { getRoot } from '/@/root' const root = getRoot() -const components = new Map() - +export const components = new Map() declare let window:any - interface JsResponse{ code:number, message:string, - data:{} + data:any +} + +export interface ThingParam { + host: string, + username: string, + password: string, + connectCallback: string +} + +export interface LiveshareParam { + videoPublishType: string, // video-on-demand、video-by-manual、video-demand-aux-manual + statusCallback: string +} + +export interface MapParam { + userName: string, + elementPreName: string +} + +export interface WsParam { + host: string, + token: string, + connectCallback: string +} + +export interface ApiParam { + host: string, + token: string +} + +export interface MediaParam { + autoUploadPhoto: boolean, // 是否自动上传图片, 非必需 + autoUploadPhotoType: number, // 自动上传的照片类型,0:原图, 1:缩略图, 非必需 + autoUploadVideo: boolean // 是否自动上传视频, 非必需 +} + +function returnBool (response: string): boolean { + const res: JsResponse = JSON.parse(response) + const isError = errorHint(res) + if (JSON.stringify(res.data) !== '{}') { + return isError && res.data + } + return isError +} + +function returnString (response: string): string { + const res: JsResponse = JSON.parse(response) + return errorHint(res) ? res.data : '' +} + +function returnNumber (response: string): number { + const res: JsResponse = JSON.parse(response) + return errorHint(res) ? res.data : -1 +} + +function errorHint (response: JsResponse): boolean { + if (response.code !== 0) { + message.error(response.message) + console.error(response.message) + return false + } + return true } export default { - init () { - components.set('thing', { + init (): Map { + const thingParam: ThingParam = { host: '', connectCallback: '', username: '', password: '' - }) - components.set('liveshare', { - videoPublishType: 'video-demand-aux-manual', // video-on-demand、video-by-manual、video-demand-aux-manual - statusCallback: '' - }) - components.set('map', { + } + components.set(EComponentName.Thing, thingParam) + const liveshareParam: LiveshareParam = { + videoPublishType: EVideoPublishType.VideoDemandAuxManual, + statusCallback: 'liveStatusCallback' + } + components.set(EComponentName.Liveshare, liveshareParam) + const mapParam: MapParam = { userName: '', - elementPreName: '' - }) - components.set('ws', { - host: '', + elementPreName: 'PILOT' + } + components.set(EComponentName.Map, mapParam) + const wsParam: WsParam = { + host: CURRENT_CONFIG.websocketURL, token: '', - connectCallback: '' - }) - components.set('api', { + connectCallback: 'wsConnectCallback' + } + components.set(EComponentName.Ws, wsParam) + const apiParam: ApiParam = { host: '', token: '' - }) - components.set('tsa', { - }) - components.set('media', { - autoUploadPhoto: true, // 是否自动上传图片, 非必需 - autoUploadPhotoType: 1, // 自动上传的照片类型,0:原图, 1:缩略图, 非必需 - autoUploadVideo: true // 是否自动上传视频, 非必需 - }) - components.set('mission', { - }) - }, - getComponentParam (key:string) { + } + components.set(EComponentName.Api, apiParam) + components.set(EComponentName.Tsa, {}) + const mediaParam: MediaParam = { + autoUploadPhoto: true, + autoUploadPhotoType: EPhotoType.Preview, + autoUploadVideo: true + } + components.set(EComponentName.Media, mediaParam) + components.set(EComponentName.Mission, {}) + + return components + }, + + getComponentParam (key:EComponentName): any { return components.get(key) }, - setComponentParam (key:string, value:any) { + setComponentParam (key:EComponentName, value:any) { components.set(key, value) }, loadComponent (name:string, param:any):string { - return window.djiBridge.platformLoadComponent(name, JSON.stringify(param)) + return returnString(window.djiBridge.platformLoadComponent(name, JSON.stringify(param))) }, unloadComponent (name:string) :string { - return window.djiBridge.platformUnloadComponent(name) + return returnString(window.djiBridge.platformUnloadComponent(name)) }, - isComponentLoaded (module:string):string { - return window.djiBridge.platformIsComponentLoaded(module) + isComponentLoaded (module:string): boolean { + return returnBool(window.djiBridge.platformIsComponentLoaded(module)) }, setWorkspaceId (uuid:string):string { - return window.djiBridge.platformSetWorkspaceId(uuid) + return returnString(window.djiBridge.platformSetWorkspaceId(uuid)) }, - setPlatformMessage (platformName:string, title:string, desc:string):string { - return window.djiBridge.platformSetInformation(platformName, title, desc) + setPlatformMessage (platformName:string, title:string, desc:string): boolean { + return returnBool(window.djiBridge.platformSetInformation(platformName, title, desc)) }, getRemoteControllerSN () :string { - return window.djiBridge.platformGetRemoteControllerSN() + return returnString(window.djiBridge.platformGetRemoteControllerSN()) }, getAircraftSN ():string { - return window.djiBridge.platformGetAircraftSN() + return returnString(window.djiBridge.platformGetAircraftSN()) }, stopwebview ():string { - return window.djiBridge.platformStopSelf() - }, - getToken () :string { - const res:string = this.isComponentLoaded('api') - const resObj = JSON.parse(res) - console.log('api load status:', resObj) - if (resObj.data === true) { - const tokenRes = JSON.parse(window.djiBridge.apiGetToken()) - return tokenRes.data - } else { - console.warn('warning: not api component loaded!!') - return '' - } - }, - setToken (token:string):string { - return window.djiBridge.apiSetToken(token) + return returnString(window.djiBridge.platformStopSelf()) }, setLogEncryptKey (key:string):string { return window.djiBridge.platformSetLogEncryptKey(key) @@ -98,14 +154,42 @@ export default { return window.djiBridge.platformClearLogEncryptKey() }, getLogPath ():string { - return window.djiBridge.platformGetLogPath() + return returnString(window.djiBridge.platformGetLogPath()) + }, + platformVerifyLicense (appId:string, appKey:string, appLicense:string): boolean { + return returnBool(window.djiBridge.platformVerifyLicense(appId, appKey, appLicense)) + }, + isPlatformVerifySuccess (): boolean { + return returnBool(window.djiBridge.platformIsVerified()) }, - platformVerifyLicense (appId:string, appKey:string, appLicense:string):string { - return window.djiBridge.platformVerifyLicense(appId, appKey, appLicense) + isAppInstalled (pkgName: string): boolean { + return returnBool(window.djiBridge.platformIsAppInstalled(pkgName)) }, - isPlatformVerifySuccess ():string { - return window.djiBridge.platformIsVerified() + getVersion (): string { + return window.djiBridge.platformGetVersion() }, + + // thing + thingGetConnectState (): boolean { + return returnBool(window.djiBridge.thingGetConnectState()) + }, + + thingGetConfigs (): ThingParam { + const thingParam = JSON.parse(window.djiBridge.thingGetConfigs()) + return thingParam.code === 0 ? JSON.parse(thingParam.data) : {} + }, + + // api + getToken () : string { + return returnString(window.djiBridge.apiGetToken()) + }, + setToken (token:string):string { + return returnString(window.djiBridge.apiSetToken(token)) + }, + getHost (): string { + return returnString(window.djiBridge.apiGetHost()) + }, + // liveshare /** * @@ -114,8 +198,8 @@ export default { * video-by-manual:手动点播,配置好直播类型参数之后,在图传页面可修改直播参数,停止直播 * video-demand-aux-manual: 混合模式,支持服务器点播,以及图传页面修改直播参数,停止直播 */ - setVideoPublishType (type:string):string { - return window.djiBridge.liveshareSetVideoPublishType(type) + setVideoPublishType (type:string): boolean { + return returnBool(window.djiBridge.liveshareSetVideoPublishType(type)) }, /** @@ -123,8 +207,8 @@ export default { * @returns * type: liveshare type, 0:unknown, 1:agora, 2:rtmp, 3:rtsp, 4:gb28181 */ - getLiveshareConfig () { - return window.djiBridge.liveshareGetConfig() + getLiveshareConfig (): string { + return returnString(window.djiBridge.liveshareGetConfig()) }, setLiveshareConfig (type:number, params:string):string { @@ -134,50 +218,66 @@ export default { setLiveshareStatusCallback (callbackFunc:string) :string { return window.djiBridge.liveshareSetStatusCallback(callbackFunc) }, - getLiveshareStatus () { - return window.djiBridge.liveshareGetStatus() + getLiveshareStatus (): LiveStreamStatus { + return JSON.parse(JSON.parse(window.djiBridge.liveshareGetStatus()).data) }, - startLiveshare ():string { - return window.djiBridge.liveshareStartLive() + startLiveshare (): boolean { + return returnBool(window.djiBridge.liveshareStartLive()) }, - stopLiveshare ():string { - return window.djiBridge.liveshareStopLive() + stopLiveshare (): boolean { + return returnBool(window.djiBridge.liveshareStopLive()) + }, + // WebSocket + wsGetConnectState (): boolean { + return returnBool(window.djiBridge.wsGetConnectState()) + }, + wsConnect (host: string, token: string, callback: string): string { + return window.djiBridge.wsConnect(host, token, callback) + }, + wsDisconnect (): string { + return window.djiBridge.wsConnect() + }, + wsSend (message: string): string { + return window.djiBridge.wsSend(message) }, // media setAutoUploadPhoto (auto:boolean):string { return window.djiBridge.mediaSetAutoUploadPhoto(auto) }, - getAutoUploadPhoto () { - return window.djiBridge.mediaGetAutoUploadPhoto() + getAutoUploadPhoto (): boolean { + return returnBool(window.djiBridge.mediaGetAutoUploadPhoto()) }, setUploadPhotoType (type:number):string { return window.djiBridge.mediaSetUploadPhotoType(type) }, - getUploadPhotoType () { - return window.djiBridge.mediaGetUploadPhotoType() + getUploadPhotoType (): number { + return returnNumber(window.djiBridge.mediaGetUploadPhotoType()) }, setAutoUploadVideo (auto:boolean):string { return window.djiBridge.mediaSetAutoUploadVideo(auto) }, - getAutoUploadVideo () { - return window.djiBridge.mediaGetAutoUploadVideo() + getAutoUploadVideo (): boolean { + return returnBool(window.djiBridge.mediaGetAutoUploadVideo()) }, setDownloadOwner (rcIndex:number):string { return window.djiBridge.mediaSetDownloadOwner(rcIndex) }, - getDownloadOwner () { - return window.djiBridge.mediaGetDownloadOwner() + getDownloadOwner (): number { + return returnNumber(window.djiBridge.mediaGetDownloadOwner()) }, onBackClickReg () { window.djiBridge.onBackClick = () => { - if (root.$router.currentRoute.value.path === '/pilot-home') { - console.log(root.$router.currentRoute.value.path) + if (root.$router.currentRoute.value.path === '/' + ERouterName.PILOT_HOME) { return false } else { - console.log(root.$router.currentRoute.value.path) history.go(-1) return true } } + }, + onStopPlatform () { + window.djiBridge.onStopPlatform = () => { + localStorage.clear() + } } } diff --git a/src/api/wayline.ts b/src/api/wayline.ts index 2963b6c..87c9c31 100644 --- a/src/api/wayline.ts +++ b/src/api/wayline.ts @@ -1,9 +1,55 @@ -import request from '/@/api/http/request' +import request, { IPage, IWorkspaceResponse } from '/@/api/http/request' const HTTP_PREFIX = '/wayline/api/v1' +export interface CreatePlan { + name: string, + file_id: string, + dock_sn: string, + immediate: boolean, + type: string, +} + // Get Wayline Files -export const getWaylineFiles = async function (wid: string, body: {}): Promise { - const url = `${HTTP_PREFIX}/workspaces/${wid}/waylines?` + 'order_by=' + body.order_by + '&page=' + body.page + '&page_size=' + body.page_size +export const getWaylineFiles = async function (wid: string, body: {}): Promise> { + const url = `${HTTP_PREFIX}/workspaces/${wid}/waylines?order_by=${body.order_by}&page=${body.page}&page_size=${body.page_size}` const result = await request.get(url) return result.data } + +// Download Wayline File +export const downloadWaylineFile = async function (workspaceId: string, waylineId: string): Promise { + const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/waylines/${waylineId}/url` + const result = await request.get(url, { responseType: 'blob' }) + if (result.data.code) { + return result.data + } + return result +} + +// Delete Wayline File +export const deleteWaylineFile = async function (workspaceId: string, waylineId: string): Promise> { + const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/waylines/${waylineId}` + const result = await request.delete(url) + return result.data +} + +// Create Wayline Job +export const createPlan = async function (workspaceId: string, plan: CreatePlan): Promise> { + const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/flight-tasks` + const result = await request.post(url, plan) + return result.data +} + +// Get Wayline Jobs +export const getWaylineJobs = async function (workspaceId: string, page: IPage): Promise> { + const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs?page=${page.page}&page_size=${page.page_size}` + const result = await request.get(url) + return result.data +} + +// Execute Wayline Job +export const executeWaylineJobs = async function (workspaceId: string, plan_id: string): Promise> { + const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs/${plan_id}` + const result = await request.post(url) + return result.data +} diff --git a/src/api/websocket.ts b/src/api/websocket.ts index 4613457..0d5a08f 100644 --- a/src/api/websocket.ts +++ b/src/api/websocket.ts @@ -1,14 +1,14 @@ import ReconnectingWebSocket from 'reconnecting-websocket' +import { ELocalStorageKey } from '../types/enums' import { CURRENT_CONFIG as config } from '/@/api/http/config' -let socket = {} +let socket: ReconnectingWebSocket export default { - init (getMsgFunc) { - const token = localStorage.getItem('x-auth-token') - const wspath = - config.websocketURL + '?x-auth-token=' + escape(token) - socket = new ReconnectingWebSocket(wspath) + init (getMsgFunc: any) { + const token: string = localStorage.getItem(ELocalStorageKey.Token)! + const wspath = config.websocketURL + '?x-auth-token=' + encodeURI(token) + socket = new ReconnectingWebSocket(wspath, '', { maxRetries: 5 }) socket.onopen = this.onOpen socket.onerror = this.onError socket.onmessage = getMsgFunc @@ -18,13 +18,16 @@ export default { onOpen () { console.log('ws opened') }, - onError (err) { + onError (err: any) { console.error(err) }, onClose () { console.log('ws closed') }, - sendMsg (data) { - this.socket.send(data) + sendMsg (data: any) { + socket.send(data) + }, + close () { + socket.close() } } diff --git a/src/assets/icons/cloudapi.png b/src/assets/icons/cloudapi.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e398b6dd8538fafbe2bc1e1fbdb4635f377e34 GIT binary patch literal 13840 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/dock.png b/src/assets/icons/dock.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0958b51208494ae877baca184d33bb9153e95a GIT binary patch literal 8887 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 Rp1+$$9_ScoBQ$N_{TDmR#>)Tz literal 0 HcmV?d00001 diff --git a/src/assets/icons/drone.png b/src/assets/icons/drone.png new file mode 100644 index 0000000000000000000000000000000000000000..cf5f3b2692aadf25f60674c7fca91d1b5b632bab GIT binary patch literal 6571 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/m30.png b/src/assets/icons/m30.png new file mode 100644 index 0000000000000000000000000000000000000000..a5932c70ed78fe368a78bcbcefe6b162e3298760 GIT binary patch literal 38952 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�^D^)E_o#7vb3qAreHTU@G$BL(GfnH*NoFX*2L` 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�#^AcWl^;iTQfxh~M_p=9O!IKwb?ET#RG!Goz~t$ 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 KJH@*85&sWd?ZQI< literal 0 HcmV?d00001 diff --git a/src/assets/icons/rc.png b/src/assets/icons/rc.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ca3c5daa97b8e4eb74e733303b0358e8a22234 GIT binary patch literal 8999 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 literal 0 HcmV?d00001 diff --git a/src/components/GMap.vue b/src/components/GMap.vue index 8121e47..80d540b 100644 --- a/src/components/GMap.vue +++ b/src/components/GMap.vue @@ -5,19 +5,378 @@ class="g-action-panle" :style="{ right: drawVisible ? '316px' : '16px' }" > -
- PIN + -
- Line +
+
-
- Poly +
+
- X +
+
+
+ {{ osdVisible.callsign }} + +
+
+
+ +
+ + {{ osdVisible.model }} +
+
+
+
+ + {{ EModeCode[deviceInfo.device.mode_code] }} + + + + + HD + {{ deviceInfo.gateway?.transmission_signal_quality }} + + + + + + {{ deviceInfo.gateway && deviceInfo.gateway.capacity_percent !== str ? deviceInfo.gateway.capacity_percent + ' %' : deviceInfo.gateway.capacity_percent }} + + + + + + + {{ deviceInfo.device.battery.capacity_percent !== str ? deviceInfo.device.battery.capacity_percent + ' %' : deviceInfo.device.battery.capacity_percent }} + + + + + + + Fixed + + + + + + GPS + {{ deviceInfo.device.position_state.gps_number }} + + + + + + {{ deviceInfo.device.position_state.rtk_number }} + + + + + + + + {{ EGear[deviceInfo.device.gear] }} + + + + + ASL + {{ deviceInfo.device.height === str ? str : deviceInfo.device.height.toFixed(2) + ' m'}} + + + + + ALT + {{ deviceInfo.device.elevation === str ? str : deviceInfo.device.elevation.toFixed(2) + ' m' }} + + + + + H + {{ deviceInfo.device.home_distance === str ? str : deviceInfo.device.home_distance.toFixed(2) + ' m' }} + + + + + + + H.S + {{ deviceInfo.device.horizontal_speed === str ? str : deviceInfo.device.horizontal_speed.toFixed(2) + ' m/s'}} + + + + + V.S + {{ deviceInfo.device.vertical_speed === str ? str : deviceInfo.device.vertical_speed.toFixed(2) + ' m/s'}} + + + + + W.S + {{ deviceInfo.device.wind_speed === str ? str : (deviceInfo.device.wind_speed / 10).toFixed(2) + ' m/s'}} + + + +
+
+
+
+
+
+
+
+
+ {{ Math.floor(deviceInfo.device.battery.remain_flight_time / 60) }}: + {{ 10 > (deviceInfo.device.battery.remain_flight_time % 60) ? '0' : ''}}{{deviceInfo.device.battery.remain_flight_time % 60 }} +
+
+
+
+
+ {{ osdVisible.gateway_callsign }} + +
+
+
+ +
+ + Dock +
+
+
+
+ + + {{ EDockModeCode[deviceInfo.dock.mode_code] }} + + + + + + + {{ Math.floor(deviceInfo.dock.acc_time / 2592000) }}m + {{ Math.floor((deviceInfo.dock.acc_time % 2592000) / 86400) }}d + {{ Math.floor((deviceInfo.dock.acc_time % 2592000 % 86400) / 3600) }}h + {{ Math.floor((deviceInfo.dock.acc_time % 2592000 % 86400 % 3600) / 60) }}min + {{ Math.floor(deviceInfo.dock.acc_time % 2592000 % 86400 % 3600 % 60) }} s + + + + + + + {{ new Date(deviceInfo.dock.first_power_on).toLocaleString() }} + + + + + + + + + + + + {{ deviceInfo.dock.network_state.rate }} KB/S + + + + + + {{ deviceInfo.dock.media_file_detail?.remain_upload }} + + + + + + + + + + + + + + + + W.S + {{ deviceInfo.dock.wind_speed === str ? str : (deviceInfo.dock.wind_speed / 10).toFixed(2) + ' m/s'}} + + + + + 🌧 + {{ deviceInfo.dock.rainfall === str ? str : deviceInfo.dock.rainfall + ' mm/h' }} + + + + + °C + {{ deviceInfo.dock.environment_temperature }} + + + + + 💦 + {{ deviceInfo.dock.environment_humidity === str ? str : deviceInfo.dock.environment_humidity }} + + + + + + + °C + {{ deviceInfo.dock.temperature }} + + + + + 💦 + {{ deviceInfo.dock.humidity === str ? str : deviceInfo.dock.humidity }} + + + + + V + {{ deviceInfo.dock.working_voltage === str ? str : deviceInfo.dock.working_voltage + ' mV' }} + + + + + A + {{ deviceInfo.dock.working_current === str ? str : deviceInfo.dock.working_current + ' mA' }} + + + +
+
+
+
+ +
+ + M30 +
+
+
+
+ + + {{ !deviceInfo.device ? EModeCode[EModeCode.Disconnected] : EModeCode[deviceInfo.device?.mode_code] }} + + + + + + {{ deviceInfo.dock.sdr?.up_quality }} + + + + + + {{ deviceInfo.dock.sdr?.down_quality }} + + + + + + {{ deviceInfo.device && deviceInfo.device.battery.capacity_percent !== str ? deviceInfo.device?.battery.capacity_percent + ' %' : str }} + + + + + + + Fixed + + + + + + GPS + {{ deviceInfo.device ? deviceInfo.device.position_state.gps_number : str }} + + + + + + {{ deviceInfo.device ? deviceInfo.device.position_state.rtk_number : str }} + + + + + + + + {{ deviceInfo.device ? EGear[deviceInfo.device?.gear] : str }} + + + + + ASL + {{ !deviceInfo.device || deviceInfo.device.height === str ? str : deviceInfo.device?.height.toFixed(2) + ' m'}} + + + + + ALT + {{ !deviceInfo.device || deviceInfo.device.elevation === str ? str : deviceInfo.device?.elevation.toFixed(2) + ' m' }} + + + + + H + {{ !deviceInfo.device || deviceInfo.device.home_distance === str ? str : deviceInfo.device?.home_distance.toFixed(2) + ' m' }} + + + + + + + H.S + {{ !deviceInfo.device || deviceInfo.device?.horizontal_speed === str ? str : deviceInfo.device?.horizontal_speed.toFixed(2) + ' m/s'}} + + + + + V.S + {{ !deviceInfo.device || deviceInfo.device.vertical_speed === str ? str : deviceInfo.device?.vertical_speed.toFixed(2) + ' m/s'}} + + + + + W.S + {{ !deviceInfo.device || deviceInfo.device.wind_speed === str ? str : (deviceInfo.device?.wind_speed / 10).toFixed(2) + ' m/s'}} + + + +
+
+
+
+
+
+
+
+
+ {{ Math.floor(deviceInfo.device.battery.remain_flight_time / 60) }}: + {{ 10 > (deviceInfo.device.battery.remain_flight_time % 60) ? '0' : ''}}{{deviceInfo.device.battery.remain_flight_time % 60 }} +
+
+ +
@@ -40,13 +399,43 @@ import { MapDoodleEnum } from '/@/types/map-enum' import { PostElementsBody } from '/@/types/mapLayer' import { uuidv4 } from '/@/utils/uuid' import { gcj02towgs84, wgs84togcj02 } from '/@/vendors/coordtransform' +import { deviceTsaUpdate } from '/@/hooks/use-g-map-tsa' +import { DeviceOsd, DeviceStatus, DockOsd, EGear, EModeCode, GatewayOsd, EDockModeCode } from '/@/types/device' +import pin from '/@/assets/icons/pin-2d8cf0.svg' +import M30 from '/@/assets/icons/m30.png' +import { + BorderOutlined, LineOutlined, CloseOutlined, ControlOutlined, TrademarkOutlined, ArrowDownOutlined, + ThunderboltOutlined, SignalFilled, GlobalOutlined, HistoryOutlined, CloudUploadOutlined, + FieldTimeOutlined, CloudOutlined, CloudFilled, FolderOpenOutlined, RobotFilled, ArrowUpOutlined +} from '@ant-design/icons-vue' +import { EDeviceTypeName } from '../types' export default defineComponent({ + components: { + BorderOutlined, + LineOutlined, + CloseOutlined, + ControlOutlined, + TrademarkOutlined, + ThunderboltOutlined, + SignalFilled, + GlobalOutlined, + HistoryOutlined, + CloudUploadOutlined, + FieldTimeOutlined, + CloudOutlined, + CloudFilled, + FolderOpenOutlined, + RobotFilled, + ArrowUpOutlined, + ArrowDownOutlined + }, name: 'GMap', props: {}, setup () { const useMouseToolHook = useMouseTool() const useGMapManageHook = useGMapManage() + const deviceTsaUpdateHook = ref() const mouseMode = ref(false) const store = useMyStore() @@ -54,6 +443,86 @@ export default defineComponent({ currentType: '', coverIndex: 0 }) + const str: string = '--' + const deviceInfo = reactive({ + gateway: { + capacity_percent: str, + transmission_signal_quality: str, + } as GatewayOsd, + dock: { + media_file_detail: { + remain_upload: 0 + }, + sdr: { + up_quality: str, + down_quality: str, + frequency_band: -1, + }, + network_state: { + type: 0, + quality: 0, + rate: 0, + }, + drone_in_dock: 0, + drone_charge_state: { + state: 0, + capacity_percent: str, + }, + rainfall: str, + wind_speed: str, + environment_temperature: str, + environment_humidity: str, + temperature: str, + humidity: str, + job_number: 0, + acc_time: 0, + first_power_on: 0, + positionState: { + gps_number: str, + is_fixed: 0, + rtk_number: str, + is_calibration: 0, + quality: 0, + }, + storage: { + total: 0, + used: 0, + }, + electric_supply_voltage: 0, + working_voltage: str, + working_current: str, + backup_battery_voltage: 0, + mode_code: -1, + cover_state: -1, + supplement_light_state: -1, + putter_state: -1, + + } as DockOsd, + device: { + gear: -1, + mode_code: EModeCode.Disconnected, + height: str, + home_distance: str, + horizontal_speed: str, + vertical_speed: str, + wind_speed: str, + wind_direction: str, + elevation: str, + position_state: { + gps_number: str, + is_fixed: 0, + rtk_number: str + }, + battery: { + capacity_percent: str, + landing_power: str, + remain_flight_time: 0, + return_home_power: str, + }, + latitude: 0, + longitude: 0, + } as DeviceOsd + }) const shareId = computed(() => { return store.state.layerBaseInfo.share }) @@ -63,6 +532,57 @@ export default defineComponent({ const drawVisible = computed(() => { return store.state.drawVisible }) + const osdVisible = computed(() => { + return store.state.osdVisible + }) + + watch(() => store.state.deviceStatusEvent, + data => { + deviceTsaUpdateHook.value = deviceTsaUpdate() + if (Object.keys(data.deviceOnline).length !== 0) { + deviceTsaUpdateHook.value.initMarker(data.deviceOnline.domain, data.deviceOnline.device_callsign, data.deviceOnline.sn) + store.state.deviceStatusEvent.deviceOnline = {} as DeviceStatus + } + if (Object.keys(data.deviceOffline).length !== 0) { + deviceTsaUpdateHook.value.removeMarker(data.deviceOffline.sn) + if ((data.deviceOffline.sn === osdVisible.value.sn) || (osdVisible.value.is_dock && data.deviceOffline.sn === osdVisible.value.gateway_sn)) { + osdVisible.value.visible = false + store.commit('SET_OSD_VISIBLE_INFO', osdVisible) + } + store.state.deviceStatusEvent.deviceOffline = {} + } + }, + { + deep: true + } + ) + + watch(() => store.state.deviceState, data => { + if (!deviceTsaUpdateHook.value) { + deviceTsaUpdateHook.value = deviceTsaUpdate() + } + if (data.currentType === EDeviceTypeName.Gateway && data.gatewayInfo[data.currentSn]) { + deviceTsaUpdateHook.value.moveTo(data.currentSn, data.gatewayInfo[data.currentSn].longitude, data.gatewayInfo[data.currentSn].latitude) + if (osdVisible.value.visible && osdVisible.value.gateway_sn !== '') { + deviceInfo.gateway = data.gatewayInfo[osdVisible.value.gateway_sn] + } + } + if (data.currentType === EDeviceTypeName.Aircraft && data.deviceInfo[data.currentSn]) { + deviceTsaUpdateHook.value.moveTo(data.currentSn, data.deviceInfo[data.currentSn].longitude, data.deviceInfo[data.currentSn].latitude) + if (osdVisible.value.visible && osdVisible.value.sn !== '') { + deviceInfo.device = data.deviceInfo[osdVisible.value.sn] + } + } + if (data.currentType === EDeviceTypeName.Dock && data.dockInfo[data.currentSn]) { + if (osdVisible.value.visible && osdVisible.value.is_dock && osdVisible.value.gateway_sn !== '') { + deviceInfo.dock = data.dockInfo[osdVisible.value.gateway_sn] + deviceInfo.device = data.deviceInfo[deviceInfo.dock.sub_device?.device_sn] + } + } + }, { + deep: true + }) + watch( () => store.state.wsEvent, newData => { @@ -144,7 +664,9 @@ export default defineComponent({ async function postPinPositionResource (obj) { const req = getPinPositionResource(obj) setLayers(req) - updateCoordinates('gcj02-wgs84', req) + const coordinates = req.resource.content.geometry.coordinates + updateCoordinates('gcj02-wgs84', req); + (req.resource.content.geometry.coordinates as GeojsonCoordinate).push((coordinates as GeojsonCoordinate)[2]) const result = await postElementsReq(shareId.value, req) obj.setExtData({ id: req.id, name: req.name }) store.state.coverList.push(obj) @@ -281,7 +803,16 @@ export default defineComponent({ return { draw, mouseMode, - drawVisible + drawVisible, + osdVisible, + pin, + state, + M30, + deviceInfo, + EGear, + EModeCode, + str, + EDockModeCode, } } }) @@ -296,16 +827,77 @@ export default defineComponent({ top: 16px; right: 16px; .g-action-item { - padding-top: 8px; + width: 28px; + height: 28px; + background: white; + color: $primary; + border-radius: 2px; + line-height: 28px; + text-align: center; + margin-bottom: 2px; + } + .g-action-item:hover { + border: 1px solid $primary; + border-radius: 2px; } } + .selection { + border: 1px solid $primary; + border-radius: 2px; + } } - - diff --git a/src/components/MediaPanel.vue b/src/components/MediaPanel.vue index 969342a..32b7714 100644 --- a/src/components/MediaPanel.vue +++ b/src/components/MediaPanel.vue @@ -1,92 +1,168 @@ diff --git a/src/components/TaskPanel.vue b/src/components/TaskPanel.vue new file mode 100644 index 0000000..ce880e0 --- /dev/null +++ b/src/components/TaskPanel.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/components/livestream-agora.vue b/src/components/livestream-agora.vue new file mode 100644 index 0000000..41463f3 --- /dev/null +++ b/src/components/livestream-agora.vue @@ -0,0 +1,350 @@ + + + + + diff --git a/src/components/livestream-others.vue b/src/components/livestream-others.vue new file mode 100644 index 0000000..a77bcc0 --- /dev/null +++ b/src/components/livestream-others.vue @@ -0,0 +1,378 @@ + + + + + diff --git a/src/components/wayline-panel.vue b/src/components/wayline-panel.vue index 784fa3c..aad0a49 100644 --- a/src/components/wayline-panel.vue +++ b/src/components/wayline-panel.vue @@ -1,5 +1,5 @@ diff --git a/src/pages/project-app/index.vue b/src/pages/project-app/index.vue index d8359da..b5a855d 100644 --- a/src/pages/project-app/index.vue +++ b/src/pages/project-app/index.vue @@ -1,20 +1,18 @@ diff --git a/src/pages/project-app/projects/create-plan.vue b/src/pages/project-app/projects/create-plan.vue new file mode 100644 index 0000000..3891f2a --- /dev/null +++ b/src/pages/project-app/projects/create-plan.vue @@ -0,0 +1,251 @@ + + + + + diff --git a/src/pages/project-app/projects/devices.vue b/src/pages/project-app/projects/devices.vue new file mode 100644 index 0000000..71201ec --- /dev/null +++ b/src/pages/project-app/projects/devices.vue @@ -0,0 +1,518 @@ + + + + diff --git a/src/pages/project-app/projects/dock.vue b/src/pages/project-app/projects/dock.vue new file mode 100644 index 0000000..72fd32f --- /dev/null +++ b/src/pages/project-app/projects/dock.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/pages/project-app/projects/layer.vue b/src/pages/project-app/projects/layer.vue index 89b4020..325fd86 100644 --- a/src/pages/project-app/projects/layer.vue +++ b/src/pages/project-app/projects/layer.vue @@ -1,5 +1,12 @@