Commit 265bf08d by zhaochengxiang

岗位新增资产

parent 8e4946ef
import React, { useState } from 'react';
import { Modal, Form, Space, Button } from 'antd';
import { Modal, Form, Space, Button, Spin } from 'antd';
import { showMessage } from '../../../../util';
import { dispatch } from '../../../../model';
import AssetAction from './AssetAction';
import './AddAssetModel.less';
const AddAssetModel = (props) => {
const { onCancel, visible, nodeId } = props;
const [ confirmLoading, setConfirmLoading ] = useState(false);
const [ metadataId, setMetadataId ] = useState('');
const [ waiting, setWaiting ] = useState(false);
const [ elements, setElements ] = useState([]);
const [ form ] = Form.useForm();
......@@ -19,14 +15,15 @@ const AddAssetModel = (props) => {
setElements(value);
}
const onMetadataChange = (value) => {
setMetadataId(value);
const close = (refresh = false) => {
setWaiting(false)
form?.resetFields()
onCancel?.(refresh)
}
const onOk = async() => {
try {
const row = await form?.validateFields();
const newElements = [...elements];
(newElements||[]).forEach(element => {
if (row.hasOwnProperty(element.name)) {
......@@ -34,15 +31,7 @@ const AddAssetModel = (props) => {
}
});
const params = {
dirId: nodeId,
}
if ((metadataId||'')!=='') {
params.metadataId = metadataId;
}
setConfirmLoading(true);
setWaiting(true);
dispatch({
type: 'assetmanage.checkCodeIsExist',
......@@ -51,62 +40,63 @@ const AddAssetModel = (props) => {
},
callback: isExist => {
if (isExist === 'true') {
setConfirmLoading(false);
setWaiting(false);
showMessage('warn', '已存在相同的资产目录编号,请重新输入');
} else {
dispatch({
type: 'assetmanage.addOrUpdateDataAsset',
payload: {
params,
params: {
dirId: nodeId,
},
data: { elements: newElements }
},
callback: () => {
setConfirmLoading(false);
showMessage("success","新增成功");
onCancel && onCancel(true);
close(true)
},
error: () => {
setConfirmLoading(false);
setWaiting(false);
}
})
}
},
error: () => {
setConfirmLoading(false);
setWaiting(false);
}
})
} catch (errInfo) {
console.log('Validate Failed:', errInfo);
setConfirmLoading(false);
setWaiting(false);
}
}
return (
<Modal
forceRender
destroyOnClose
className='asset-add'
title='新增资产目录信息'
visible={ visible }
width={ 600 }
onCancel={() => { onCancel && onCancel(); } }
centered
width={ 800 }
onCancel={() => { close() } }
footer={
<Space>
<Button onClick={() => onCancel && onCancel() }>取消</Button>
<Button type="primary" onClick={ onOk } loading={ confirmLoading }>确定</Button>
<Button type="primary" onClick={ onOk } disabled={ waiting }>确定</Button>
</Space>
}
bodyStyle={{ padding: '10px' }}
bodyStyle={{ overflowX: 'auto', height: '80vh' }}
>
{
visible && <AssetAction
form={form}
dirId={nodeId}
action='add'
onMetadataChange={onMetadataChange}
onElementsChange={onElementsChange}
/>
}
<Spin spinning={waiting}>
<AssetAction
form={form}
dirId={nodeId}
action='add'
onElementsChange={onElementsChange}
/>
</Spin>
</Modal>
);
}
......
.asset-add {
.yy-modal-body {
max-height: 500px !important;
overflow: auto !important;
}
}
\ No newline at end of file
......@@ -398,7 +398,7 @@ const AssetAction = (props) => {
getTreeData();
getDepartments();
if (action === 'add') {
getElements();
} else {
setCurrentAction('detail');
if (id) {
......@@ -545,6 +545,26 @@ const AssetAction = (props) => {
})
}
const getElements = () => {
setLoading(true);
dispatch({
type: 'assetmanage.listElements',
callback: (data) => {
setLoading(false);
const _attributes = Array.from(new Set((data??[]).map(item => item.type)));
setElements(data);
onElementsChange?.(data);
setAssetParams({ attributes: _attributes });
if ((_attributes??[]).length > 0) {
setCurrentAttribute(_attributes[0])
}
},
error: () => {
setLoading(false);
}
})
}
const getTreeData = () => {
dispatch({
type: 'assetmanage.queryAllDirectoryAsTree',
......@@ -1217,47 +1237,49 @@ const AssetAction = (props) => {
))
}
</Radio.Group>
<Space>
{
(!readonly && (reference===AssetManageReference||canEdit)) && <React.Fragment>
{
currentAction==='detail' ? <Button onClick={onActionButtonClick}>编辑</Button> : <React.Fragment>
<Button onClick={onCancelButtonClick}>取消</Button>
<Button onClick={onActionButtonClick}>{(reference===AssetDraftReference||isAdmin)?'保存':'保存草稿'}</Button>
</React.Fragment>
}
{
reference!==AssetDraftReference && <Button onClick={onAuthorizationButtonClick}>授权</Button>
}
</React.Fragment>
}
{
action!=='add' && <Space>
{
(!readonly && (reference===AssetManageReference||canEdit)) && <React.Fragment>
{
currentAction==='detail' ? <Button onClick={onActionButtonClick}>编辑</Button> : <React.Fragment>
<Button onClick={onCancelButtonClick}>取消</Button>
<Button onClick={onActionButtonClick}>{(reference===AssetDraftReference||isAdmin)?'保存':'保存草稿'}</Button>
</React.Fragment>
}
{
reference!==AssetDraftReference && <Button onClick={onAuthorizationButtonClick}>授权</Button>
}
</React.Fragment>
}
<Button onClick={shareAsset}>分享</Button>
<Button onClick={onSubsrcibeClick}>收藏</Button>
<Dropdown overlay={
<Menu onClick={({ key })=>{
if (metadata?.metadataTableId) {
app?.setGlobalState?.({
message: 'data-govern-show-metadata-relation',
data: { id: metadata?.metadataTableId, type: key }
})
} else {
showMessage("warn","该资产目录没有关联元数据信息");
}
}}>
<Menu.Item key="lineage">血缘分析</Menu.Item>
<Menu.Item key="impact">影响分析</Menu.Item>
<Menu.Item key="lineage,impact">全链分析</Menu.Item>
</Menu>
}>
<Button>
<Space>
关系分析
<DownOutlined />
</Space>
</Button>
</Dropdown>
</Space>
<Button onClick={shareAsset}>分享</Button>
<Button onClick={onSubsrcibeClick}>收藏</Button>
<Dropdown overlay={
<Menu onClick={({ key })=>{
if (metadata?.metadataTableId) {
app?.setGlobalState?.({
message: 'data-govern-show-metadata-relation',
data: { id: metadata?.metadataTableId, type: key }
})
} else {
showMessage("warn","该资产目录没有关联元数据信息");
}
}}>
<Menu.Item key="lineage">血缘分析</Menu.Item>
<Menu.Item key="impact">影响分析</Menu.Item>
<Menu.Item key="lineage,impact">全链分析</Menu.Item>
</Menu>
}>
<Button>
<Space>
关系分析
<DownOutlined />
</Space>
</Button>
</Dropdown>
</Space>
}
</div>
{
attributes?.map((attribute, index) => {
......@@ -1335,95 +1357,99 @@ const AssetAction = (props) => {
</Spin>
{
isPostAsset(assets?.templateType) ? <div className='mt-2'><PostRelation /></div> : <React.Fragment>
<div>
<Divider orientation='left'>字段级资产目录信息</Divider>
</div>
<Space style={{ marginLeft: 'auto' }}>
{
(reference===AssetManageReference||(reference!==AssetDraftReference&&canEdit)) && <React.Fragment>
action!=='add' && <React.Fragment>
{
isPostAsset(assets?.templateType) ? <div className='mt-2'><PostRelation /></div> : <React.Fragment>
<div>
<Divider orientation='left'>字段级资产目录信息</Divider>
</div>
<Space style={{ marginLeft: 'auto' }}>
{
isMetadataEdit ? <React.Fragment>
<Button onClick={() => {
setMetadataEdit(false)
}}>
取消
</Button>
<Button onClick={() => {
setLoadingMetadataColumnList(true)
dispatch({
type: 'assetmanage.batchUpdateAttributes',
payload: {
data: modifyMetadataColumnList
},
callback: () => {
setLoadingMetadataColumnList(false)
(reference===AssetManageReference||(reference!==AssetDraftReference&&canEdit)) && <React.Fragment>
{
isMetadataEdit ? <React.Fragment>
<Button onClick={() => {
setMetadataEdit(false)
getMetadataAttributes()
},
error: () => {
setLoadingMetadataColumnList(false)
}}>
取消
</Button>
<Button onClick={() => {
setLoadingMetadataColumnList(true)
dispatch({
type: 'assetmanage.batchUpdateAttributes',
payload: {
data: modifyMetadataColumnList
},
callback: () => {
setLoadingMetadataColumnList(false)
setMetadataEdit(false)
getMetadataAttributes()
},
error: () => {
setLoadingMetadataColumnList(false)
}
})
}}>
保存
</Button>
</React.Fragment> : <Button onClick={() => {
setModifyMetadataColumnList(metadataColumnList)
setMetadataEdit(true)
}}>
编辑
</Button>
}
<Button
onClick={() => {
if (metadata?.metadataTableId) {
setAttributeMaintainParam({
visible: true,
metadataId: metadata?.metadataTableId
});
} else {
showMessage("warn","该资产目录没有关联元数据信息");
}
})
}}>
保存
}}
>
字段级维护
</Button>
</React.Fragment> : <Button onClick={() => {
setModifyMetadataColumnList(metadataColumnList)
setMetadataEdit(true)
}}>
编辑
</Button>
</React.Fragment>
}
<Button
onClick={() => {
if (metadata?.metadataTableId) {
setAttributeMaintainParam({
visible: true,
metadataId: metadata?.metadataTableId
});
} else {
showMessage("warn","该资产目录没有关联元数据信息");
}
}}
>
字段级维护
</Button>
</React.Fragment>
}
<Input size="middle"
placeholder={assets?.templateType==='mdg'?'搜索中英文名称/业务定义':'搜索中英文名称/业务规则'}
value={keyword}
bordered={true} allowClear
style={{ width: 200 }}
onChange={(e) => {
setPagination({...paginate, pageNum: 1})
setKeyword(e.target.value)
}} />
</Space>
<Table
className='mt-3'
loading={loadingMetadataColumnList}
columns={cols??[]}
rowKey='_id'
dataSource={tableData||[]}
pagination={{
position: ['bottomLeft'],
size: 'small',
total: (metadataColumnList||[]).length,
showTotal: (total) => `${total}`,
showSizeChanger: true,
current: pageNum,
pageSize,
onChange: (_pageNum, _pageSize) => {
setPagination({ pageNum: _pageNum||1, pageSize: _pageSize || 20 });
},
onShowSizeChange: (_pageNum, _pageSize) => {
setPagination({ pageNum: _pageNum||1, pageSize: _pageSize || 20 });
},
}}
/>
<Input size="middle"
placeholder={assets?.templateType==='mdg'?'搜索中英文名称/业务定义':'搜索中英文名称/业务规则'}
value={keyword}
bordered={true} allowClear
style={{ width: 200 }}
onChange={(e) => {
setPagination({...paginate, pageNum: 1})
setKeyword(e.target.value)
}} />
</Space>
<Table
className='mt-3'
loading={loadingMetadataColumnList}
columns={cols??[]}
rowKey='_id'
dataSource={tableData||[]}
pagination={{
position: ['bottomLeft'],
size: 'small',
total: (metadataColumnList||[]).length,
showTotal: (total) => `${total}`,
showSizeChanger: true,
current: pageNum,
pageSize,
onChange: (_pageNum, _pageSize) => {
setPagination({ pageNum: _pageNum||1, pageSize: _pageSize || 20 });
},
onShowSizeChange: (_pageNum, _pageSize) => {
setPagination({ pageNum: _pageNum||1, pageSize: _pageSize || 20 });
},
}}
/>
</React.Fragment>
}
</React.Fragment>
}
......
......@@ -13,7 +13,7 @@ import ImportAssetDrawer from './ImportAssetDrawer';
import AssetEdit from './AddAssetModel';
import AssetDetailDrawer from "./AssetDetailDrawer";
import { dispatch, dispatchLatestHomepage } from '../../../../model';
import { showMessage, showNotifaction, getQueryParam, inputWidth, isSzseEnv, highlightSearchContentByTerms } from '../../../../util';
import { showMessage, showNotifaction, getQueryParam, inputWidth, isSzseEnv, highlightSearchContentByTerms, isPostAsset } from '../../../../util';
import { AnchorId, AnchorDirId, AnchorTimestamp, AssetBrowseReference, AssetManageReference, AssetRecycleReference, ResourceBrowseReference } from '../../../../util/constant';
import { FullScreenSvg, CancelFullScreenSvg } from './AssetSvg';
import AssetDeleteModal from './AssetDeleteModal';
......@@ -935,7 +935,6 @@ const AssetTable = (props) => {
</Menu.Item>
}
{
//自定义目录下的资产不允许新增 删除
(nodeType!=='custom') && <Menu.Item disabled={(checkedKeys||[]).length===0}>
<div className='text-center' onClick={deleteAssets}>
删除
......@@ -987,8 +986,7 @@ const AssetTable = (props) => {
>
<Space size={15}>
{
//栏目和自定义目录 不允许新增资产
// (reference===AssetManageReference && nodeLevel!==1 && nodeType!=='custom') && <Button onClick={addAsset}>新增</Button>
(reference===AssetManageReference && isPostAsset(getTemplateType()) && nodeId) && <Button onClick={addAsset}>新增</Button>
}
{
......
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