Commit 24837872 by zhaochengxiang

模型增加发布状态

parent 3636cf1e
...@@ -50,6 +50,10 @@ export function* loadDataModelCatalog() { ...@@ -50,6 +50,10 @@ export function* loadDataModelCatalog() {
return yield call(datamodelerService.loadDataModelCatalog); return yield call(datamodelerService.loadDataModelCatalog);
} }
export function* loadDataModelStateCatalog() {
return yield call(datamodelerService.loadDataModelStateCatalog);
}
export function* saveDataModelCatalog(payload) { export function* saveDataModelCatalog(payload) {
return yield call(datamodelerService.saveDataModelCatalog, payload); return yield call(datamodelerService.saveDataModelCatalog, payload);
} }
...@@ -66,6 +70,10 @@ export function* getCurrentDataModelCatalog(payload) { ...@@ -66,6 +70,10 @@ export function* getCurrentDataModelCatalog(payload) {
return yield call(datamodelerService.getCurrentDataModelCatalog, payload); return yield call(datamodelerService.getCurrentDataModelCatalog, payload);
} }
export function* getCurrentDataModelStateCatalog(payload) {
return yield call(datamodelerService.getCurrentDataModelStateCatalog, payload);
}
export function* extractExcelContent(payload) { export function* extractExcelContent(payload) {
return yield call(datamodelerService.extractExcelContent, payload); return yield call(datamodelerService.extractExcelContent, payload);
} }
......
import { PostFile, GetJSON, PostJSON } from "../util/axios" import { PostFile, GetJSON, PostJSON, Get } from "../util/axios"
export function loadDataModelCatalog() { export function loadDataModelCatalog() {
return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelCatalog"); return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelCatalog");
} }
export function loadDataModelStateCatalog() {
return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelStateCatalog");
}
export function saveDataModelCatalog(payload) { export function saveDataModelCatalog(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/saveDataModelCatalog", payload); return PostJSON("/datamodeler/easyDataModelerCURD/saveDataModelCatalog", payload);
} }
...@@ -22,6 +26,11 @@ export function getCurrentDataModelCatalog(payload) { ...@@ -22,6 +26,11 @@ export function getCurrentDataModelCatalog(payload) {
return GetJSON("/datamodeler/easyDataModelerCURD/getCurrentDataModelCatalog", payload); return GetJSON("/datamodeler/easyDataModelerCURD/getCurrentDataModelCatalog", payload);
} }
//读取当前模型目录中的模型(状态)
export function getCurrentDataModelStateCatalog(payload) {
return GetJSON("/datamodeler/easyDataModelerCURD/getCurrentDataModelStateCatalog", payload);
}
export function extractExcelContent(payload) { export function extractExcelContent(payload) {
return PostFile("/datamodeler/easyDataModelerDesign/kickStart", payload); return PostFile("/datamodeler/easyDataModelerDesign/kickStart", payload);
} }
......
...@@ -138,7 +138,7 @@ const EditModel = (props) => { ...@@ -138,7 +138,7 @@ const EditModel = (props) => {
<span style={{ fontSize: 16, fontWeight: 'bold', color: '#000' }}>{title}</span> <span style={{ fontSize: 16, fontWeight: 'bold', color: '#000' }}>{title}</span>
{actionBtn} {actionBtn}
</div> </div>
<div className='position-absolute' style={{ top: 44 }}> <div className='position-absolute' style={{ top: 44, 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} />
</div> </div>
......
...@@ -6,7 +6,6 @@ import { HTML5Backend } from 'react-dnd-html5-backend'; ...@@ -6,7 +6,6 @@ import { HTML5Backend } from 'react-dnd-html5-backend';
import update from 'immutability-helper'; import update from 'immutability-helper';
import Helper from './Help'; import Helper from './Help';
import './ImportActionIndex.less';
import { showMessage, highlightSearchContentByTerms } from '../../../../util'; import { showMessage, highlightSearchContentByTerms } from '../../../../util';
const { Option } = Select; const { Option } = Select;
......
.model-import-action-index {
.yy-table {
max-height: 200px !important;
overflow: auto !important;
}
}
\ No newline at end of file
.model-import-action-table { .model-import-action-table {
.yy-table {
max-height: 400px !important;
overflow: auto !important;
}
.yy-table-expanded-row { .yy-table-expanded-row {
.yy-radio-wrapper { .yy-radio-wrapper {
white-space: normal !important; white-space: normal !important;
......
import React, { useState, useEffect, useRef } from "react"; import React, { useState, useEffect, useRef } from "react";
import { Tooltip, Tree, Modal, Spin } from "antd"; import { Tooltip, Tree, Modal, Spin, Select } from "antd";
import { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined } from '@ant-design/icons'; import { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined } from '@ant-design/icons';
import UpdateTreeItemModal from './UpdateTreeItemModal'; import UpdateTreeItemModal from './UpdateTreeItemModal';
...@@ -9,10 +9,15 @@ import { AnchorId, AnchorTimestamp } from '../../../../util/constant'; ...@@ -9,10 +9,15 @@ import { AnchorId, AnchorTimestamp } from '../../../../util/constant';
import './ModelTree.less'; import './ModelTree.less';
const { Option } = Select;
const ModelTree = (props) => { const ModelTree = (props) => {
const { onSelect } = props; const { onSelect, onStateChange } = props;
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const [ loadingStates, setLoadingStates ] = useState(false);
const [ modelStates, setModelStates ] = useState(null);
const [ currentModelState, setCurrentModelState ] = useState('');
const [ treeData, setTreeData ] = useState(null); const [ treeData, setTreeData ] = useState(null);
const [ item, setItem ] = useState(null); const [ item, setItem ] = useState(null);
const [ visible, setVisible ] = useState(false); const [ visible, setVisible ] = useState(false);
...@@ -35,6 +40,11 @@ const ModelTree = (props) => { ...@@ -35,6 +40,11 @@ const ModelTree = (props) => {
} else { } else {
getTreeData(); getTreeData();
} }
if (!modelStates) {
getModelStates();
}
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [timestamp]) }, [timestamp])
...@@ -130,6 +140,20 @@ const ModelTree = (props) => { ...@@ -130,6 +140,20 @@ const ModelTree = (props) => {
}) })
} }
const getModelStates = () => {
setLoadingStates(true);
dispatch({
type: 'datamodel.loadDataModelStateCatalog',
callback: data => {
setLoadingStates(false);
setModelStates([{ name: 'all', id: '', cnName: '所有状态' }, ...(data?.subCatalogs||[])]);
},
error: () => {
setLoadingStates(false);
}
});
}
const generateList = (treeData, list) => { const generateList = (treeData, list) => {
for (let i = 0; i < treeData.length; i++) { for (let i = 0; i < treeData.length; i++) {
const node = treeData[i]; const node = treeData[i];
...@@ -161,6 +185,11 @@ const ModelTree = (props) => { ...@@ -161,6 +185,11 @@ const ModelTree = (props) => {
setAutoExpandParent(false); setAutoExpandParent(false);
}; };
const onModelStateChange = (value) => {
setCurrentModelState(value);
onStateChange && onStateChange(value);
}
const onTreeSelect = (keys,data) => { const onTreeSelect = (keys,data) => {
if ((keys||[]).length === 0) { if ((keys||[]).length === 0) {
...@@ -237,24 +266,49 @@ const ModelTree = (props) => { ...@@ -237,24 +266,49 @@ const ModelTree = (props) => {
return ( return (
<div className='model-tree'> <div className='model-tree'>
<div <div
className='p-4' className='p-3'
style={{
display: 'flex',
borderBottom: "1px solid #EFEFEF",
height: 57,
alignItems: 'center'
}}
>
<span className='pr-2'>模型状态:</span>
<Select
style={{ width: 120 }}
onChange={onModelStateChange}
loading={loadingStates}
value={currentModelState}
>
{
(modelStates||[]).map(item => {
return (
<Option key={item.id} value={item.id}>{item.cnName||''}</Option>
);
})
}
</Select>
</div>
<div
className='p-3'
style={{ style={{
display: 'flex', display: 'flex',
borderBottom: "1px solid #EFEFEF", borderBottom: "1px solid #EFEFEF",
height: 52, height: 57,
alignItems: 'center' alignItems: 'center'
}} }}
> >
<Tooltip title="新增目录"> <Tooltip title="新增目录">
<PlusOutlined onClick={add} style={{ fontSize:16,cursor:'pointer' }} /> <PlusOutlined onClick={add} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
<Tooltip title="修改" className='ml-4'> <Tooltip title="修改目录" className='ml-4'>
<EditOutlined onClick={update} style={{ fontSize:16,cursor:'pointer' }} /> <EditOutlined onClick={update} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
<Tooltip title="刷新" className='ml-4'> <Tooltip title="刷新目录" className='ml-4'>
<SyncOutlined onClick={refresh} style={{ fontSize:16,cursor:'pointer' }} /> <SyncOutlined onClick={refresh} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
<Tooltip title="删除" className='ml-4'> <Tooltip title="删除目录" className='ml-4'>
<DeleteOutlined onClick={deleteNode} style={{ fontSize:16,cursor:'pointer' }} /> <DeleteOutlined onClick={deleteNode} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
</div> </div>
......
@import '../../../../variables.less'; @import '../../../../variables.less';
.model-tree { .model-tree {
.yy-tree-list { .yy-tree-list {
height: calc(100vh - @header-height - @pm-4 - @pm-3 - 37px - @pm-3) !important; height: calc(100vh - @header-height - @pm-4 - 54px - 54px - @pm-3) !important;
overflow: auto !important; overflow: auto !important;
} }
} }
\ No newline at end of file
...@@ -37,10 +37,17 @@ class Model extends React.Component { ...@@ -37,10 +37,17 @@ class Model extends React.Component {
selectModelerNames: [], selectModelerNames: [],
keyword: '', keyword: '',
exportErwinLoading: false, exportErwinLoading: false,
hints: [] hints: [],
modelStateId: ''
} }
} }
onModelStateChange = (value) => {
this.setState({ modelStateId: value }, () => {
this.setFilterData();
})
}
onTreeSelect = (key) => { onTreeSelect = (key) => {
this.setState({ catalogId: key, keyword: '' }, () => { this.setState({ catalogId: key, keyword: '' }, () => {
if (!key || key==='') { if (!key || key==='') {
...@@ -103,12 +110,11 @@ class Model extends React.Component { ...@@ -103,12 +110,11 @@ class Model extends React.Component {
} }
setFilterData = () => { setFilterData = () => {
const { keyword, tableData } = this.state; const { keyword, tableData, modelStateId } = this.state;
const _filterData = (tableData||[]).filter(item => (item.name||'').indexOf(keyword)!==-1 || (item.cnName).indexOf(keyword)!==-1); const _filterData = (tableData||[]).filter(item => (modelStateId===''||modelStateId===item.state?.id) && ((item.name||'').indexOf(keyword)!==-1||(item.cnName).indexOf(keyword)!==-1));
this.setState({ filterTableData: _filterData }); this.setState({ filterTableData: _filterData });
} }
onImportExcelBtnClick = () => { onImportExcelBtnClick = () => {
...@@ -269,7 +275,7 @@ class Model extends React.Component { ...@@ -269,7 +275,7 @@ class Model extends React.Component {
return ( return (
<div className='data-model'> <div className='data-model'>
<div className='left'> <div className='left'>
<ModelTree onSelect={this.onTreeSelect} {...this.props} /> <ModelTree onStateChange={this.onModelStateChange} onSelect={this.onTreeSelect} {...this.props} />
</div> </div>
<div className='right'> <div className='right'>
<div <div
......
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