Commit a5bc7ad3 by zhaochengxiang

资产权限

parent 1b3775d3
......@@ -221,6 +221,10 @@ export function* updateResourceState(payload) {
return yield call(service.updateResourceState, payload);
}
export function* getPrivilege(payload) {
return yield call(service.getPrivilege, payload);
export function* getPrivilegeByRange(payload) {
return yield call(service.getPrivilegeByRange, payload);
}
export function* getPrivilegeByRangeAndDirId(payload) {
return yield call(service.getPrivilegeByRangeAndDirId, payload);
}
\ No newline at end of file
......@@ -228,6 +228,10 @@ export function updateResourceState(payload) {
return PostJSON("/dataassetmanager/resourceApi/updateResourceState", payload);
}
export function getPrivilege(payload) {
return GetJSON("/dataassetmanager/AuthorityApi/listAllowButtons", payload);
export function getPrivilegeByRange(payload) {
return GetJSON("/dataassetmanager/AuthorityApi/listAllowButtonsByRange", payload);
}
export function getPrivilegeByRangeAndDirId(payload) {
return GetJSON("/dataassetmanager/AuthorityApi/listAllowButtonsByRangeAndOptionId", payload);
}
\ No newline at end of file
......@@ -10,6 +10,7 @@ import Tag from '../../Tag';
import Separate from './Separate';
import AssetTagModal from './AssetTagModal';
import { AnchorId, AnchorDirId } from '../../../../util/constant';
import PermissionButton from '../../../../util/Component/PermissionButton';
import { CancelSvg, EditSvg, SaveSvg, FullScreenSvg, CancelFullScreenSvg } from './AssetSvg';
......@@ -387,22 +388,24 @@ const AssetAction = (props) => {
{
((id||'')!=='') && <React.Fragment>
{
(currentAction!=='detail') && <Tooltip title='取消编辑'>
<Button
(currentAction!=='detail') && <PermissionButton
onClick={onCancelButtonClick}
icon={<CancelSvg className='greyIcon' style={{ width: 20, height: 20 }} />}
type='text'
permissionKey='update'
permissions={assets?.allowButtons}
tip='取消编辑'
/>
</Tooltip>
}
<Tooltip title={(currentAction==='detail')?'编辑':'保存'}>
<Button
loading={confirmLoading}
onClick={onActionButtonClick}
icon={(currentAction==='detail')?<EditSvg className='greyIcon' style={{ width: 20, height: 20 }} />: <SaveSvg className='greyIcon' style={{ width: 20, height: 20 }} />}
type='text'
/>
</Tooltip>
<PermissionButton
loading={confirmLoading}
onClick={onActionButtonClick}
icon={(currentAction==='detail')?<EditSvg className='greyIcon' style={{ width: 20, height: 20 }} />: <SaveSvg className='greyIcon' style={{ width: 20, height: 20 }} />}
type='text'
permissionKey='update'
permissions={assets?.allowButtons}
tip={(currentAction==='detail')?'编辑':'保存'}
/>
</React.Fragment>
}
<Tooltip title={fullScreen?'取消全屏':'全屏'}>
......
......@@ -6,10 +6,11 @@ import { AssetBrowseReference, AssetManageReference, ResourceBrowseReference } f
import ImportElement from './ImportElement';
import AttributeRelationModal from "./AttributeRelationModal";
import FilterElementModal from './FilterElementModal';
import { showNotifaction } from '../../../../util';
import { showNotifaction, getAssetRange } from '../../../../util';
import { MoreSvg } from './AssetSvg';
import Separate from './Separate';
import record from '../Assets/record.png';
import PermissionMenuItem from '../../../../util/Component/PermissionMenuItem';
import './AssetDirectory.less';
......@@ -23,17 +24,17 @@ const AssetDirectory = (props) => {
const [ attributeRelationModalVisible, setAttributeRelationModalVisible ] = useState(false);
const [ filterElementVisible, setFilterElementVisible ] = useState(false);
const [ resourceState, setResourceState ] = useState(null);
const [ permissions, setPermissions ] = useState([]);
useEffect(() => {
getPermissions();
const storageChange = (e) => {
if (e.key === 'assetResourceChange') {
getResourceState();
}
}
window?.addEventListener("storage", storageChange);
return () => {
window?.removeEventListener("storage", storageChange);
}
......@@ -48,6 +49,18 @@ const AssetDirectory = (props) => {
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [ id, directoryChanged ])
const getPermissions = () => {
dispatch({
type: 'assetmanage.getPrivilegeByRange',
payload: {
range: getAssetRange(reference),
},
callback: data => {
setPermissions(data);
}
});
}
const getDirectory = () => {
let url = 'assetmanage.getDirectoryById';
if ((reference===AssetBrowseReference|| reference===ResourceBrowseReference) && nodeType==='custom') {
......@@ -126,28 +139,56 @@ const AssetDirectory = (props) => {
setAttributeRelationModalVisible(false);
}
const onMenuClick = ({ key }) => {
if (key === 'importAttribute') {
onImportElementBtnClick();
} else if (key === 'exportAttribute') {
onExportElementBtnClick();
} else if (key === 'attributeManage') {
onFilterElementClick();
} else if (key === 'attributeRelate') {
onAttributeRelationBtnClick();
}
}
const elementManageMenu = (
<Menu>
<Menu.Item>
<div className='text-center' onClick={onImportElementBtnClick}>
<Menu onClick={onMenuClick}>
<PermissionMenuItem
key='importAttribute'
permissionKey='importAttribute'
permissions={permissions}
>
<div className='text-center'>
导入资产属性
</div>
</Menu.Item>
<Menu.Item>
<div className='text-center' onClick={onExportElementBtnClick}>
</PermissionMenuItem>
<PermissionMenuItem
key='exportAttribute'
permissionKey='exportAttribute'
permissions={permissions}
>
<div className='text-center'>
导出资产属性
</div>
</Menu.Item>
<Menu.Item>
<div className='text-center' onClick={onFilterElementClick}>
</PermissionMenuItem>
<PermissionMenuItem
key='attributeManage'
permissionKey='attributeManage'
permissions={permissions}
>
<div className='text-center'>
资产属性管理
</div>
</Menu.Item>
<Menu.Item>
<div className='text-center' onClick={onAttributeRelationBtnClick}>
</PermissionMenuItem>
<PermissionMenuItem
key='attributeRelate'
permissionKey='attributeRelate'
permissions={permissions}
>
<div className='text-center'>
资产属性关联
</div>
</Menu.Item>
</PermissionMenuItem>
</Menu>
);
......
......@@ -205,10 +205,11 @@ const AssetTable = (props) => {
} else {
setPagination({ ...pagination, pageNum: 1 });
}
} else if (reference === AssetRecycleReference) {
getRecyclePermissions();
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [ nodeId ])
}, [ nodeId, reference ])
useEffect(() => {
......@@ -308,7 +309,7 @@ const AssetTable = (props) => {
const getPermissions = () => {
dispatch({
type: 'assetmanage.getPrivilege',
type: 'assetmanage.getPrivilegeByRangeAndDirId',
payload: {
range: getAssetRange(reference),
optionId: nodeId
......@@ -319,6 +320,18 @@ const AssetTable = (props) => {
});
}
const getRecyclePermissions = () => {
dispatch({
type: 'assetmanage.getPrivilegeByRange',
payload: {
range: getAssetRange(reference),
},
callback: data => {
setPermissions(data);
}
});
}
const getDataAssetLocationByRelation = () => {
setLoading(true);
dispatch({
......@@ -891,7 +904,7 @@ const AssetTable = (props) => {
tip={(checkedKeys||[]).length===0?'请先选择资产':''}
>
<div className='text-center'>
{(reference===AssetRecycleReference)?'挂载':'变更目录'}
变更目录
</div>
</PermissionMenuItem>
{
......@@ -969,18 +982,38 @@ const AssetTable = (props) => {
{
(reference===AssetManageReference || reference===AssetRecycleReference) && <React.Fragment>
<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>
</Tooltip>
(reference === AssetManageReference) && <PermissionButton
defaultPermission={canChangeDir}
tip={(checkedKeys||[]).length===0?'请先选择资产':''}
onClick={onBatchCatalogChangeBtnClick}
disabled={(checkedKeys||[]).length===0}
>
变更目录
</PermissionButton>
}
{
(reference === AssetRecycleReference) && <PermissionButton
onClick={onBatchCatalogChangeBtnClick}
disabled={(checkedKeys||[]).length===0}
permissionKey='loadDataAsset'
permissions={permissions}
tip={(checkedKeys||[]).length===0?'请先选择资产':''}
>
挂载
</PermissionButton>
}
{
(reference===AssetRecycleReference) &&
<PermissionButton
onClick={recoveryAssets}
disabled={(checkedKeys||[]).length===0}
permissionKey='resumeDataAsset'
permissions={permissions}
tip={(checkedKeys||[]).length===0?'请先选择资产':''}
>
恢复
</PermissionButton>
}
{
//自定义目录下的资产不允许删除
......
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