import { Button, Form, Input, Popconfirm, Table } from 'antd' import React, { useContext, useEffect, useRef, useState } from 'react' import styled from 'styled-components' import { Link } from 'react-router-dom' const EditableContext = React.createContext(null) const FormItem = Form.Item const LogTable = styled.div` margin-left: 24px; .delButton { margin-left: 40px; } ` 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} } export default function LogItems() { const itemData = [ { 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 [dataSource, setDataSource] = useState( itemData // [ // { // 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 handleDelete = key => { const newData = dataSource.filter(item => item.key !== key) setDataSource(newData) } const defaultColumns = [ { title: '作业名称', dataIndex: 'name', width: '16.6%', }, { title: '作业类型', dataIndex: 'type', width: '16.6%', }, { title: '作业分类', dataIndex: 'sort', width: '16.6%', }, { title: '创建时间', dataIndex: 'creTime', width: '16.6%', }, { title: '更新时间', dataIndex: 'updTime', width: '16.6%', }, { 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, }), } }) return ( 'editable-row'} bordered dataSource={dataSource} columns={columns} style={{ marginTop: '20px', }} /> ) }