/* eslint-disable jsx-a11y/anchor-is-valid */
import { Button, Form, Input, message, Popconfirm, Table } from 'antd';
import React, { useContext, useEffect, useRef, useState, props, useRoutes } from 'react';
import styled from 'styled-components'
import { Link } from 'react-router-dom';
import bus from '../../../bus.js'
import { getJobDataList, deleteJob, getJobInfo } from '../services'
import {routes} from '../../../routes/index.js'
const EditableContext = React.createContext(null);
const FormItem = Form.Item
const JobItems = styled.div`
background-color: #FFFFFF;
height: 45vw;
margin-left: 24px;
.delButton {
margin-left: 40px;
}
.ant-table-wrapper {
margin-right: 12px;
.ant-table {
margin-left: 16px;
}
}
`
const EditableRow = ({ index, ...props }) => {
const [form] = Form.useForm();
return (
);
};
const EditableCell = ({
title,
editable,
children,
dataIndex,
record,
handleSave,
...restProps
}) => {
const [editing, setEditing] = useState(false);
const inputRef = useRef(null);
const form = useContext(EditableContext);
useEffect(() => {
if (editing) {
inputRef.current.focus();
}
}, [editing]);
const toggleEdit = () => {
setEditing(!editing);
form.setFieldsValue({
[dataIndex]: record[dataIndex],
});
};
const save = async () => {
try {
const values = await form.validateFields();
toggleEdit();
handleSave({ ...record, ...values });
} catch (errInfo) {
console.log('Save failed:', errInfo);
}
};
let childNode = children;
if (editable) {
childNode = editing ? (
) : (
{children}
);
}
return {childNode} | ;
};
const App = () => {
//获取作业列表数据
const getJobTables = async () => {
const project_id = 'test'
const { data } = await getJobDataList(project_id)
if (data.code === 200) {
const list = data.data.map(item => {
return {
key: item.id,
name: item.name,
type: item.type,
tag: item.tag,
create_time: item.create_time,
update_time: item.update_time,
}
})
setDataSource(list)
}
}
// componentDidMount
useEffect(() => {
getJobTables()
},[])
const [dataSource, setDataSource] = useState();
// [
// {
// key: '0',
// name: '每日供应商销量预测作业2',
// type: 'java',
// sort: '业务预测',
// creTime: '2022.8.18 12:00:00',
// updTime: '2022.8.18 12:00:00',
// },
// {
// key: '1',
// name: '每日供应商销量预测作业21',
// type: 'java',
// sort: '业务预测',
// creTime: '2022.8.18 12:00:00',
// updTime: '2022.8.18 12:00:00',
// },
// ]
const [count, setCount] = useState(2);
const [JobData, setJobData] =useState()
//删除作业
const handleDelete = async (key) => {
const { data } = await deleteJob(key)
if (data.code === 200) {
const newData = dataSource.filter((item) => item.key !== key);
setDataSource(newData);
message.success('删除成功');
} else {
message.error('删除失败')
}
};
const editJobitem = async(key) => {
const data = await getJobInfo(key)
setJobData(data)
}
// 格式化事件
const formatTime = time => {
const date = new Date(Number(time) * 1000)
const YY = date.getFullYear()
const MM =
date.getMonth() + 1 < 10
? '0' + (date.getMonth() + 1)
: date.getMonth() + 1
const DD = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
const hh = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
const mm =
date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
const ss =
date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return YY + '-' + MM + '-' + DD + ' ' + hh + ':' + mm + ':' + ss
}
const defaultColumns = [
{
title: '作业名称',
dataIndex: 'name',
width: '16.6%',
},
{
title: '作业类型',
dataIndex: 'type',
width: '16.6%',
},
{
title: '作业分类',
dataIndex: 'tag',
width: '16.6%',
},
{
title: '创建时间',
dataIndex: 'create_time',
width: '16.6%',
render: time => formatTime(time),
},
{
title: '更新时间',
dataIndex: 'update_time',
width: '16.6%',
render: time => formatTime(time),
},
{
title: '操作',
dataIndex: 'operation',
width: '16.6%',
render: (_, record) =>
dataSource.length >= 1 ? (
<>
handleDelete(record.key)}
>
删除
>
) : null,
},
];
//创建作业
const handleSave = (row) => {
const newData = [...dataSource];
const index = newData.findIndex((item) => row.key === item.key);
const item = newData[index];
newData.splice(index, 1, { ...item, ...row });
setDataSource(newData);
};
const components = {
body: {
row: EditableRow,
cell: EditableCell,
},
};
const columns = defaultColumns.map((col) => {
if (!col.editable) {
return col;
}
return {
...col,
onCell: (record) => ({
record,
editable: col.editable,
dataIndex: col.dataIndex,
title: col.title,
handleSave,
}),
};
});
useEffect (() => {
bus.on('sendDataForm',data => {
})
},[])
return (
'editable-row'}
bordered
dataSource={dataSource}
columns={columns}
/>
);
};
export default App;