Commit 24837872 by zhaochengxiang

模型增加发布状态

parent 3636cf1e
......@@ -50,6 +50,10 @@ export function* loadDataModelCatalog() {
return yield call(datamodelerService.loadDataModelCatalog);
}
export function* loadDataModelStateCatalog() {
return yield call(datamodelerService.loadDataModelStateCatalog);
}
export function* saveDataModelCatalog(payload) {
return yield call(datamodelerService.saveDataModelCatalog, payload);
}
......@@ -66,6 +70,10 @@ export function* getCurrentDataModelCatalog(payload) {
return yield call(datamodelerService.getCurrentDataModelCatalog, payload);
}
export function* getCurrentDataModelStateCatalog(payload) {
return yield call(datamodelerService.getCurrentDataModelStateCatalog, payload);
}
export function* 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() {
return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelCatalog");
}
export function loadDataModelStateCatalog() {
return GetJSON("/datamodeler/easyDataModelerCURD/loadDataModelStateCatalog");
}
export function saveDataModelCatalog(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/saveDataModelCatalog", payload);
}
......@@ -22,6 +26,11 @@ export function getCurrentDataModelCatalog(payload) {
return GetJSON("/datamodeler/easyDataModelerCURD/getCurrentDataModelCatalog", payload);
}
//读取当前模型目录中的模型(状态)
export function getCurrentDataModelStateCatalog(payload) {
return GetJSON("/datamodeler/easyDataModelerCURD/getCurrentDataModelStateCatalog", payload);
}
export function extractExcelContent(payload) {
return PostFile("/datamodeler/easyDataModelerDesign/kickStart", payload);
}
......
......@@ -138,7 +138,7 @@ const EditModel = (props) => {
<span style={{ fontSize: 16, fontWeight: 'bold', color: '#000' }}>{title}</span>
{actionBtn}
</div>
<div className='position-absolute' style={{ top: 44 }}>
<div className='position-absolute' style={{ top: 44, width: '100%' }}>
<div className='position-relative' style={{ margin: 15 }}>
<ImportAction hints={hints} onChange={onActionChange} action={action} modelerId={modelerId} form={form} terms={terms} />
</div>
......
......@@ -6,7 +6,6 @@ import { HTML5Backend } from 'react-dnd-html5-backend';
import update from 'immutability-helper';
import Helper from './Help';
import './ImportActionIndex.less';
import { showMessage, highlightSearchContentByTerms } from '../../../../util';
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 {
.yy-table {
max-height: 400px !important;
overflow: auto !important;
}
.yy-table-expanded-row {
.yy-radio-wrapper {
white-space: normal !important;
......
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 UpdateTreeItemModal from './UpdateTreeItemModal';
......@@ -9,10 +9,15 @@ import { AnchorId, AnchorTimestamp } from '../../../../util/constant';
import './ModelTree.less';
const { Option } = Select;
const ModelTree = (props) => {
const { onSelect } = props;
const { onSelect, onStateChange } = props;
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 [ item, setItem ] = useState(null);
const [ visible, setVisible ] = useState(false);
......@@ -35,6 +40,11 @@ const ModelTree = (props) => {
} else {
getTreeData();
}
if (!modelStates) {
getModelStates();
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [timestamp])
......@@ -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) => {
for (let i = 0; i < treeData.length; i++) {
const node = treeData[i];
......@@ -161,6 +185,11 @@ const ModelTree = (props) => {
setAutoExpandParent(false);
};
const onModelStateChange = (value) => {
setCurrentModelState(value);
onStateChange && onStateChange(value);
}
const onTreeSelect = (keys,data) => {
if ((keys||[]).length === 0) {
......@@ -237,24 +266,49 @@ const ModelTree = (props) => {
return (
<div className='model-tree'>
<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={{
display: 'flex',
borderBottom: "1px solid #EFEFEF",
height: 52,
height: 57,
alignItems: 'center'
}}
>
<Tooltip title="新增目录">
<PlusOutlined onClick={add} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip>
<Tooltip title="修改" className='ml-4'>
<Tooltip title="修改目录" className='ml-4'>
<EditOutlined onClick={update} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip>
<Tooltip title="刷新" className='ml-4'>
<Tooltip title="刷新目录" className='ml-4'>
<SyncOutlined onClick={refresh} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip>
<Tooltip title="删除" className='ml-4'>
<Tooltip title="删除目录" className='ml-4'>
<DeleteOutlined onClick={deleteNode} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip>
</div>
......
@import '../../../../variables.less';
.model-tree {
.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;
}
}
\ No newline at end of file
......@@ -37,10 +37,17 @@ class Model extends React.Component {
selectModelerNames: [],
keyword: '',
exportErwinLoading: false,
hints: []
hints: [],
modelStateId: ''
}
}
onModelStateChange = (value) => {
this.setState({ modelStateId: value }, () => {
this.setFilterData();
})
}
onTreeSelect = (key) => {
this.setState({ catalogId: key, keyword: '' }, () => {
if (!key || key==='') {
......@@ -103,12 +110,11 @@ class Model extends React.Component {
}
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 });
}
onImportExcelBtnClick = () => {
......@@ -269,7 +275,7 @@ class Model extends React.Component {
return (
<div className='data-model'>
<div className='left'>
<ModelTree onSelect={this.onTreeSelect} {...this.props} />
<ModelTree onStateChange={this.onModelStateChange} onSelect={this.onTreeSelect} {...this.props} />
</div>
<div className='right'>
<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