import { MyBetaModalFormProps, MyButtons, MyFormItems, MyModalFormProps, rulesHelper, } from '@/common'; import { Selects } from '@/components/Select'; import { SelectContract } from '@/components/SelectContract'; import { Apis } from '@/gen/Apis'; import { ApprovalTemplateNodesNodeTypeEnum } from '@/gen/Enums'; import { BetaSchemaForm } from '@ant-design/pro-components'; import { Button, Form, message, Space } from 'antd'; export default function Create(props: MyBetaModalFormProps) { const [form] = Form.useForm(); // const [ApprovalTemplates, setApprovalTemplates] = useState([]); let ApprovalTemplates: any = []; return ( {...MyModalFormProps.props} title={`其他用印申请`} trigger={} layout="horizontal" labelCol={{ span: 4 }} wrapperCol={{ span: 20 }} labelAlign="left" width="680px" form={form} key={new Date().getTime()} onOpenChange={(open: any) => { if (open && props.item) { form.resetFields(); form.setFieldsValue({ ...props.item, }); } }} onFinish={async (values: any) => { const { node_approvers } = values; if (ApprovalTemplates?.length > 0 && node_approvers?.length > 0) { // 遍历模板节点,通过名称找到对应的提交节点进行校验 for (const templateNode of ApprovalTemplates) { // 通过名称找到对应的提交节点 const submittedNode = node_approvers.find( (node: any) => node?.name === templateNode?.name, ); // 如果模板节点在提交数据中不存在,说明被删除了,报错 if (!submittedNode) { message.error(`节点"${templateNode?.name}"不能删除`); return false; } // 校验审批人 if ( templateNode?.node_type === ApprovalTemplateNodesNodeTypeEnum.Approver.value ) { const originalMembers = templateNode?.approval_template_node_members?.map( (member: any) => member?.company_employees_id, ); if (originalMembers?.length > 0) { const submittedMembers = submittedNode?.members || []; const isMatch = originalMembers.length === submittedMembers.length && originalMembers.every((memberId: number) => submittedMembers.includes(memberId), ); if (!isMatch) { message.error( `节点"${templateNode?.name}"的审批人必须与审批模板设置保持一致`, ); return false; } } } } } return Apis.Contract.ContractOthers.Store({ ...values, }) .then(() => { props.reload?.(); message.success(props.title + '成功'); return true; }) .catch(() => false); }} columns={[ { key: 'title', title: '申请标题', colProps: { span: 24 }, formItemProps: { ...rulesHelper.text }, }, { key: 'reason', title: '申请原因', valueType: 'textarea', colProps: { span: 24 }, formItemProps: { ...rulesHelper.text }, }, SelectContract.AssetProjects({ key: 'asset_projects_id', title: '关联项目', colProps: { span: 24 }, required: true, fieldProps: { showSearch: true, // mode: 'multiple', }, }), { title: '合同份数', key: 'copies', valueType: 'digit', colProps: { span: 24 }, formItemProps: { ...rulesHelper.number }, fieldProps: { style: { width: '100%' }, }, }, SelectContract.ContractSeals({ key: 'seals', required: true, title: '选择印章', colProps: { span: 24 }, params: { is_enabled: true, }, fieldProps: { showSearch: true, mode: 'multiple', }, }), MyFormItems.UploadImages({ key: 'files', title: '上传附件', tooltip: '支持上传任意格式的文件', uploadType: 'file', colProps: { span: 24 }, // accept: '.docx,.doc,.pdf', max: 100, required: true, }), Selects?.ApprovalTemplates({ key: 'approval_templates_id', title: '审批模版', params: { type: 'OtherContractSeal', is_enabled: '1', }, colProps: { span: 24 }, formItemProps: { ...rulesHelper.number }, fieldProps: { onChange: (e: any) => { // 确保e是有效值,并且使用正确的value字段 if (e) { const templateId = typeof e === 'object' ? e.value : e; Apis.Approval.ApprovalTemplates.Show({ id: templateId, }).then((res) => { ApprovalTemplates = res?.data?.approval_template_nodes || []; // setApprovalTemplates( // res?.data?.approval_template_nodes || [], // ); form.setFieldsValue({ approval_templates_id: templateId, node_approvers: res?.data?.approval_template_nodes?.map( (item: any) => ({ ...item, members: item?.approval_template_node_members?.map( (member: any) => member?.company_employees_id, ), }), ), }); }); } // 不返回任何值,防止默认行为 }, }, }), { valueType: 'dependency', name: ['approval_templates_id'], columns: ({ approval_templates_id }) => { return approval_templates_id ? [ { valueType: 'formList', dataIndex: 'node_approvers', // title: '审批节点', fieldProps: { copyIconProps: false, deleteIconProps: false, creatorButtonProps: false, actionRender: (field: any, action: any) => [ , ], }, formItemProps: { ...rulesHelper.array, wrapperCol: { span: 24 }, }, columns: [ { valueType: 'group', colProps: { span: 24 }, columns: [ MyFormItems.EnumSelect({ key: 'node_type', // title: `类型`, valueEnum: ApprovalTemplateNodesNodeTypeEnum, colProps: { span: 6 }, formItemProps: { ...rulesHelper.text, }, fieldProps: { disabled: true, }, }), { // title: '节点名称', key: 'name', colProps: { span: 6 }, formItemProps: { ...rulesHelper.text, }, fieldProps: { disabled: true, }, }, { valueType: 'dependency', name: ['node_type'], columns: ({ node_type }) => { return [ Selects.Employees({ key: 'members', title: ``, colProps: { span: 12 }, formItemProps: { ...rulesHelper.array, }, fieldProps: { mode: 'multiple', showSearch: true, maxCount: node_type === ApprovalTemplateNodesNodeTypeEnum.Approver .value ? 1 : 9, maxTagTextLength: 3, labelRender: (res: any) => { if (res?.label) { return res?.label; } else { return ApprovalTemplates?.map( (item: any) => { if ( item?.node_type === node_type && item ?.approval_template_node_members ?.length ) { return item?.approval_template_node_members?.map( (i: any) => { if ( i?.company_employees_id === res?.value ) { return ( i?.company_employee ?.name || '' ); } }, ); } }, ); } }, }, }), ]; }, }, ], }, ], }, ] : []; }, }, ]} /> ); }