Commit 5f8ef31b by zhaochengxiang

模型列表权限

parent d6496c28
...@@ -59,16 +59,66 @@ class Model extends React.Component { ...@@ -59,16 +59,66 @@ class Model extends React.Component {
showDeleteTip: false, showDeleteTip: false,
colSettingModalVisible: false, colSettingModalVisible: false,
visibleColNames: [], visibleColNames: [],
canImport: false,
canStartFlow: false,
canChangeCatalog: false,
canDelete: false,
permissions: [],
} }
} }
componentDidMount() { componentDidMount() {
this.getPermissions();
this.getModelStates(); this.getModelStates();
this.getPreference(); this.getPreference();
window?.addEventListener("storage", this.modelEventChange); window?.addEventListener("storage", this.modelEventChange);
} }
componentDidUpdate(prevProps, prevState) {
const { selectModelerIds, tableData, catalogId, permissions } = this.state;
if (selectModelerIds !== prevState.selectModelerIds || tableData !== prevState.tableData) {
let canImport = true, canStartFlow = true, canChangeCatalog = true, canDelete = true;
selectModelerIds?.forEach(id => {
const index = (tableData||[]).findIndex(item => item.id?.split('-')[0] === id?.split('-')[0]);
if (index !== -1) {
tableData[index].optionList?.forEach(item => {
if (item.name === '导出' && item.enabled === false) {
canImport = false;
} else if (item.name === '送审' && item.enabled === false) {
canStartFlow = false;
} else if (item.name === '变更目录' && item.enabled === false) {
canChangeCatalog = false;
} else if (item.name === '删除' && item.enabled === false) {
canDelete = false;
}
});
}
});
this.setState({
canImport,
canStartFlow,
canChangeCatalog,
canDelete,
});
} else if (catalogId !== prevState.catalogId || permissions !== prevState.permissions) {
let canAdd = true;
const index = (permissions||[]).findIndex(item => item.privilegedObjectId === catalogId);
if (index !== -1) {
permissions[index].optionList?.forEach(item => {
if (item.name === '新增' && item.enabled === false) {
canAdd = false;
}
});
};
this.setState({
canAdd
});
}
}
componentWillUnmount() { componentWillUnmount() {
window?.removeEventListener("storage", this.modelEventChange); window?.removeEventListener("storage", this.modelEventChange);
} }
...@@ -79,6 +129,17 @@ class Model extends React.Component { ...@@ -79,6 +129,17 @@ class Model extends React.Component {
} }
} }
getPermissions = () => {
dispatch({
type: 'datamodel.getDesignPrivilege',
callback: data => {
this.setState({
permissions: data
});
}
});
}
getModelStates = () => { getModelStates = () => {
this.setState({ loadingStates: true }, () => { this.setState({ loadingStates: true }, () => {
dispatch({ dispatch({
...@@ -464,7 +525,7 @@ class Model extends React.Component { ...@@ -464,7 +525,7 @@ class Model extends React.Component {
} }
render() { render() {
const { importModalVisible, catalogId, loadingTableData, selectModelerIds, keyword, filterTableData, selectModelerNames, exportDDLModalVisible, exportOtherModalVisible, importStockWordDrawerVisible , loadingStates, modelStates, currentModelState, currentView, recatalogModalVisible, exportDDLModalReference, currentModel, offset, historyAndVersionDrawerVisible, modelerId, startFlowModalVisible, expandTree, showDeleteTip, colSettingModalVisible, visibleColNames } = 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, colSettingModalVisible, visibleColNames, canImport, canStartFlow, canChangeCatalog, canDelete, canAdd } = this.state;
const classes = classNames('data-model', { const classes = classNames('data-model', {
'data-model-collapse': !expandTree 'data-model-collapse': !expandTree
...@@ -510,30 +571,32 @@ class Model extends React.Component { ...@@ -510,30 +571,32 @@ class Model extends React.Component {
{ {
(getDataModelerRole(value?.user)!==DataModelerRoleReader) && <React.Fragment> (getDataModelerRole(value?.user)!==DataModelerRoleReader) && <React.Fragment>
<Space> <Space>
<Button onClick={() => { this.setState({ importModalVisible: true }); }}>新建</Button> <Tooltip title={canAdd?'暂无权限':''}>
<Button disabled={!canAdd} onClick={() => { this.setState({ importModalVisible: true }); }}>新建</Button>
</Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={canImport?((selectModelerIds||[]).length===0?'请先选择模型':''):'暂无权限'}>
<Button onClick={this.onExportOtherBtnClick} disabled={(selectModelerIds||[]).length===0}>导出</Button> <Button onClick={this.onExportOtherBtnClick} disabled={(!canImport||selectModelerIds||[]).length===0}>导出</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={startFlowTip}> <Tooltip title={canStartFlow?startFlowTip:'暂无权限'}>
<Button onClick={this.startFlow} disabled={disableStartFlow}>送审</Button> <Button onClick={this.startFlow} disabled={!canStartFlow||disableStartFlow}>送审</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={canChangeCatalog?((selectModelerIds||[]).length===0?'请先选择模型':''):'暂无权限'}>
<Button onClick={this.onRecatalogBtnClick} disabled={(selectModelerIds||[]).length===0}>变更目录</Button> <Button onClick={this.onRecatalogBtnClick} disabled={(!canChangeCatalog||selectModelerIds||[]).length===0}>变更目录</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={canDelete?((selectModelerIds||[]).length===0?'请先选择模型':''):'暂无权限'}>
<Button onClick={this.onBatchDeleteBtnClick} disabled={(selectModelerIds||[]).length===0}>删除</Button> <Button onClick={this.onBatchDeleteBtnClick} disabled={(!canDelete||selectModelerIds||[]).length===0}>删除</Button>
</Tooltip> </Tooltip>
</Space> </Space>
<Space> <Space>
......
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