Commit 9cf2223a by zhaochengxiang

复核关联资产

parent 61ea7163
......@@ -66,6 +66,10 @@ export function* getDataAssetDetail(payload) {
return yield call(service.getDataAssetDetail, payload);
}
export function* getResourceRelateDataAssetDetail(payload) {
return yield call(service.getResourceRelateDataAssetDetail, payload);
}
export function* listDataAssetsByPage(payload) {
return yield call(service.listDataAssetsByPage, payload);
}
......@@ -240,6 +244,10 @@ export function* getResourceRelations(payload) {
return yield call(service.getResourceRelations, payload);
}
export function* getResourceRelateDataAssetsWhenChecking(payload) {
return yield call(service.getResourceRelateDataAssetsWhenChecking, payload);
}
export function* updateResourceState(payload) {
return yield call(service.updateResourceState, payload);
}
......
......@@ -64,6 +64,10 @@ export function getDataAssetDetail(payload) {
return GetJSON("/dataassetmanager/dataAssetApi/getDataAssetDetail", payload);
}
export function getResourceRelateDataAssetDetail(payload) {
return GetJSON("/dataassetmanager/resourceApi/getResourceRelateDataAssetDetail", payload)
}
export function listDataAssetsByPage(payload) {
return PostJSON("/dataassetmanager/dataAssetApi/listDataAssetsByPage", payload);
}
......@@ -248,6 +252,10 @@ export function getResourceRelations(payload) {
return GetJSON("/dataassetmanager/resourceApi/getResourceRelations", payload);
}
export function getResourceRelateDataAssetsWhenChecking(payload) {
return GetJSON("/dataassetmanager/resourceApi/getResourceRelateDataAssetsWhenChecking", payload);
}
export function updateResourceState(payload) {
return PostJSON("/dataassetmanager/resourceApi/updateResourceState", payload);
}
......
//资产项
import React from 'react'
import { Button, Tooltip } from 'antd'
......
......@@ -4,6 +4,7 @@ import { Modal, Button, Spin, Form, Radio } from 'antd'
import { dispatch } from '../../../model'
import { checkMenuAdmit } from '../../../util'
import { AnchorDirId, AnchorId } from '../../../util/constant'
import ResourceRelateAssetDetail from './resource-relate-asset-detal'
const FC = (props) => {
const { items, visible, onCancel, type = 'single' } = props
......@@ -74,6 +75,10 @@ export default FC
export const Basic = React.forwardRef(function ({ items, type }, ref) {
const [relations, setRelations] = React.useState([])
const [assetDetailParams, setAssetDetailParams] = React.useState({
visible: false,
id: undefined
})
const [form] = Form.useForm()
React.useImperativeHandle(ref, () => ({
......@@ -98,9 +103,9 @@ export const Basic = React.forwardRef(function ({ items, type }, ref) {
const getRelations = () => {
if ((items??[]).length > 0) {
dispatch({
type: 'assetmanage.getResourceRelations',
type: 'assetmanage.getResourceRelateDataAssetsWhenChecking',
payload: {
dataAssetId: items[0].id,
resourceId: items[0].id,
},
callback: data => {
setRelations(data??[])
......@@ -109,60 +114,62 @@ export const Basic = React.forwardRef(function ({ items, type }, ref) {
}
}
const jumpToRelation = (relation) => {
const timestamp = new Date().getTime()
if (relation.resourceType==='innerSource'||relation.resourceType==='outerSource') {
if (checkMenuAdmit('asset-resource-browse')) {
window.open(`/center-home/menu/asset-resource-browse?${AnchorId}=${relation?.dataAssetId}&${AnchorDirId}=${relation?.dirId}&timestamp=${timestamp}`)
}
} else if (relation.resourceType==='dataAsset') {
if (checkMenuAdmit('asset-browse')) {
window.open(`/center-home/menu/asset-browse?${AnchorId}=${relation?.dataAssetId}&${AnchorDirId}=${relation?.dirId}&timestamp=${timestamp}`)
}
}
}
const onValuesChange = (changedValues, allValues) => {
console.log('all values', allValues)
}
return (
<Form
form={form}
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
autoComplete="off"
onValuesChange={onValuesChange}
>
{
type === 'multiple' && <Form.Item style={{ marginBottom: 5 }}>
<span>{checkInfo}</span>
</Form.Item>
}
<Form.Item
name='status'
rules={[{ required: true, message: '请选择复核方式!' }]}
style={{ marginBottom: (type === 'single')?5:15 }}
<React.Fragment>
<Form
form={form}
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}
autoComplete="off"
onValuesChange={onValuesChange}
>
<Radio.Group>
<Radio value="checked"> 验证通过 </Radio>
<Radio value="changeToNotAsset"> 转为非资产 </Radio>
</Radio.Group>
</Form.Item>
{
type === 'single' && <Form.Item label='关联资产' style={{ marginBottom: 5 }}>
<div className='flex' style={{ flexDirection: 'column', lineHeight: '32px' }}>
{
(relations??[]).map((item, index) => {
return (
<a key={index} onClick={() => {jumpToRelation(item)}}>{item.dataAssetName}</a>
);
})
}
</div>
{
type === 'multiple' && <Form.Item style={{ marginBottom: 5 }}>
<span>{checkInfo}</span>
</Form.Item>
}
<Form.Item
name='status'
rules={[{ required: true, message: '请选择复核方式!' }]}
style={{ marginBottom: (type === 'single')?5:15 }}
>
<Radio.Group>
<Radio value="checked"> 验证通过 </Radio>
<Radio value="changeToNotAsset"> 转为非资产 </Radio>
</Radio.Group>
</Form.Item>
}
</Form>
{
type === 'single' && <Form.Item label='关联资产' style={{ marginBottom: 5 }}>
<div className='flex' style={{ flexDirection: 'column', lineHeight: '32px' }}>
{
(relations??[]).map((item, index) => {
return (
<a key={index} onClick={() => {
setAssetDetailParams({
visible: true,
id: item.dataAssetId
})
}}>{item.dataAssetName}</a>
);
})
}
</div>
</Form.Item>
}
</Form>
<ResourceRelateAssetDetail
{...assetDetailParams}
onCancel={() => {
setAssetDetailParams({
visible: false,
id: undefined
})
}}
/>
</React.Fragment>
)
})
\ No newline at end of file
import React from 'react'
import { Modal, Spin, Descriptions, Divider } from 'antd'
import { dispatch } from '../../../model'
import { ElementItem } from '../AssetManage/Component/AssetAction'
import { AssetManageReference } from '../../../util/constant'
const FC = (props) => {
const { visible, id, onCancel } = props
const [loading, setLoading] = React.useState(false)
const [data, setData] = React.useState()
React.useEffect(() => {
if (visible) {
getDataAssetDetail()
}
}, [visible])
const getDataAssetDetail = () => {
setLoading(true)
dispatch({
type: 'assetmanage.getResourceRelateDataAssetDetail',
payload: {
relatedDataAssetId: id
},
callback: data => {
setLoading(false)
setData(data?.elements)
},
error: () => {
setLoading(false)
}
})
}
const close = (refresh = false) => {
setLoading(false)
onCancel?.()
}
return (
<Modal
visible={visible}
footer={null}
width='1000px'
bodyStyle={{ padding: '0px 15px 0px 15px', overflowX: 'auto', maxHeight: '80vh' }}
title='关联资产详情'
centered destroyOnClose
onCancel={() => { close() }}
>
<Spin spinning={loading}>
<Basic data={data} />
</Spin>
</Modal>
)
}
export default FC
export const Basic = React.forwardRef(function ({ data }, ref) {
const [groups, setGroups] = React.useState()
React.useEffect(() => {
setGroups(Array.from(new Set((data??[]).map(item => item.type))))
}, [data])
return (
<React.Fragment>
{
(groups??[]).map((group, index) => {
const filterElements = (data??[]).filter(element => element.type===group)
return (
<div key={index}>
<div className='flex' style={{ alignItems: 'center', padding: '15px 0' }}>
<div style={{ width: 3, height: 14, backgroundColor: '#0069AC', marginRight: 5 }} />
<span style={{ fontWeight: 'bold', color: '#464646' }}>{group}</span>
</div>
<Descriptions column={2}>
{
(filterElements??[]).map((item, index) => {
return (
<Descriptions.Item label={item.name||''} key={index}>
<ElementItem element={item} value={item.value} />
</Descriptions.Item>
);
})
}
</Descriptions>
<Divider style={{ margin: '10px 0' }} />
</div>
)
})
}
</React.Fragment>
)
})
\ No newline at end of file
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