Commit 0ccc9d0f by zhaochengxiang

采集

parent fc499916
......@@ -60,6 +60,10 @@ export function* deleteTask(payload) {
return yield call(service.deleteTask, payload);
}
export function* deleteTasks(payload) {
return yield call(service.deleteTasks, payload);
}
export function* startTask(payload) {
return yield call(service.startTask, payload);
}
......
......@@ -56,6 +56,10 @@ export function deleteTask(payload) {
return Delete("/metadataharvester/task/deleteHarvestingTask", payload);
}
export function deleteTasks(payload) {
return Delete("/metadataharvester/task/deleteHarvestingTasks", payload);
}
export function startTask(payload) {
return PostJSON("/metadataharvester/task/startHarvestingTask", payload);
}
......
......@@ -83,6 +83,7 @@ const ScheduleAction = (props) => {
// }
});
console.log('_fieldsValue', _fieldsValue);
form.setFieldsValue(_fieldsValue);
}
......@@ -243,20 +244,16 @@ const ExecuteDateItem = ({ value, data, onChange }) => {
const [categoryKey, setCategoryKey] = useState(undefined);
const [dateKey, setDateKey] = useState(undefined);
const mountRef = useRef(true);
useEffect(() => {
if (mountRef.current) {
setCategoryKey(value?value.split(',')[0]:undefined);
if (value?.split(',').length === 2) {
setDateKey(value?.split(',')[1].split('/'));
} else {
setDateKey(undefined);
}
}
mountRef.current = false;
if (value) {
const tmpData = value.split(',');
if (tmpData.length > 0) {
setCategoryKey(tmpData[0]);
}
if (tmpData.length > 1) {
setDateKey(tmpData.slice(1, tmpData.length));
}
}
}, [value])
const dates = useMemo(() => {
......@@ -278,12 +275,7 @@ const ExecuteDateItem = ({ value, data, onChange }) => {
const onDateChange = (val) => {
setDateKey(val);
if (categoryKey === '2') {
onChange?.(`${categoryKey},${val.join('/')}`);
} else {
onChange?.(`${categoryKey},${val}`);
}
onChange?.(`${categoryKey},${val.join(',')}`);
}
return (
......@@ -303,7 +295,7 @@ const ExecuteDateItem = ({ value, data, onChange }) => {
<Col span={16}>
<Select
value={dateKey}
mode={categoryKey==='2'?'multiple':undefined}
mode='multiple'
onChange={onDateChange}
>
{
......
......@@ -13,7 +13,7 @@ const cols = [
{title: '表黑名单'},
];
const menuName = 'taskColConfig';
export const menuName = 'taskColConfig';
const FC = (props) => {
const {visible, onCancel} = props;
......@@ -34,11 +34,11 @@ const FC = (props) => {
menuName
},
callback: data => {
// if ((data.cols||'') === '') {
// onCheckAllChange(true);
// } else {
// setCheckedKeys(data.cols.split(','));
// }
if ((data||[]).length === 0) {
onCheckAllChange(false);
} else {
setCheckedKeys(data.map(item => item.name));
}
}
})
}
......@@ -78,13 +78,16 @@ const FC = (props) => {
const onModalOk = () => {
setConfirmLoading(true);
dispatch({
type: 'datasource.setTaskCols',
payload: {
params: {
menuName,
titles: checkedKeys.join(',')
}
},
data: checkedKeys.map(item => {
return { name: item };
})
},
callback: () => {
setConfirmLoading(false);
......
......@@ -6,7 +6,7 @@ import { dispatch } from '../../../../model';
import { paginate, showMessage } from '../../../../util';
import Table from '../../ResizeableTable';
import UpdateTask from './UpdateTask';
import ColConfig from './ColConfig';
import ColConfig, { menuName } from './ColConfig';
import env from '../../../../service/samples/env.json';
const FC = (props) => {
......@@ -17,7 +17,9 @@ const FC = (props) => {
const [configState, setConfigState] = useState(undefined);
const [supportedTargetTypes, setSupportedTargetTypes] = useState([]);
const [sortedInfo, setSortedInfo] = useState({});
const [ tasksProgress, setTasksProgress ] = useState(undefined);
const [tasksProgress, setTasksProgress] = useState(undefined);
const [visibleCols, setVisibleCols] = useState(undefined);
const [checkedKeys, setCheckedKeys] = useState(undefined);
const [updateTaskParam, setUpdateTaskParam] = useState({
visible: false,
......@@ -43,7 +45,14 @@ const FC = (props) => {
},
{
title: '任务编号',
dataIndex: 'id',
dataIndex: 'taskCode',
render: (text, record) => {
return (
<Tooltip title={text||''}>
<Typography.Text ellipsis={true}>{text||''}</Typography.Text>
</Tooltip>
);
}
},
{
title: '类型',
......@@ -54,24 +63,59 @@ const FC = (props) => {
title: '数据库中文名',
dataIndex: 'cnName',
sorter: true,
render: (text, record) => {
return (
<Tooltip title={text||''}>
<Typography.Text ellipsis={true}>{text||''}</Typography.Text>
</Tooltip>
);
}
},
{
title: '数据库英文名',
dataIndex: 'name',
sorter: true,
render: (text, record) => {
return (
<Tooltip title={text||''}>
<Typography.Text ellipsis={true}>{text||''}</Typography.Text>
</Tooltip>
);
}
},
{
title: '抽取Schema',
dataIndex: 'schema',
sorter: true,
render: (text, record) => {
return (
<Tooltip title={text||''}>
<Typography.Text ellipsis={true}>{text||''}</Typography.Text>
</Tooltip>
);
}
},
{
title: '表白名单',
dataIndex: 'tableWhiteList',
render: (text, record) => {
return (
<Tooltip title={text||''}>
<Typography.Text ellipsis={true}>{text||''}</Typography.Text>
</Tooltip>
);
}
},
{
title: '表黑名单',
dataIndex: 'tableBlackList',
render: (text, record) => {
return (
<Tooltip title={text||''}>
<Typography.Text ellipsis={true}>{text||''}</Typography.Text>
</Tooltip>
);
}
},
{
title: '操作',
......@@ -117,6 +161,7 @@ const FC = (props) => {
useEffect(() => {
getAllTasks();
getTaskCols();
const interval = setInterval(() => {
getAllTasksProgress();
}, 5000);
......@@ -126,6 +171,18 @@ const FC = (props) => {
}
}, [])
const _columns = useMemo(() => {
if (visibleCols) {
if (visibleCols.length === 0) {
return columns.filter(item => item.title==='序号' || item.title==='操作')
} else {
return columns.filter(item => item.title==='序号' || item.title==='操作' || visibleCols.indexOf(item.title) !== -1)
}
}
return columns;
}, [visibleCols])
const _tasks = useMemo(() => {
if (tasks) {
let newTasks = tasks?.filter(item => {
......@@ -217,6 +274,18 @@ const FC = (props) => {
})
}
const getTaskCols = () => {
dispatch({
type: 'datasource.getTaskCols',
payload: {
menuName
},
callback: data => {
setVisibleCols(data?.map(item => item.name));
}
})
}
const onTableChange = (pagination, filters, sorter) => {
console.log('sorter', sorter);
setSortedInfo(sorter);
......@@ -226,13 +295,17 @@ const FC = (props) => {
setPagination({pageNum: page, pageSize: size });
}
const onUpdateTaskCancel = (refresh = false) => {
const onUpdateTaskCancel = () => {
setUpdateTaskParam({ visible: false, action: undefined, id: undefined });
refresh && getAllTasks();
}
const onUpdateTaskChange = () => {
getAllTasks();
}
const onColConfigCancel = (refresh = false) => {
setColConfigParam({ visible: false });
refresh && getTaskCols();
}
const onCancelTask = (task) => {
......@@ -294,6 +367,35 @@ const FC = (props) => {
}
});
}
const onDeleteTasks = () => {
modal.confirm({
title: '是否确认删除这些任务?',
content: '',
onOk: () => {
dispatch({
type: 'datasource.deleteTasks',
payload: {
harvestingTaskIds: checkedKeys.toString()
},
callback: () => {
showMessage('success', '删除任务成功');
setCheckedKeys([]);
getAllTasks();
}
});
}
});
}
const onSelectChange = (keys) => {
setCheckedKeys(keys);
}
const rowSelection = {
selectedRowKeys: checkedKeys,
onChange: onSelectChange,
};
return (
<div>
......@@ -305,7 +407,9 @@ const FC = (props) => {
<Button onClick={() => {
setColConfigParam({ visible: true });
}}>可见列设置</Button>
<Button>删除</Button>
<Tooltip title={(checkedKeys||[]).length===0?'请先选择任务':''}>
<Button disabled={(checkedKeys||[]).length===0} onClick={onDeleteTasks}>删除</Button>
</Tooltip>
</Space>
<Config setTargetTypes={setSupportedTargetTypes} onState={(state) => {
console.log('state', state);
......@@ -316,8 +420,9 @@ const FC = (props) => {
<Table
className='mt-3'
loading={loadingTasks}
columns={columns||[]}
columns={_columns||[]}
rowKey='id'
rowSelection={rowSelection}
dataSource={_tasks||[]}
pagination={false}
onChange={onTableChange}
......@@ -342,6 +447,7 @@ const FC = (props) => {
action={updateTaskParam.action}
id={updateTaskParam.id}
onCancel={onUpdateTaskCancel}
onChange={onUpdateTaskChange}
/>
<ColConfig
......
......@@ -6,7 +6,7 @@ import ScheduleAction from '../../DatasourceManage/Component/ScheduleAction';
import { dispatch } from '../../../../model';
const FC = (props) => {
const {visible, onCancel, action, id} = props;
const {visible, onCancel, onChange, action, id} = props;
const [schemas, setSchemas] = useState([]);
const [filterSchemas, setFilterSchemas] = useState([]);
const [selectedSchemas, setSelectedSchemas] = useState([]);
......@@ -168,6 +168,7 @@ const FC = (props) => {
},
callback: data => {
setConfirmLoading(false);
onChange?.();
if (action === 'add') {
setStep(2);
setScheduleParam({action, tid: data});
......
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