import MemberItem from '../components/MemberItem'
import consts from '@/utils/consts'
import { useState } from 'react'
import { useRequest } from 'ahooks'
import { addExecutor, delExecutor, queryExecutorList, updateExecutor } from '@/services/api/business'
import { ApprovalType, ExecutorSetType } from '@/enums/gc'
import { QuestionCircleFilled } from '@ant-design/icons'
import { Form, message, Tooltip } from 'antd'
import ProForm, { ProFormDependency, ProFormRadio, ProFormSelect, ProFormText } from '@ant-design/pro-form'
import type { ModalAction } from '@/components/Modal'
import { useDispatch } from '@umijs/max'
const setTypeOptions = [
{
label: (
预置成员
),
value: ExecutorSetType.PRESET_MEMBER
},
{
label: (
步骤设置
),
value: ExecutorSetType.STEP_SETTING
}
]
type iState = {
total: number
}
export default function useScripts(modal: ModalAction) {
const dispatch = useDispatch()
const [state, seState] = useState({
total: 0
})
const {
run: query,
refresh,
loading
} = useRequest(queryExecutorList, {
manual: true,
onSuccess: (result, params) => {
const { subjectID, businessType } = params[0]
seState({ total: result.data.total })
dispatch({
type: 'business/updateProcessMap',
payload: {
ID: `${subjectID}_${businessType}`,
process: result.data.items
}
})
}
})
const addOrEdit = (mode: 'add' | 'edit', initialValues?: API.ExecutorItem) => {
const text = mode === 'add' ? '新增执行者' : '编辑执行者'
modal.open({
title: text,
okText: '确定',
cancelText: '取消',
type: 'form',
initialValues: initialValues ?? {
setType: ExecutorSetType.PRESET_MEMBER,
approvalType: ApprovalType.TARGET
},
children: (
{({ name }) => {
if (name === ExecutorSetType.PRESET_MEMBER)
return (
)
return
}}
),
onOk: async (values: API.ExecutorItem) => {
let requestFn: Nullable<() => Promise> = null
if (mode === 'add') {
requestFn = addExecutor
values.businessType = business
} else {
requestFn = updateExecutor
}
try {
await requestFn?.(values)
refresh()
modal.close()
message.success(text + '成功')
} catch (error) {}
}
})
}
const del = (ID: string) => {
modal.open({
title: '删除执行者',
okText: '确定',
cancelText: '取消',
children: 确定删除该执行者吗?
,
onOk: async () => {
try {
const { code = -1 } = await delExecutor({ ID })
if (code === consts.RET_CODE.SUCCESS) {
refresh()
modal.close()
message.success('删除成功')
}
} catch (error) {}
}
})
}
return { query, total: state.total, loading, addOrEdit, del }
}