import { SearchOutlined, SwapOutlined } from "@ant-design/icons"; import { Button, Descriptions, Form, Input, Popconfirm, Popover, Select } from "antd"; import React from "react"; import { RELATION_TYPE_OPTIONS } from "@/constants"; import { useModel } from "umi"; import noData from "@/assets/no-data.png"; import { ColumnRelation } from "@/type"; export default function RelationPanel() { const { project, addRelation, updateRelation, deleteRelation } = useModel("erModel"); const [search, setSearch] = React.useState(""); const list = React.useMemo(() => { return project.relations.filter((item) => item.name.includes(search)); }, [search, project.relations]); const [active, setActive] = React.useState(""); const handleChange = (index: number, key: string, value: any) => { const data = project.relations[index]; updateRelation({ ...data, [key]: value, }); }; const handleSwitchChange = (record: ColumnRelation) => { updateRelation({ ...record, primaryTable: record.foreignTable, primaryKey: record.foreignKey, foreignTable: record.primaryTable, foreignKey: record.primaryKey, }) } const getPrimaryColumn = (item: ColumnRelation) => { const tableItem = project.tables.find((table) => table.table.id === item.primaryTable); return { table: tableItem?.table, column: tableItem?.tableColumnList.find((column) => column.id === item.primaryKey) } }; const getForeignColumn = (item: ColumnRelation) => { const tableItem = project.tables .find((table) => table.table.id === item.foreignTable); return { table: tableItem?.table, column: tableItem?.tableColumnList.find((column) => column.id === item.foreignKey) } }; return (
} value={search} onChange={(e) => setSearch(e.target.value)} /> {list.map((item, index) => { return (
setActive(active === item.id ? '' : item.id)} >
{item.name}
{getPrimaryColumn(item)?.table?.schemaName} {getForeignColumn(item)?.table?.schemaName} {getPrimaryColumn(item)?.table?.schemaName}({getPrimaryColumn(item)?.column?.schemaName}) }, { key: '2', label: '外键', children: {getForeignColumn(item)?.table?.schemaName}({getForeignColumn(item)?.column?.schemaName}) } ]}/>
} >
deleteRelation(item.id)} >
); })} {list.length === 0 && (
暂无数据
添加额外注释内容!
)} ); }