From 3667807a7b7418efc090ee3fa6a6b734bc3080bf Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Wed, 13 Sep 2023 20:36:29 +0800
Subject: [PATCH] Merge branch 'develop' of http://s16s652780.51mypc.cn:49896/r/yskj/iot_drone_web into develop

---
 src/api/wayline.ts |  145 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 121 insertions(+), 24 deletions(-)

diff --git a/src/api/wayline.ts b/src/api/wayline.ts
index 87c9c31..cb685db 100644
--- a/src/api/wayline.ts
+++ b/src/api/wayline.ts
@@ -1,18 +1,14 @@
-import request, { IPage, IWorkspaceResponse } from '/@/api/http/request'
-const HTTP_PREFIX = '/wayline/api/v1'
+import { message } from 'ant-design-vue'
+import request, { IPage, IWorkspaceResponse, IListWorkspaceResponse } from '/@/api/http/request'
+import { TaskType, TaskStatus, OutOfControlAction } from '/@/types/task'
+import { WaylineType } from '/@/types/wayline'
 
-export interface CreatePlan {
-  name: string,
-  file_id: string,
-  dock_sn: string,
-  immediate: boolean,
-  type: string,
-}
+const HTTP_PREFIX = '/api/drone'
 
 // Get Wayline Files
-export const getWaylineFiles = async function (wid: string, body: {}): Promise<IWorkspaceResponse<any>> {
-  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)
+export const getWaylineFiles = async function (params:any): Promise<IWorkspaceResponse<any>> {
+  const url = `${HTTP_PREFIX}/waylineFile/getList`
+  const result = await request.get(url, { params })
   return result.data
 }
 
@@ -20,10 +16,17 @@
 export const downloadWaylineFile = async function (workspaceId: string, waylineId: string): Promise<any> {
   const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/waylines/${waylineId}/url`
   const result = await request.get(url, { responseType: 'blob' })
-  if (result.data.code) {
+  if (result.data.type === 'application/json') {
+    const reader = new FileReader()
+    reader.onload = function (e) {
+      const text = reader.result as string
+      const result = JSON.parse(text)
+      message.error(result.message)
+    }
+    reader.readAsText(result.data, 'utf-8')
+  } else {
     return result.data
   }
-  return result
 }
 
 // Delete Wayline File
@@ -33,23 +36,117 @@
   return result.data
 }
 
-// Create Wayline Job
-export const createPlan = async function (workspaceId: string, plan: CreatePlan): Promise<IWorkspaceResponse<any>> {
-  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/flight-tasks`
+export interface waylineJob {
+  name: string
+  fileId: string
+  waylineId:string
+  dockSn: string
+  workspaceId: string
+  taskType: TaskType
+  executeSingleTime?: string
+  repeatExecuteTimeArr?: string[]
+  executeStartTime?: string
+  executeEndTime?: string
+  executeRepeatTime?: string[]
+  frequencyValue?: number
+  frequencyType?: number
+  repeatRuleType?: number
+  repeatRuleValueDay?: number[]
+  repeatRuleValueWeek?: number[]
+  startPower: number
+  rthAltitude: number
+  outOfControl: number
+  finishAction: number
+  breakContinue: number
+}
+
+// 新增计划
+export const createPlan = async function (plan:any): Promise<IWorkspaceResponse<any>> {
+  const url = `${HTTP_PREFIX}/waylineJob/add`
   const result = await request.post(url, plan)
   return result.data
 }
 
-// Get Wayline Jobs
-export const getWaylineJobs = async function (workspaceId: string, page: IPage): Promise<IWorkspaceResponse<any>> {
-  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs?page=${page.page}&page_size=${page.page_size}`
-  const result = await request.get(url)
+export interface Task {
+  job_id: string,
+  job_name: string,
+  task_type: TaskType, // 任务类型
+  file_id: string, // 航线文件id
+  file_name: string, // 航线名称
+  wayline_type: WaylineType, // 航线类型
+  dock_sn: string,
+  dock_name: string,
+  workspace_id: string,
+  username: string,
+  begin_time: string,
+  end_time: string,
+  execute_time: string,
+  completed_time: string,
+  status: TaskStatus, // 任务状态
+  progress: number, // 执行进度
+  code: number, // 错误码
+  rth_altitude: number // 相对机场返航高度 20 - 500
+  out_of_control_action: OutOfControlAction // 失控动作
+  media_count: number // 媒体数量
+  uploading:boolean // 是否正在上传媒体
+  uploaded_count: number // 已上传媒体数量
+}
+
+// 获取计划列表(分页)
+export const getWaylineJobs = async function (workspaceId: string, page: IPage): Promise<IListWorkspaceResponse<Task>> {
+  const url = `${HTTP_PREFIX}/waylineJob/getPage`
+  const result = await request.get(url, { params: { workspaceId } })
   return result.data
 }
 
-// Execute Wayline Job
-export const executeWaylineJobs = async function (workspaceId: string, plan_id: string): Promise<IWorkspaceResponse<any>> {
-  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs/${plan_id}`
+export interface DeleteTaskParams {
+  job_id: string
+}
+
+//  删除机场任务
+export async function deleteTask (workspaceId: string, params: DeleteTaskParams): Promise<IWorkspaceResponse<{}>> {
+  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs`
+  const result = await request.delete(url, {
+    params: params
+  })
+  return result.data
+}
+
+export enum UpdateTaskStatus {
+  Suspend = 0, // 暂停
+  Resume = 1, // 恢复
+}
+export interface UpdateTaskStatusBody {
+  job_id: string
+  status: UpdateTaskStatus
+}
+
+// 更新机场任务状态
+export async function updateTaskStatus (workspaceId: string, body: UpdateTaskStatusBody): Promise<IWorkspaceResponse<{}>> {
+  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs/${body.job_id}`
+  const result = await request.put(url, {
+    status: body.status
+  })
+  return result.data
+}
+
+// Upload Wayline file
+export const importKmzFile = async function (workspaceId: string, file: {}): Promise<IWorkspaceResponse<any>> {
+  const url = `${HTTP_PREFIX}/waylineFile/upload`
+  const result = await request.post(url, file, {
+    params: {
+      projectId: workspaceId
+    },
+    headers: {
+      'Content-Type': 'multipart/form-data',
+    }
+  })
+  return result.data
+}
+
+// 媒体立即上传
+export const uploadMediaFileNow = async function (workspaceId: string, jobId: string): Promise<IWorkspaceResponse<{}>> {
+  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/jobs/${jobId}/media-highest`
   const result = await request.post(url)
   return result.data
 }

--
Gitblit v1.9.3