123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- import React, { useState, useEffect, useImperativeHandle } from 'react'
- import { Table, Space, message } from 'antd'
- import { getJoblog, refreshLogsStatus } from '../services'
- import moment from 'moment'
- import { useNavigate } from 'react-router-dom'
- const DatasourceLog = ({ onRef, logId }) => {
- // 初始化日志列表
- const [logList, setLogList] = useState([])
- // 表格Loading状态
- const [dataLoading, setDataLoading] = useState(false)
- const [currentPage, setCurrentPage] = useState(1)
- const [currentPageSize, setCurrentPageSize] = useState(10)
- const [dataTotal, setDataTotal] = useState(0)
- const navigate = useNavigate()
- const changeTask = () => {}
- // 暴露更新列表方法
- useImperativeHandle(onRef, () => {
- return {
- updateLogList: fetchJoblog,
- }
- })
- const checkLog = id => {
- navigate('/datasource/log-watcher', {
- state: { id },
- })
- }
- const columns = [
- {
- title: '同步ID',
- dataIndex: 'jobId',
- key: 'jobId',
- },
- {
- title: '任务描述',
- dataIndex: 'jobDesc',
- key: 'jobDesc',
- },
- {
- title: '调度时间',
- dataIndex: 'triggerTime',
- key: 'triggerTime',
- },
- {
- title: '调度结果',
- dataIndex: 'triggerResult',
- key: 'triggerResult',
- render: code => (
- <span
- style={{
- color: code === 0 ? '#FF4D4F' : code === 1 ? '#52C41A' : '#4A4A4A',
- }}>
- {code === 0 ? '失败' : '成功'}
- </span>
- ),
- },
- {
- title: '执行时间',
- dataIndex: 'handleTime',
- key: 'handleTime',
- },
- {
- title: '执行结果',
- dataIndex: 'handleResult',
- key: 'handleResult',
- render: code => (
- <span
- style={{
- color: code === 3 ? '#FF4D4F' : code === 2 ? '#52C41A' : '#4A4A4A',
- }}>
- {code === 3
- ? '失败'
- : code === 2
- ? '成功'
- : code === 1
- ? '运行中'
- : code === 0
- ? '队列中'
- : '暂无'}
- </span>
- ),
- },
- {
- title: '操作',
- key: 'operation',
- render: (_, record) => (
- <Space size="middle">
- <span
- onClick={() => {
- checkLog(record.key)
- }}
- style={{ color: '#1881DA', cursor: 'pointer' }}>
- 查看
- </span>
- {/* <a href="/#" onClick={editData} style={{ color: '#1881DA' }}>
- 编辑
- </a> */}
- <span
- onClick={() => {
- changeTask(record.key)
- }}
- style={{ color: '#1881DA', cursor: 'pointer' }}>
- 终止任务
- </span>
- </Space>
- ),
- },
- ]
- const fetchJoblog = async (page = 1, pageSize = 10) => {
- setDataLoading(true)
- const { data } = await getJoblog({
- page: page,
- size: pageSize,
- id: logId,
- })
- if (data.code === 200) {
- setDataTotal(data.data.extra_data.total)
- setCurrentPage(data.data.extra_data.page)
- setCurrentPageSize(data.data.extra_data.size)
- const refreshLogs = []
- const list = data.data.item.map(item => {
- if ([0, 1].includes(item.execute_result)) {
- refreshLogs.push(item.id)
- }
- return {
- key: item.id,
- jobId: item.job_id,
- jobDesc: item.job_desc,
- afJobId: item.af_job_id,
- runId: item.run_id,
- triggerTime: item.trigger_time
- ? moment(item.trigger_time * 1000).format('YYYY.MM.DD HH:MM')
- : '无',
- triggerResult: item.trigger_result,
- handleTime: item.execute_time
- ? moment(item.execute_time * 1000).format('YYYY.MM.DD HH:MM')
- : '无',
- handleResult: item.execute_result,
- }
- })
- setLogList(list)
- refreshStatus(refreshLogs)
- }
- setDataLoading(false)
- }
- const refreshStatus = async refreshLogs => {
- if (refreshLogs.length !== 0) {
- const { data } = await refreshLogsStatus(refreshLogs.toString())
- if (data.code === 200) {
- const list = []
- let logs = []
- console.log(data.data)
- const keys = Object.keys(data.data)
- keys.forEach(item => {
- if ([2, 3].includes(data.data[item])) {
- logs = logList.map(logData => {
- if (logData.id === item) {
- logData.execute_result = data.data[item]
- }
- return logData
- })
- } else {
- list.push(item)
- }
- })
- if (logs.length !== 0) {
- setLogList(logs)
- }
- setTimeout(() => {
- refreshStatus(list)
- }, 10000)
- } else {
- message.error(data.msg)
- }
- }
- }
- const pageChange = (page, pageSize) => {
- fetchJoblog(page, pageSize)
- }
- useEffect(() => {
- fetchJoblog()
- }, [logId])
- return (
- <Table
- columns={columns}
- dataSource={logList}
- bordered
- loading={dataLoading}
- pagination={{
- current: currentPage,
- total: dataTotal,
- pageSize: currentPageSize,
- onChange: pageChange,
- }}
- />
- )
- }
- export default DatasourceLog
|