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, BusinessType, 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'
const setTypeOptions = [
{
label: (
预置成员
),
value: ExecutorSetType.PRESET_MEMBER
},
{
label: (
步骤设置
),
value: ExecutorSetType.STEP_SETTING
}
]
type iState = {
items: API.ExecutorItem[]
total: number
}
export default function useScripts(modal: ModalAction, business: BusinessType) {
const [state, seState] = useState({
items: [],
total: 0
})
const { refresh, loading } = useRequest(() => queryExecutorList({ businessType: BusinessType.BUDGET }), {
onSuccess: result => {
seState(result.data)
}
})
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 { data: state, loading, addOrEdit, del }
}