Commit 1915cab8 by zhaochengxiang

模型目录

parent fdd01c14
......@@ -241,3 +241,11 @@ export function* compare(payload) {
export function* getDataModelByVersionId(payload) {
return yield call(datamodelerService.getDataModelByVersionId, payload);
}
export function* isSetRootDomainId() {
return yield call(datamodelerService.isSetRootDomainId);
}
export function* setRootDomainId(payload) {
return yield call(datamodelerService.setRootDomainId, payload);
}
\ No newline at end of file
......@@ -12,3 +12,6 @@ export function* signin(payload) {
export function* signout() {
return yield call(service.signout);
}
export function* getDomains() {
return yield call(service.getDomains);
}
import { PostFile, GetJSON, PostJSON, Post } from "../util/axios"
import { PostFile, GetJSON, PostJSON, Post, Get } from "../util/axios"
export function loadDataModelCatalog() {
return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelCatalog");
......@@ -141,6 +141,14 @@ export function getDataModelByVersionId(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/getDataModelByVersionId", payload);
}
export function isSetRootDomainId() {
return Get("/datamodeler/easyDataModelerCURD/isSetRootDomainId");
}
export function setRootDomainId(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/setRootDomainId", payload);
}
export function ddlGenerators() {
return GetJSON("/datamodeler/easyDataModelerExport/ddlGenerators");
}
......@@ -182,7 +190,7 @@ export function recommandEnglishWords(payload) {
}
export function startFlow(payload) {
return PostJSON("/datamodeler/easyDataModelerWorkflowSupport/startModelFlow", payload);
return Post("/datamodeler/easyDataModelerWorkflowSupport/startModelFlow", payload);
}
export function getDatasourcesByEnv (payload) {
......
......@@ -18,3 +18,7 @@ export function queryRoles() {
export function queryUserSystem(payload) {
return GetJSON("/authservice/personal/grantedScopes", payload);
}
export function getDomains() {
return GetJSON("/authservice/domains");
}
\ No newline at end of file
import React, { useState, useEffect, useRef } from "react";
import { Tooltip, Tree, Modal, Spin, Dropdown, Menu } from "antd";
import { Tooltip, Tree, Modal, Spin, Dropdown, Menu, Button } from "antd";
import { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined, ImportOutlined, UnorderedListOutlined } from '@ant-design/icons';
import classnames from 'classnames';
......@@ -34,6 +34,10 @@ const ModelTree = (props) => {
const [ expandedKeys, setExpandedKeys ] = useState([]);
const [ autoExpandParent, setAutoExpandParent ] = useState(false);
const [ viewSelectedKey, setViewSelectedKey ] = useState(viewModes[0].key);
const [ isSetRootId, setIsSetRootId ] = useState(true);
const [ disableSync, setDisableSync ] = useState(true);
const [ domains, setDomains ] = useState([]);
const [ domainSelectedKey, setDomainSelectedKey ] = useState('');
const [modal, contextHolder] = Modal.useModal();
......@@ -44,6 +48,11 @@ const ModelTree = (props) => {
itemRef.current = null;
useEffect(() => {
getShowSyncAndDomains();
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
useEffect(() => {
if (refrence === 'recatalog') {
getDirTreeData();
} else {
......@@ -78,6 +87,26 @@ const ModelTree = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [ keyword ])
const getShowSyncAndDomains = () => {
dispatch({
type: 'datamodel.isSetRootDomainId',
callback: data => {
if (data === 'false') {
dispatch({
type: 'user.getDomains',
callback: _data => {
setDomains(_data||[]);
setIsSetRootId(false);
}
});
} else {
setIsSetRootId(true);
setDisableSync(false);
}
}
});
}
const getDataModelLocationThenGetDirTreeData = () => {
setLoading(true);
dispatch({
......@@ -239,6 +268,25 @@ const ModelTree = (props) => {
}
}
const onSyncClick = ({ key }) => {
setDomainSelectedKey(key);
dispatch({
type: 'datamodel.setRootDomainId',
payload: {
params: {
domainId: key
}
},
callback: () => {
setIsSetRootId(true);
setDisableSync(false);
getDirTreeData();
}
});
}
const onTreeSelect = (keys,data) => {
if ((keys||[]).length === 0) {
......@@ -328,6 +376,18 @@ const ModelTree = (props) => {
</Menu>
);
const syncMenu = (
<Menu selectedKeys={[domainSelectedKey]} onClick={onSyncClick}>
{
domains && domains.map(domain => {
return (
<Menu.Item key={domain.domainId} value={domain.domainId} >{domain.domainName}</Menu.Item>
)
})
}
</Menu>
);
const classes = classnames('model-tree', {
'model-tree-recatalog': (refrence === 'recatalog')
});
......@@ -371,9 +431,23 @@ const ModelTree = (props) => {
</Tooltip>
)
}
<Tooltip title="刷新目录" className='ml-4'>
<SyncOutlined onClick={refresh} style={{ fontSize:16,cursor:'pointer' }} />
{
((viewSelectedKey!=='dir')||(viewSelectedKey==='dir'&&isSetRootId)) && <Tooltip title="刷新目录" className='ml-4'>
<Button type='text' icon={<SyncOutlined />} disabled={viewSelectedKey==='dir'&&disableSync} size='small' onClick={refresh} />
</Tooltip>
}
{
(viewSelectedKey==='dir') && !isSetRootId && (
<Dropdown overlay={syncMenu} placement="bottomLeft">
<Tooltip title="同步目录" className='ml-4'>
<SyncOutlined className='ml-4' style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip>
</Dropdown>
)
}
{
viewSelectedKey==='dir' && (
<Tooltip title="删除目录" className='ml-4'>
......
......@@ -3,6 +3,7 @@ import { Modal, Form, Input } from 'antd';
import LocalStorage from 'local-storage';
import { dispatchLatest } from '../../../../model';
import { showNotifaction } from '../../../../util';
const StartFlowModal = (props) => {
const { visible, onCancel, ids } = props;
......@@ -40,9 +41,13 @@ const StartFlowModal = (props) => {
flowDesc: values?.desc
}
},
callback: () => {
callback: data => {
reset();
if ((data||'') !== '') {
showNotifaction('送审提示', data, 5);
}
LocalStorage.set('modelChange', !(LocalStorage.get('modelChange')||false));
onCancel && onCancel(true);
},
......
......@@ -136,9 +136,7 @@ class Model extends React.Component {
easyDataModelerStateCatalogId: catalogId
},
callback: data => {
this.setState({ loadingTableData: false, tableData: data.easyDataModelerDataModels||[] }, () => {
this.setFilterData();
});
this.setState({ loadingTableData: false, tableData: data.easyDataModelerDataModels||[], filterTableData: data.easyDataModelerDataModels||[] });
},
error: () => {
this.setState({ loadingTableData: false });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment