Commit 3c230def by zhaochengxiang

采集

parent 8a40fb16
import React, { useState, useEffect, useContext, useMemo, useReducer } from 'react'; import React, { useState, useEffect, useContext, useMemo, useReducer } from 'react';
import { Space, Button, TreeSelect, Select, Pagination, Typography } from 'antd'; import { Space, Button, TreeSelect, Select, Pagination, Typography, Modal, Tooltip } from 'antd';
import { AppContext } from '../../../../App'; import { AppContext } from '../../../../App';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { paginate } from '../../../../util'; import { paginate, showMessage } from '../../../../util';
import Table from '../../ResizeableTable'; import Table from '../../ResizeableTable';
import UpdateTask from './UpdateTask'; import UpdateTask from './UpdateTask';
import ColConfig from './ColConfig'; import ColConfig from './ColConfig';
...@@ -17,6 +17,7 @@ const FC = (props) => { ...@@ -17,6 +17,7 @@ const FC = (props) => {
const [configState, setConfigState] = useState(undefined); const [configState, setConfigState] = useState(undefined);
const [supportedTargetTypes, setSupportedTargetTypes] = useState([]); const [supportedTargetTypes, setSupportedTargetTypes] = useState([]);
const [sortedInfo, setSortedInfo] = useState({}); const [sortedInfo, setSortedInfo] = useState({});
const [ tasksProgress, setTasksProgress ] = useState(undefined);
const [updateTaskParam, setUpdateTaskParam] = useState({ const [updateTaskParam, setUpdateTaskParam] = useState({
visible: false, visible: false,
...@@ -29,6 +30,8 @@ const FC = (props) => { ...@@ -29,6 +30,8 @@ const FC = (props) => {
const {pageNum, pageSize} = pagination; const {pageNum, pageSize} = pagination;
const [modal, contextHolder] = Modal.useModal();
const columns = [ const columns = [
{ {
title: '序号', title: '序号',
...@@ -73,18 +76,37 @@ const FC = (props) => { ...@@ -73,18 +76,37 @@ const FC = (props) => {
{ {
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
width: 120, width: 150,
fixed: 'right', fixed: 'right',
render: (_, record) => { render: (_, record) => {
let isExtract = false, editTip = '';
if (tasksProgress && tasksProgress[record.id]!==null && tasksProgress[record.id]!==undefined) {
isExtract = true;
editTip = '正在抽取中,不允许修改任务';
}
return ( return (
<Space> <Space>
<a onClick={() =>{}}>执行</a> {
<a onClick={() => { isExtract ? <a
setUpdateTaskParam({ visible: true, action: 'edit', id: record.id }); onClick={() => { onCancelTask(record);
}}> }}>取消执行</a> : <a
修改 onClick={() =>{
</a> onStartTask(record);
<a onClick={() => {}}> }}>执行</a>
}
<Tooltip placement='bottom' title={editTip}>
<a
disabled={isExtract}
onClick={() => {
setUpdateTaskParam({ visible: true, action: 'edit', id: record.id });
}}
>
修改
</a>
</Tooltip>
<a onClick={() => { onDeleteTask(record); }}>
删除 删除
</a> </a>
</Space> </Space>
...@@ -95,6 +117,13 @@ const FC = (props) => { ...@@ -95,6 +117,13 @@ const FC = (props) => {
useEffect(() => { useEffect(() => {
getAllTasks(); getAllTasks();
const interval = setInterval(() => {
getAllTasksProgress();
}, 5000);
return () => {
clearInterval(interval);
}
}, []) }, [])
const _tasks = useMemo(() => { const _tasks = useMemo(() => {
...@@ -179,6 +208,15 @@ const FC = (props) => { ...@@ -179,6 +208,15 @@ const FC = (props) => {
}) })
} }
const getAllTasksProgress = () => {
dispatch({
type: 'datasource.getAllTaskProgress',
callback: data => {
setTasksProgress(data||{});
}
})
}
const onTableChange = (pagination, filters, sorter) => { const onTableChange = (pagination, filters, sorter) => {
console.log('sorter', sorter); console.log('sorter', sorter);
setSortedInfo(sorter); setSortedInfo(sorter);
...@@ -196,6 +234,66 @@ const FC = (props) => { ...@@ -196,6 +234,66 @@ const FC = (props) => {
const onColConfigCancel = (refresh = false) => { const onColConfigCancel = (refresh = false) => {
setColConfigParam({ visible: false }); setColConfigParam({ visible: false });
} }
const onCancelTask = (task) => {
modal.confirm({
title: '是否取消该任务?',
content: '',
onOk: () => {
dispatch({
type: 'datasource.cancelTask',
payload: {
params: {
harvestingTaskId: task.id
}
},
callback: () => {
showMessage('success', '取消成功!');
}
});
}
});
}
const onStartTask = (task) => {
modal.confirm({
title: '是否执行该任务?',
content: '',
onOk: () => {
dispatch({
type: 'datasource.startTask',
payload: {
params: {
harvestingTaskId: task.id
}
},
callback: () => {
showMessage('success', '执行成功');
getAllTasksProgress();
}
});
}
});
}
const onDeleteTask = (task) => {
modal.confirm({
title: '是否确认删除该任务?',
content: '',
onOk: () => {
dispatch({
type: 'datasource.deleteTask',
payload: {
harvestingTaskId: task.id
},
callback: () => {
showMessage('success', '删除任务成功');
getAllTasks();
}
});
}
});
}
return ( return (
<div> <div>
...@@ -250,7 +348,7 @@ const FC = (props) => { ...@@ -250,7 +348,7 @@ const FC = (props) => {
visible={colConfigParam.visible} visible={colConfigParam.visible}
onCancel={onColConfigCancel} onCancel={onColConfigCancel}
/> />
{contextHolder}
</div> </div>
) )
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment