import { PageContainer } from '@ant-design/pro-layout'; import { Card, Input, message, Spin, Tooltip, Tree } from 'antd'; import { useEffect, useState } from 'react'; import { service } from '@/pages/system/DataSource'; import { useLocation } from 'umi'; import { PlusOutlined } from '@ant-design/icons'; import DataTable from './DataTable'; import styles from './index.less'; import EditTable from './EditTable'; import _ from 'lodash'; import { useDomFullHeight } from '@/hooks'; import { Store } from 'jetlinks-store'; import { Empty } from '@/components'; const Management = () => { const location = useLocation<{ id: string }>(); const id = (location as any).query?.id; const [info, setInfo] = useState>({}); const [rdbList, setRdbList] = useState([]); const [allList, setAllList] = useState([]); const [defaultSelectedKeys, setDefaultSelectedKeys] = useState([]); const [visible, setVisible] = useState(false); const [tableList, setTableList] = useState([]); const [param, setParam] = useState(undefined); const [loading, setLoading] = useState(true); const { minHeight } = useDomFullHeight(`.management`, 52); const queryTables = (key: string) => { setLoading(true); service.rdbTables(id, key).then((resp) => { if (resp.status === 200) { setTableList(resp.result?.columns || []); } setLoading(false); }); }; console.log(minHeight) const handleSearch = (refresh: boolean) => { service.rdbTree(id).then((resp) => { if (resp.status === 200) { Store.set('datasource-detail-list', resp.result); setAllList(resp.result); if (refresh) { setDefaultSelectedKeys([resp.result[0]?.name]); queryTables(resp.result[0]?.name); } else { queryTables(defaultSelectedKeys[0]); } } }); }; useEffect(() => { if (id) { service.detail(id).then((resp) => { if (resp.status === 200) { setInfo(resp.result); } }); handleSearch(true); } }, [id]); useEffect(() => { if (!!param) { const list = allList.filter((item) => { return item.name.includes(param); }); setRdbList([...list]); if (!_.map(list, 'name').includes(defaultSelectedKeys[0])) { setDefaultSelectedKeys([list[0]?.name]); queryTables(list[0]?.name); } } else { setRdbList([...allList]); } }, [allList, param]); const saveTables = async (name: string, data: any) => { const resp = await service.saveRdbTables(id, { name: name, columns: [...data.array], }); if (resp.status === 200) { message.success('保存成功'); handleSearch(false); } }; return (
{ setParam(val); }} allowClear style={{ width: '100%', marginBottom: 20 }} />
{ setDefaultSelectedKeys(value); queryTables(value[0]); }} > { return (
{info?.shareConfig?.schema || '数据源名称'}
); }} key={'tables'} > {rdbList.map((item) => ( { return (
{item.name}
); }} /> ))}
{defaultSelectedKeys.length && !!defaultSelectedKeys[0] ? ( { saveTables(defaultSelectedKeys[0], data); }} /> ) : ( )}
{visible && ( { const list = [...rdbList]; list.unshift(data); setAllList([...list]); setDefaultSelectedKeys([data.name]); setTableList([]); setVisible(false); }} close={() => { setVisible(false); }} /> )}
); }; export default Management;