import { useEffect, useState } from "react"; import { Button, Checkbox, Form, Input, message, PaginationProps, Popconfirm, Space, Table, Typography, } from "antd"; import { Store } from "antd/lib/form/interface"; import { inject, observer } from "mobx-react"; import "./source.less"; import { DataType } from "@/util/model/interface"; import Upload from "./upload"; const Source = (props: Store) => { const { sourceStore } = props; const [form] = Form.useForm(); const [coloums, setColumns] = useState([]); const [content, setContent] = useState([]); const [selectKey, setSelectKey] = useState>([]); const [page, setPage] = useState(1); const [editingKey, setEditingKey] = useState(""); const [loading, setLoading] = useState(false); const [selectedRowKeys, setSelectedRowKeys] = useState([]); const isEditing = (record) => record.key === editingKey; const edit = (record: any) => { form.setFieldsValue({ ...record }); setEditingKey(record.key); }; // 获取列表数据 useEffect(() => { sourceStore.getHead().then((res) => { res.forEach((element) => { element.dataIndex = "dbs_" + element.identity.toLowerCase(); element.title = element.data_name; element.label = element.data_name; element.value = element.identity; element.editable = true; }); setColumns(res); }); getContent([], 1); // eslint-disable-next-line react-hooks/exhaustive-deps }, [sourceStore]); const save = async (key: React.Key) => { try { const row = (await form.validateFields()) as DataType; const newData: any = [...content]; const index = newData.findIndex((item: any) => key === item.key); if (index > -1) { const item = newData[index]; setLoading(true); let res = await sourceStore.modefyData(row, item.id_card); if (res) { getContent(selectKey, 1); } setLoading(false); setEditingKey(""); } } catch (errInfo) { console.log("Validate Failed:", errInfo); } }; const getContent = (list, index) => { sourceStore.geContent(list, index, 20).then((res) => { res.forEach((element) => { element.key = "dbs_" + element.identity; }); setContent(res); }); }; const saveClo = () => { if (selectKey.length === 0) { message.info("请勾选需要收藏的数据"); } }; const cancel = () => { setEditingKey(""); }; interface EditableCellProps extends React.HTMLAttributes { editing: boolean; dataIndex: string; fixed: string; index: number; } const actionCloumn = { title: "操作", with: 200, fixed: "right", render: (_: any, record) => { const editable = isEditing(record); return editable ? ( { save(record.key); }} style={{ marginInlineEnd: 8 }} > 保存 取消 ) : ( edit(record)} > 编辑 { // deleteCallback(record.identity); }} onCancel={cancel} okText="Yes" cancelText="No" > ); }, }; const EditableCell: React.FC> = ({ editing, dataIndex, children, ...restProps }) => { const inputNode = ; return ( {editing ? ( {inputNode} ) : ( children )} ); }; const mergedColumns = coloums.map((col) => { if (!col.editable) { return col; } return { ...col, onCell: (record: DataType) => ({ record, dataIndex: col.dataIndex, title: col.title, editing: isEditing(record), }), }; }); const onChange: PaginationProps["onChange"] = (page) => { setPage(page); getContent(selectKey, page); cancel(); }; const rowSelection = { selectedRowKeys, preserveSelectedRowKeys: true, fixed: true, onChange: (keys, rowKeys, info) => { setSelectedRowKeys(keys); }, }; return (
{ setSelectKey(v); getContent(v, 1); }} />
); }; export default inject("sourceStore")(observer(Source));