Commit 247d23cb by zhaochengxiang

自动分配任务

parent b4476607
...@@ -322,6 +322,14 @@ export function* reDistributeTask(payload) { ...@@ -322,6 +322,14 @@ export function* reDistributeTask(payload) {
return yield call(service.reDistributeTask, payload) return yield call(service.reDistributeTask, payload)
} }
export function* autoDistributeTask(payload) {
return yield call(service.autoDistributeTask, payload)
}
export function* listAutoDistributeUserDepartments(payload) {
return yield call(service.listAutoDistributeUserDepartments, payload)
}
export function* getNoticeTypes(payload) { export function* getNoticeTypes(payload) {
return yield call(service.getNoticeTypes, payload) return yield call(service.getNoticeTypes, payload)
} }
......
...@@ -312,6 +312,14 @@ export function getPreviewRangeByDirId(payload) { ...@@ -312,6 +312,14 @@ export function getPreviewRangeByDirId(payload) {
return PostJSON("/dataassetmanager/resource/taskApi/reDistributeTask", payload) return PostJSON("/dataassetmanager/resource/taskApi/reDistributeTask", payload)
} }
export function autoDistributeTask(payload) {
return PostJSON("/dataassetmanager/resource/taskApi/autoDistributeTask", payload)
}
export function listAutoDistributeUserDepartments(payload) {
return PostJSON("/dataassetmanager/resource/taskApi/listAutoDistributeUserDepartments", payload)
}
export function getNoticeTypes() { export function getNoticeTypes() {
return GetJSON("/dataassetmanager/resource/taskApi/listNoticeTypes") return GetJSON("/dataassetmanager/resource/taskApi/listNoticeTypes")
} }
......
import React from "react"
import { Modal, Button, Spin, Form } from "antd"
import { getAssetRange, showMessage } from "../../../util"
import { ResourceManageReference } from "../../../util/constant"
import { dispatch } from '../../../model'
const FC = (props) => {
const { args, node, visible, onCancel } = props
const [waiting, setWaiting] = React.useState(false)
const basicRef = React.useRef()
const close = (refresh = false) => {
setWaiting(false)
onCancel?.(refresh)
}
const save = async() => {
const departments = basicRef.current?.departments
if ((departments??[]).length === 0) {
showMessage('warn', '没有所属部门')
return
}
let [recursive, dirId] = [true, node?.nodeId]
if (args.params.catalogType === 'current') {
recursive = false
}
if (args.params.catalogType === 'fullSearch') {
dirId = ''
}
setWaiting(true)
dispatch({
type: 'assetmanage.autoDistributeTask',
payload: {
data: args.params.elementValueFilters??[],
params: {
dirId,
keyword: args.params.keyword,
range: getAssetRange(ResourceManageReference),
resourceStatus: args.params.resourceStatus,
sortingStatus: args.params.sortingStatus,
recursive,
filterTodo: args.params.onlyPending,
departments: (departments??[]).toString()
}
},
callback: () => {
setWaiting(false)
onCancel(true)
},
error: () => {
setWaiting(false)
}
})
}
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='800px'
bodyStyle={{ padding: '15px', overflowX: 'auto', maxHeight: '80vh' }}
title='自动分配任务'
centered destroyOnClose
onCancel={() => { close() }}
>
<Spin spinning={waiting}>
<Basic ref={basicRef} node={node} args={args} />
</Spin>
</Modal>
)
}
export default FC
export const Basic = React.forwardRef(function ({ node, args }, ref) {
const [departments, setDepartments] = React.useState()
const [form] = Form.useForm()
React.useImperativeHandle(ref, () => ({
departments
}), [departments])
React.useEffect(() => {
if (node && args) {
getDepartments()
}
}, [node, args])
const getDepartments = () => {
let [recursive, dirId] = [true, node?.nodeId]
if (args.params.catalogType === 'current') {
recursive = false
}
if (args.params.catalogType === 'fullSearch') {
dirId = ''
}
dispatch({
type: 'assetmanage.listAutoDistributeUserDepartments',
payload: {
data: args.params.elementValueFilters??[],
params: {
dirId,
keyword: args.params.keyword,
range: getAssetRange(ResourceManageReference),
resourceStatus: args.params.resourceStatus,
sortingStatus: args.params.sortingStatus,
recursive,
filterTodo: args.params.onlyPending,
}
},
callback: (data) => {
setDepartments(data)
},
error: () => {
}
})
}
return (
<Form
form={form}
labelCol={{ span: 3 }}
wrapperCol={{ span: 21 }}
autoComplete="off"
>
<Form.Item
label='所属部门'
extra="发起流程后,自动将筛选结果中未梳理状态的资源,分配到部门资产管理员进行梳理"
>
<span>{(departments??[]).toString()}</span>
</Form.Item>
</Form>
)
})
\ No newline at end of file
...@@ -28,6 +28,7 @@ import { AssetActionSubject } from '../AssetManage/Component/AssetAction' ...@@ -28,6 +28,7 @@ import { AssetActionSubject } from '../AssetManage/Component/AssetAction'
import TagCell from '../Model/Component/tag-help' import TagCell from '../Model/Component/tag-help'
import DistributeTask from './distribute-task' import DistributeTask from './distribute-task'
import RedistributeTask from './redistribute-task' import RedistributeTask from './redistribute-task'
import AutoDistributeTask from './auto-distribute-task'
import CheckAssets from './check-assets' import CheckAssets from './check-assets'
import '../AssetManage/Component/AssetTable.less' import '../AssetManage/Component/AssetTable.less'
...@@ -122,6 +123,11 @@ const FC = (props) => { ...@@ -122,6 +123,11 @@ const FC = (props) => {
visible: false, visible: false,
items: undefined items: undefined
}) })
const [autoDistributeTaskParams, setAutoDistributeTaskParams] = React.useState({
visible: false,
node: undefined,
args: undefined
})
const [checkAssetsParams, setCheckAssetsParams] = React.useState({ const [checkAssetsParams, setCheckAssetsParams] = React.useState({
visible: false, visible: false,
type: undefined, type: undefined,
...@@ -232,8 +238,8 @@ const FC = (props) => { ...@@ -232,8 +238,8 @@ const FC = (props) => {
} }
}, [data]) }, [data])
const [addAble, addAsAssetAble, distributeAble, autoDistributeAble, batchEditAble,checkAble, importAble, exportAble, changeDirectoryAble, deleteAble] = React.useMemo(() => { const [addAble, addAsAssetAble, distributeAble, batchEditAble,checkAble, importAble, exportAble, changeDirectoryAble, deleteAble] = React.useMemo(() => {
let [_addAble, _addAsAssetAble, _distributeAble, _autoDistributeAble, _batchEditAble, _checkAble, _importAble, _exportAble, _changeDiretoryAble, _deleteAble] = [false, false, false, false, false, false, false, false, false, false] let [_addAble, _addAsAssetAble, _distributeAble, _batchEditAble, _checkAble, _importAble, _exportAble, _changeDiretoryAble, _deleteAble] = [false, false, false, false, false, false, false, false, false]
_addAble = (permissions??[]).findIndex(item => item==='add') !== -1 _addAble = (permissions??[]).findIndex(item => item==='add') !== -1
...@@ -257,11 +263,10 @@ const FC = (props) => { ...@@ -257,11 +263,10 @@ const FC = (props) => {
_exportAble = allowExport _exportAble = allowExport
} }
let [allowAddAsAsset, allowDistribute, allowAutoDistribute, allowBatchEdit, allowCheck, allowChangeDirectory, allowDelete] = [true, true, true, true, true, true, true] let [allowAddAsAsset, allowDistribute, allowBatchEdit, allowCheck, allowChangeDirectory, allowDelete] = [true, true, true, true, true, true]
for (const row of selectedRows) { for (const row of selectedRows) {
const addAsAssetIndex = (row.allowButtons??[]).findIndex(item => item==='addAsAsset') const addAsAssetIndex = (row.allowButtons??[]).findIndex(item => item==='addAsAsset')
const distributeIndex = (row.allowButtons??[]).findIndex(item => item==='distribute') const distributeIndex = (row.allowButtons??[]).findIndex(item => item==='distribute')
const autoDistributeIndex = (row.allowButtons??[]).findIndex(item => item==='autoDistribute')
const batchEditIndex = (row.allowButtons??[]).findIndex(item => item==='batchEdit') const batchEditIndex = (row.allowButtons??[]).findIndex(item => item==='batchEdit')
const checkIndex = (row.allowButtons??[]).findIndex(item => item==='check') const checkIndex = (row.allowButtons??[]).findIndex(item => item==='check')
const changeDirecotoryIndex = (row.allowButtons??[]).findIndex(item => item==='changeDir') const changeDirecotoryIndex = (row.allowButtons??[]).findIndex(item => item==='changeDir')
...@@ -272,9 +277,6 @@ const FC = (props) => { ...@@ -272,9 +277,6 @@ const FC = (props) => {
if (distributeIndex === -1) { if (distributeIndex === -1) {
allowDistribute = false allowDistribute = false
} }
if (autoDistributeIndex === -1) {
allowAutoDistribute = false
}
if (batchEditIndex === -1) { if (batchEditIndex === -1) {
allowBatchEdit = false allowBatchEdit = false
} }
...@@ -291,13 +293,12 @@ const FC = (props) => { ...@@ -291,13 +293,12 @@ const FC = (props) => {
_addAsAssetAble = allowAddAsAsset _addAsAssetAble = allowAddAsAsset
_distributeAble = allowDistribute _distributeAble = allowDistribute
_autoDistributeAble = allowAutoDistribute
_batchEditAble = allowBatchEdit _batchEditAble = allowBatchEdit
_checkAble = allowCheck _checkAble = allowCheck
_changeDiretoryAble = allowChangeDirectory _changeDiretoryAble = allowChangeDirectory
_deleteAble = allowDelete _deleteAble = allowDelete
return [_addAble, _addAsAssetAble, _distributeAble, _autoDistributeAble, _batchEditAble, _checkAble, _importAble, _exportAble, _changeDiretoryAble, _deleteAble] return [_addAble, _addAsAssetAble, _distributeAble, _batchEditAble, _checkAble, _importAble, _exportAble, _changeDiretoryAble, _deleteAble]
}, [permissions, selectedRows]) }, [permissions, selectedRows])
const menuData = React.useMemo(() => { const menuData = React.useMemo(() => {
...@@ -640,7 +641,11 @@ const FC = (props) => { ...@@ -640,7 +641,11 @@ const FC = (props) => {
} }
const onAutoDistributeTaskClick = () => { const onAutoDistributeTaskClick = () => {
setAutoDistributeTaskParams({
visible: true,
node,
args
})
} }
const onBatchEditClick = () => { const onBatchEditClick = () => {
...@@ -953,9 +958,7 @@ const FC = (props) => { ...@@ -953,9 +958,7 @@ const FC = (props) => {
</PermissionMenuItem> </PermissionMenuItem>
<PermissionMenuItem <PermissionMenuItem
key='autoDistribute' key='autoDistribute'
defaultPermission={autoDistributeAble} permissions={permissions}
disabled={(selectedRows??[]).length===0}
tip={(selectedRows??[]).length===0?'请先选择资源':''}
> >
<div className='text-center'> <div className='text-center'>
自动分配 自动分配
...@@ -1067,10 +1070,9 @@ const FC = (props) => { ...@@ -1067,10 +1070,9 @@ const FC = (props) => {
任务分配 任务分配
</PermissionButton> </PermissionButton>
<PermissionButton <PermissionButton
defaultPermission={autoDistributeAble} key='autoDistribute'
onClick={onAutoDistributeTaskClick} permissions={permissions}
disabled={(selectedRows??[]).length===0} onClick={onAutoDistributeTaskClick}
tip={(selectedRows??[]).length===0?'请先选择资源':''}
> >
自动分配 自动分配
</PermissionButton> </PermissionButton>
...@@ -1399,6 +1401,18 @@ const FC = (props) => { ...@@ -1399,6 +1401,18 @@ const FC = (props) => {
refresh && getAssets() refresh && getAssets()
}} }}
/> />
<AutoDistributeTask
{...autoDistributeTaskParams}
onCancel={(refresh) => {
setAutoDistributeTaskParams({
visible: false,
node: undefined,
args: undefined,
})
refresh && getAssets()
}}
/>
<CheckAssets <CheckAssets
{...checkAssetsParams} {...checkAssetsParams}
onCancel={(refresh) => { onCancel={(refresh) => {
......
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