Commit 1915cab8 by zhaochengxiang

模型目录

parent fdd01c14
...@@ -241,3 +241,11 @@ export function* compare(payload) { ...@@ -241,3 +241,11 @@ export function* compare(payload) {
export function* getDataModelByVersionId(payload) { export function* getDataModelByVersionId(payload) {
return yield call(datamodelerService.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) { ...@@ -12,3 +12,6 @@ export function* signin(payload) {
export function* signout() { export function* signout() {
return yield call(service.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() { export function loadDataModelCatalog() {
return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelCatalog"); return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelCatalog");
...@@ -141,6 +141,14 @@ export function getDataModelByVersionId(payload) { ...@@ -141,6 +141,14 @@ export function getDataModelByVersionId(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/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() { export function ddlGenerators() {
return GetJSON("/datamodeler/easyDataModelerExport/ddlGenerators"); return GetJSON("/datamodeler/easyDataModelerExport/ddlGenerators");
} }
...@@ -182,7 +190,7 @@ export function recommandEnglishWords(payload) { ...@@ -182,7 +190,7 @@ export function recommandEnglishWords(payload) {
} }
export function startFlow(payload) { export function startFlow(payload) {
return PostJSON("/datamodeler/easyDataModelerWorkflowSupport/startModelFlow", payload); return Post("/datamodeler/easyDataModelerWorkflowSupport/startModelFlow", payload);
} }
export function getDatasourcesByEnv (payload) { export function getDatasourcesByEnv (payload) {
......
...@@ -18,3 +18,7 @@ export function queryRoles() { ...@@ -18,3 +18,7 @@ export function queryRoles() {
export function queryUserSystem(payload) { export function queryUserSystem(payload) {
return GetJSON("/authservice/personal/grantedScopes", 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 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 { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined, ImportOutlined, UnorderedListOutlined } from '@ant-design/icons';
import classnames from 'classnames'; import classnames from 'classnames';
...@@ -34,6 +34,10 @@ const ModelTree = (props) => { ...@@ -34,6 +34,10 @@ const ModelTree = (props) => {
const [ expandedKeys, setExpandedKeys ] = useState([]); const [ expandedKeys, setExpandedKeys ] = useState([]);
const [ autoExpandParent, setAutoExpandParent ] = useState(false); const [ autoExpandParent, setAutoExpandParent ] = useState(false);
const [ viewSelectedKey, setViewSelectedKey ] = useState(viewModes[0].key); 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(); const [modal, contextHolder] = Modal.useModal();
...@@ -44,6 +48,11 @@ const ModelTree = (props) => { ...@@ -44,6 +48,11 @@ const ModelTree = (props) => {
itemRef.current = null; itemRef.current = null;
useEffect(() => { useEffect(() => {
getShowSyncAndDomains();
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
useEffect(() => {
if (refrence === 'recatalog') { if (refrence === 'recatalog') {
getDirTreeData(); getDirTreeData();
} else { } else {
...@@ -78,6 +87,26 @@ const ModelTree = (props) => { ...@@ -78,6 +87,26 @@ const ModelTree = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [ keyword ]) }, [ 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 = () => { const getDataModelLocationThenGetDirTreeData = () => {
setLoading(true); setLoading(true);
dispatch({ dispatch({
...@@ -239,6 +268,25 @@ const ModelTree = (props) => { ...@@ -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) => { const onTreeSelect = (keys,data) => {
if ((keys||[]).length === 0) { if ((keys||[]).length === 0) {
...@@ -328,6 +376,18 @@ const ModelTree = (props) => { ...@@ -328,6 +376,18 @@ const ModelTree = (props) => {
</Menu> </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', { const classes = classnames('model-tree', {
'model-tree-recatalog': (refrence === 'recatalog') 'model-tree-recatalog': (refrence === 'recatalog')
}); });
...@@ -371,9 +431,23 @@ const ModelTree = (props) => { ...@@ -371,9 +431,23 @@ const ModelTree = (props) => {
</Tooltip> </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> </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' && ( viewSelectedKey==='dir' && (
<Tooltip title="删除目录" className='ml-4'> <Tooltip title="删除目录" className='ml-4'>
......
...@@ -3,6 +3,7 @@ import { Modal, Form, Input } from 'antd'; ...@@ -3,6 +3,7 @@ import { Modal, Form, Input } from 'antd';
import LocalStorage from 'local-storage'; import LocalStorage from 'local-storage';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { showNotifaction } from '../../../../util';
const StartFlowModal = (props) => { const StartFlowModal = (props) => {
const { visible, onCancel, ids } = props; const { visible, onCancel, ids } = props;
...@@ -40,9 +41,13 @@ const StartFlowModal = (props) => { ...@@ -40,9 +41,13 @@ const StartFlowModal = (props) => {
flowDesc: values?.desc flowDesc: values?.desc
} }
}, },
callback: () => { callback: data => {
reset(); reset();
if ((data||'') !== '') {
showNotifaction('送审提示', data, 5);
}
LocalStorage.set('modelChange', !(LocalStorage.get('modelChange')||false)); LocalStorage.set('modelChange', !(LocalStorage.get('modelChange')||false));
onCancel && onCancel(true); onCancel && onCancel(true);
}, },
......
...@@ -136,9 +136,7 @@ class Model extends React.Component { ...@@ -136,9 +136,7 @@ class Model extends React.Component {
easyDataModelerStateCatalogId: catalogId easyDataModelerStateCatalogId: catalogId
}, },
callback: data => { callback: data => {
this.setState({ loadingTableData: false, tableData: data.easyDataModelerDataModels||[] }, () => { this.setState({ loadingTableData: false, tableData: data.easyDataModelerDataModels||[], filterTableData: data.easyDataModelerDataModels||[] });
this.setFilterData();
});
}, },
error: () => { error: () => {
this.setState({ loadingTableData: false }); 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