From 87da633ab7e45a06de052dbd7f604f7afbe89fc1 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Mon, 13 Nov 2023 16:59:39 +0800
Subject: [PATCH] 计划表格父子加载

---
 src/components/task/TaskPanel.vue  |   55 ++++++++++++++++++++++++++-
 src/components/task/CreatePlan.vue |    1 
 src/api/wayline.ts                 |    8 ++++
 3 files changed, 61 insertions(+), 3 deletions(-)

diff --git a/src/api/wayline.ts b/src/api/wayline.ts
index 31b3c69..1d624c6 100644
--- a/src/api/wayline.ts
+++ b/src/api/wayline.ts
@@ -134,6 +134,7 @@
   name?:string
   startTime?:string
   endTime?:string
+  parentId?:string
 }
 
 // 获取计划列表(分页)
@@ -143,6 +144,13 @@
   return result.data
 }
 
+// 获取子数据
+export const getWaylineChildrenJobs = async function (workspaceId: string, params:TaskQueryParam): Promise<IListWorkspaceResponse<Task>> {
+  const url = `${HTTP_PREFIX}/workspaces/${workspaceId}/getChildrenJobs`
+  const result = await request.get(url, { params })
+  return result.data
+}
+
 export interface DeleteTaskParams {
   job_id: string
 }
diff --git a/src/components/task/CreatePlan.vue b/src/components/task/CreatePlan.vue
index 4f8ddd4..6fc96bd 100644
--- a/src/components/task/CreatePlan.vue
+++ b/src/components/task/CreatePlan.vue
@@ -594,6 +594,7 @@
         })
     } else {
       createPlanBody.execute_start_time_arr = getFlyTimeList(createPlanBody)
+      console.log(createPlanBody, '-----------------------')
 
       if (planBody.task_type === TaskType.Repeat) {
         createPlanBody.task_type = 1
diff --git a/src/components/task/TaskPanel.vue b/src/components/task/TaskPanel.vue
index d3e4bc6..2309581 100644
--- a/src/components/task/TaskPanel.vue
+++ b/src/components/task/TaskPanel.vue
@@ -33,7 +33,7 @@
 
     <!--表格-->
     <div class="plan-panel-wrapper">
-      <a-table :loading="tableLoading" class="plan-table" :columns="columns" :data-source="plansData.data"
+      <a-table :loading="tableLoading" class="plan-table" :columns="columns" :data-source="plansData.data" @expand="expand" :indentSize="200"
                row-key="job_id"
                :pagination="paginationProp" :scroll="{ x: '100%', y: 600 }" @change="refreshData">
         <!-- 执行时间 -->
@@ -146,7 +146,7 @@
   getWaylineJobs,
   Task,
   uploadMediaFileNow,
-  TaskQueryParam
+  TaskQueryParam, getWaylineChildrenJobs
 } from '/@/api/wayline'
 import { useMyStore } from '/@/store'
 import { ELocalStorageKey } from '/@/types/enums'
@@ -225,7 +225,7 @@
   {
     title: '计划|实际时间',
     dataIndex: 'duration',
-    width: 200,
+    width: 240,
     slots: { customRender: 'duration' },
   },
   {
@@ -333,6 +333,27 @@
   getPlans()
 })
 
+function expand (expand:any, record:any) {
+  if (!expand) {
+    return
+  }
+  tableLoading.value = true
+  const params = {
+    parentId: record.job_id
+  }
+
+  getWaylineChildrenJobs(workspaceId, params).then(res => {
+    const data = res.data
+    plansData.data.forEach(item => {
+      if (item.job_id === record.job_id) {
+        item.children = data
+      }
+    })
+
+    tableLoading.value = false
+  })
+}
+
 function dateChange (value: any) {
   searchQuery.startTime = value[0]
   searchQuery.endTime = value[1]
@@ -362,6 +383,13 @@
     if (res.code !== 0) {
       return
     }
+
+    res.data.list.forEach(e => {
+      if (e.has_children === '1') {
+        e.children = []
+      }
+    })
+
     plansData.data = res.data.list
     paginationProp.total = res.data.pagination.total
     paginationProp.current = res.data.pagination.page
@@ -432,6 +460,24 @@
   .plan-table {
     background: #fff;
     margin-top: 10px;
+
+    :deep(.ant-table-tbody) {
+
+      tr.ant-table-row-level-0 {
+        td:first-child {
+          display: flex;
+          align-items: center;
+        }
+      }
+
+      tr.ant-table-row-level-1 {
+        td:first-child {
+          padding-left: 60px;
+        }
+      }
+
+
+    }
   }
 
   .action-area {
@@ -478,4 +524,7 @@
   }
 
 }
+
+
+
 </style>

--
Gitblit v1.9.3