Commit 11de4519 by zhaochengxiang

word导入逻辑修改

parent 72e477cb
...@@ -130,7 +130,7 @@ export function uploadWordTemplate(payload) { ...@@ -130,7 +130,7 @@ export function uploadWordTemplate(payload) {
} }
export function importWordGenerateModel(payload) { export function importWordGenerateModel(payload) {
return PostFile("/datamodeler/easyDataModelerExport/word", payload); return PostFile("/datamodeler/easyDataModelerExport/word/draft", payload);
} }
export function validateDataModel(payload) { export function validateDataModel(payload) {
......
...@@ -6,4 +6,5 @@ export const AnchorTimestamp = 'timestamp'; ...@@ -6,4 +6,5 @@ export const AnchorTimestamp = 'timestamp';
export const Action = 'action'; export const Action = 'action';
export const CatalogId = 'cid'; export const CatalogId = 'cid';
export const ModelerId = 'mid'; export const ModelerId = 'mid';
export const Hints = 'hints'; export const Hints = 'hints';
\ No newline at end of file export const ModelerData = 'mdata';
\ No newline at end of file
...@@ -4,17 +4,17 @@ import { Form, Button } from 'antd'; ...@@ -4,17 +4,17 @@ import { Form, Button } from 'antd';
import ImportAction from './ImportAction'; import ImportAction from './ImportAction';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { getQueryParam, showMessage } from '../../../../util'; import { getQueryParam, showMessage } from '../../../../util';
import { Action, CatalogId, ModelerId, Hints } from '../../../../util/constant'; import { Action, CatalogId, ModelerId, Hints, ModelerData } from '../../../../util/constant';
const EditModel = (props) => { const EditModel = (props) => {
const [ actionData, setActionData ] = useState({ action: '', catalogId: '', modelerId: '', hints: [] }); const [ actionData, setActionData ] = useState({ action: '', catalogId: '', modelerId: '', hints: [], roughModelerData: {} });
const [ modelerData, setModelerData ] = useState({}); const [ modelerData, setModelerData ] = useState({});
const [ terms, setTerms ] = useState([]); const [ terms, setTerms ] = useState([]);
const [ confirmLoading, setConfirmLoading ] = useState(false); const [ confirmLoading, setConfirmLoading ] = useState(false);
const { action, catalogId, modelerId, hints } = actionData; const { action, catalogId, modelerId, hints, roughModelerData } = actionData;
const [form] = Form.useForm(); const [form] = Form.useForm();
...@@ -23,13 +23,19 @@ const EditModel = (props) => { ...@@ -23,13 +23,19 @@ const EditModel = (props) => {
const _catalogId = getQueryParam(CatalogId, props.location.search); const _catalogId = getQueryParam(CatalogId, props.location.search);
const _modelerId = getQueryParam(ModelerId, props.location.search); const _modelerId = getQueryParam(ModelerId, props.location.search);
const _hintsStr = getQueryParam(Hints, props.location.search); const _hintsStr = getQueryParam(Hints, props.location.search);
const _modelerDataStr = getQueryParam(ModelerData, props.location.search)
let _hints = []; let _hints = [];
if ((_hintsStr||'') !== '') { if ((_hintsStr||'') !== '') {
_hints = _hintsStr.split(','); _hints = _hintsStr.split(',');
} }
setActionData({ action: _action, catalogId: _catalogId, modelerId: _modelerId, hints: _hints }); let _roughModelerData = {};
if ((_modelerDataStr||'') !== '') {
_roughModelerData = JSON.parse(_modelerDataStr);
}
setActionData({ action: _action, catalogId: _catalogId, modelerId: _modelerId, hints: _hints, roughModelerData: _roughModelerData });
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, []) }, [])
...@@ -141,7 +147,7 @@ const EditModel = (props) => { ...@@ -141,7 +147,7 @@ const EditModel = (props) => {
</div> </div>
<div className='position-absolute' style={{ top: 64, width: '100%' }}> <div className='position-absolute' style={{ top: 64, width: '100%' }}>
<div className='position-relative' style={{ margin: 15 }}> <div className='position-relative' style={{ margin: 15 }}>
<ImportAction hints={hints} onChange={onActionChange} action={action} modelerId={modelerId} form={form} terms={terms} /> <ImportAction hints={hints} onChange={onActionChange} action={action} modelerId={modelerId} form={form} terms={terms} roughModelerData={roughModelerData} />
</div> </div>
</div> </div>
</div> </div>
......
...@@ -98,7 +98,7 @@ class ExportDDLModal extends React.Component { ...@@ -98,7 +98,7 @@ class ExportDDLModal extends React.Component {
this.setState({ loadingDatabases: false, databases: data, filterDatabases: _filterData, currentDatabaseId: ((_filterData||[]).length>0)?_filterData[0]._id:'' }, () => { this.setState({ loadingDatabases: false, databases: data, filterDatabases: _filterData, currentDatabaseId: ((_filterData||[]).length>0)?_filterData[0]._id:'' }, () => {
if ((_filterData||[]).length>0) { if ((_filterData||[]).length>0) {
this.getSchemas(_filterData[0]); this.getSchemas(_filterData[0]?._id);
} else { } else {
this.setState({ schemas: [], currentSchemaId: '' }); this.setState({ schemas: [], currentSchemaId: '' });
} }
...@@ -111,12 +111,12 @@ class ExportDDLModal extends React.Component { ...@@ -111,12 +111,12 @@ class ExportDDLModal extends React.Component {
}) })
} }
getSchemas = (db) => { getSchemas = (dbId) => {
this.setState({ loadingSchemas: true }, () => { this.setState({ loadingSchemas: true }, () => {
dispatch({ dispatch({
type: 'datamodel.getSchemasByDatasourceId', type: 'datamodel.getSchemasByDatasourceId',
payload: { payload: {
parentId: db._id||'' parentId: dbId||''
}, },
callback: data => { callback: data => {
this.setState({ loadingSchemas: false, schemas: data, currentSchemaId: (data||[]).length>0?data[0]._id:'' }); this.setState({ loadingSchemas: false, schemas: data, currentSchemaId: (data||[]).length>0?data[0]._id:'' });
......
...@@ -8,7 +8,7 @@ import ImportActionIndex from './ImportActionIndex'; ...@@ -8,7 +8,7 @@ import ImportActionIndex from './ImportActionIndex';
import { dispatch } from '../../../../model'; import { dispatch } from '../../../../model';
const ImportAction = (props) => { const ImportAction = (props) => {
const { action, hints, onChange, form, modelerId, terms, ddl } = props; const { action, hints, onChange, form, modelerId, terms, ddl, roughModelerData } = props;
const [ constraints, setConstraints ] = useState([]); const [ constraints, setConstraints ] = useState([]);
const [ constraint, setConstraint ] = useState({}); const [ constraint, setConstraint ] = useState({});
...@@ -21,7 +21,7 @@ const ImportAction = (props) => { ...@@ -21,7 +21,7 @@ const ImportAction = (props) => {
useEffect(() =>{ useEffect(() =>{
if ((action||'')==='' || (action==='add'&&(hints||[]).length===0&&(ddl||'').length===0&&(modelerId||'')==='')) return; if ((action||'')==='' || (action==='add'&&(hints||[]).length===0&&(ddl||'').length===0&&(modelerId||'')===''&&roughModelerData==={})) return;
//初始化form状态 //初始化form状态
if (action==='add'||action==='edit') { if (action==='add'||action==='edit') {
...@@ -50,6 +50,8 @@ const ImportAction = (props) => { ...@@ -50,6 +50,8 @@ const ImportAction = (props) => {
getDraftUsingDDL((data.constraints||[]).length>0?data.constraints[0]:{}, {} ,ddl); getDraftUsingDDL((data.constraints||[]).length>0?data.constraints[0]:{}, {} ,ddl);
} else if ((modelerId||'')!=='') { } else if ((modelerId||'')!=='') {
getCurrentDataModel(); getCurrentDataModel();
} else if (roughModelerData !== {}) {
getExtraData(roughModelerData);
} }
} else if(action === 'edit' || action === 'detail') { } else if(action === 'edit' || action === 'detail') {
getCurrentDataModel(); getCurrentDataModel();
...@@ -144,23 +146,7 @@ const ImportAction = (props) => { ...@@ -144,23 +146,7 @@ const ImportAction = (props) => {
callback: data => { callback: data => {
setLoading(false); setLoading(false);
setModelerData(data||{}); getExtraData(data);
setConstraint(data.easyDataModelerModelingConstraint||{});
setTemplate(data.easyDataModelerModelingTemplate||{});
onChange && onChange(data||{});
getSupportedDatatypes();
if ((action==='add'&&((modelerId||'')!=='')) || action==='edit') {
form.setFieldsValue({
cnName: data.cnName||'',
name: data.name||'',
remark: data.remark||'',
easyDataModelerModelingConstraint: data.easyDataModelerModelingConstraint||'',
easyDataModelerModelingTemplate: data.easyDataModelerModelingTemplate||''
});
}
validateDataModel(data||{});
}, },
error: () => { error: () => {
setLoading(false); setLoading(false);
...@@ -168,6 +154,26 @@ const ImportAction = (props) => { ...@@ -168,6 +154,26 @@ const ImportAction = (props) => {
}) })
} }
const getExtraData = (data) => {
setModelerData(data||{});
setConstraint(data.easyDataModelerModelingConstraint||{});
setTemplate(data.easyDataModelerModelingTemplate||{});
onChange && onChange(data||{});
getSupportedDatatypes();
if ((action==='add'&&((modelerId||'')!=='')) || action==='edit') {
form.setFieldsValue({
cnName: data.cnName||'',
name: data.name||'',
remark: data.remark||'',
easyDataModelerModelingConstraint: data.easyDataModelerModelingConstraint||'',
easyDataModelerModelingTemplate: data.easyDataModelerModelingTemplate||''
});
}
validateDataModel(data||{});
}
const onConstraintChange = (value) => { const onConstraintChange = (value) => {
let currentConstraint = null; let currentConstraint = null;
......
...@@ -724,7 +724,7 @@ const ImportActionTable = (props) => { ...@@ -724,7 +724,7 @@ const ImportActionTable = (props) => {
const sourceOnClick = (id) => { const sourceOnClick = (id) => {
const timestamp = new Date().getTime(); const timestamp = new Date().getTime();
if (id.indexOf('Column=')) { if (id.split('=').length>=3) {
window.open(`/center-home/menu/metasearch?id=${id}&timestamp=${timestamp}`); window.open(`/center-home/menu/metasearch?id=${id}&timestamp=${timestamp}`);
} else { } else {
window.open(`/center-home/menu/datastandard?id=${id}&timestamp=${timestamp}`); window.open(`/center-home/menu/datastandard?id=${id}&timestamp=${timestamp}`);
......
...@@ -52,7 +52,7 @@ const ImportWordModal = (props) => { ...@@ -52,7 +52,7 @@ const ImportWordModal = (props) => {
if (reference==='stock') { if (reference==='stock') {
onCancel(true); onCancel(true);
} else { } else {
onCancel(true, data?.result, data?.firstId); onCancel(false, data||[]);
} }
} }
}, },
......
import React, { useState, useEffect, useRef } from "react"; import React, { useState, useEffect, useRef } from "react";
import { Space, Button, Tooltip, Modal, Select, Input, Divider } from 'antd'; import { Space, Button, Tooltip, Modal, Select, Input, Divider, Pagination } from 'antd';
import { EditOutlined, ReconciliationOutlined, DeleteOutlined } from '@ant-design/icons'; import { EditOutlined, ReconciliationOutlined, DeleteOutlined } from '@ant-design/icons';
import SmoothScroll from 'smooth-scroll'; import SmoothScroll from 'smooth-scroll';
import ProTable from "@ant-design/pro-table"; import ProTable from "@ant-design/pro-table";
import { Resizable } from 'react-resizable'; import { Resizable } from 'react-resizable';
import { dispatchLatest } from '../../../../model'; import { dispatchLatest } from '../../../../model';
import { showMessage, getQueryParam } from '../../../../util'; import { showMessage, getQueryParam, paginate } from '../../../../util';
import { AnchorId, AnchorTimestamp } from '../../../../util/constant'; import { AnchorId, AnchorTimestamp } from '../../../../util/constant';
import './ModelTable.less'; import './ModelTable.less';
...@@ -107,6 +107,9 @@ const ModelTable = (props) => { ...@@ -107,6 +107,9 @@ const ModelTable = (props) => {
} }
} }
]); ]);
const [ pagination, setPagination ] = useState( { pageNum: 1, pageSize: 20 } );
const { pageNum, pageSize } = pagination;
const [modal, contextHolder] = Modal.useModal(); const [modal, contextHolder] = Modal.useModal();
...@@ -117,10 +120,11 @@ const ModelTable = (props) => { ...@@ -117,10 +120,11 @@ const ModelTable = (props) => {
useEffect(() => { useEffect(() => {
setPagination({ pageNum: 1, pageSize: 20 });
setSelectedRowKeys([]); setSelectedRowKeys([]);
onSelect && onSelect([]); onSelect && onSelect([]);
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [ catalogId ]); }, [ catalogId, keyword ]);
useEffect(() => { useEffect(() => {
...@@ -290,6 +294,8 @@ const ModelTable = (props) => { ...@@ -290,6 +294,8 @@ const ModelTable = (props) => {
</div> </div>
); );
const _data = paginate(data||[], pageNum, pageSize);
return ( return (
<div className='model-table'> <div className='model-table'>
<ProTable <ProTable
...@@ -301,7 +307,7 @@ const ModelTable = (props) => { ...@@ -301,7 +307,7 @@ const ModelTable = (props) => {
rowSelection={rowSelection} rowSelection={rowSelection}
columns={columns||[]} columns={columns||[]}
rowKey={'id'} rowKey={'id'}
dataSource={data||[]} dataSource={_data||[]}
pagination={false} pagination={false}
options={{ options={{
density: true, density: true,
...@@ -320,6 +326,23 @@ const ModelTable = (props) => { ...@@ -320,6 +326,23 @@ const ModelTable = (props) => {
]} ]}
sticky sticky
/> />
<Pagination
className="text-center mt-3"
showSizeChanger
showQuickJumper
onChange={(_pageNum, _pageSize) => {
setPagination({ pageNum: _pageNum, pageSize: _pageSize || 20 });
}}
onShowSizeChange={(_pageNum, _pageSize) => {
setPagination({ pageNum: _pageNum || 1, pageSize: _pageSize });
}}
current={pageNum}
pageSize={pageSize}
defaultCurrent={1}
total={(data||[]).length}
pageSizeOptions={[10,20]}
showTotal={total => `共 ${total} 条`}
/>
{ contextHolder } { contextHolder }
</div> </div>
); );
......
@import '../../../../variables.less'; @import '../../../../variables.less';
.model-table { .model-table {
.yy-table { .yy-table {
height: calc(100vh - @header-height - @pm-4 - @pm-3 - @pm-3 - 37px - 37px - 48px - @pm-3) !important; height: calc(100vh - @header-height - @pm-4 - @pm-3 - @pm-3 - 37px - 37px - 48px - @pm-3 - 42px) !important;
overflow: auto !important; overflow: auto !important;
} }
......
...@@ -13,7 +13,7 @@ import ExportDDLModal from './Component/ExportDDLModal'; ...@@ -13,7 +13,7 @@ import ExportDDLModal from './Component/ExportDDLModal';
import RecatalogModal from './Component/RecatalogModal'; import RecatalogModal from './Component/RecatalogModal';
import { showMessage, showNotifaction } from '../../../util'; import { showMessage, showNotifaction } from '../../../util';
import { dispatch } from '../../../model'; import { dispatch } from '../../../model';
import { Action, CatalogId, ModelerId, Hints } from '../../../util/constant'; import { Action, CatalogId, ModelerId, Hints, ModelerData } from '../../../util/constant';
import { AppContext } from '../../../App'; import { AppContext } from '../../../App';
import './index.less'; import './index.less';
...@@ -344,19 +344,26 @@ class Model extends React.Component { ...@@ -344,19 +344,26 @@ class Model extends React.Component {
}); });
} }
onImportWordModalCancel = (refresh = false, result = '', id = '') => { onImportWordModalCancel = (refresh = false, datas = []) => {
const { catalogId } = this.state; const { catalogId } = this.state;
this.setState({ importWordModalVisible: false }); this.setState({ importWordModalVisible: false });
refresh && this.onTableChange(); refresh && this.onTableChange();
if ((result||'')!=='') { if ((datas||[]).length > 0) {
showMessage('info', result); if ((datas||[]).length > 5) {
} showMessage('info', '最多只能同时编辑5条信息');
}
if ((id||'')!=='') {
setTimeout(() => { setTimeout(() => {
window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${catalogId}&${ModelerId}=${id}`);
datas.slice(0, 5).forEach(data => {
window.open(`/data-govern/data-model-action?${Action}=add&${CatalogId}=${catalogId}&${ModelerData}=${JSON.stringify(data)}`, '_blank');
})
}, 1000); }, 1000);
} }
} }
......
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