Commit 1e8a3a93 by zhaochengxiang

非结构化字段

parent bc023eb8
......@@ -416,4 +416,8 @@ export function* draftAssetImport(payload) {
export function* fillRelationDisplayInfo(payload) {
return yield call(service.fillRelationDisplayInfo, payload);
}
export function* getBusinessColumns(payload) {
return yield call(service.getBusinessColumns, payload);
}
\ No newline at end of file
......@@ -423,4 +423,8 @@ export function getRelatedAssets(payload) {
export function fillRelationDisplayInfo(payload) {
return GetJSON("/dataassetmanagertest/dataAssetRelatedApi/fillRelationDisplayInfo", payload)
}
export function getBusinessColumns(payload) {
return GetJSON("/dataassetmanagertest/dataAssetColumnApi/listBusinessColumnsByDataAssetId", payload)
}
\ No newline at end of file
......@@ -22,8 +22,6 @@ import SelectUser from '../../Model/Component/SelectUsers';
import SelectFilter from '../../Model/Component/SelectFilter';
import { checkDataAssetEditable } from '../../../../service/dataassetmanager';
import download from '../../../../util/download';
import SelectStandard from './SelectStandard';
import AttributeMaintain from './AttributeMaintain';
import RelationAssets from './asset-relation-assets';
import './AssetAction.less';
......@@ -59,12 +57,6 @@ const AssetAction = (props) => {
const [loadingMetadataColumnList, setLoadingMetadataColumnList] = useState(false);
const [metadataColumnList, setMetadataColumnList] = useState(undefined);
const [modifyMetadataColumnList, setModifyMetadataColumnList] = useState();
const [selectStandardParam, setSelectStandardParam] = useState({ visible: false, id: undefined });
const [standardList, setStandardList] = useState(undefined);
const [attributeMaintainParam, setAttributeMaintainParam] = useState({
visible: false,
metadataId: undefined
});
const [ pagination, setPagination ] = useState({ pageNum: 1, pageSize: 20 });
const { pageNum, pageSize } = pagination;
const [modal, contextHolder] = Modal.useModal();
......@@ -81,219 +73,35 @@ const AssetAction = (props) => {
const uploadRef = useRef(undefined);
const relationAssetsRef = useRef();
const actionCol = {
title: '操作',
dataIndex: 'action',
width: 170,
fixed: 'right',
render: (_, record) => {
return <Space>
<Button
size='small'
onClick={() => {
setSelectStandardParam({ visible: true, id: record._id });
}}
>
关联标准
</Button>
{
record.standard?.standardId && <Button
size='small'
onClick={() => {
modal.confirm({
title: '您确定要取消关联标准吗?',
onOk: () => {
dispatch({
type: 'assetmanage.deleteStandardBatchMetadata',
payload: {
params: {
ids: record.standard?.id
}
},
callback: () => {
showMessage("success","取消成功");
getMetadataStandardList();
}
})
}
})
}}
>
取消关联
</Button>
}
</Space>
}
}
const columns = [
{
title: '技术ID(英文名称)',
dataIndex: 'name',
width: 160,
ellipsis: true,
render: (text, record, _) => {
return (
<Tooltip title={text||''}>
<a onClick={() => {
window.open(`/center-home/metadetail?mid=${record._id}&action=metadetail&type=detail&manager=false&activekey=1`);
}}>
{highlightSearchContentByTerms(text||'', terms)}
</a>
</Tooltip>
);
}
},
{
title: '名称',
dataIndex: 'cnName',
// width: 200,
ellipsis: true,
render: (text, _, index) => highlightSearchContentByTerms(text||'', terms)
},
const businessCols = [
{
title: '是否有权限',
dataIndex: 'permission',
width: 100,
ellipsis: true,
render: (_, record) => {
const index = (permissions||[]).findIndex(item => item.columnMetadataId===record._id);
if (index!==-1) {
return permissions[index].visible === 'Y' ? '是':'否';
}
return '否';
}
},
{
title: '业务规则',
dataIndex: 'businessRules',
width: 240,
title: '英文名称',
dataIndex: 'enName',
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'businessRules', index)
onMetadataColumnEditableItemChange(e.target.value, 'enName', index)
}}
/>
},
{
title: '计量单位',
dataIndex: 'unitOfMeasurement',
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'unitOfMeasurement', index)
}}
/>
},
{
title: '备注信息',
dataIndex: 'remarks',
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'remarks', index)
}}
/>
},
{
title: '类型',
dataIndex: 'typeName',
width: 100,
ellipsis: true,
render: (text, _) => highlightSearchContentByTerms(text||'', terms)
},
{
title: '长度',
dataIndex: 'size',
width: 60,
ellipsis: true,
},
{
title: '引用标准',
dataIndex: 'standard',
ellipsis: true,
render: (_, record) => {
return <AppContext.Consumer>
{
appValue => <a onClick={() => {
appValue?.setGlobalState && appValue?.setGlobalState({
message: 'data-govern-show-index-detail-message',
data: { id: record.standard?.standardId }
})
}}>
<span>{record.standard?.standardName}</span>
</a>
}
</AppContext.Consumer>
}
}
];
const mdgColumns = [
{
title: '技术ID(英文名称)',
dataIndex: 'name',
width: 160,
ellipsis: true,
render: (text, record, _) => {
return (
<Tooltip title={text||''}>
<a onClick={() => {
window.open(`/center-home/metadetail?mid=${record._id}&action=metadetail&type=detail&manager=false&activekey=1`);
}}>
{highlightSearchContentByTerms(text||'', terms)}
</a>
</Tooltip>
);
}
/>
},
{
title: '名称',
title: '中文名称',
dataIndex: 'cnName',
// width: 200,
ellipsis: true,
render: (text, _, index) => highlightSearchContentByTerms(text||'', terms)
},
{
title: '是否有权限',
dataIndex: 'permission',
width: 100,
ellipsis: true,
render: (_, record) => {
const index = (permissions||[]).findIndex(item => item.columnMetadataId===record._id);
if (index!==-1) {
return permissions[index].visible === 'Y' ? '是':'否';
}
return '否';
}
},
{
title: '业务定义',
dataIndex: 'businessDefinition',
width: 240,
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'businessDefinition', index)
onMetadataColumnEditableItemChange(e.target.value, 'cnName', index)
}}
/>
},
{
title: '备注信息',
title: '备注',
dataIndex: 'remarks',
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
......@@ -305,84 +113,8 @@ const AssetAction = (props) => {
}}
/>
},
{
title: '数据owner',
dataIndex: 'dataOwner',
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'dataOwner', index)
}}
/>
},
{
title: '保密等级',
dataIndex: 'confidentialityLevel',
width: 100,
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'confidentialityLevel', index)
}}
/>
},
{
title: '引用标准',
dataIndex: 'standard',
ellipsis: true,
render: (_, record) => {
return <AppContext.Consumer>
{
appValue => <a onClick={() => {
appValue?.setGlobalState && appValue?.setGlobalState({
message: 'data-govern-show-index-detail-message',
data: { id: record.standard?.standardId }
})
}}>
<span>{record.standard?.standardName}</span>
</a>
}
</AppContext.Consumer>
}
}
];
const cols = useMemo(() => {
if (assets?.templateType) {
let newCols = (assets?.templateType==='mdg') ? [...mdgColumns] : [...columns]
if (!permissionId) {
newCols = newCols.filter(item => item.dataIndex !== 'permission')
}
const haveCode = (metadataColumnList??[]).some(item => item.code)
//字段有编号才显示
if (haveCode) {
newCols.splice(2, 0, {
title: '编号',
dataIndex: 'code',
width: 100,
ellipsis: true,
render: (text, _) => highlightSearchContentByTerms(text||'', terms)
});
}
if (!readonly &&
(reference===AssetManageReference||(reference!==AssetDraftReference&&canEdit))
) {
newCols.push(actionCol)
}
return newCols
}
return []
}, [assets, columns, actionCol, canEdit, metadataColumnList, reference, permissionId, readonly])
useEffect(() => {
if (!readonly) {
getSystems();
......@@ -446,40 +178,8 @@ const AssetAction = (props) => {
const tableData = useMemo(() => {
let currentMetadataColumnList = isMetadataEdit ? [...modifyMetadataColumnList||[]] : [...metadataColumnList||[]]
if ((currentMetadataColumnList??[]).length>0 && standardList && assets?.templateType) {
const newMetadataColumnList = [];
currentMetadataColumnList = (assets?.templateType==='mdg') ? currentMetadataColumnList.filter(item => {
return (
!keyword
|| (item.name??'').indexOf(keyword)!==-1
|| (item.cnName??'').indexOf(keyword)!==-1
|| (item.businessDefinition??'').indexOf(keyword)!==-1
)
}) : currentMetadataColumnList.filter(item => {
return (
!keyword
|| (item.name??'').indexOf(keyword)!==-1
|| (item.cnName??'').indexOf(keyword)!==-1
|| (item.businessRules??'').indexOf(keyword)!==-1
)
});
currentMetadataColumnList.forEach(item => {
const index = standardList?.findIndex(_item => _item.metadataId === item._id);
let newItem = {...item};
if (index !== -1) {
newItem.standard = standardList[index];
}
newMetadataColumnList.push(newItem);
});
return paginate(newMetadataColumnList, pageNum, pageSize);
}
return [];
}, [metadataColumnList, modifyMetadataColumnList, standardList, pagination, keyword, isMetadataEdit, assets])
return paginate(currentMetadataColumnList, pageNum, pageSize);
}, [metadataColumnList, modifyMetadataColumnList, pagination, keyword, isMetadataEdit, assets])
const getPermission = () => {
dispatch({
......@@ -682,18 +382,7 @@ const AssetAction = (props) => {
const metadataIndex = data?.elements?.findIndex(item => item.name === '资产项');
if (metadataIndex !== -1) {
let metadataValue = data?.elements[metadataIndex].value;
try {
setMetadata(JSON.parse(metadataValue));
if (!isPostAsset(data?.templateType)) {
getMetadataAttributes();
getMetadataStandardList();
}
} catch(error) {
}
}
getMetadataAttributes();
setElements(data?.elements||[]);
onElementsChange && onElementsChange(data?.elements||[]);
......@@ -741,64 +430,22 @@ const AssetAction = (props) => {
}
const getMetadataAttributes = () => {
setMetadata(prevMetadata => {
const ids = prevMetadata?.columnItems.map(item => item.metadataColumnId);
if ((ids||[]).length > 0) {
setLoadingMetadataColumnList(true);
dispatch({
type: 'assetmanage.getMetadataAttributes',
payload: {
data: ids,
// params: {
// catalog: app?.env?.domainId||catalog||LocalStorage.get('assetsEnv'),
// }
},
callback: data => {
setLoadingMetadataColumnList(false);
const newData = [...data||[]];
if (prevMetadata?.metadataTableId?.toLowerCase().indexOf('query') !== -1) {
newData.forEach(item => {
item.typeName = item.datatype;
item.size = item.length;
});
}
setMetadataColumnList(newData);
},
error: () => {
setLoadingMetadataColumnList(false);
}
});
}
return prevMetadata
})
}
const getMetadataStandardList = () => {
setMetadata(prevMetadata => {
if (prevMetadata?.metadataTableId) {
dispatch({
type: 'assetmanage.getMetadataStandardList',
payload: {
data: {
parentMetadataId: prevMetadata?.metadataTableId
},
params: {
page: 1,
size: 999999
}
},
callback: data => {
setStandardList(data?.content);
},
});
}
return prevMetadata;
})
if (assets?.id) {
setLoadingMetadataColumnList(true);
dispatch({
type: 'assetmanage.getBusinessColumns',
payload: {
dataAssetId: assets?.id
},
callback: data => {
setLoadingMetadataColumnList(false);
setMetadataColumnList(data);
},
error: () => {
setLoadingMetadataColumnList(false);
}
});
}
}
const onMetadataColumnEditableItemChange = (val, dataIndex, index) => {
......@@ -1029,24 +676,6 @@ const AssetAction = (props) => {
})
}
const onSelectStandardCancel = (refresh = false) => {
setSelectStandardParam({ visible: false, id: undefined });
refresh && getMetadataStandardList();
}
const onAttributeMaintainCancel = () => {
setAttributeMaintainParam({visible: false, metadataId: undefined});
}
const onAttributeMaintainChange = (catalogId) => {
if (catalogId === '1') {
setPagination({...pagination, pageNum: 1});
getMetadataAttributes();
} else {
getMetadataStandardList();
}
}
const shareAsset = () => {
if ((assets?.dirIds??[]).length > 0) {
copy(`${window.location.origin}/center-home/asset-detail?id=${id}&dirId=${assets?.dirIds[0]}&isDraft=${reference===AssetDraftReference}&catalog=${app?.env?.domainId||catalog||LocalStorage.get('assetsEnv')||''}`);
......@@ -1278,37 +907,14 @@ const AssetAction = (props) => {
编辑
</Button>
}
<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??[]}
columns={businessCols??[]}
rowKey='_id'
dataSource={tableData||[]}
pagination={{
......@@ -1337,20 +943,6 @@ const AssetAction = (props) => {
item={assets}
/>
</div>
<SelectStandard
visible={selectStandardParam.visible}
id={selectStandardParam.id}
onCancel={onSelectStandardCancel}
/>
<AttributeMaintain
visible={attributeMaintainParam.visible}
metadataId={attributeMaintainParam.metadataId}
reference={reference}
onCancel={onAttributeMaintainCancel}
onChange={onAttributeMaintainChange}
/>
{contextHolder}
</div>
)
......
......@@ -157,24 +157,26 @@ const FC = React.forwardRef(function ({ item, reference, action, onChange }, ref
return (
<div>
<div style={{ display: 'flex', justifyContent: 'space-between' }}>
{
action !== 'detail' ? <Space>
<Button onClick={onEditClick}>编辑</Button>
<Tooltip title={(selectedRows??[]).length===0?'请先选择资产':''}>
<Button disabled={(selectedRows??[]).length===0} onClick={onDeleteClick}>删除</Button>
</Tooltip>
</Space> : <div />
}
<Input size="middle"
placeholder='搜索资产名称'
value={keyword}
bordered={true} allowClear
style={{ width: 200 }}
onChange={(e) => {
setPagination({...pagination, pageNum: 1})
setKeyword(e.target.value)
}} />
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Space>
{
action !== 'detail' && <React.Fragment>
<Button onClick={onEditClick}>编辑</Button>
<Tooltip title={(selectedRows??[]).length===0?'请先选择资产':''}>
<Button disabled={(selectedRows??[]).length===0} onClick={onDeleteClick}>删除</Button>
</Tooltip>
</React.Fragment>
}
<Input size="middle"
placeholder='搜索资产名称'
value={keyword}
bordered={true} allowClear
style={{ width: 200 }}
onChange={(e) => {
setPagination({...pagination, pageNum: 1})
setKeyword(e.target.value)
}} />
</Space>
</div>
<div className='mt-3'>
<Table
......
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