Commit 895c5762 by zhaochengxiang

批量删除

parent e7d4acbf
......@@ -154,6 +154,10 @@ export function* deleteDataModel(payload) {
return yield call(datamodelerService.deleteDataModel, payload);
}
export function* deleteDataModels(payload) {
return yield call(datamodelerService.deleteDataModels, payload);
}
export function* getDataModel(payload) {
return yield call(datamodelerService.getDataModel, payload);
}
......
......@@ -109,6 +109,10 @@ export function deleteDataModel(payload) {
return PostJSON("/datamodeler/easyDataModelerCURD/deleteDataModel", payload);
}
export function deleteDataModels(payload) {
return Post("/datamodeler/easyDataModelerCURD/deleteDataModels", payload);
}
export function getDataModel(payload) {
return GetJSON("/datamodeler/easyDataModelerCURD/getDataModel", payload);
}
......
import React from "react";
import { message, notification } from 'antd';
import { message, notification, Modal, Space, Button } from 'antd';
import { Redirect } from 'react-router-dom';
import { ExclamationCircleOutlined } from '@ant-design/icons';
import { dispatchLatest, action } from '../model';
import { set_sess_state } from "../model/reducer";
......@@ -84,6 +86,42 @@ export const Assert = function (arg, msg) {
}
}
export class DeleteTipModal extends React.Component {
render() {
const { visible=false, tip, onCancel } = this.props;
return <Modal
title=''
visible={visible}
closable={false}
footer={null}
>
<div
className='mt-3'
style={{
fontSize: '16px',
fontWeight: 500,
lineHeight: 1.4
}}
>
<ExclamationCircleOutlined style={{ color: '#faad14' }} />
<span className='ml-3'>{tip||''}</span>
</div>
<div className='flex mt-5' style={{ justifyContent: 'flex-end' }}>
<Space>
<Button onClick={() => onCancel()}>
取消
</Button>
<Button type='primary' onClick={() => onCancel(true)}>
确定
</Button>
</Space>
</div>
</Modal>
}
}
export const paginate = function (items, pageNum = 1, pageSize = 10) {
const offset = (pageNum - 1) * pageSize;
return items.filter((item, i) => i >= offset && i < offset + pageSize);
......
......@@ -12,9 +12,10 @@ import './ModelTable.less';
const ModelTable = (props) => {
const { data, onChange, onItemAction, onSelect, onHistory, catalogId, keyword, onAutoCreateTable, offset = null, modelId = null, view } = props;
const { data, onChange, onItemAction, onSelect, onHistory, catalogId, keyword, onAutoCreateTable, offset = null, modelId = null, view, selectModelerIds, onSubSelect } = props;
const [ selectedRowKeys, setSelectedRowKeys ] = useState([]);
const [ subSelectedRowKeys, setSubSelectedRowKeys ] = useState([]);
const [ subData, setSubData ] = useState([]);
const moreMenu = (record) => {
......@@ -196,12 +197,20 @@ const ModelTable = (props) => {
setPagination({...pagination, pageNum: 1 });
}
setSelectedRowKeys([]);
if ((modelId||'') === '') {
onSelect && onSelect([]);
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [ catalogId, keyword, offset ]);
useEffect(() => {
if ((selectModelerIds||[]).length === 0) {
setSelectedRowKeys([]);
setSubSelectedRowKeys([]);
}
}, [selectModelerIds])
useEffect(() => {
if ((anchorId||'') !== '') {
shouldScrollRef.current = true;
......@@ -344,9 +353,27 @@ const ModelTable = (props) => {
const onSelectChange = keys => {
setSelectedRowKeys(keys);
onSelect && onSelect(keys);
if ((modelId||'') !== '') {
onSubSelect && onSubSelect(keys, subData[0].id);
} else {
onSelect && onSelect([...subSelectedRowKeys, ...keys]);
}
};
const onSubSelectChange = (keys, id) => {
if ((keys||[]).length === 0) {
const index = subSelectedRowKeys.findIndex((rowKey) => rowKey === id);
const newSubSelectedRowKeys = [...subSelectedRowKeys];
newSubSelectedRowKeys.splice(index, 1);
setSubSelectedRowKeys(newSubSelectedRowKeys);
onSelect && onSelect([...newSubSelectedRowKeys, ...selectedRowKeys]);
} else {
const newSubSelectedRowKeys = [...subSelectedRowKeys, id];
onSelect && onSelect([...newSubSelectedRowKeys, ...selectedRowKeys]);
}
}
const rowSelection = {
selectedRowKeys,
onChange: onSelectChange,
......@@ -371,6 +398,7 @@ const ModelTable = (props) => {
expandable = {
expandedRowRender: record => <ModelTable
modelId={record?.checkedOutId}
onSubSelect={onSubSelectChange}
{...props}
/>,
expandIcon: ({ expanded, onExpand, record }) => {
......@@ -384,12 +412,22 @@ const ModelTable = (props) => {
}
};
}
} else {
expandable = {
expandedRowRender: record => <></>,
expandIcon: ({ expanded, onExpand, record }) => {
return null;
},
rowExpandable: record => {
return false;
}
}
}
return (
<div className={classes}>
<Table
rowSelection={modelId?null:rowSelection}
rowSelection={rowSelection}
columns={columns||[]}
rowKey={'id'}
dataSource={modelId?(subData||[]):(_data||[])}
......
......@@ -13,7 +13,7 @@ import ExportOtherModal from './Component/ExportOtherModal';
import RecatalogModal from './Component/RecatalogModal';
import HistoryAndVersionDrawer from './Component/HistoryAndVersionDrawer';
import StartFlowModal from './Component/StartFlowModal';
import { showMessage, showNotifaction, inputWidth } from '../../../util';
import { showMessage, showNotifaction, inputWidth, DeleteTipModal } from '../../../util';
import { dispatch, dispatchLatestHomepage } from '../../../model';
import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Editable, StateId } from '../../../util/constant';
import { AppContext } from '../../../App';
......@@ -51,6 +51,7 @@ class Model extends React.Component {
currentModel: {},
offset: null,
expandTree: true,
showDeleteTip: false,
}
}
......@@ -232,6 +233,17 @@ class Model extends React.Component {
this.setState({ recatalogModalVisible: true });
}
onBatchDeleteBtnClick = () => {
const { selectModelerIds } = this.state;
if ((selectModelerIds||[]).length === 0) {
showMessage('info', '请先选择模型');
return;
}
this.setState({ showDeleteTip: true });
}
onAutoCreateTable = (item) => {
this.setState({ exportDDLModalVisible: true, selectModelerNames: [item.name||''], exportDDLModalReference: 'createTable', currentModel: item });
......@@ -327,6 +339,7 @@ class Model extends React.Component {
if (refresh) {
this.onTableChange();
this.setState({ selectModelerIds: [] });
}
}
......@@ -349,6 +362,8 @@ class Model extends React.Component {
this.onExportOtherBtnClick();
} else if (key === 'catalog-change') {
this.onRecatalogBtnClick();
} else if (key === 'delete') {
this.onBatchDeleteBtnClick();
}
}
......@@ -356,8 +371,31 @@ class Model extends React.Component {
this.setState({ expandTree: !this.state.expandTree });
}
onDeleteTipModalCancel = (refresh=false) => {
const { selectModelerIds } = this.state;
this.setState({ showDeleteTip: false });
if (refresh) {
dispatch({
type: 'datamodel.deleteDataModels',
payload: {
params: {
easyDataModelerDataModelIds: selectModelerIds.join(',')
}
},
callback: (tip) => {
this.onTableChange();
this.setState({ selectModelerIds: [] });
if ((tip||'')!=='') {
showNotifaction('提示', tip, 5);
}
}
})
}
}
render() {
const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, exportDDLModalVisible, exportOtherModalVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible, expandTree } = this.state;
const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, exportDDLModalVisible, exportOtherModalVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible, expandTree, showDeleteTip } = this.state;
const content = (
<ModelTable
......@@ -366,6 +404,7 @@ class Model extends React.Component {
view={currentView}
data={filterTableData}
offset={offset}
selectModelerIds={selectModelerIds}
onChange={this.onTableChange}
onSelect={this.onTableSelect}
onItemAction={this.onTableItemAction}
......@@ -394,6 +433,11 @@ class Model extends React.Component {
变更目录
</Tooltip>
</Menu.Item>
<Menu.Item key='delete' disabled={(selectModelerIds||[]).length===0}>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}>
删除
</Tooltip>
</Menu.Item>
</Menu>
}
......@@ -402,7 +446,7 @@ class Model extends React.Component {
});
let disableStartFlow = false, startFlowTip = '';
if ((currentView==='dir'&&currentModelState!=='1')||(currentView!=='dir'&&catalogId!=='1')) {
if ((currentView==='dir'&&currentModelState==='2')||(currentView!=='dir'&&catalogId==='2')) {
disableStartFlow = true;
startFlowTip = '只有草稿状态下的模型才能送审';
} else if ((selectModelerIds||[]).length===0) {
......@@ -538,6 +582,12 @@ class Model extends React.Component {
visible={startFlowModalVisible}
onCancel={this.onStartFlowModalCancel}
/>
<DeleteTipModal
visible={showDeleteTip}
tip='您确定要删除这些模型吗?'
onCancel={this.onDeleteTipModalCancel}
/>
</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