Commit 0caec0d3 by zhaochengxiang

资源转化功能

parent 15c1ed9c
...@@ -167,4 +167,8 @@ export function* countResourceState(payload) { ...@@ -167,4 +167,8 @@ export function* countResourceState(payload) {
export function* getResourceRelations(payload) { export function* getResourceRelations(payload) {
return yield call(service.getResourceRelations, payload); return yield call(service.getResourceRelations, payload);
}
export function* updateResourceState(payload) {
return yield call(service.updateResourceState, payload);
} }
\ No newline at end of file
...@@ -175,3 +175,7 @@ export function countResourceState(payload) { ...@@ -175,3 +175,7 @@ export function countResourceState(payload) {
export function getResourceRelations(payload) { export function getResourceRelations(payload) {
return GetJSON("/dataassetmanager/resourceApi/getResourceRelations", payload); return GetJSON("/dataassetmanager/resourceApi/getResourceRelations", payload);
} }
export function updateResourceState(payload) {
return PostJSON("/dataassetmanager/resourceApi/updateResourceState", payload);
}
\ No newline at end of file
...@@ -4,6 +4,7 @@ import classNames from 'classnames'; ...@@ -4,6 +4,7 @@ import classNames from 'classnames';
import SmoothScroll from 'smooth-scroll'; import SmoothScroll from 'smooth-scroll';
import { Resizable } from 'react-resizable'; import { Resizable } from 'react-resizable';
import ResizeObserver from 'rc-resize-observer'; import ResizeObserver from 'rc-resize-observer';
import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify";
import FilterElementModal from './FilterElementModal'; import FilterElementModal from './FilterElementModal';
import AssetMount from '../../AssetRecycle/Component/AssetMount'; import AssetMount from '../../AssetRecycle/Component/AssetMount';
...@@ -16,6 +17,8 @@ import { AnchorId, AnchorTimestamp, AssetBrowseReference, AssetManageReference, ...@@ -16,6 +17,8 @@ import { AnchorId, AnchorTimestamp, AssetBrowseReference, AssetManageReference,
import { FullScreenSvg, CancelFullScreenSvg } from './AssetSvg'; import { FullScreenSvg, CancelFullScreenSvg } from './AssetSvg';
import "./AssetTable.less"; import "./AssetTable.less";
import 'react-contexify/dist/ReactContexify.css';
import { modelCopy } from "../../../../service/datamodeler";
const { Text } = Typography; const { Text } = Typography;
const { Search } = Input; const { Search } = Input;
...@@ -112,11 +115,19 @@ const ResizeableHeaderCell = props => { ...@@ -112,11 +115,19 @@ const ResizeableHeaderCell = props => {
const AssetTable = (props) => { const AssetTable = (props) => {
const { className, nodeId, nodeType, elementsChanged, assetActionChanged, onSelect, onCountChange, reference = AssetManageReference } = props; const { className, nodeId, nodeType, elementsChanged, assetActionChanged, onSelect, onCountChange, reference = AssetManageReference } = props;
const MENU_ID = 'asset-table';
const { show } = useContextMenu({
id: MENU_ID,
});
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
const [ columns, setColumns ] = useState([]); const [ columns, setColumns ] = useState([]);
const [ assets, setAssets ] = useState([]); const [ assets, setAssets ] = useState([]);
const [ total, setTotal ] = useState(0); const [ total, setTotal ] = useState(0);
const [ selectItem, setSelectItem ] = useState({}); const [ selectItem, setSelectItem ] = useState({});
const [ contextMenuItem, setContextMenuItem ] = useState({});
const [ checkedKeys, setCheckedKeys ] = useState([]); const [ checkedKeys, setCheckedKeys ] = useState([]);
const [ importAssetVisible, setImportAssetVisible ] = useState(false); const [ importAssetVisible, setImportAssetVisible ] = useState(false);
...@@ -503,6 +514,54 @@ const AssetTable = (props) => { ...@@ -503,6 +514,54 @@ const AssetTable = (props) => {
setColumns(nextColumns); setColumns(nextColumns);
}; };
const displayMenu = (e) => {
show(e);
}
const handleItemClick = ({ event, props, data, triggerEvent }) => {
const key = event.currentTarget.id;
if (key === 'uncombed') {
modal.confirm({
title: '提示',
content: '是否将该条非资产的资源转为未梳理状态?',
onOk: () => {
dispatch({
type: 'assetmanage.updateResourceState',
payload: {
params: {
dataAssetId: contextMenuItem.id,
resourceState: 'uncombed'
}
},
callback: () => {
getDataAssets();
}
});
}
});
} else if (key === 'notRelatedAsset') {
modal.confirm({
title: '提示',
content: '是否将该条未梳理的资源转为非资产?',
onOk: () => {
dispatch({
type: 'assetmanage.updateResourceState',
payload: {
params: {
dataAssetId: contextMenuItem.id,
resourceState: 'notRelatedAsset'
}
},
callback: () => {
getDataAssets();
}
});
}
});
}
}
const moreMenu = ( const moreMenu = (
<Menu> <Menu>
{ {
...@@ -656,7 +715,13 @@ const AssetTable = (props) => { ...@@ -656,7 +715,13 @@ const AssetTable = (props) => {
if (reference !== AssetManageReference) { if (reference !== AssetManageReference) {
setAssetDetailDrawerVisible(true); setAssetDetailDrawerVisible(true);
} }
} },
onContextMenu: event => {
if (record.resourceState==='uncombed' || record.resourceState==='notRelatedAsset') {
setContextMenuItem(record);
displayMenu(event);
}
},
} }
}} }}
rowClassName={(record, index) => { rowClassName={(record, index) => {
...@@ -729,6 +794,19 @@ const AssetTable = (props) => { ...@@ -729,6 +794,19 @@ const AssetTable = (props) => {
visible={assetDetailDrawerVisible} visible={assetDetailDrawerVisible}
onCancel={onAssetDetailDrawerCancel} onCancel={onAssetDetailDrawerCancel}
/> />
<RcMenu id={MENU_ID}>
{
(contextMenuItem.resourceState==='notRelatedAsset') && <RcItem id="uncombed" onClick={handleItemClick}>
转为未梳理
</RcItem>
}
{
(contextMenuItem.resourceState==='uncombed') && <RcItem id="notRelatedAsset" onClick={handleItemClick}>
转为非资产
</RcItem>
}
</RcMenu>
{contextHolder} {contextHolder}
</div> </div>
) )
......
import React, { useState, useEffect, useRef } from "react"; import React, { useState, useEffect } from "react";
import { Tooltip, Tree, Modal, Spin, Dropdown, Menu, Button } from "antd"; import { Tooltip, Tree, Modal, Spin, Dropdown, Menu, Button } from "antd";
import { PlusOutlined, EditOutlined, SyncOutlined, DeleteOutlined, ImportOutlined, UnorderedListOutlined, ReloadOutlined, ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons'; import { PlusOutlined, SyncOutlined, ImportOutlined, UnorderedListOutlined, ReloadOutlined } from '@ant-design/icons';
import classnames from 'classnames'; import classnames from 'classnames';
import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify"; import { useContextMenu, Menu as RcMenu, Item as RcItem } from "react-contexify";
......
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