import React, { useEffect, useState } from "react"; import { Button, Modal, Input, Dropdown } from "antd"; import { DownOutlined, ImportOutlined, PlusOutlined, SearchOutlined, } from "@ant-design/icons"; import TableItem from "./TableItem"; import { useModel } from "umi"; import noData from "@/assets/no-data.png"; import TableEdit from "@/components/TableEdit"; import { ColumnItem, TableItemType } from "@/type"; import AddTable from "@/pages/detail/components/AddTable"; export default function TablePanel() { const { project, setProject, updateTable, addTable, tableActive, setTableActive, graph, } = useModel("erModel"); const contentRef = React.useRef(null); const [contentStyle, setContentStyle] = React.useState( {} ); const [tableData, setTableData] = React.useState(); const [open, setOpen] = useState(false); const addTableRef = React.useRef<{ openImportMode: () => void }>(null); useEffect(() => { graph?.on("node:dblclick", (args) => { const data = args.node.getData(); if (data?.isTable) { setOpen(true); setTableData(data); } }); }, [graph]); useEffect(() => { // 计算高度 setContentStyle({ height: `calc(100vh - ${contentRef.current?.getBoundingClientRect().top}px)`, }); }, []); const handleChangeTableColumns = (columnList: readonly ColumnItem[]) => { if (tableData) { updateTable({ ...tableData, tableColumnList: columnList as ColumnItem[], }); } }; // 引入表 const handleImport = (tables: TableItemType[]) => { setProject({ ...project, tables: [...tables, ...project.tables], }); setTableActive(tables[0].table.id); graph?.select(tables[0].table.id); }; return (
} /> , onClick: () => addTable(), }, { key: "import", label: "引入表", icon: , onClick: () => addTableRef.current?.openImportMode(), }, ], }} >
{project.tables.map((item) => { return ( ); })} {project.tables.length === 0 && (
暂无数据
暂无数据表,快来创建!
)} { return ; }} onCancel={() => { setOpen(false); setTableData(undefined); }} >
); }