Commit b9f41121 by zhaochengxiang

资产管理权限

parent 8613f06d
......@@ -2,24 +2,24 @@ import React, { useMemo } from 'react';
import { Button, Tooltip } from 'antd';
const FC = (props) => {
const { permissionKey, permissions, tip, ...restProps } = props;
const { permissionKey, permissions, defaultPermission, disabled, tip, ...restProps } = props;
const havePermission = useMemo(() => {
let _havePermission = true;
if (permissionKey) {
const index = (permissions||[]).findIndex(item => item.name === permissionKey);
if (index !== -1) {
_havePermission = permissions[index].enabled ?? true;
}
if (defaultPermission===false) {
_havePermission = defaultPermission;
} else if (permissionKey) {
const index = (permissions||[]).findIndex(item => item === permissionKey);
_havePermission = (index !== -1);
}
return _havePermission;
}, [permissionKey, permissions])
}, [permissionKey, permissions, defaultPermission])
return (
<Tooltip title={havePermission?tip:'暂无权限'}>
<Button {...restProps} disabled={!havePermission} />
<Button disabled={!havePermission||disabled} {...restProps} />
</Tooltip>
)
}
......
......@@ -3,23 +3,23 @@ import { Tooltip } from 'antd';
import { Item as RcItem } from "react-contexify";
const FC = (props) => {
const { permissionKey, permissions, tip, children, ...restProps } = props;
const { permissionKey, permissions, defaultPermission, disabled, tip, children, ...restProps } = props;
const havePermission = useMemo(() => {
let _havePermission = true;
if (permissionKey) {
const index = (permissions||[]).findIndex(item => item.name === permissionKey);
if (index !== -1) {
_havePermission = permissions[index].enabled ?? true;
}
if (defaultPermission===false) {
_havePermission = defaultPermission;
} else if (permissionKey) {
const index = (permissions||[]).findIndex(item => item === permissionKey);
_havePermission = (index !== -1);
}
return _havePermission;
}, [permissionKey, permissions])
}, [permissionKey, permissions, defaultPermission])
return (
<RcItem {...restProps} disabled={!havePermission}>
<RcItem disabled={!havePermission||disabled} {...restProps}>
<Tooltip title={havePermission?tip:'暂无权限'}>
{children}
</Tooltip>
......
import React,{ useState, useEffect, useRef } from "react";
import React,{ useState, useEffect, useRef, useMemo } from "react";
import { Button, Pagination, Space, Modal, Input, Table, Tooltip, Checkbox, Typography, Dropdown, Menu } from "antd";
import classNames from 'classnames';
import { Resizable } from 'react-resizable';
......@@ -16,6 +16,8 @@ import { showMessage, showNotifaction, getQueryParam, inputWidth, isSzseEnv } fr
import { AnchorId, AnchorDirId, AnchorTimestamp, AssetBrowseReference, AssetManageReference, AssetRecycleReference, ResourceBrowseReference } from '../../../../util/constant';
import { FullScreenSvg, CancelFullScreenSvg } from './AssetSvg';
import AssetDeleteModal from './AssetDeleteModal';
import PermissionButton from '../../../../util/Component/PermissionButton';
import PermissionRcItem from '../../../../util/Component/PermissionRcItem';
import "./AssetTable.less";
import 'react-contexify/dist/ReactContexify.css';
......@@ -221,6 +223,58 @@ const AssetTable = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [ keyword, pagination, elementsChanged, assetActionChanged, recursive, fullSearch ])
const canImport = useMemo(() => {
let _canImport = true;
checkedKeys?.forEach(key => {
const index = (assets||[]).findIndex(item => item.id === key);
if (index !== -1) {
const allowIndex = (assets[index].allowButtons||[]).findIndex(item => item==='import');
_canImport = (allowIndex !== -1);
}
})
return _canImport;
}, [assets, checkedKeys])
const canExport = useMemo(() => {
let _canExport = true;
checkedKeys?.forEach(key => {
const index = (assets||[]).findIndex(item => item.id === key);
if (index !== -1) {
const allowIndex = (assets[index].allowButtons||[]).findIndex(item => item==='export');
_canExport = (allowIndex !== -1);
}
})
return _canExport;
}, [assets, checkedKeys])
const canChangeDir = useMemo(() => {
let _canChangeDir = true;
checkedKeys?.forEach(key => {
const index = (assets||[]).findIndex(item => item.id === key);
if (index !== -1) {
const allowIndex = (assets[index].allowButtons||[]).findIndex(item => item==='changeDir');
_canChangeDir = (allowIndex !== -1);
}
})
return _canChangeDir;
}, [assets, checkedKeys])
const canDelete= useMemo(() => {
let _canDelete = true;
checkedKeys?.forEach(key => {
const index = (assets||[]).findIndex(item => item.id === key);
if (index !== -1) {
const allowIndex = (assets[index].allowButtons||[]).findIndex(item => item==='delete');
_canDelete = (allowIndex !== -1);
}
})
return _canDelete;
}, [assets, checkedKeys])
const storageChange = (e) => {
if (e.key === 'assetRelationOnClickEvent') {
remoteRelationRef.current = e.relation;
......@@ -393,6 +447,16 @@ const AssetTable = (props) => {
}
}
if (reference === AssetManageReference) {
params.range = 'dataAsset_dataAssetManage';
} else if (reference === AssetBrowseReference) {
params.range = 'dataAsset_dataAssetBrowse';
} else if (reference === ResourceBrowseReference) {
params.range = 'dataAsset_resourceBrowse';
} else if (reference === AssetRecycleReference) {
params.range = 'dataAsset_unloadDataAsset';
}
let url = 'assetmanage.listDataAssetsByPage';
if (reference===AssetRecycleReference) {
url = 'assetmanage.listRecycleBinDataAssetsByPage';
......@@ -848,16 +912,19 @@ const AssetTable = (props) => {
<Button>其他操作</Button>
</Dropdown> : <React.Fragment>
{
(reference===AssetManageReference && nodeType!=='custom') && <Button onClick={importAsset}>导入</Button>
(reference===AssetManageReference && nodeType!=='custom') && <PermissionButton defaultPermission={canImport} onClick={importAsset}>导入</PermissionButton>
}
{
(reference===AssetManageReference || reference===AssetRecycleReference) && <React.Fragment>
<Tooltip>
<Button onClick={exportAsset} >导出</Button>
</Tooltip>
<Tooltip title={(checkedKeys||[]).length===0?'请先选择资产':''}>
<Button onClick={onBatchCatalogChangeBtnClick} disabled={(checkedKeys||[]).length===0} >{(reference===AssetRecycleReference)?'挂载':'变更目录'}</Button>
</Tooltip>
<PermissionButton defaultPermission={canExport} onClick={exportAsset} >导出</PermissionButton>
<PermissionButton
defaultPermission={canChangeDir}
tip={(checkedKeys||[]).length===0?'请先选择资产':''}
onClick={onBatchCatalogChangeBtnClick}
disabled={(checkedKeys||[]).length===0}
>
{(reference===AssetRecycleReference)?'挂载':'变更目录'}
</PermissionButton>
{
(reference===AssetRecycleReference) && <Tooltip title={(checkedKeys||[]).length===0?'请先选择资产':''}>
<Button onClick={recoveryAssets} disabled={(checkedKeys||[]).length===0} >恢复</Button>
......@@ -865,9 +932,15 @@ const AssetTable = (props) => {
}
{
//自定义目录下的资产不允许删除
(nodeType!=='custom') && <Tooltip title={(checkedKeys||[]).length===0?'请先选择资产':''}>
<Button onClick={deleteAssets} disabled={(checkedKeys||[]).length===0} >删除</Button>
</Tooltip>
(nodeType!=='custom') &&
<PermissionButton
defaultPermission={canDelete}
tip={(checkedKeys||[]).length===0?'请先选择资产':''}
onClick={deleteAssets}
disabled={(checkedKeys||[]).length===0}
>
删除
</PermissionButton>
}
</React.Fragment>
}
......@@ -1014,14 +1087,24 @@ const AssetTable = (props) => {
/>
<RcMenu id={MENU_ID}>
{
(contextMenuItem.resourceState==='notRelatedAsset') && <RcItem id="uncombed" onClick={handleItemClick}>
(contextMenuItem.resourceState==='notRelatedAsset') && <PermissionRcItem
id="uncombed"
permissionKey='changeToUncombed'
permissions={contextMenuItem?.allowButtons}
onClick={handleItemClick}
>
转为未梳理
</RcItem>
</PermissionRcItem>
}
{
(contextMenuItem.resourceState==='uncombed') && <RcItem id="notRelatedAsset" onClick={handleItemClick}>
(contextMenuItem.resourceState==='uncombed') && <PermissionRcItem
id="notRelatedAsset"
permissionKey='changeToNotAsset'
permissions={contextMenuItem?.allowButtons}
onClick={handleItemClick}
>
转为非资产
</RcItem>
</PermissionRcItem>
}
</RcMenu>
......
......@@ -319,7 +319,7 @@ const EditModel = (props) => {
onClick={onHistory}
danger
permissionKey='历史版本'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
版本历史
</PermissionButton>
......@@ -340,7 +340,7 @@ const EditModel = (props) => {
}}
danger
permissionKey='编辑'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
编辑历史存储形式
</PermissionButton>
......@@ -352,7 +352,7 @@ const EditModel = (props) => {
danger
tip={editTip}
permissionKey='编辑'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
编辑
</PermissionButton>
......@@ -371,7 +371,7 @@ const EditModel = (props) => {
onClick={onHistory}
danger
permissionKey='历史版本'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
版本历史
</PermissionButton>
......@@ -393,7 +393,7 @@ const EditModel = (props) => {
onClick={onHistory}
danger
permissionKey='历史版本'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
版本历史
</PermissionButton>
......@@ -412,7 +412,7 @@ const EditModel = (props) => {
}}
danger
permissionKey='编辑'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
编辑历史存储形式
</PermissionButton>
......@@ -423,7 +423,7 @@ const EditModel = (props) => {
onClick={edit}
danger
permissionKey='编辑'
permissions={modelerData?.optionList}
permissions={modelerData?.optionList?.filter(item => item.enabled)?.map(item => item.name)}
>
编辑
</PermissionButton>
......
......@@ -539,7 +539,7 @@ const ModelTable = (props) => {
onClick={handleItemClick}
tip={editTip}
permissionKey='编辑'
permissions={currentItem?.optionList}
permissions={currentItem?.optionList?.filter(item => item.enabled).map(item => item.name)}
>
{ editMenuTitle }
</PermissionRcItem>
......@@ -551,7 +551,7 @@ const ModelTable = (props) => {
onClick={handleItemClick}
tip={deleteTip}
permissionKey='删除'
permissions={currentItem?.optionList}
permissions={currentItem?.optionList?.filter(item => item.enabled).map(item => item.name)}
>
删除
</PermissionRcItem>
......@@ -560,7 +560,7 @@ const ModelTable = (props) => {
id="history"
onClick={handleItemClick}
permissionKey='历史版本'
permissions={currentItem?.optionList}
permissions={currentItem?.optionList?.filter(item => item.enabled).map(item => item.name)}
>
历史版本
</PermissionRcItem>
......@@ -576,7 +576,7 @@ const ModelTable = (props) => {
id={`action-${index}`}
onClick={handleItemClick}
permissionKey={item.cnName}
permissions={currentItem?.optionList}
permissions={currentItem?.optionList?.filter(item => item.enabled).map(item => item.name)}
>
{item.cnName||''}
</PermissionRcItem>
......
......@@ -20,6 +20,7 @@ import { Action, CatalogId, ModelerId, Hints, ModelerData, PermitCheckOut, Edita
import { AppContext } from '../../../App';
import DebounceInput from './Component/DebounceInput';
import ColSettingModal from './Component/ColSettingModal';
import PermissionButton from '../../../util/Component/PermissionButton';
import './index.less';
......@@ -59,7 +60,7 @@ class Model extends React.Component {
showDeleteTip: false,
colSettingModalVisible: false,
visibleColNames: [],
canImport: false,
canExport: false,
canStartFlow: false,
canChangeCatalog: false,
canDelete: false,
......@@ -78,13 +79,13 @@ class Model extends React.Component {
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;
let canExport = 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;
canExport = false;
} else if (item.name === '送审' && item.enabled === false) {
canStartFlow = false;
} else if (item.name === '变更目录' && item.enabled === false) {
......@@ -96,9 +97,8 @@ class Model extends React.Component {
}
});
console.log('can import', canImport);
this.setState({
canImport,
canExport,
canStartFlow,
canChangeCatalog,
canDelete,
......@@ -526,7 +526,7 @@ class Model extends React.Component {
}
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, canImport, canStartFlow, canChangeCatalog, canDelete, canAdd } = 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, canExport, canStartFlow, canChangeCatalog, canDelete, canAdd } = this.state;
const classes = classNames('data-model', {
'data-model-collapse': !expandTree
......@@ -572,32 +572,57 @@ class Model extends React.Component {
{
(getDataModelerRole(value?.user)!==DataModelerRoleReader) && <React.Fragment>
<Space>
<Tooltip title={canAdd?'':'暂无权限'}>
<Button disabled={!canAdd} onClick={() => { this.setState({ importModalVisible: true }); }}>新建</Button>
</Tooltip>
<PermissionButton
defaultPermission={canAdd}
onClick={() => { this.setState({ importModalVisible: true }); }}
>
新建
</PermissionButton>
</Space>
<Space>
<Tooltip title={canImport?((selectModelerIds||[]).length===0?'请先选择模型':''):'暂无权限'}>
<Button onClick={this.onExportOtherBtnClick} disabled={!canImport||(selectModelerIds||[]).length===0}>导出</Button>
</Tooltip>
<PermissionButton
defaultPermission={canExport}
tip={(selectModelerIds||[]).length===0?'请先选择模型':''}
onClick={this.onExportOtherBtnClick}
disabled={(selectModelerIds||[]).length===0}
>
导出
</PermissionButton>
</Space>
<Space>
<Tooltip title={canStartFlow?startFlowTip:'暂无权限'}>
<Button onClick={this.startFlow} disabled={!canStartFlow||disableStartFlow}>送审</Button>
</Tooltip>
<PermissionButton
defaultPermission={canStartFlow}
tip={startFlowTip}
onClick={this.startFlow}
disabled={disableStartFlow}
>
送审
</PermissionButton>
</Space>
<Space>
<Tooltip title={canChangeCatalog?((selectModelerIds||[]).length===0?'请先选择模型':''):'暂无权限'}>
<Button onClick={this.onRecatalogBtnClick} disabled={!canChangeCatalog||(selectModelerIds||[]).length===0}>变更目录</Button>
</Tooltip>
<PermissionButton
defaultPermission={canChangeCatalog}
tip={(selectModelerIds||[]).length===0?'请先选择模型':''}
onClick={this.onRecatalogBtnClick}
disabled={(selectModelerIds||[]).length===0}
>
变更目录
</PermissionButton>
</Space>
<Space>
<Tooltip title={canDelete?((selectModelerIds||[]).length===0?'请先选择模型':''):'暂无权限'}>
<Button onClick={this.onBatchDeleteBtnClick} disabled={!canDelete||(selectModelerIds||[]).length===0}>删除</Button>
<PermissionButton
defaultPermission={canDelete}
tip={(selectModelerIds||[]).length===0?'请先选择模型':''}
onClick={this.onBatchDeleteBtnClick}
disabled={(selectModelerIds||[]).length===0}
>
删除
</PermissionButton>
</Tooltip>
</Space>
<Space>
......
......@@ -27,7 +27,7 @@ const PartitionCURD = (props) => {
const index = (modelConfingContext?.permissions||[]).findIndex(item => item.privilegedObjectId === '4');
if (index !== -1) {
return modelConfingContext?.permissions[index].optionList;
return (modelConfingContext?.permissions[index].optionList||[]).filter(item => item.enabled).map(item => item.name);
}
return [];
......
......@@ -34,7 +34,7 @@ const TemplateCURD = (props) => {
const index = (modelConfingContext?.permissions||[]).findIndex(item => item.privilegedObjectId === '2');
if (index !== -1) {
return modelConfingContext?.permissions[index].optionList;
return (modelConfingContext?.permissions[index].optionList||[]).filter(item => item.enabled).map(item => item.name);
}
return [];
......
......@@ -17,7 +17,7 @@ const WordTemplate = (props) => {
const index = (modelConfingContext?.permissions||[]).findIndex(item => item.privilegedObjectId === '1');
if (index !== -1) {
return modelConfingContext?.permissions[index].optionList;
return (modelConfingContext?.permissions[index].optionList||[]).filter(item => item.enabled).map(item => item.name);
}
return [];
......
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