Commit 3638feac by zhaochengxiang

资产权限

parent ed86c059
...@@ -61,10 +61,11 @@ export class App extends React.Component { ...@@ -61,10 +61,11 @@ export class App extends React.Component {
const { setGlobalState, onGlobalStateChange } = this.props; const { setGlobalState, onGlobalStateChange } = this.props;
const { hostParams } = this.state; const { hostParams } = this.state;
let message = '', id = '', terms = []; let message = '', id = '', terms = [], dirId = '';
if (hostParams) { if (hostParams) {
message = hostParams.message||''; message = hostParams.message||'';
id = hostParams.id||''; id = hostParams.id||'';
dirId = hostParams.dirId||'';
terms = hostParams.terms||[]; terms = hostParams.terms||[];
} }
...@@ -92,6 +93,7 @@ export class App extends React.Component { ...@@ -92,6 +93,7 @@ export class App extends React.Component {
<AssetDetail <AssetDetail
reference='full-search' reference='full-search'
id={id} id={id}
dirId={dirId}
terms={terms} terms={terms}
/> />
</AppContext.Provider> </AppContext.Provider>
......
...@@ -228,3 +228,7 @@ export function* getPrivilegeByRange(payload) { ...@@ -228,3 +228,7 @@ export function* getPrivilegeByRange(payload) {
export function* getPrivilegeByRangeAndDirId(payload) { export function* getPrivilegeByRangeAndDirId(payload) {
return yield call(service.getPrivilegeByRangeAndDirId, payload); return yield call(service.getPrivilegeByRangeAndDirId, payload);
} }
export function* getPreviewRangeByDirId(payload) {
return yield call(service.getPreviewRangeByDirId, payload);
}
\ No newline at end of file
import { PostJSON, GetJSON, PostFile, Post } from "../util/axios" import { PostJSON, GetJSON, PostFile, Post, Get } from "../util/axios"
export function importElement(payload) { export function importElement(payload) {
return PostFile("/dataassetmanager/elementApi/import", payload); return PostFile("/dataassetmanager/elementApi/import", payload);
...@@ -235,3 +235,7 @@ export function getPrivilegeByRange(payload) { ...@@ -235,3 +235,7 @@ export function getPrivilegeByRange(payload) {
export function getPrivilegeByRangeAndDirId(payload) { export function getPrivilegeByRangeAndDirId(payload) {
return GetJSON("/dataassetmanager/AuthorityApi/listAllowButtonsByRangeAndOptionId", payload); return GetJSON("/dataassetmanager/AuthorityApi/listAllowButtonsByRangeAndOptionId", payload);
} }
export function getPreviewRangeByDirId(payload) {
return Get("/dataassetmanager/dataAssetApi/getPreviewRangeByDirId", payload);
}
\ No newline at end of file
import React, { useEffect, useState } from "react"; import React, { useEffect, useMemo, useState } from "react";
import { Spin, Descriptions, Divider } from "antd"; import { Spin, Descriptions, Divider } from "antd";
import MetadataInfo from './MetadataInfo'; import MetadataInfo from './MetadataInfo';
...@@ -8,24 +8,72 @@ import { dispatch } from '../../../../model'; ...@@ -8,24 +8,72 @@ import { dispatch } from '../../../../model';
const AssetDetail = (props)=>{ const AssetDetail = (props)=>{
const { id, dirId, terms, reference = '' } = props; const { id, dirId, terms, reference = '' } = props;
const [ asset, setAsset ] = useState(''); const [ asset, setAsset ] = useState(undefined);
const [ types, setTypes ] = useState([]); const [ types, setTypes ] = useState([]);
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const [ userElements, setUserElements ] = useState(undefined);
useEffect(() => { useEffect(() => {
if ((id||'') !== '') { if ((id||'') !== '') {
getUserElements(); getUserElements();
} }
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [ id ]) }, [ id ])
useEffect(() => {
if (dirId) {
getPreviewRangeByDirIdThenGetAsset();
}
//eslint-disable-next-line react-hooks/exhaustive-deps
}, [ dirId ])
const _asset = useMemo(() => {
let newAsset = {};
if (asset) {
const userElementIds = [];
userElements?.forEach(element => {
userElementIds.push(element?.id);
})
const filterElements = (asset?.elements||[]).filter(element => userElementIds.indexOf(element?.id) !== -1);
newAsset = { ...asset, elements: filterElements }
}
return newAsset;
}, [asset, userElements])
const havePreviewPermission = useMemo(() => {
return ((asset||{}).allowButtons||[]).findIndex(item => item === 'preview') !== -1
}, [asset])
const getPreviewRangeByDirIdThenGetAsset = () => {
dispatch({
type: 'assetmanage.getPreviewRangeByDirId',
payload: {
dirId
},
callback: data => {
getAsset(data);
}
});
}
const getUserElements = () => { const getUserElements = () => {
setLoading(true); setLoading(true);
dispatch({ dispatch({
type: 'assetmanage.listUserElements', type: 'assetmanage.listUserElements',
callback: data => { callback: data => {
getAsset(data||[]); setUserElements(data||[]);
const _types = [];
(data||[]).forEach(element => {
if (_types.indexOf(element.type) === -1) {
_types.push(element.type);
}
})
setTypes(_types);
}, },
error: () => { error: () => {
setLoading(false); setLoading(false);
...@@ -33,36 +81,18 @@ const AssetDetail = (props)=>{ ...@@ -33,36 +81,18 @@ const AssetDetail = (props)=>{
}) })
} }
const getAsset = (userElements) => { const getAsset = (range) => {
dispatch({ dispatch({
type: 'assetmanage.getDataAssetDetail', type: 'assetmanage.getDataAssetDetail',
payload: { payload: {
range,
dataAssetId: id, dataAssetId: id,
dirId: dirId||'', dirId: dirId||'',
checkPermission: true checkPermission: true
}, },
callback: data => { callback: data => {
setLoading(false); setLoading(false);
const userElementIds = [];
(userElements||[]).forEach(element => {
userElementIds.push(element?.id);
})
const filterElements = (data?.elements||[]).filter(element => userElementIds.indexOf(element?.id) !== -1);
data = { ...data, elements: filterElements }
setAsset(data); setAsset(data);
const _types = [];
(data?.elements||[]).forEach(element => {
if (_types.indexOf(element.type) === -1) {
_types.push(element.type);
}
})
setTypes(_types);
}, },
error: () => { error: () => {
setLoading(false); setLoading(false);
...@@ -73,10 +103,12 @@ const AssetDetail = (props)=>{ ...@@ -73,10 +103,12 @@ const AssetDetail = (props)=>{
return( return(
<Spin spinning={loading}> <Spin spinning={loading}>
{ {
havePreviewPermission ? <React.Fragment>
{
((dirId||'')!=='') && <React.Fragment> ((dirId||'')!=='') && <React.Fragment>
<Descriptions column={2}> <Descriptions column={2}>
<Descriptions.Item label='路径'> <Descriptions.Item label='路径'>
{asset.currentPath||''} {_asset?.currentPath||''}
</Descriptions.Item> </Descriptions.Item>
</Descriptions> </Descriptions>
<Divider style={{ margin: '10px 0' }} /> <Divider style={{ margin: '10px 0' }} />
...@@ -85,7 +117,7 @@ const AssetDetail = (props)=>{ ...@@ -85,7 +117,7 @@ const AssetDetail = (props)=>{
{ {
(types||[]).map((type, index) => { (types||[]).map((type, index) => {
const _currentValues = (asset.elements||[]).filter(element => element.type===type); const _currentValues = (_asset?.elements||[]).filter(element => element.type===type);
return ( return (
<div key={index}> <div key={index}>
...@@ -113,6 +145,8 @@ const AssetDetail = (props)=>{ ...@@ -113,6 +145,8 @@ const AssetDetail = (props)=>{
) )
}) })
} }
</React.Fragment> : <div className='pb-4'>{loading?'':'暂无权限'}</div>
}
</Spin> </Spin>
) )
} }
......
...@@ -543,7 +543,7 @@ const ImportAction = React.forwardRef((props, ref) => { ...@@ -543,7 +543,7 @@ const ImportAction = React.forwardRef((props, ref) => {
<Spin spinning={loading}> <Spin spinning={loading}>
{ {
(action==='detail' && ((modelerData||{}).optionList||[]).findIndex(item => item.enabled && item.name==='查看') === -1) ? <span> (action==='detail' && ((modelerData||{}).optionList||[]).findIndex(item => item.enabled && item.name==='查看') === -1) ? <span>
暂无权限 {loading?'':'暂无权限'}
</span> : <React.Fragment> </span> : <React.Fragment>
<ImportActionHeader <ImportActionHeader
form={form} form={form}
......
...@@ -565,7 +565,12 @@ const ModelTable = (props) => { ...@@ -565,7 +565,12 @@ const ModelTable = (props) => {
历史版本 历史版本
</PermissionRcItem> </PermissionRcItem>
{ {
(getDataModelerRole(user)!==DataModelerRoleReader) && <PermissionRcItem id="copy" onClick={handleItemClick}> (getDataModelerRole(user)!==DataModelerRoleReader) && <PermissionRcItem
id="copy"
onClick={handleItemClick}
permissionKey='新增'
permissions={currentItem?.optionList?.filter(item => item.enabled).map(item => item.name)}
>
复制模型 复制模型
</PermissionRcItem> </PermissionRcItem>
} }
......
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