Commit 9fb407f4 by zhaochengxiang

资源新增目录

parent e16c8575
......@@ -236,3 +236,7 @@ export function* getPrivilegeByRangeAndDirId(payload) {
export function* getPreviewRangeByDirId(payload) {
return yield call(service.getPreviewRangeByDirId, payload);
}
export function* resourceAddOrUpdateDirectory(payload) {
return yield call(service.resourceAddOrUpdateDirectory, payload)
}
\ No newline at end of file
......@@ -69,7 +69,7 @@ export function listDataAssetsByPage(payload) {
}
export function listDataResourcesByPage(payload) {
return GetJSON("/dataassetmanager/resourceApi/listResourcesByPage", payload);
return PostJSON("/dataassetmanager/resourceApi/listResourcesByPage", payload);
}
export function listDataAssetsByPersonalCustomType(payload) {
......@@ -243,3 +243,7 @@ export function getPrivilegeByRangeAndDirId(payload) {
export function getPreviewRangeByDirId(payload) {
return Get("/dataassetmanager/dataAssetApi/getPreviewRangeByDirId", payload);
}
export function resourceAddOrUpdateDirectory(payload) {
return PostJSON("/dataassetmanager/resourceApi/addOrUpdateDirectory", payload);
}
\ No newline at end of file
......@@ -292,11 +292,14 @@ const FC = (props) => {
dispatch({
type: 'assetmanage.listDataResourcesByPage',
payload: {
data: [],
params: {
dirId: node?.nodeId,
pageNum: args.params.page,
pageSize: args.params.size,
keyword: args.params.keyword,
range: getAssetRange(ResourceManageReference),
}
},
callback: data => {
setLoading(false)
......
......@@ -7,7 +7,7 @@ import { dispatch } from '../../../model'
import { showMessage, highlightSearchContentByTerms } from '../../../util'
import Tree from '../../../util/Component/Tree'
import PermissionButton from '../../../util/Component/PermissionButton'
import UpdateNode from '../AssetManage/Component/UpdateDirectoryModal'
import UpdateNode from './update-node'
import ImportNode from '../AssetManage/Component/ImportDirectory'
import CustomNode from '../AssetManage/Component/CustomDirectoryModal'
......@@ -57,7 +57,7 @@ const FC = (props) => {
const [updateNodeParam, setUpdateNodeParam] = useState({
visible: false,
action: undefined,
dirId: undefined,
id: undefined,
})
const [importNodeParam, setImportNodeParam] = useState({
visible: false,
......@@ -235,9 +235,9 @@ const FC = (props) => {
const onAddClick = () => {
setUpdateNodeParam({
type: 'add',
visible: true,
dirId: selectedKey
action: 'add',
id: selectedKey
})
}
......@@ -316,9 +316,9 @@ const FC = (props) => {
const onUpdateNodeCancel = (refresh = false, nodeId = undefined) => {
setUpdateNodeParam({
type: undefined,
visible: false,
dirId: undefined
action: undefined,
id: undefined
})
if (refresh) {
......@@ -354,9 +354,9 @@ const FC = (props) => {
onDeleteNodeClick(node)
} else if (key === 'edit') {
setUpdateNodeParam({
type: 'edit',
visible: true,
dirId: rightSelectedNode?.nodeId
action: 'edit',
id: rightSelectedNode?.nodeId
})
} else if (key === 'up') {
onMoveNodeClick(1)
......
import React from 'react'
import { Modal, Button, Spin, Form, Input, Radio, Select } from 'antd'
import { dispatch } from '../../../model'
const resourceTypes = [
{ key: 'innerSource', name: '内部资源' },
{ key: 'outerSource', name: '外部资源' },
{ key: 'custom', name: '自定义' },
]
const FC = (props) => {
const { id, action, visible, onCancel } = props
const [loading, setLoading] = React.useState(false)
const [waiting, setWaiting] = React.useState(false)
const [node, setNode] = React.useState()
const basicRef = React.useRef()
React.useEffect(() => {
if (visible && id) {
getDetail()
}
}, [visible, id])
const getDetail = () => {
dispatch({
type: 'assetmanage.getDirectoryById',
payload: {
dirId: id
},
callback: data => {
setNode(data)
}
})
}
const close = (refresh = false) => {
setLoading(false)
setWaiting(false)
setNode()
onCancel?.(refresh)
}
const save = async() => {
try {
const rows = await basicRef.current?.validate()
setWaiting(true)
let parentPath = ''
if (action === 'add') {
if (basicRef.current?.getType === 'child') {
parentPath = node.path
}
} else {
parentPath = node?.path.substring(0, node?.path.lastIndexOf("/"))
}
dispatch({
type: 'assetmanage.resourceAddOrUpdateDirectory',
payload: {
data: {
directory: (action === 'add')?rows:{...node, ...rows},
},
params: {
parentPath
}
},
callback: data => {
setWaiting(false)
onCancel?.(true, data?.id)
},
error: () => {
setWaiting(false)
}
})
} catch (e) {
}
}
const footer = React.useMemo(() => {
return [
<Button key={'cancel'}
onClick={() => close()}
>取消</Button>,
<Button key={'save'} type='primary'
onClick={() => save()}
>确定</Button>
]
}, [close, save])
return (
<Modal
visible={visible}
footer={footer}
width='600px'
bodyStyle={{ padding: '15px 15px 0px 15px', overflowX: 'auto', maxHeight: '80vh' }}
title='资源目录信息'
centered destroyOnClose
onCancel={() => { close() }}
>
<Spin spinning={waiting} >
<Basic ref={basicRef} node={node} action={action} />
</Spin>
</Modal>
)
}
export default FC
export const Basic = React.forwardRef(function ({ node, action }, ref) {
const [type, setType] = React.useState('root')
const [currentResourceType, setCurrentResourceType] = React.useState()
const [form] = Form.useForm()
React.useImperativeHandle(ref, () => ({
getType: type,
validate: async () => {
return await form.validateFields()
},
}), [type, form])
React.useEffect(() => {
if (node) {
const index = resourceTypes.findIndex(item => item.key === node?.resourceType)
if (index !== -1) {
setCurrentResourceType(resourceTypes[index].name)
}
if (action !== 'add') {
form.setFieldsValue(node)
}
}
}, [action, node])
const onValuesChange = (changedValues, allValues) => {
}
return (
<Form
form={form}
labelCol={{ span: 5 }}
wrapperCol={{ span: 17 }}
autoComplete="off"
onValuesChange={onValuesChange}
>
{
action==='add' && <Form.Item
label="类型"
rules={[{ required: true, message: '请选择类型!' }]}
>
<Radio.Group value={type} onChange={(e) => {
setType(e.target.value)
}}>
<Radio value='root'>栏目</Radio>
<Radio value='child' disabled={!node?.id}>目录</Radio>
</Radio.Group>
</Form.Item>
}
<Form.Item
label="资源类型"
name="resourceType"
rules={[{ required: true, message: '请选择资源类型!' }]}
>
{
(action==='add'&&type==='root') ? <Select allowClear>
{
resourceTypes.map((item,index) => {
return <Select.Option key={item.key}>{item.name}</Select.Option>
})
}
</Select> : <span>{currentResourceType}</span>
}
</Form.Item>
<Form.Item
label="编号"
name="code"
rules={[{ required: true, message: '必填项' }]}
>
<Input placeholder="请输入编号" />
</Form.Item>
<Form.Item
label="名称"
name="name"
rules={[{ required: true, message: '必填项' }]}
>
<Input placeholder="请输入名称" />
</Form.Item>
{
action !== 'add' && (
<Form.Item
label="路径"
name="path"
>
<span>{node?.path}</span>
</Form.Item>
)
}
<Form.Item
label="描述"
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>
)
})
\ No newline at end of file
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