Commit 7b7154d0 by zhaochengxiang

模型浏览

parent c7f61c06
...@@ -16,6 +16,11 @@ export const StateId = 'sid'; ...@@ -16,6 +16,11 @@ export const StateId = 'sid';
export const VersionId = 'vid'; export const VersionId = 'vid';
export const TemplateId = 'tid'; export const TemplateId = 'tid';
export const Holder = 'holder'; export const Holder = 'holder';
export const ReadOnly = 'readOnly';
export const DataModelerRoleAdmin = 'admin';
export const DataModelerRoleUser = 'user';
export const DataModelerRoleReader = 'reader';
//资产 //资产
export const AssetManageReference = 'asset-manage'; export const AssetManageReference = 'asset-manage';
......
...@@ -6,6 +6,8 @@ import { ExclamationCircleOutlined } from '@ant-design/icons'; ...@@ -6,6 +6,8 @@ import { ExclamationCircleOutlined } from '@ant-design/icons';
import { dispatchLatest, action } from '../model'; import { dispatchLatest, action } from '../model';
import { set_sess_state } from "../model/reducer"; import { set_sess_state } from "../model/reducer";
import { DataModelerRoleAdmin, DataModelerRoleUser, DataModelerRoleReader } from './constant';
//内网深交所环境 isSzseEnv true //内网深交所环境 isSzseEnv true
//元曜公网环境 isSzseEnv false //元曜公网环境 isSzseEnv false
export const isSzseEnv = false; export const isSzseEnv = false;
...@@ -380,4 +382,16 @@ export function getTextWidth(text, font='14px tabular-nums') { ...@@ -380,4 +382,16 @@ export function getTextWidth(text, font='14px tabular-nums') {
context.font = font; context.font = font;
const metrics = context.measureText(text); const metrics = context.measureText(text);
return metrics.width; return metrics.width;
} }
\ No newline at end of file
export function getDataModelerRole(user) {
if ((user?.roles||[]).indexOf('ROLE_dataModeler_admin') !== -1) {
return DataModelerRoleAdmin;
} else if ((user?.roles||[]).indexOf('ROLE_dataModeler_user') !== -1) {
return DataModelerRoleUser;
} else if ((user?.roles||[]).indexOf('ROLE_dataModeler_reader') !== -1) {
return DataModelerRoleReader;
}
return DataModelerRoleAdmin;
}
...@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react'; ...@@ -2,7 +2,7 @@ import React, { useEffect, useState } from 'react';
import { Spin, Tooltip, Typography, Dropdown, Menu } from 'antd'; import { Spin, Tooltip, Typography, Dropdown, Menu } from 'antd';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { AssetManageReference, ResourceBrowseReference } from '../../../../util/constant'; import { AssetManageReference } from '../../../../util/constant';
import ImportElement from './ImportElement'; import ImportElement from './ImportElement';
import AttributeRelationModal from "./AttributeRelationModal"; import AttributeRelationModal from "./AttributeRelationModal";
import FilterElementModal from './FilterElementModal'; import FilterElementModal from './FilterElementModal';
......
...@@ -7,14 +7,14 @@ import ImportAction from './ImportAction'; ...@@ -7,14 +7,14 @@ import ImportAction from './ImportAction';
import CatalogModal from './CatalogModal'; import CatalogModal from './CatalogModal';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { getQueryParam, showMessage, showNotifaction } from '../../../../util'; import { getQueryParam, showMessage, showNotifaction } from '../../../../util';
import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, VersionId, Holder, DDL } from '../../../../util/constant'; import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, VersionId, Holder, DDL, ReadOnly } from '../../../../util/constant';
import HistoryAndVersionDrawer from './HistoryAndVersionDrawer'; import HistoryAndVersionDrawer from './HistoryAndVersionDrawer';
import './EditModel.less'; import './EditModel.less';
const EditModel = (props) => { const EditModel = (props) => {
const [ actionData, setActionData ] = useState({ action: '', catalogId: '', modelerId: '', hints: [], roughModelerData: null, permitCheckOut: false, editable: false, stateId: '', versionId: '', ddl: '' }); const [ actionData, setActionData ] = useState({ action: '', catalogId: '', modelerId: '', hints: [], roughModelerData: null, permitCheckOut: false, editable: false, stateId: '', versionId: '', ddl: '', readOnly: false });
const [ modelerData, setModelerData ] = useState({}); const [ modelerData, setModelerData ] = useState({});
const [ terms, setTerms ] = useState([]); const [ terms, setTerms ] = useState([]);
...@@ -25,7 +25,7 @@ const EditModel = (props) => { ...@@ -25,7 +25,7 @@ const EditModel = (props) => {
const actionRef = useRef(''); const actionRef = useRef('');
const { action, catalogId, modelerId, hints, roughModelerData, permitCheckOut, editable, stateId, versionId, holder, ddl } = actionData; const { action, catalogId, modelerId, hints, roughModelerData, permitCheckOut, editable, stateId, versionId, holder, ddl, readOnly } = actionData;
const [form] = Form.useForm(); const [form] = Form.useForm();
...@@ -41,6 +41,7 @@ const EditModel = (props) => { ...@@ -41,6 +41,7 @@ const EditModel = (props) => {
const _versionId = getQueryParam(VersionId, props.location.search); const _versionId = getQueryParam(VersionId, props.location.search);
const _holder = getQueryParam(Holder, props.location.search); const _holder = getQueryParam(Holder, props.location.search);
const _ddl = getQueryParam(DDL, props.location.search); const _ddl = getQueryParam(DDL, props.location.search);
const _readOnly = getQueryParam(ReadOnly, props.location.search);
let _hints = []; let _hints = [];
if ((_hintsStr||'') !== '') { if ((_hintsStr||'') !== '') {
...@@ -54,7 +55,7 @@ const EditModel = (props) => { ...@@ -54,7 +55,7 @@ const EditModel = (props) => {
judgeAttributeRepeat(_roughModelerData.easyDataModelerDataModelAttributes); judgeAttributeRepeat(_roughModelerData.easyDataModelerDataModelAttributes);
} }
setActionData({ action: _action, catalogId: _catalogId, modelerId: _modelerId, hints: _hints, roughModelerData: _roughModelerData, permitCheckOut: (_permitCheckOut==='true'), editable: (_editable==='true'), stateId: _stateId, versionId: _versionId, holder: _holder, ddl: _ddl }); setActionData({ action: _action, catalogId: _catalogId, modelerId: _modelerId, hints: _hints, roughModelerData: _roughModelerData, permitCheckOut: (_permitCheckOut==='true'), editable: (_editable==='true'), stateId: _stateId, versionId: _versionId, holder: _holder, ddl: _ddl, readOnly: _readOnly });
actionRef.current = _action; actionRef.current = _action;
const interval = setInterval(() => { const interval = setInterval(() => {
...@@ -278,11 +279,13 @@ const EditModel = (props) => { ...@@ -278,11 +279,13 @@ const EditModel = (props) => {
actionsBtn = ( actionsBtn = (
<Space> <Space>
<Button type='primary' onClick={onHistory} danger >版本历史</Button> <Button type='primary' onClick={onHistory} danger >版本历史</Button>
<Tooltip title={editTip}> {
<Button type='primary' onClick={edit} disabled={(stateId==='4')?!permitCheckOut:!editable} danger > (readOnly!=='true') && <Tooltip title={editTip}>
编辑 <Button type='primary' onClick={edit} disabled={(stateId==='4')?!permitCheckOut:!editable} danger >
</Button> 编辑
</Tooltip> </Button>
</Tooltip>
}
</Space> </Space>
); );
} else if (action === 'edit') { } else if (action === 'edit') {
......
...@@ -8,8 +8,8 @@ import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify" ...@@ -8,8 +8,8 @@ import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify"
import ResizeObserver from 'rc-resize-observer'; import ResizeObserver from 'rc-resize-observer';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { showMessage, getQueryParam, paginate, isSzseEnv, formatDate } from '../../../../util'; import { showMessage, getQueryParam, paginate, isSzseEnv, formatDate, getDataModelerRole } from '../../../../util';
import { AnchorId, AnchorTimestamp, Action, CatalogId, ModelerId } from '../../../../util/constant'; import { AnchorId, AnchorTimestamp, Action, CatalogId, ModelerId, DataModelerRoleReader } from '../../../../util/constant';
// import Tag from "../../Tag"; // import Tag from "../../Tag";
import './ModelTable.less'; import './ModelTable.less';
...@@ -125,7 +125,7 @@ const ResizeableHeaderCell = props => { ...@@ -125,7 +125,7 @@ const ResizeableHeaderCell = props => {
const ModelTable = (props) => { const ModelTable = (props) => {
const { data, onChange, onItemAction, onSelect, onHistory, catalogId, keyword, onAutoCreateTable, offset = null, modelId = null, modelPid = null, view, selectModelerIds, onSubSelect, modelState } = props; const { data, onChange, onItemAction, onSelect, onHistory, catalogId, keyword, onAutoCreateTable, offset = null, modelId = null, modelPid = null, view, selectModelerIds, onSubSelect, modelState, user } = props;
const MENU_ID = (((modelId||'') !== '') ? `model-table-contextmenu-${modelId}` : 'model-table-contextmenu'); const MENU_ID = (((modelId||'') !== '') ? `model-table-contextmenu-${modelId}` : 'model-table-contextmenu');
...@@ -476,7 +476,7 @@ const ModelTable = (props) => { ...@@ -476,7 +476,7 @@ const ModelTable = (props) => {
} }
const detailItem = (record) => { const detailItem = (record) => {
onItemAction && onItemAction(record, 'detail'); onItemAction && onItemAction(record, 'detail', getDataModelerRole(user)===DataModelerRoleReader);
} }
const deployAction = (record) => { const deployAction = (record) => {
...@@ -776,24 +776,30 @@ const ModelTable = (props) => { ...@@ -776,24 +776,30 @@ const ModelTable = (props) => {
/> />
} }
<RcMenu id={MENU_ID}> <RcMenu id={MENU_ID}>
<RcItem id="edit" disabled={disableEdit} onClick={handleItemClick}> {
<Tooltip title={editTip}> (getDataModelerRole(user)!==DataModelerRoleReader) && <RcItem id="edit" disabled={disableEdit} onClick={handleItemClick}>
{ editMenuTitle } <Tooltip title={editTip}>
</Tooltip> { editMenuTitle }
</RcItem> </Tooltip>
<RcItem id="delete" disabled={disableDelete} onClick={handleItemClick}> </RcItem>
<Tooltip title={deleteTip}> }
删除 {
</Tooltip> (getDataModelerRole(user)!==DataModelerRoleReader) && <RcItem id="delete" disabled={disableDelete} onClick={handleItemClick}>
</RcItem> <Tooltip title={deleteTip}>
删除
</Tooltip>
</RcItem>
}
<RcItem id="history" onClick={handleItemClick}> <RcItem id="history" onClick={handleItemClick}>
历史版本 历史版本
</RcItem> </RcItem>
<RcItem id="copy" onClick={handleItemClick}>
复制模型
</RcItem>
{ {
(currentItem?.state?.supportedActions||[]).length>0 && currentItem?.state?.supportedActions.map((item, index) => { (getDataModelerRole(user)!==DataModelerRoleReader) && <RcItem id="copy" onClick={handleItemClick}>
复制模型
</RcItem>
}
{
getDataModelerRole(user)!==DataModelerRoleReader && (currentItem?.state?.supportedActions||[]).length>0 && currentItem?.state?.supportedActions.map((item, index) => {
return ( return (
<RcItem id={`action-${index}`} onClick={handleItemClick}> <RcItem id={`action-${index}`} onClick={handleItemClick}>
{item.cnName||''} {item.cnName||''}
...@@ -802,7 +808,7 @@ const ModelTable = (props) => { ...@@ -802,7 +808,7 @@ const ModelTable = (props) => {
}) })
} }
{ {
currentItem?.deployable && <RcItem id='createTable' onClick={handleItemClick}> getDataModelerRole(user)!==DataModelerRoleReader &&currentItem?.deployable && <RcItem id='createTable' onClick={handleItemClick}>
建表 建表
</RcItem> </RcItem>
} }
......
import React, { useState, useEffect } from "react"; import React, { useState, useEffect, useContext } from "react";
import { Tooltip, Tree, Modal, Spin, Dropdown, Menu, Button, AutoComplete } from "antd"; import { Tooltip, Tree, Modal, Spin, Dropdown, Menu, Button, AutoComplete } from "antd";
import { PlusOutlined, SyncOutlined, ImportOutlined, UnorderedListOutlined, ReloadOutlined } from '@ant-design/icons'; import { PlusOutlined, SyncOutlined, ImportOutlined, UnorderedListOutlined, ReloadOutlined } from '@ant-design/icons';
import classnames from 'classnames'; import classnames from 'classnames';
...@@ -6,8 +6,9 @@ import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify" ...@@ -6,8 +6,9 @@ import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify"
import UpdateTreeItemModal from './UpdateTreeItemModal'; import UpdateTreeItemModal from './UpdateTreeItemModal';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
import { showMessage, getQueryParam, highlightSearchContentByTerms } from '../../../../util'; import { showMessage, getQueryParam, highlightSearchContentByTerms, getDataModelerRole } from '../../../../util';
import { AnchorId, AnchorTimestamp } from '../../../../util/constant'; import { AnchorId, AnchorTimestamp, DataModelerRoleAdmin } from '../../../../util/constant';
import { AppContext } from "../../../../App";
import './ModelTree.less'; import './ModelTree.less';
import 'react-contexify/dist/ReactContexify.css'; import 'react-contexify/dist/ReactContexify.css';
...@@ -34,6 +35,8 @@ const ModelTree = (props) => { ...@@ -34,6 +35,8 @@ const ModelTree = (props) => {
}); });
const { onSelect, onViewChange, refrence='', importStockModel, keyword } = props; const { onSelect, onViewChange, refrence='', importStockModel, keyword } = props;
const { user } = useContext(AppContext);
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const [ treeData, setTreeData ] = useState(null); const [ treeData, setTreeData ] = useState(null);
const [ item, setItem ] = useState(null); const [ item, setItem ] = useState(null);
...@@ -500,7 +503,7 @@ const ModelTree = (props) => { ...@@ -500,7 +503,7 @@ const ModelTree = (props) => {
borderBottom: "1px solid #EFEFEF", borderBottom: "1px solid #EFEFEF",
height: 57, height: 57,
alignItems: 'center', alignItems: 'center',
justifyContent: (viewSelectedKey==='dir')?'space-between':'', justifyContent: (viewSelectedKey==='dir' && getDataModelerRole(user)===DataModelerRoleAdmin)?'space-between':'',
}} }}
> >
<Dropdown overlay={exportMenu} placement="bottomLeft"> <Dropdown overlay={exportMenu} placement="bottomLeft">
...@@ -510,14 +513,14 @@ const ModelTree = (props) => { ...@@ -510,14 +513,14 @@ const ModelTree = (props) => {
</Dropdown> </Dropdown>
{ {
viewSelectedKey==='dir' && ( (viewSelectedKey==='dir' && getDataModelerRole(user)===DataModelerRoleAdmin) && (
<Tooltip title="新增目录" className='ml-2'> <Tooltip title="新增目录" className='ml-2'>
<PlusOutlined className='default' onClick={add} style={{ fontSize:16,cursor:'pointer' }} /> <PlusOutlined className='default' onClick={add} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
) )
} }
{ {
viewSelectedKey==='dir' && ( (viewSelectedKey==='dir' && getDataModelerRole(user)===DataModelerRoleAdmin) && (
<Tooltip title="存量模型导入" className='ml-2'> <Tooltip title="存量模型导入" className='ml-2'>
<ImportOutlined className='default' onClick={() => { importStockModel && importStockModel() }} style={{ fontSize:16,cursor:'pointer' }} /> <ImportOutlined className='default' onClick={() => { importStockModel && importStockModel() }} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
...@@ -529,7 +532,7 @@ const ModelTree = (props) => { ...@@ -529,7 +532,7 @@ const ModelTree = (props) => {
</Tooltip> </Tooltip>
{ {
(viewSelectedKey==='dir') && !isSetRootId && ( (viewSelectedKey==='dir' && getDataModelerRole(user)===DataModelerRoleAdmin) && !isSetRootId && (
<Dropdown overlay={syncMenu} placement="bottomLeft"> <Dropdown overlay={syncMenu} placement="bottomLeft">
<Tooltip title="同步目录"> <Tooltip title="同步目录">
<SyncOutlined className='default ml-2' style={{ fontSize:16,cursor:'pointer' }} /> <SyncOutlined className='default ml-2' style={{ fontSize:16,cursor:'pointer' }} />
...@@ -539,7 +542,7 @@ const ModelTree = (props) => { ...@@ -539,7 +542,7 @@ const ModelTree = (props) => {
} }
{ {
(viewSelectedKey==='dir') && isSetRootId && ( (viewSelectedKey==='dir' && getDataModelerRole(user)===DataModelerRoleAdmin) && isSetRootId && (
<Tooltip title="同步目录" className='ml-2'> <Tooltip title="同步目录" className='ml-2'>
<Button type='text' icon={<SyncOutlined className='default' />} size='small' onClick={sync} /> <Button type='text' icon={<SyncOutlined className='default' />} size='small' onClick={sync} />
</Tooltip> </Tooltip>
...@@ -585,7 +588,7 @@ const ModelTree = (props) => { ...@@ -585,7 +588,7 @@ const ModelTree = (props) => {
return <span title={nodeData?.remark||''}>{nodeData?.name||''}</span>; return <span title={nodeData?.remark||''}>{nodeData?.name||''}</span>;
}} }}
onRightClick={({event, node}) => { onRightClick={({event, node}) => {
if (viewSelectedKey==='dir') { if (viewSelectedKey==='dir'&& getDataModelerRole(user)===DataModelerRoleAdmin) {
setCurrentRightClickDir(node); setCurrentRightClickDir(node);
displayMenu(event); displayMenu(event);
} }
......
...@@ -13,9 +13,9 @@ import ExportOtherModal from './Component/ExportOtherModal'; ...@@ -13,9 +13,9 @@ import ExportOtherModal from './Component/ExportOtherModal';
import RecatalogModal from './Component/RecatalogModal'; import RecatalogModal from './Component/RecatalogModal';
import HistoryAndVersionDrawer from './Component/HistoryAndVersionDrawer'; import HistoryAndVersionDrawer from './Component/HistoryAndVersionDrawer';
import StartFlowModal from './Component/StartFlowModal'; import StartFlowModal from './Component/StartFlowModal';
import { showMessage, showNotifaction, inputWidth, DeleteTipModal } from '../../../util'; import { showMessage, showNotifaction, inputWidth, DeleteTipModal, getDataModelerRole } from '../../../util';
import { dispatch, dispatchLatestHomepage } from '../../../model'; import { dispatch, dispatchLatestHomepage } from '../../../model';
import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, Holder, DDL } from '../../../util/constant'; import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId, Holder, DDL, DataModelerRoleReader, ReadOnly } from '../../../util/constant';
import { AppContext } from '../../../App'; import { AppContext } from '../../../App';
import DebounceInput from './Component/DebounceInput'; import DebounceInput from './Component/DebounceInput';
...@@ -180,11 +180,11 @@ class Model extends React.Component { ...@@ -180,11 +180,11 @@ class Model extends React.Component {
this.setState({ selectModelerIds: ids }); this.setState({ selectModelerIds: ids });
} }
onTableItemAction = (record, action) => { onTableItemAction = (record, action, readOnly=false) => {
this.setState({ importModalAction: action, modelerId: record.id }, () => { this.setState({ importModalAction: action, modelerId: record.id }, () => {
const { catalogId, importModalAction, modelerId } = this.state; const { catalogId, importModalAction, modelerId } = this.state;
window.open(`/data-govern/data-model-action?${Action}=${importModalAction}&${CatalogId}=${catalogId}&${ModelerId}=${modelerId}&${PermitCheckOut}=${record.permitCheckOut||false}&${Editable}=${record.editable||false}&${StateId}=${record.state?.id||''}&${Holder}=${record.holder||''}`); window.open(`/data-govern/data-model-action?${Action}=${importModalAction}&${CatalogId}=${catalogId}&${ModelerId}=${modelerId}&${PermitCheckOut}=${record.permitCheckOut||false}&${Editable}=${record.editable||false}&${StateId}=${record.state?.id||''}&${Holder}=${record.holder||''}&${ReadOnly}=${readOnly}`);
}); });
} }
...@@ -435,24 +435,6 @@ class Model extends React.Component { ...@@ -435,24 +435,6 @@ class Model extends React.Component {
render() { render() {
const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, exportDDLModalVisible, exportOtherModalVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible, expandTree, showDeleteTip } = this.state; const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, exportDDLModalVisible, exportOtherModalVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible, expandTree, showDeleteTip } = this.state;
const content = (
<ModelTable
loading={loadingTableData}
catalogId={catalogId}
view={currentView}
data={filterTableData}
modelState={currentModelState}
offset={offset}
keyword={keyword}
selectModelerIds={selectModelerIds}
onChange={this.onTableChange}
onSelect={this.onTableSelect}
onItemAction={this.onTableItemAction}
onAutoCreateTable={this.onAutoCreateTable}
onHistory={this.onHistory}
{...this.props} />
);
const classes = classNames('data-model', { const classes = classNames('data-model', {
'data-model-collapse': !expandTree 'data-model-collapse': !expandTree
}); });
...@@ -467,7 +449,9 @@ class Model extends React.Component { ...@@ -467,7 +449,9 @@ class Model extends React.Component {
} }
return ( return (
<div className={classes}> <AppContext.Consumer>
{
value => <div className={classes}>
<div className='left'> <div className='left'>
<ModelTree onViewChange={this.onViewChange} onSelect={this.onTreeSelect} importStockModel={this.importStockModel} keyword={keyword} {...this.props} /> <ModelTree onViewChange={this.onViewChange} onSelect={this.onTreeSelect} importStockModel={this.importStockModel} keyword={keyword} {...this.props} />
</div> </div>
...@@ -486,34 +470,37 @@ class Model extends React.Component { ...@@ -486,34 +470,37 @@ class Model extends React.Component {
}} }}
> >
<Space> <Space>
<Space> {
<Button onClick={() => { this.setState({ importModalVisible: true }); }}>新建</Button> (getDataModelerRole(value?.user)!==DataModelerRoleReader) && <React.Fragment>
</Space> <Space>
<Button onClick={() => { this.setState({ importModalVisible: true }); }}>新建</Button>
</Space>
<Space> <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}>
<Button onClick={this.onExportOtherBtnClick} disabled={(selectModelerIds||[]).length===0}>导出</Button> <Button onClick={this.onExportOtherBtnClick} disabled={(selectModelerIds||[]).length===0}>导出</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={startFlowTip}> <Tooltip title={startFlowTip}>
<Button onClick={this.startFlow} disabled={disableStartFlow}>送审</Button> <Button onClick={this.startFlow} disabled={disableStartFlow}>送审</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}>
<Button onClick={this.onRecatalogBtnClick} disabled={(selectModelerIds||[]).length===0}>变更目录</Button> <Button onClick={this.onRecatalogBtnClick} disabled={(selectModelerIds||[]).length===0}>变更目录</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}>
<Button onClick={this.onBatchDeleteBtnClick} disabled={(selectModelerIds||[]).length===0}>删除</Button> <Button onClick={this.onBatchDeleteBtnClick} disabled={(selectModelerIds||[]).length===0}>删除</Button>
</Tooltip> </Tooltip>
</Space> </Space>
</React.Fragment>
}
</Space> </Space>
<Space> <Space>
...@@ -552,7 +539,22 @@ class Model extends React.Component { ...@@ -552,7 +539,22 @@ class Model extends React.Component {
</div> </div>
<div className='p-3'> <div className='p-3'>
<Spin spinning={loadingTableData}> <Spin spinning={loadingTableData}>
{ content } <ModelTable
loading={loadingTableData}
user={value?.user}
catalogId={catalogId}
view={currentView}
data={filterTableData}
modelState={currentModelState}
offset={offset}
keyword={keyword}
selectModelerIds={selectModelerIds}
onChange={this.onTableChange}
onSelect={this.onTableSelect}
onItemAction={this.onTableItemAction}
onAutoCreateTable={this.onAutoCreateTable}
onHistory={this.onHistory}
{...this.props} />
</Spin> </Spin>
</div> </div>
</div> </div>
...@@ -573,18 +575,14 @@ class Model extends React.Component { ...@@ -573,18 +575,14 @@ class Model extends React.Component {
onSuccess={this.onImportStockWordSuccess} onSuccess={this.onImportStockWordSuccess}
/> />
<AppContext.Consumer> <ExportDDLModal
{ visible={exportDDLModalVisible}
value => <ExportDDLModal reference={exportDDLModalReference}
visible={exportDDLModalVisible} ids={(exportDDLModalReference==='exportDDL')?selectModelerIds:[currentModel.id]}
reference={exportDDLModalReference} names={selectModelerNames}
ids={(exportDDLModalReference==='exportDDL')?selectModelerIds:[currentModel.id]} env={value?.env}
names={selectModelerNames} onCancel={this.onExportDDLModalCancel}
env={value?.env} />
onCancel={this.onExportDDLModalCancel}
/>
}
</AppContext.Consumer>
<ExportOtherModal <ExportOtherModal
visible={exportOtherModalVisible} visible={exportOtherModalVisible}
...@@ -615,6 +613,8 @@ class Model extends React.Component { ...@@ -615,6 +613,8 @@ class Model extends React.Component {
onCancel={this.onDeleteTipModalCancel} onCancel={this.onDeleteTipModalCancel}
/> />
</div> </div>
}
</AppContext.Consumer>
); );
} }
......
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