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: ( ), 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 } }