guoshilong
2023-11-13 87da633ab7e45a06de052dbd7f604f7afbe89fc1
计划表格父子加载
3 files modified
64 ■■■■■ changed files
src/api/wayline.ts 8 ●●●●● patch | view | raw | blame | history
src/components/task/CreatePlan.vue 1 ●●●● patch | view | raw | blame | history
src/components/task/TaskPanel.vue 55 ●●●●● patch | view | raw | blame | history
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
}
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
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>