import { Modal, Spin, Form, Input, message } from 'antd'; import { useState, useEffect } from 'react'; import { getHistoryFormDetail, getTaskDefinition } from '../../../Services'; import AuditButton from '@/webPublic/FormInsertDiy/AuditButton'; import RenderForm from '../../RenderForm'; const TextArea = Input.TextArea; function AuditModal({ form, selectRows, children, getPage, noNeedForm }) { const [visible, setVisible] = useState(false); function submitCb(res) { // ModalInfo(`提交${res ? '成功' : '失败'}!`, { onOk: () => router.goBack() }); message.info(`提交${res ? '成功' : '失败'}!`); setVisible(false); getPage(); } const [data, setData] = useState(null); const [taskDefinition, setTaskDefinition] = useState({}); const [configNoNeedForm, setConfigNeedForm] = useState(true); const [loading, setLoading] = useState(false); useEffect( () => { if (!visible) { return form.resetFields(); } const code = selectRows && selectRows[0] && selectRows[0].code; if (typeof code === 'undefined') return; setLoading(true); getHistoryFormDetail({ code }).then((res) => { setLoading(false); if (res && !res.errMsg) { setData({ ...res, hisTaskForm: { ...res.hisTaskForm, formKeys: [] } }); getTaskDefinition({ appId: res.appId, key: res.taskDefinitionKey, }).then((res2) =>{ if(res2){ setTaskDefinition(res2); if(res2.id && res2.formProperties){ // 从流程的配置项里面去取 批量审批时是否显示表单的配置项 let check = res2.formProperties.find((g) => g.name === 'batchAuditHiddenForm'); if(!check || check.expression !== 'true'){ setConfigNeedForm(false); } }else{ setConfigNeedForm(false); } } }); } }); }, [visible], ); const footer = data ? ( <div style={{ padding: 16, textAlign: 'center' }}> <AuditButton data={data} // 为 'affair/getIdFormDetail' 接口请求到的数据 callback={submitCb} // 提交完成后回调函数 form={form} // form表单控件 selectRows={selectRows} taskIds={selectRows.map((i) => i.taskId)} /> </div> ) : null; const { getFieldDecorator } = form; return ( <> <Modal width={900} visible={visible} title="批量审核" maskClosable={false} footer={footer} onCancel={() => setVisible(false)}> <Spin spinning={loading}> {data && data.isHandle && !!data.taskFormKey && !noNeedForm && !configNoNeedForm ? ( <RenderForm postData={data} get="web" isCg="no" obj={data.hisTaskForm.formData} table="new" form={form} /> ) : null} <div> <h3 style={{ padding: 12, paddingBottom: 0, fontWeight: 'bold' }}>审批说明:</h3> <span style={{ display: 'block', textAlign: 'center' }}> {getFieldDecorator('reason')( <TextArea placeholder="请输入审批理由" style={{ width: '95%', margin: 12, height: 120, color: '#7F8B95' }} />, )} </span> </div> </Spin> </Modal> {children({ onShow: () => setVisible(true) })} </> ); } export default Form.create()(AuditModal);