taskLog.vue 4.58 KB
<route lang="yaml">
  name: taskLog //分类分级任务日志
  </route>

<script lang="ts" setup name="taskLog">
import { ref, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router";
import { ElMessage, ElMessageBox } from "element-plus";
import { getTaskExecPageList, filterVal } from "@/api/modules/dataInventory";
import { TableColumnWidth } from '@/utils/enum';

const { proxy } = getCurrentInstance() as any;
const router = useRouter();
const route = useRoute();
const loading = ref(false);
const page = ref({
  limit: 50,
  curr: 1,
  sizes: [
    { label: "10", value: 10 },
    { label: "50", value: 50 },
    { label: "100", value: 100 },
    { label: "150", value: 150 },
    { label: "200", value: 200 },
  ],
});
const searchItemValue: any = ref({});
const currTableData: any = ref({});
const tableInfo = ref({
  id: "mapping-table",
  fields: [
    { label: "序号", type: "index", width: 56, align: "center", fixed: "left" },
    { label: "任务名称", field: "taskName", width: 96 },
    { label: "目录名称", field: "cgDirName", width: 120, },
    {
      label: "元数据", field: "metaNames", width: 200, getName: (scope) => {
        const metaNames = scope.row.metaNames || [];
        return metaNames.join(',');
      }
    },
    { label: "任务修改人", field: "updateUserName", width: 120 },
    { label: "修改时间", field: "updateTime", width: TableColumnWidth.DATETIME },
    { label: "结果确认人", field: "confirmUserName", width: 120 },
    { label: "确认时间", field: "confirmTime", width: TableColumnWidth.DATETIME },
    {
      label: "结果状态", field: "status", width: TableColumnWidth.STATE, align: 'center', type: "tag", getName: (scope) => {
        return filterVal(scope.row.status, 'confirmStatus');
      }, tagType: (scope) => {
        return scope.row.status == 'Y' ? 'success' : 'warning';
      }
    },
  ],
  data: [],
  page: {
    type: "normal",
    rows: 0,
    ...page.value,
  },
  actionInfo: {
    label: "操作",
    type: "btn",
    width: 90,
    btns: (scope) => {
      return [
        { label: "查看结果", value: "log" },
      ];
    },
  },
});

const getTableData = () => {
  loading.value = true;
  getTaskExecPageList(
    Object.assign({}, searchItemValue.value, {
      pageIndex: page.value.curr,
      pageSize: page.value.limit,
      taskGuid: route.query.guid
    })
  ).then((res: any) => {
    loading.value = false;
    if (res.code == proxy.$passCode) {
      tableInfo.value.data = res.data.records || [];
      tableInfo.value.page.curr = res.data.pageIndex;
      tableInfo.value.page.limit = res.data.pageSize;
      tableInfo.value.page.rows = res.data.totalRows;
    }
  })
    .catch((res) => {
      loading.value = false;
    });
};

const tableBtnClick = (scope, btn) => {
  const type = btn.value;
  const row = scope.row;
  currTableData.value = row;
  if (type == "log") {
    toPath(type);
  }
};

const toPath = (type) => {
  sessionStorage.setItem('taksExecGuid', currTableData.value.guid);
  router.push({
    name: "taskDetail",
    query: {
      guid: currTableData.value.taskGuid,
      name: currTableData.value.taskName,
      status: currTableData.value.status,
      type: currTableData.value.status == 'Y'? 'detail':'confirm'
    },
  });
}

const tablePageChange = (info) => {
  page.value.curr = Number(info.curr);
  page.value.limit = Number(info.limit);
  tableInfo.value.page.limit = page.value.limit;
  tableInfo.value.page.curr = page.value.curr;
  getTableData();
};

const getFirstPageData = () => {
  page.value.curr = 1
  tableInfo.value.page.curr = 1;
  getTableData();
}

onActivated(() => {
  // getFirstPageData()
})

onBeforeMount(() => {
  getFirstPageData()
})

</script>

<template>
  <div class="container_wrap" v-loading="loading">
    <div class="table_panel_wrap" v-if="tableInfo.data.length">
      <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange" />
    </div>
    <div class="card-noData" v-else>
      <img src="@/assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" />
      <p>暂无分类分级任务日志记录</p>
    </div>
  </div>
</template>

<style scoped lang="scss">
.table_tool_wrap {
  width: 100%;
  height: 40px !important;
  padding: 0 8px;

  .table_title {
    height: 40px;
    line-height: 40px;
    font-weight: 600;
    font-size: 16px;
    color: #212121;
  }
}

.table_panel_wrap {
  width: 100%;
  height: 100%;
  padding: 12px 8px 0;
}

.card-noData {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
}
</style>