import React, { useEffect, useMemo, useRef, useState } from "react"; import { Layout, Menu, Button, Descriptions, Input, Tooltip, Empty, } from "antd"; import type { DescriptionsProps, MenuProps } from "antd"; import { PlusOutlined, SearchOutlined } from "@ant-design/icons"; import TableEdit from "@/components/TableEdit"; import ER from "./components/ER"; import AddTable from "./components/AddTable"; import { useModel, history } from "umi"; import NoData from "@/assets/no-data.png"; import { TableItemType } from "@/type"; const { Content, Header } = Layout; export default function index() { const [active, setActive] = useState(0); const [showNavigator, setShowNavigator] = useState(true); const addTableRef = useRef<{ open: () => void }>(); const { project, setProject, setPlayModeEnable } = useModel("erModel"); const [searchKeyword, setSearchKeyword] = useState(""); const [selectKey, setSelectKey] = useState(""); useEffect(() => { setPlayModeEnable(true); }, [project]); const descItems: DescriptionsProps["items"] = [ { key: "1", label: "模型名称", children: "用户模型名称", }, { key: "2", label: "创建用户", children: "张XX", }, { key: "3", label: "创建时间", children: "2024-12-12 13:45", }, { key: "4", label: "更新时间", children: "2024-12-12 13:45", }, { key: "5", label: "发布状态", children: "未发布", }, { key: "6", label: "数据库同步", children: "5/6", }, { key: "7", label: "描述", children: "模型说明啊多发点是否,的发射点发射点,打发打发", }, ]; const tableData: MenuProps["items"] = useMemo(() => { const { tables } = project; const treeList: { key: string; label: string | React.ReactNode; icon: React.ReactNode; children?: MenuProps["items"]; }[] = []; tables.forEach((item) => { const name = item.table.langNameList?.find( (item) => item.name === "zh-CN" )?.value; const newItem = { key: item.table.id, label: item.table.schemaName + `${name ? `(${name})}` : ""}`, icon: , // children: [], }; if (!item.table.parentBusinessTableId) { treeList.push(newItem); } else { const parent = treeList.find( (tableItem) => tableItem?.key === item.table.parentBusinessTableId ); if (parent) { if(!parent?.children) { parent.children = []; } parent.children?.push(newItem); } } }); return treeList; }, [project]); const currentTable = useMemo(() => { return project.tables.find((item) => item.table.id === selectKey); }, [project, selectKey]); const handleAddTable = (tableItem: TableItemType) => { setProject({ ...project, tables: [...project.tables, tableItem], }); }; const extra = (
一键同步 修改 history.push(`/er/${project.id}`)}> 进入编辑 保存为模板
); return (
模型详情 } items={descItems} extra={extra} >
数据表
} value={searchKeyword} onChange={(e) => setSearchKeyword(e.target.value)} />
setSelectKey(key)} /> {!tableData.length && ( )}
{active === 0 ? ( <> } /> ) : ( <> } /> )}
{active === 0 ? (
) : ( )}
); }