Commit 8c0fa746 by zhaochengxiang

模型word导入

parent 34d7202d
...@@ -154,6 +154,10 @@ export function* uploadWordTemplate(payload) { ...@@ -154,6 +154,10 @@ export function* uploadWordTemplate(payload) {
return yield call(datamodelerService.uploadWordTemplate, payload); return yield call(datamodelerService.uploadWordTemplate, payload);
} }
export function* importWordGenerateModel(payload) {
return yield call(datamodelerService.importWordGenerateModel, payload);
}
export function* validateDataModel(payload) { export function* validateDataModel(payload) {
return yield call(datamodelerService.validateDataModel, payload); return yield call(datamodelerService.validateDataModel, payload);
} }
......
...@@ -108,6 +108,10 @@ export function uploadWordTemplate(payload) { ...@@ -108,6 +108,10 @@ export function uploadWordTemplate(payload) {
return PostFile("/datamodeler/easyDataModelerExport/word/uploadTemplate", payload); return PostFile("/datamodeler/easyDataModelerExport/word/uploadTemplate", payload);
} }
export function importWordGenerateModel(payload) {
return PostFile("/datamodeler/easyDataModelerExport/word", payload);
}
export function validateDataModel(payload) { export function validateDataModel(payload) {
return PostJSON("/datamodeler/easyDataModelerConstraint/validateDataModel", payload); return PostJSON("/datamodeler/easyDataModelerConstraint/validateDataModel", payload);
} }
......
import React, { useEffect, useState, useContext } from 'react'; import React, { useEffect, useState, useContext } from 'react';
import { Space, Select, Button, Modal, Cascader, TreeSelect } from 'antd'; import { Space, Select, Button, Modal, TreeSelect } from 'antd';
import DatasourceList from './Component/DatasourceList'; import DatasourceList from './Component/DatasourceList';
import UpdateDatasourceModal from './Component/UpdateDatasourceModal'; import UpdateDatasourceModal from './Component/UpdateDatasourceModal';
...@@ -93,6 +93,8 @@ const DatasourceManage = (props) => { ...@@ -93,6 +93,8 @@ const DatasourceManage = (props) => {
} }
} }
} }
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [env]) }, [env])
useEffect(() => { useEffect(() => {
......
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.importWordGenerateModel',
payload: {
params: {
catalogId
},
fileList
},
callback: data => {
setConfirmLoading(false);
reset();
onCancel && onCancel(true);
},
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
...@@ -8,6 +8,7 @@ import WordTemplateModal from './Component/WordTemplateModal'; ...@@ -8,6 +8,7 @@ import WordTemplateModal from './Component/WordTemplateModal';
import TemplateCURDModal from './Component/TemplateCURDModal'; import TemplateCURDModal from './Component/TemplateCURDModal';
import ConstraintDetailModal from './Component/ConstraintDetailModal'; import ConstraintDetailModal from './Component/ConstraintDetailModal';
import ImportModal from './Component/ImportModal'; import ImportModal from './Component/ImportModal';
import ImportWordModal from './Component/ImportWordModal';
import ExportDDLModal from './Component/ExportDDLModal'; import ExportDDLModal from './Component/ExportDDLModal';
import { showMessage, showNotifaction } from '../../../util'; import { showMessage, showNotifaction } from '../../../util';
import { dispatch } from '../../../model'; import { dispatch } from '../../../model';
...@@ -23,6 +24,7 @@ class Model extends React.Component { ...@@ -23,6 +24,7 @@ class Model extends React.Component {
templateCURDModalVisible: false, templateCURDModalVisible: false,
constraintDetailModalVisible: false, constraintDetailModalVisible: false,
importModalVisible: false, importModalVisible: false,
importWordModalVisible: false,
exportDDLModalVisible: false, exportDDLModalVisible: false,
catalogId: '', catalogId: '',
importModalAction: '', importModalAction: '',
...@@ -123,6 +125,17 @@ class Model extends React.Component { ...@@ -123,6 +125,17 @@ class Model extends React.Component {
this.setState({ importModalVisible: true, importModalAction: 'add', importModalAddMode: 'excel-copy' }); this.setState({ importModalVisible: true, importModalAction: 'add', importModalAddMode: 'excel-copy' });
} }
onImportWordBtnClick = () => {
const { catalogId } = this.state;
if (!catalogId || catalogId==='') {
showMessage('info', '请先选择目录');
return;
}
this.setState({ importWordModalVisible: true });
}
onImportDDLBtnClick = () => { onImportDDLBtnClick = () => {
const { catalogId } = this.state; const { catalogId } = this.state;
if (!catalogId || catalogId==='') { if (!catalogId || catalogId==='') {
...@@ -224,13 +237,17 @@ class Model extends React.Component { ...@@ -224,13 +237,17 @@ class Model extends React.Component {
refresh && this.onTableChange(); refresh && this.onTableChange();
} }
onImportWordModalCancel = (refresh = false) => {
this.setState({ importWordModalVisible: false });
refresh && this.onTableChange();
}
onExportDDLModalCancel = () => { onExportDDLModalCancel = () => {
this.setState({ exportDDLModalVisible: false }); this.setState({ exportDDLModalVisible: false });
} }
render() { render() {
const { importModalVisible, catalogId, importModalAction, loadingTableData, modelerId, selectModelerIds, keyword, filterTableData, selectModelerNames, importModalAddMode, exportErwinLoading, exportDDLModalVisible, templateCURDModalVisible, wordTemplateModalVisible, constraintDetailModalVisible } = this.state; const { importModalVisible, catalogId, importModalAction, loadingTableData, modelerId, selectModelerIds, keyword, filterTableData, selectModelerNames, importModalAddMode, exportErwinLoading, exportDDLModalVisible, templateCURDModalVisible, wordTemplateModalVisible, constraintDetailModalVisible, importWordModalVisible } = this.state;
const content = ( const content = (
<ModelTable loading={loadingTableData} catalogId={catalogId} data={filterTableData} onChange={this.onTableChange} onSelect={this.onTableSelect} onItemAction={this.onTableItemAction} {...this.props} /> <ModelTable loading={loadingTableData} catalogId={catalogId} data={filterTableData} onChange={this.onTableChange} onSelect={this.onTableSelect} onItemAction={this.onTableItemAction} {...this.props} />
...@@ -276,6 +293,7 @@ class Model extends React.Component { ...@@ -276,6 +293,7 @@ class Model extends React.Component {
<span>模型创建:</span> <span>模型创建:</span>
<Button type="primary" onClick={this.onImportExcelBtnClick}>Excel导入</Button> <Button type="primary" onClick={this.onImportExcelBtnClick}>Excel导入</Button>
<Button type="primary" onClick={this.onImportExcelCopyBtnClick}>Excel复制粘贴</Button> <Button type="primary" onClick={this.onImportExcelCopyBtnClick}>Excel复制粘贴</Button>
<Button type="primary" onClick={this.onImportWordBtnClick}>Word导入</Button>
{/* <Button type="primary" onClick={this.onImportDDLBtnClick}>DDL导入</Button> */} {/* <Button type="primary" onClick={this.onImportDDLBtnClick}>DDL导入</Button> */}
</Space> </Space>
<Space> <Space>
...@@ -319,6 +337,12 @@ class Model extends React.Component { ...@@ -319,6 +337,12 @@ class Model extends React.Component {
modelerId={modelerId} modelerId={modelerId}
/> />
<ImportWordModal
visible={importWordModalVisible}
onCancel={this.onImportWordModalCancel}
catalogId={catalogId}
/>
<ExportDDLModal <ExportDDLModal
visible={exportDDLModalVisible} visible={exportDDLModalVisible}
ids={selectModelerIds} ids={selectModelerIds}
......
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