Commit 3ca37456 by zhaochengxiang

模型主页面调整

parent 8bf3bfa0
import React from 'react'; import React from 'react';
import { Button, Upload } from 'antd'; import { Button, Upload, Form, Row, Col } from 'antd';
import { DownloadOutlined, UploadOutlined } from '@ant-design/icons'; import { DownloadOutlined, UploadOutlined } from '@ant-design/icons';
class ImportExcel extends React.Component { class ImportExcel extends React.Component {
...@@ -50,20 +50,36 @@ class ImportExcel extends React.Component { ...@@ -50,20 +50,36 @@ class ImportExcel extends React.Component {
}; };
return ( return (
<> <Form.Item
<div> name='upload'
<Button icon={<DownloadOutlined />} onClick={ this.downloadTemplate }> label='文件上传'
模版下载 >
</Button> <Row>
</div> <Col span={9}>
<div className='mt-3'> <Form.Item
noStyle
rules={[
{
required: true,
message: '请选择文件上传',
},
]}
>
<Upload {...uploadProps}> <Upload {...uploadProps}>
<Button icon={<UploadOutlined />}> <Button icon={<UploadOutlined />}>
选择文件上传 选择文件上传
</Button> </Button>
</Upload> </Upload>
</div> </Form.Item>
</> </Col>
<Col span={6}>
<Button icon={<DownloadOutlined />} onClick={ this.downloadTemplate }>
模版下载
</Button>
</Col>
</Row>
</Form.Item>
) )
} }
} }
......
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Modal, Button } from 'antd'; import { Modal, Button, Form, Radio } from 'antd';
import ImportWord from './ImportWord';
import ImportExcel from './ImportExcel'; import ImportExcel from './ImportExcel';
import ImportExcelCopy from './ImportExcelCopy'; import ImportExcelCopy from './ImportExcelCopy';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { showMessage } from '../../../../util'; import { showMessage } from '../../../../util';
const importModes = [
{ name: 'Word导入', key: 'word' },
{ name: 'Excel导入', key: 'excel' },
{ name: 'Excel复制粘贴', key: 'excel-copy' },
]
const ImportModal = (props) => { const ImportModal = (props) => {
const { visible, onCancel, addMode } = props; const { catalogId, visible, onCancel } = props;
const [ excelFiles, setExcelFiles ] = useState([]); const [ modeKey, setModeKey ] = useState('');
const [ files, setFiles ] = useState([]);
const [ hints, setHints ] = useState([]); const [ hints, setHints ] = useState([]);
const [ confirmLoading, setConfirmLoading ] = useState(false); const [ confirmLoading, setConfirmLoading ] = useState(false);
const onOk = () => { const [ form ] = Form.useForm();
if (addMode==='excel') {
if ((excelFiles||[]).length === 0) { const onModeChange = (e) => {
showMessage('warn', '请先选择文件上传'); setModeKey(e.target?.value);
}
const onOk = async() => {
if (modeKey === '') {
form.setFields([{ name: 'mode', errors: ['请选择导入方式'] }]);
return;
}
if (modeKey==='word') {
if ((files||[]).length === 0) {
form.setFields([{ name: 'upload', errors: ['请选择文件上传'] }]);
} else {
setConfirmLoading(true);
dispatchLatest({
type: 'datamodel.importWordGenerateModelDraft',
payload: {
params: {
catalogId,
},
files
},
callback: data => {
setConfirmLoading(false);
reset();
onCancel && onCancel(true, [], data||{});
},
error: () => {
setConfirmLoading(false);
}
});
}
} else if (modeKey==='excel') {
if ((files||[]).length === 0) {
form.setFields([{ name: 'upload', errors: ['请选择文件上传'] }]);
} else { } else {
setConfirmLoading(true); setConfirmLoading(true);
dispatchLatest({ dispatchLatest({
type: 'datamodel.extractExcelContent', type: 'datamodel.extractExcelContent',
payload: { fileList: excelFiles }, payload: { fileList: files },
callback: data => { callback: data => {
setConfirmLoading(false); setConfirmLoading(false);
onCancel && onCancel(data||[]); onCancel && onCancel(false, data||[]);
}, },
error: () => { error: () => {
setConfirmLoading(false); setConfirmLoading(false);
...@@ -33,17 +79,14 @@ const ImportModal = (props) => { ...@@ -33,17 +79,14 @@ const ImportModal = (props) => {
}) })
} }
return; } else if (modeKey==='excel-copy') {
} else if (addMode==='excel-copy') {
if ((hints||[]).length === 0) { if ((hints||[]).length === 0) {
showMessage('warn', '请先从Excel文件中复制内容'); showMessage('warn', '请先从Excel文件中复制内容');
} else { } else {
onCancel && onCancel(hints||[]); onCancel && onCancel(false, hints||[]);
} }
return;
} }
} }
...@@ -53,28 +96,24 @@ const ImportModal = (props) => { ...@@ -53,28 +96,24 @@ const ImportModal = (props) => {
} }
const reset = () => { const reset = () => {
setExcelFiles([]); setModeKey('');
setFiles([]);
setHints([]); setHints([]);
setConfirmLoading(false); setConfirmLoading(false);
} }
const onImportWordChange = (files) => {
setFiles(files||[]);
}
const onImportExcelChange = (files) => { const onImportExcelChange = (files) => {
setExcelFiles(files||[]); setFiles(files||[]);
} }
const onImportExcelCopyChange = (data) => { const onImportExcelCopyChange = (data) => {
setHints(data||[]); setHints(data||[]);
} }
let title = '';
if (addMode==='excel') {
title = 'Excel导入';
} else if (addMode==='excel-copy') {
title = 'Excel复制粘贴导入';
} else if (addMode==='ddl') {
title = 'DDL导入';
}
const footer = [ const footer = [
<Button <Button
key="0" key="0"
...@@ -97,21 +136,40 @@ const ImportModal = (props) => { ...@@ -97,21 +136,40 @@ const ImportModal = (props) => {
<Modal <Modal
forceRender forceRender
visible={visible} visible={visible}
title={title} title='模型导入'
width={520} width={520}
onCancel={cancel} onCancel={cancel}
footer={footer} footer={footer}
> >
<Form form={form}>
<Form.Item
name='mode'
label='导入方式'
>
<Radio.Group onChange={onModeChange} value={modeKey}>
{
importModes.map((item, index) => {
return <Radio value={item.key} key={index}>{item.name}</Radio>;
})
}
</Radio.Group>
</Form.Item>
{
modeKey==='word' && (
<ImportWord onChange={onImportWordChange} {...props} />
)
}
{ {
addMode==='excel' && ( modeKey==='excel' && (
<ImportExcel onChange={onImportExcelChange} {...props} /> <ImportExcel onChange={onImportExcelChange} {...props} />
) )
} }
{ {
addMode==='excel-copy' && ( modeKey==='excel-copy' && (
<ImportExcelCopy onChange={onImportExcelCopyChange} {...props} /> <ImportExcelCopy onChange={onImportExcelCopyChange} {...props} />
) )
} }
</Form>
</Modal> </Modal>
) )
} }
......
import React, { useState, useEffect } from 'react';
import { Button, Upload, Form } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
const ImportWord = (props) => {
const { onChange, visible } = props;
const [ fileList, setFileList ] = useState([]);
useEffect(() => {
setFileList([]);
}, [visible])
const uploadProps = {
onRemove: file => {
const index = fileList.indexOf(file);
const newFileList = fileList.slice();
newFileList.splice(index, 1);
onChange && onChange(newFileList);
setFileList(newFileList);
},
beforeUpload: file => {
setFileList([file]);
return false;
},
fileList: fileList||[],
accept:".doc,.docx",
};
return (
<Form.Item
name='upload'
label='文件上传'
>
<Upload {...uploadProps}>
<Button icon={<UploadOutlined />}>
选择文件上传
</Button>
</Upload>
</Form.Item>
)
}
export default ImportWord;
\ No newline at end of file
import React, { useState } from 'react';
import { Button, Upload, Modal } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
import { dispatchLatest } from '../../../../model';
import { showMessage } from '../../../../util';
const ImportWordModal = (props) => {
const { onCancel, visible, catalogId } = props;
const [ fileList, setFileList ] = useState([]);
const [ confirmLoading, setConfirmLoading ] = useState(false);
const uploadProps = {
onRemove: file => {
const index = fileList.indexOf(file);
const newFileList = fileList.slice();
newFileList.splice(index, 1);
setFileList(newFileList);
},
beforeUpload: file => {
setFileList([file]);
return false;
},
fileList: fileList||[],
accept:".doc,.docx",
};
const handleOk = () => {
if ((fileList||[]).length === 0) {
showMessage('info', '请先选择Word文件上传');
return;
}
setConfirmLoading(true);
dispatchLatest({
type: 'datamodel.importWordGenerateModelDraft',
payload: {
params: {
catalogId,
},
fileList
},
callback: data => {
setConfirmLoading(false);
reset();
if (onCancel) {
onCancel(true, data||[]);
}
},
error: () => {
setConfirmLoading(false);
}
})
}
const reset = () => {
setConfirmLoading(false);
setFileList([]);
}
return (
<Modal
forceRender
visible={visible}
title='Word导入'
width={520}
confirmLoading={confirmLoading}
onCancel={() => {
reset();
onCancel && onCancel();
}}
onOk={handleOk}
>
<div className='mt-3'>
<span className='mr-3'>Word上传:</span>
<Upload {...uploadProps}>
<Button icon={<UploadOutlined />}>
选择文件上传
</Button>
</Upload>
</div>
</Modal>
)
}
export default ImportWordModal;
\ No newline at end of file
...@@ -5,6 +5,10 @@ ...@@ -5,6 +5,10 @@
overflow: auto !important; overflow: auto !important;
} }
.yy-table-thead > tr > th {
background-color: #F2F5FC !important;
}
.yy-pro-table { .yy-pro-table {
.yy-card-body { .yy-card-body {
padding: 0 !important; padding: 0 !important;
......
import React from 'react'; import React from 'react';
import { Button, Space, Spin, Dropdown, Menu, Input, Select } from 'antd'; import { Button, Space, Spin, Dropdown, Menu, Input, Select } from 'antd';
import copy from "copy-to-clipboard"; import copy from "copy-to-clipboard";
import { DownOutlined } from '@ant-design/icons'; import { DownOutlined, CaretLeftOutlined, CaretRightOutlined } from '@ant-design/icons';
import classNames from 'classnames';
import ModelTree from './Component/ModelTree'; import ModelTree from './Component/ModelTree';
import ModelTable from './Component/ModelTable'; import ModelTable from './Component/ModelTable';
...@@ -9,7 +10,6 @@ import WordTemplateModal from './Component/WordTemplateModal'; ...@@ -9,7 +10,6 @@ import WordTemplateModal from './Component/WordTemplateModal';
import TemplateCURDDrawer from './Component/TemplateCURDDrawer'; import TemplateCURDDrawer from './Component/TemplateCURDDrawer';
import ConstraintDetailDrawer from './Component/ConstraintDetailDrawer'; import ConstraintDetailDrawer from './Component/ConstraintDetailDrawer';
import ImportModal from './Component/ImportModal'; import ImportModal from './Component/ImportModal';
import ImportWordModal from './Component/ImportWordModal';
import ImportStockWordDrawer from './Component/ImportStockWordDrawer'; import ImportStockWordDrawer from './Component/ImportStockWordDrawer';
import ExportDDLModal from './Component/ExportDDLModal'; import ExportDDLModal from './Component/ExportDDLModal';
import RecatalogModal from './Component/RecatalogModal'; import RecatalogModal from './Component/RecatalogModal';
...@@ -33,7 +33,6 @@ class Model extends React.Component { ...@@ -33,7 +33,6 @@ class Model extends React.Component {
templateCURDDrawerVisible: false, templateCURDDrawerVisible: false,
constraintDetailDrawerVisible: false, constraintDetailDrawerVisible: false,
importModalVisible: false, importModalVisible: false,
importWordModalVisible: false,
importStockWordDrawerVisible: false, importStockWordDrawerVisible: false,
exportDDLModalVisible: false, exportDDLModalVisible: false,
recatalogModalVisible: false, recatalogModalVisible: false,
...@@ -41,7 +40,6 @@ class Model extends React.Component { ...@@ -41,7 +40,6 @@ class Model extends React.Component {
startFlowModalVisible: false, startFlowModalVisible: false,
catalogId: '', catalogId: '',
importModalAction: '', importModalAction: '',
importModalAddMode: '',
tableData: [], tableData: [],
filterTableData: [], filterTableData: [],
loadingTableData: false, loadingTableData: false,
...@@ -56,7 +54,8 @@ class Model extends React.Component { ...@@ -56,7 +54,8 @@ class Model extends React.Component {
currentView: '', currentView: '',
exportDDLModalReference: 'exportDDL', exportDDLModalReference: 'exportDDL',
currentModel: {}, currentModel: {},
offset: null offset: null,
expandTree: true,
} }
} }
...@@ -203,24 +202,16 @@ class Model extends React.Component { ...@@ -203,24 +202,16 @@ class Model extends React.Component {
window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${(currentView==='dir')?(catalogId||''):''}`); window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${(currentView==='dir')?(catalogId||''):''}`);
} }
onImportExcelBtnClick = () => { // onImportWordBtnClick = () => {
this.setState({ importModalVisible: true, importModalAction: 'add', importModalAddMode: 'excel' }); // const { catalogId, currentView } = this.state;
}
onImportExcelCopyBtnClick = () => { // if (currentView!=='dir' || (catalogId||'') === '') {
this.setState({ importModalVisible: true, importModalAction: 'add', importModalAddMode: 'excel-copy' }); // showMessage('info', '请先选择模型目录');
} // return;
// }
onImportWordBtnClick = () => { // this.setState({ importWordModalVisible: true });
const { catalogId, currentView } = this.state; // }
if (currentView!=='dir' || (catalogId||'') === '') {
showMessage('info', '请先选择模型目录');
return;
}
this.setState({ importWordModalVisible: true });
}
onImportModelBtnClick = () => { onImportModelBtnClick = () => {
const { catalogId, selectModelerIds, currentView } = this.state; const { catalogId, selectModelerIds, currentView } = this.state;
...@@ -238,10 +229,6 @@ class Model extends React.Component { ...@@ -238,10 +229,6 @@ class Model extends React.Component {
window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${(currentView==='dir')?(catalogId||''):''}&${ModelerId}=${selectModelerIds[0]}`); window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${(currentView==='dir')?(catalogId||''):''}&${ModelerId}=${selectModelerIds[0]}`);
} }
onImportDDLBtnClick = () => {
this.setState({ importModalVisible: true, importModalAction: 'add', importModalAddMode: 'ddl' });
}
onExportDDLBtnClick = () => { onExportDDLBtnClick = () => {
const { selectModelerIds, tableData } = this.state; const { selectModelerIds, tableData } = this.state;
if ((selectModelerIds||[]).length === 0) { if ((selectModelerIds||[]).length === 0) {
...@@ -353,43 +340,37 @@ class Model extends React.Component { ...@@ -353,43 +340,37 @@ class Model extends React.Component {
this.setState({ constraintDetailDrawerVisible: false }); this.setState({ constraintDetailDrawerVisible: false });
} }
onImportModalCancel = (hints = []) => { onImportModalCancel = (refresh = false, hints = [], wordData = {}) => {
const { catalogId, importModalAction, currentView } = this.state; const { catalogId, importModalAction, currentView } = this.state;
this.setState({ importModalVisible: false }, () => { this.setState({ importModalVisible: false }, () => {
refresh && this.onTableChange();
if ((hints||[]).length > 0) { if ((hints||[]).length > 0) {
setTimeout(() => { setTimeout(() => {
window.open(`/data-govern/data-model-action?${Action}=${importModalAction}&${CatalogId}=${(currentView==='dir')?(catalogId||''):''}&${Hints}=${encodeURIComponent((hints||[]).join(','))}`); window.open(`/data-govern/data-model-action?${Action}=${importModalAction}&${CatalogId}=${(currentView==='dir')?(catalogId||''):''}&${Hints}=${encodeURIComponent((hints||[]).join(','))}`);
}, 1000); }, 1000);
} }
});
}
onImportWordModalCancel = (refresh = false, data = {}) => {
const { catalogId } = this.state; if (wordData && (wordData.msg||''!=='')) {
this.setState({ importWordModalVisible: false }); showNotifaction('提示', wordData.msg, 5);
refresh && this.onTableChange();
if (data && (data.msg||''!=='')) {
showNotifaction('提示', data.msg, 5);
} }
if (data && (data.content||[]).length > 0) { if (wordData && (wordData.content||[]).length > 0) {
if ((data.content||[]).length > 5) { if ((wordData.content||[]).length > 5) {
showMessage('info', '最多只能同时编辑5条信息'); showMessage('info', '最多只能同时编辑5条信息');
} }
setTimeout(() => { setTimeout(() => {
data.content.slice(0, 5).forEach(data => { wordData.content.slice(0, 5).forEach(data => {
window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${catalogId}&${ModelerData}=${encodeURIComponent(JSON.stringify(data))}`, '_blank'); window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${catalogId}&${ModelerData}=${encodeURIComponent(JSON.stringify(data))}`, '_blank');
}) })
}, 2000); }, 2000);
} }
});
} }
onImportStockWordDrawerCancel = () => { onImportStockWordDrawerCancel = () => {
...@@ -436,47 +417,23 @@ class Model extends React.Component { ...@@ -436,47 +417,23 @@ class Model extends React.Component {
this.setState({ importStockWordDrawerVisible: true }); this.setState({ importStockWordDrawerVisible: true });
} }
onCreateModelMenuClick = (e) => { onMoreMenuClick = (e) => {
const { key } = e;
if (key === 'uncondition') {
this.onImportUnconditionBtnClick();
} else if (key === 'excel') {
this.onImportExcelBtnClick();
} else if (key === 'excel-copy') {
this.onImportExcelCopyBtnClick();
} else if (key === 'word') {
this.onImportWordBtnClick();
} else if (key === 'model') {
this.onImportModelBtnClick();
}
}
onExportModelMenuClick = (e) => {
const { key } = e; const { key } = e;
if (key === 'ddl') { if (key === 'export-ddl') {
this.onExportDDLBtnClick(); this.onExportDDLBtnClick();
} else if (key === 'erwin') { } else if (key === 'export-other') {
this.onExportErwinBtnClick();
} else if (key === 'excel') { } else if (key === 'catalog-change') {
this.onExportExcelBtnClick(); this.onRecatalogBtnClick();
} else if (key === 'word') {
this.onExportWordBtnClick();
} }
} }
onConfigModelMenuClick = (e) => { treeToggleClick = () => {
const { key } = e; this.setState({ expandTree: !this.state.expandTree });
if (key === 'word') {
this.onWordTemplateCURDClick();
} else if (key === 'template') {
this.onTemplateCURDClick();
} else if (key === 'constraint') {
this.onConstraintDetailClick();
}
} }
render() { render() {
const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, importModalAddMode, exportDDLModalVisible, templateCURDDrawerVisible, wordTemplateModalVisible, constraintDetailDrawerVisible, importWordModalVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible } = this.state; const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, exportDDLModalVisible, templateCURDDrawerVisible, wordTemplateModalVisible, constraintDetailDrawerVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible, expandTree } = this.state;
const content = ( const content = (
<ModelTable <ModelTable
...@@ -492,62 +449,34 @@ class Model extends React.Component { ...@@ -492,62 +449,34 @@ class Model extends React.Component {
{...this.props} /> {...this.props} />
); );
const createModelMenu = ( const moreMenu = (
<Menu onClick={this.onCreateModelMenuClick}> <Menu onClick={this.onMoreMenuClick}>
<Menu.Item key='uncondition'> <Menu.Item key='export-ddl'>
新增
</Menu.Item>
<Menu.Item key='excel'>
Excel导入
</Menu.Item>
<Menu.Item key='excel-copy'>
Excel复制粘贴
</Menu.Item>
<Menu.Item key='word'>
Word导入
</Menu.Item>
<Menu.Item key='model'>
现有模型
</Menu.Item>
</Menu>
);
const exportModelMenu = (
<Menu onClick={this.onExportModelMenuClick}>
<Menu.Item key='ddl'>
导出DDL 导出DDL
</Menu.Item> </Menu.Item>
<Menu.Item key='erwin'> <Menu.Item key='export-other'>
导出Erwin 导出其他
</Menu.Item> </Menu.Item>
<Menu.Item key='excel'> <Menu.Item key='catalog-change'>
导出Excel 变更目录
</Menu.Item>
<Menu.Item key='word'>
导出Word
</Menu.Item>
</Menu>
);
const configModelMenu = (
<Menu onClick={this.onConfigModelMenuClick}>
<Menu.Item key='word'>
Word模版配置
</Menu.Item>
<Menu.Item key='template'>
数据表类型配置
</Menu.Item>
<Menu.Item key='constraint'>
规范详情
</Menu.Item> </Menu.Item>
</Menu> </Menu>
) )
const classes = classNames('data-model', {
'data-model-collapse': !expandTree
});
return ( return (
<div className='data-model'> <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>
<div className='tree-toggle-wrap'>
<div className='tree-toggle' onClick={this.treeToggleClick}>
{ expandTree ? <CaretLeftOutlined /> : <CaretRightOutlined /> }
</div>
</div>
<div className='right'> <div className='right'>
<div <div
className='d-flex p-3' className='d-flex p-3'
...@@ -559,25 +488,24 @@ class Model extends React.Component { ...@@ -559,25 +488,24 @@ class Model extends React.Component {
> >
<Space> <Space>
<Space> <Space>
<span style={{ <Button onClick={this.onImportUnconditionBtnClick}>新建</Button>
fontSize: 18,
fontWeight: 800,
color: '#767676'
}}>数据模型</span>
</Space> </Space>
<Space> <Space>
<Input <Button onClick={() => { this.setState({ importModalVisible: true }); }}>导入</Button>
placeholder="请输入关键字" </Space>
allowClear <Space>
value={keyword} <Button onClick={this.startFlow} disabled={currentModelState!=='1'}>送审</Button>
onChange={(e) => { this.onSearchInputChange(e); }} </Space>
style={{ width: 240, marginLeft: 'auto' }} <Space>
/> <Dropdown overlay={moreMenu} placement="bottomLeft">
<Button>更多<DownOutlined /></Button>
</Dropdown>
</Space>
</Space> </Space>
<Space>
{ {
(currentView==='dir'||keyword!=='') && <Space className='mr-3'> (currentView==='dir'||keyword!=='') && <Space>
<Select <Select
style={{ width: 120 }} style={{ width: 120 }}
onChange={(value) => { onChange={(value) => {
...@@ -596,35 +524,16 @@ class Model extends React.Component { ...@@ -596,35 +524,16 @@ class Model extends React.Component {
</Select> </Select>
</Space> </Space>
} }
</Space>
<Space>
<Space> <Space>
<Dropdown overlay={createModelMenu} placement="bottomLeft"> <Input
<Button type='primary'>模型创建<DownOutlined /></Button> placeholder="请输入关键字"
</Dropdown> allowClear
</Space> value={keyword}
<Space> onChange={(e) => { this.onSearchInputChange(e); }}
<Dropdown overlay={exportModelMenu} placement="bottomLeft"> style={{ width: 240, marginLeft: 'auto' }}
<Button type='primary'>模型导出<DownOutlined /></Button> />
</Dropdown>
</Space>
<Space>
<Button type='primary' onClick={this.startFlow} disabled={currentModelState!=='1'}>模型送审</Button>
</Space>
<Space>
<Button type='primary' onClick={this.onRecatalogBtnClick}>
模型变更目录
</Button>
</Space> </Space>
<Space>
<Dropdown overlay={configModelMenu} placement="bottomLeft">
<Button type='primary'>模型配置<DownOutlined /></Button>
</Dropdown>
</Space>
</Space> </Space>
</div> </div>
...@@ -652,16 +561,9 @@ class Model extends React.Component { ...@@ -652,16 +561,9 @@ class Model extends React.Component {
<ImportModal <ImportModal
visible={importModalVisible} visible={importModalVisible}
addMode={importModalAddMode}
onCancel={this.onImportModalCancel} onCancel={this.onImportModalCancel}
/> />
<ImportWordModal
visible={importWordModalVisible}
onCancel={this.onImportWordModalCancel}
catalogId={catalogId}
/>
<ImportStockWordDrawer <ImportStockWordDrawer
visible={importStockWordDrawerVisible} visible={importStockWordDrawerVisible}
onCancel={this.onImportStockWordDrawerCancel} onCancel={this.onImportStockWordDrawerCancel}
......
.data-model { .data-model {
display: flex; display: flex;
background-color: #F0F2F5; background-color: #fff;
height: 100%; height: 100%;
.left { .left {
width: 230px; width: 230px;
background-color: #fff; border-right: 1px solid #EFEFEF;
margin-right: 10px; overflow: hidden;
}
.tree-toggle-wrap {
position: relative;
width: 20px;
height: calc(100vh - 94px);
.tree-toggle {
display: flex;
justify-content: center;
align-items: center;
left: 0;
right: 0;
background: #f2f5fc;
position: absolute;
top: calc(50% - 40px);
width: 12px;
height: 80px;
border-radius: 0 12px 12px 0;
-ms-transform: translateY(-50%);
transform: translateY(-50%);
cursor: pointer;
}
} }
.right { .right {
width:calc(100% - 240px); width: calc(100% - 250px);
background-color: #fff; }
}
.data-model-collapse {
.left {
width: 0;
}
.right {
width: calc(100% - 20px);
} }
} }
\ No newline at end of file
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