Commit 6c65ac7b by zhaochengxiang

资产管理

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