Commit 6c65ac7b by zhaochengxiang

资产管理

parent 9cf34768
......@@ -13,6 +13,10 @@ export function* listElements() {
return yield call(service.listElements);
}
export function* listUserElements() {
return yield call(service.listUserElements);
}
export function* listCustomElements() {
return yield call(service.listCustomElements);
}
......@@ -33,6 +37,14 @@ export function* setupFilterElementIds(payload) {
return yield call(service.setupFilterElementIds, payload);
}
export function* listFilterElementIdsConfig() {
return yield call(service.listFilterElementIdsConfig);
}
export function* setupFilterElementIdsConfig(payload) {
return yield call(service.setupFilterElementIdsConfig, payload);
}
export function* addOrUpdateDataAsset(payload) {
return yield call(service.addOrUpdateDataAsset, payload);
}
......
......@@ -12,6 +12,10 @@ export function listElements() {
return PostJSON("/dataassetmanager/elementApi/listElements");
}
export function listUserElements() {
return PostJSON("/dataassetmanager/elementApi/listSelectedRangeElements");
}
export function listCustomElements() {
return GetJSON("/dataassetmanager/elementApi/listCustomElements");
}
......@@ -32,6 +36,14 @@ export function setupFilterElementIds(payload) {
return PostJSON("/dataassetmanager/elementApi/setupFilterElementIds", payload);
}
export function listFilterElementIdsConfig() {
return PostJSON("/dataassetmanager/configApi/listFilterElementIds");
}
export function setupFilterElementIdsConfig(payload) {
return PostJSON("/dataassetmanager/configApi/setupFilterElementIds", payload);
}
export function addOrUpdateDataAsset(payload) {
return PostJSON("/dataassetmanager/dataAssetApi/addOrUpdateDataAsset", payload);
}
......
......@@ -55,9 +55,9 @@ const AssetDirectory = (props) => {
<span>{`编号: ${dir?(dir.code||''):''}`}</span>
</Space>
<Tooltip title={`${dir?(dir.remark||''):''}`}>
<div className='textOverflow'>{`描述: ${dir?(dir.remark||''):''}`}</div>
<div className='textOverflow'>{`描述: ${dir?(dir.desc||''):''}`}</div>
</Tooltip>
<div>{`备注: `}</div>
<div>{`备注: ${dir?(dir.remarks||''):''}`}</div>
</div>
<div
className='flex'
......
......@@ -501,6 +501,7 @@ const AssetTable = (props) => {
{...props}
/>
<FilterElementModal
type={(reference===AssetManageReference)?'admin': 'user'}
visible={ filterElementVisible }
onCancel={ onFilterElementModalCancel}
/>
......
......@@ -3,6 +3,8 @@ import { Space, Button } from 'antd';
import ImportElement from './ImportElement';
import AttributeRelationModal from "./AttributeRelationModal";
import FilterElementModal from './FilterElementModal';
import { showNotifaction } from '../../../../util';
const ElementManage = (props) => {
......@@ -10,6 +12,7 @@ const ElementManage = (props) => {
const [ importElementVisible, setImportElementVisible ] = useState(false);
const [ attributeRelationModalVisible, setAttributeRelationModalVisible ] = useState(false);
const [ filterElementVisible, setFilterElementVisible ] = useState(false);
const onImportElementBtnClick = () => {
setImportElementVisible(true);
......@@ -19,6 +22,10 @@ const ElementManage = (props) => {
window.open('/api/dataassetmanager/elementApi/export');
}
const onFilterElementClick = () => {
setFilterElementVisible(true);
}
const onAttributeRelationBtnClick = () => {
setAttributeRelationModalVisible(true);
}
......@@ -35,6 +42,10 @@ const ElementManage = (props) => {
}
}
const onFilterElementModalCancel = () => {
setFilterElementVisible(false);
}
const onAttributeRelationModalCancel = () => {
setAttributeRelationModalVisible(false);
}
......@@ -52,7 +63,7 @@ const ElementManage = (props) => {
<Space>
<Button onClick={onImportElementBtnClick}>导入要素</Button>
<Button onClick={onExportElementBtnClick}>导出要素</Button>
<Button>要素管理</Button>
<Button onClick={onFilterElementClick}>要素管理</Button>
<Button onClick={onAttributeRelationBtnClick}>元数据属性关联</Button>
</Space>
......@@ -61,6 +72,11 @@ const ElementManage = (props) => {
onCancel={onImportElementCancel}
/>
<FilterElementModal
visible={ filterElementVisible }
onCancel={ onFilterElementModalCancel}
/>
<AttributeRelationModal
visible={ attributeRelationModalVisible }
onCancel={ onAttributeRelationModalCancel }
......
......@@ -5,9 +5,14 @@ import { dispatch } from '../../../../model';
import { requireElements } from '../util';
import './FilterElementModal.less';
//type
//global 全局设置
//admin 管理员
//user 普通用户
const FilterElementModal = (props) => {
const { visible, onCancel } = props;
const { visible, onCancel, type = 'global' } = props;
const [ elements, setElements ] = useState([]);
const [ typesOfElements, setTypesOfElements ] = useState([]);
const [ selectedKeys, setSelectedKeys ] = useState([]);
......@@ -22,8 +27,16 @@ const FilterElementModal = (props) => {
}, [visible]);
const getAllFilterElementIdsThenGetAllElements = () => {
let url = '';
if (type === 'global') {
url = 'assetmanage.listFilterElementIdsConfig';
} else {
url = 'assetmanage.listFilterElementIds';
}
dispatch({
type: 'assetmanage.listFilterElementIds',
type: url,
callback: data => {
setSelectedKeys(data||[]);
getAllElements();
......@@ -32,8 +45,16 @@ const FilterElementModal = (props) => {
}
const getAllElements = () => {
let url = '';
if (type === 'user') {
url = 'assetmanage.listUserElements';
} else {
url = 'assetmanage.listElements';
}
dispatch({
type: 'assetmanage.listElements',
type: url,
callback: data => {
setElements(data||[]);
convertElements(data||[]);
......@@ -93,8 +114,15 @@ const FilterElementModal = (props) => {
setConfirmLoading(true);
let url = '';
if (type === 'global') {
url = 'assetmanage.setupFilterElementIdsConfig';
} else {
url = 'assetmanage.setupFilterElementIds';
}
dispatch({
type: 'assetmanage.setupFilterElementIds',
type: url,
payload: {
data: selectedKeys
},
......
import React, { useEffect, useState } from 'react';
import { Modal, Form, Input, Space, InputNumber, Button, Radio } from 'antd';
import { Modal, Form, Input, Space, InputNumber, Button, Radio, Select } from 'antd';
import { dispatch } from '../../../../model';
import { showMessage } from '../../../../util';
const resourceTypes = [
{ key: 'innerSource', name: '外部资源' },
{ key: 'outerSource', name: '内部资源' },
{ key: 'dataAsset', name: '资产' },
]
const UpdateDirectoryModal = (props) => {
const { visible, onCancel, dirId, action } = props;
......@@ -11,13 +17,15 @@ const UpdateDirectoryModal = (props) => {
const [ form ] = Form.useForm();
const [ dir, setDir ] = useState(null);
const [ confirmLoading, setConfirmLoading ] = useState(false);
const [ isThemeAdd, setIsThemeAdd ] = useState(false);
useEffect(() => {
if (visible) {
setDir(null);
form.resetFields();
if ((dirId||'')!=='') {
if (action!=='add' && (dirId||'')!=='') {
getDirectory();
}
}
......@@ -34,11 +42,7 @@ const UpdateDirectoryModal = (props) => {
},
callback: data => {
setDir(data);
if(action === 'add') {
form.resetFields();
} else {
form.setFieldsValue({ code: data.code, name: data.name||'', order: data.order||'', remarks: data.remarks||'' });
}
form.setFieldsValue({ code: data?.code, name: data?.name||'', order: data?.order||'', desc: data?.desc||'', remarks: data?.remarks||'' });
}
})
}
......@@ -54,6 +58,7 @@ const UpdateDirectoryModal = (props) => {
code: row.code,
name: row.name,
order: row.order,
desc: row.desc,
remarks: row.remarks,
}
};
......@@ -69,6 +74,8 @@ const UpdateDirectoryModal = (props) => {
payload = { ...payload, params: {
parentPath: dir.path||''
}};
} else {
payload.data.resourceType = row.resourceType;
}
} else {
......@@ -104,13 +111,24 @@ const UpdateDirectoryModal = (props) => {
const onReset = () => {
if(action === 'add') {
form.resetFields()
setIsThemeAdd(false);
form.resetFields();
} else {
if (dir === null) {
showMessage('warn', '资产目录节点信息正在加载中...');
return;
}
form.setFieldsValue({ code: dir.code, name: dir.name||'', order: dir.order||'', remarks: dir.remarks||'' })
form.resetFields();
}
}
const onValuesChange = (changedValues, allValues) => {
if (action==='add') {
if (changedValues.type === 'theme') {
setIsThemeAdd(true);
} else if (changedValues.type === 'directory') {
setIsThemeAdd(false);
}
}
}
......@@ -140,18 +158,35 @@ const UpdateDirectoryModal = (props) => {
</Space>
}
>
<Form {...formItemLayout} form={form}>
<Form {...formItemLayout} form={form} onValuesChange={onValuesChange}>
{
action==='add' && <Form.Item
label="类型"
name="type"
rules={[{ required: true, message: '必填项' }]}
>
<Radio.Group >
<Radio value='theme' >主题</Radio>
<Radio value='directory' disabled={ dirId===null }>目录</Radio>
</Radio.Group>
</Form.Item>
action==='add' && <React.Fragment>
<Form.Item
label="类型"
name="type"
rules={[{ required: true, message: '必填项' }]}
>
<Radio.Group>
<Radio value='theme'>主题</Radio>
<Radio value='directory' disabled={ dirId===null }>目录</Radio>
</Radio.Group>
</Form.Item>
{
isThemeAdd && <Form.Item
label="资产类型"
name="resourceType"
rules={[{ required: true, message: '必填项' }]}
>
<Select>
{
resourceTypes.map((item,index) => {
return <Select.Option key={item.key}>{item.name}</Select.Option>
})
}
</Select>
</Form.Item>
}
</React.Fragment>
}
<Form.Item
label="编号"
......@@ -186,10 +221,16 @@ const UpdateDirectoryModal = (props) => {
}
<Form.Item
label="描述"
name="remarks"
name="desc"
>
<Input.TextArea placeholder="请输入描述" autoSize={{ minRows: 4, maxRows: 4 }} />
</Form.Item>
<Form.Item
label="备注"
name="remarks"
>
<Input.TextArea placeholder="请输入备注" autoSize={{ minRows: 4, maxRows: 4 }} />
</Form.Item>
</Form>
</Modal>
);
......
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