Commit 1e8a3a93 by zhaochengxiang

非结构化字段

parent bc023eb8
...@@ -417,3 +417,7 @@ export function* draftAssetImport(payload) { ...@@ -417,3 +417,7 @@ export function* draftAssetImport(payload) {
export function* fillRelationDisplayInfo(payload) { export function* fillRelationDisplayInfo(payload) {
return yield call(service.fillRelationDisplayInfo, payload); return yield call(service.fillRelationDisplayInfo, payload);
} }
export function* getBusinessColumns(payload) {
return yield call(service.getBusinessColumns, payload);
}
\ No newline at end of file
...@@ -424,3 +424,7 @@ export function getRelatedAssets(payload) { ...@@ -424,3 +424,7 @@ export function getRelatedAssets(payload) {
export function fillRelationDisplayInfo(payload) { export function fillRelationDisplayInfo(payload) {
return GetJSON("/dataassetmanagertest/dataAssetRelatedApi/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'; ...@@ -22,8 +22,6 @@ import SelectUser from '../../Model/Component/SelectUsers';
import SelectFilter from '../../Model/Component/SelectFilter'; import SelectFilter from '../../Model/Component/SelectFilter';
import { checkDataAssetEditable } from '../../../../service/dataassetmanager'; import { checkDataAssetEditable } from '../../../../service/dataassetmanager';
import download from '../../../../util/download'; import download from '../../../../util/download';
import SelectStandard from './SelectStandard';
import AttributeMaintain from './AttributeMaintain';
import RelationAssets from './asset-relation-assets'; import RelationAssets from './asset-relation-assets';
import './AssetAction.less'; import './AssetAction.less';
...@@ -59,12 +57,6 @@ const AssetAction = (props) => { ...@@ -59,12 +57,6 @@ const AssetAction = (props) => {
const [loadingMetadataColumnList, setLoadingMetadataColumnList] = useState(false); const [loadingMetadataColumnList, setLoadingMetadataColumnList] = useState(false);
const [metadataColumnList, setMetadataColumnList] = useState(undefined); const [metadataColumnList, setMetadataColumnList] = useState(undefined);
const [modifyMetadataColumnList, setModifyMetadataColumnList] = useState(); 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 [ pagination, setPagination ] = useState({ pageNum: 1, pageSize: 20 });
const { pageNum, pageSize } = pagination; const { pageNum, pageSize } = pagination;
const [modal, contextHolder] = Modal.useModal(); const [modal, contextHolder] = Modal.useModal();
...@@ -81,219 +73,35 @@ const AssetAction = (props) => { ...@@ -81,219 +73,35 @@ const AssetAction = (props) => {
const uploadRef = useRef(undefined); const uploadRef = useRef(undefined);
const relationAssetsRef = useRef(); const relationAssetsRef = useRef();
const actionCol = { const businessCols = [
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)
},
{
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,
ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem
value={text}
isEdit={isMetadataEdit}
terms={terms}
onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'businessRules', index)
}}
/>
},
{ {
title: '计量单位', title: '英文名称',
dataIndex: 'unitOfMeasurement', dataIndex: 'enName',
ellipsis: true, ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem render: (text, _, index) => <MetadataColumnEditableItem
value={text} value={text}
isEdit={isMetadataEdit} isEdit={isMetadataEdit}
terms={terms} terms={terms}
onChange={(e) => { onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'unitOfMeasurement', index) onMetadataColumnEditableItemChange(e.target.value, 'enName', index)
}} }}
/> />
}, },
{ {
title: '备注信息', 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: '名称',
dataIndex: 'cnName', 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, ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem render: (text, _, index) => <MetadataColumnEditableItem
value={text} value={text}
isEdit={isMetadataEdit} isEdit={isMetadataEdit}
terms={terms} terms={terms}
onChange={(e) => { onChange={(e) => {
onMetadataColumnEditableItemChange(e.target.value, 'businessDefinition', index) onMetadataColumnEditableItemChange(e.target.value, 'cnName', index)
}} }}
/> />
}, },
{ {
title: '备注信息', title: '备注',
dataIndex: 'remarks', dataIndex: 'remarks',
ellipsis: true, ellipsis: true,
render: (text, _, index) => <MetadataColumnEditableItem render: (text, _, index) => <MetadataColumnEditableItem
...@@ -305,84 +113,8 @@ const AssetAction = (props) => { ...@@ -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(() => { useEffect(() => {
if (!readonly) { if (!readonly) {
getSystems(); getSystems();
...@@ -446,40 +178,8 @@ const AssetAction = (props) => { ...@@ -446,40 +178,8 @@ const AssetAction = (props) => {
const tableData = useMemo(() => { const tableData = useMemo(() => {
let currentMetadataColumnList = isMetadataEdit ? [...modifyMetadataColumnList||[]] : [...metadataColumnList||[]] let currentMetadataColumnList = isMetadataEdit ? [...modifyMetadataColumnList||[]] : [...metadataColumnList||[]]
if ((currentMetadataColumnList??[]).length>0 && standardList && assets?.templateType) { return paginate(currentMetadataColumnList, pageNum, pageSize);
const newMetadataColumnList = []; }, [metadataColumnList, modifyMetadataColumnList, pagination, keyword, isMetadataEdit, assets])
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])
const getPermission = () => { const getPermission = () => {
dispatch({ dispatch({
...@@ -682,18 +382,7 @@ const AssetAction = (props) => { ...@@ -682,18 +382,7 @@ const AssetAction = (props) => {
const metadataIndex = data?.elements?.findIndex(item => item.name === '资产项'); 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(); getMetadataAttributes();
getMetadataStandardList();
}
} catch(error) {
}
}
setElements(data?.elements||[]); setElements(data?.elements||[]);
onElementsChange && onElementsChange(data?.elements||[]); onElementsChange && onElementsChange(data?.elements||[]);
...@@ -741,64 +430,22 @@ const AssetAction = (props) => { ...@@ -741,64 +430,22 @@ const AssetAction = (props) => {
} }
const getMetadataAttributes = () => { const getMetadataAttributes = () => {
setMetadata(prevMetadata => { if (assets?.id) {
const ids = prevMetadata?.columnItems.map(item => item.metadataColumnId);
if ((ids||[]).length > 0) {
setLoadingMetadataColumnList(true); setLoadingMetadataColumnList(true);
dispatch({ dispatch({
type: 'assetmanage.getMetadataAttributes', type: 'assetmanage.getBusinessColumns',
payload: { payload: {
data: ids, dataAssetId: assets?.id
// params: {
// catalog: app?.env?.domainId||catalog||LocalStorage.get('assetsEnv'),
// }
}, },
callback: data => { callback: data => {
setLoadingMetadataColumnList(false); setLoadingMetadataColumnList(false);
setMetadataColumnList(data);
const newData = [...data||[]];
if (prevMetadata?.metadataTableId?.toLowerCase().indexOf('query') !== -1) {
newData.forEach(item => {
item.typeName = item.datatype;
item.size = item.length;
});
}
setMetadataColumnList(newData);
}, },
error: () => { error: () => {
setLoadingMetadataColumnList(false); 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;
})
} }
const onMetadataColumnEditableItemChange = (val, dataIndex, index) => { const onMetadataColumnEditableItemChange = (val, dataIndex, index) => {
...@@ -1029,24 +676,6 @@ const AssetAction = (props) => { ...@@ -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 = () => { const shareAsset = () => {
if ((assets?.dirIds??[]).length > 0) { 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')||''}`); 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) => { ...@@ -1278,37 +907,14 @@ const AssetAction = (props) => {
编辑 编辑
</Button> </Button>
} }
<Button
onClick={() => {
if (metadata?.metadataTableId) {
setAttributeMaintainParam({
visible: true,
metadataId: metadata?.metadataTableId
});
} else {
showMessage("warn","该资产目录没有关联元数据信息");
}
}}
>
字段级维护
</Button>
</React.Fragment> </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> </Space>
<Table <Table
className='mt-3' className='mt-3'
loading={loadingMetadataColumnList} loading={loadingMetadataColumnList}
columns={cols??[]} columns={businessCols??[]}
rowKey='_id' rowKey='_id'
dataSource={tableData||[]} dataSource={tableData||[]}
pagination={{ pagination={{
...@@ -1337,20 +943,6 @@ const AssetAction = (props) => { ...@@ -1337,20 +943,6 @@ const AssetAction = (props) => {
item={assets} item={assets}
/> />
</div> </div>
<SelectStandard
visible={selectStandardParam.visible}
id={selectStandardParam.id}
onCancel={onSelectStandardCancel}
/>
<AttributeMaintain
visible={attributeMaintainParam.visible}
metadataId={attributeMaintainParam.metadataId}
reference={reference}
onCancel={onAttributeMaintainCancel}
onChange={onAttributeMaintainChange}
/>
{contextHolder} {contextHolder}
</div> </div>
) )
......
...@@ -157,14 +157,15 @@ const FC = React.forwardRef(function ({ item, reference, action, onChange }, ref ...@@ -157,14 +157,15 @@ const FC = React.forwardRef(function ({ item, reference, action, onChange }, ref
return ( return (
<div> <div>
<div style={{ display: 'flex', justifyContent: 'space-between' }}> <div style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Space>
{ {
action !== 'detail' ? <Space> action !== 'detail' && <React.Fragment>
<Button onClick={onEditClick}>编辑</Button> <Button onClick={onEditClick}>编辑</Button>
<Tooltip title={(selectedRows??[]).length===0?'请先选择资产':''}> <Tooltip title={(selectedRows??[]).length===0?'请先选择资产':''}>
<Button disabled={(selectedRows??[]).length===0} onClick={onDeleteClick}>删除</Button> <Button disabled={(selectedRows??[]).length===0} onClick={onDeleteClick}>删除</Button>
</Tooltip> </Tooltip>
</Space> : <div /> </React.Fragment>
} }
<Input size="middle" <Input size="middle"
placeholder='搜索资产名称' placeholder='搜索资产名称'
...@@ -175,6 +176,7 @@ const FC = React.forwardRef(function ({ item, reference, action, onChange }, ref ...@@ -175,6 +176,7 @@ const FC = React.forwardRef(function ({ item, reference, action, onChange }, ref
setPagination({...pagination, pageNum: 1}) setPagination({...pagination, pageNum: 1})
setKeyword(e.target.value) setKeyword(e.target.value)
}} /> }} />
</Space>
</div> </div>
<div className='mt-3'> <div className='mt-3'>
<Table <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