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