import React, { useContext, useState, useEffect, useRef } from 'react'; import { Upload, Form, Button, Select, Input, Modal, message } from 'antd'; import { connect, useRequest,history,useModel } from 'umi'; import { UploadOutlined } from '@ant-design/icons'; import { _apiUrl_ } from '@/utils/common'; import { dealAlarmMessage, dealBatAlarmMessage } from '@/services/alarmService'; const { TextArea } = Input; const {Option}=Select; const DealModal = props => { const [form] = Form.useForm(); const [fileList, setFileList] = useState([]); const [handleRowsId,setHandleRowsId] = useState([]); const { initialState, setInitialState } = useModel('@@initialState'); const { currentUser } = initialState; const handleClose = () => { form.resetFields(); setFileList([]); props.handleClose(); }; const { addType,detailInfo,selectIds,dealType, selectRows} = props; useEffect(() => { const handleRows = selectRows.filter(item => item.state.value === 'un_disposed'); const tempHandleRowsId = handleRows.map(row => row.id); setHandleRowsId(tempHandleRowsId); }, [selectRows]); //执行添加请求 const dealAlarmMessageRequest = useRequest(dealAlarmMessage, { manual: true, formatResult: (response) => { // 进行格式的转化 return { ...response, status:response?.status, success: response.code === 'success' ? true : false, } }, loadingDelay: 300, onSuccess: (data, params) => { message.success(addType === 'edit' ? '修改成功' : '操作成功', 2, () => { handleClose(); }); } }); //执行批量请求 const dealBatAlarmMessageRequest = useRequest(dealBatAlarmMessage, { manual: true, formatResult: (response) => { //进行格式的转化 return { ...response, status:response?.status, success: response.code === 'success' ? true : false, } }, loadingDelay: 300, onSuccess: (data, params) => { message.success(addType === 'edit' ? '批量修改告警成功' : '批量操作告警成功', 2, () => { handleClose(); }); } }); const handleSubmit = e => { e && e.preventDefault(); form.validateFields().then((values) => { const { name } = currentUser let attachedFileList = []; //提交内容信息 if (fileList && fileList.length > 0) { attachedFileList = fileList.map(item => ({ url: item.url, size: item.size, fileName:item.fileName })); values.attachedFile = attachedFileList; delete values.attachedFileInfo; }; values.handler = name;//添加处理人 if(dealType === 'bat'){ //批量告警处理 values.ids = handleRowsId; dealBatAlarmMessageRequest.run(values); }else{ //单个告警处理 values.id = detailInfo?.id; dealAlarmMessageRequest.run(values); } props?.handleDealCancel() }).catch(() => { }); }; const { addDealVisible } = props; const formTailLayout = { labelCol: { span: 3 }, wrapperCol: { span: 10 }, }; const formTailLayout2 = { labelCol: { span: 3 }, wrapperCol: { span: 18 }, }; const uploadProps = { name: 'docFile', action: `${_apiUrl_}/account-service/file/document`, multiple: true, headers: { Authorization: 'bearer ' + localStorage.getItem("Authorization") }, fileList, onChange(info) { if (info.file.status === 'done') { message.success(`${info.file.name} 上传成功!`); } else if (info.file.status === 'error' && info?.file?.response?.success === false) { message.error(`${info.file.name} 上传失败`); } let fileList = [...info.fileList]; // fileList = fileList.slice(-1); fileList = fileList.map(file => { if (file.response) { // Component will show file.url as link file.url = file?.response?.data?.url; file.fileName = file?.name || file?.response?.data?.fileName; file.size = file?.response?.data?.size; } return file; }); setFileList(fileList); form.setFieldsValue({ attachedFileInfo:fileList }); }, }; return ( <Modal width={700} visible={addDealVisible} onCancel={handleClose} onOk={handleSubmit} title='处理' getContainer={false} > <Form form={form} onFinish={ handleSubmit }> { dealType === 'bat' && <Form.Item {...formTailLayout} label='已选数量'><span className='f16' style={{fontSize:16}}>{handleRowsId.length}</span></Form.Item> } <Form.Item name='state' label='解决状态' {...formTailLayout} rules={[{ required: true, message: `请选择状态` }]}> <Select placeholder='请选择' allowClear> <Option value={'disposed'}>已处理</Option> {/* <Option value={'order_converted'}>已转工单</Option> */} <Option value={'un_disposed'}>未处理</Option> </Select> </Form.Item> <Form.Item name='remarks' label='备注' {...formTailLayout2}> <TextArea rows={6} placeholder="请输入" /> </Form.Item> <Form.Item label='附件' {...formTailLayout} name='attachedFileInfo'> <Upload {...uploadProps} > <> <Button icon={<UploadOutlined />}>上传文件</Button> <div style={{marginTop:'5px'}}> <span>支持扩展名:.rar .zip .doc .docx .pdf .jpg...</span> </div> </> </Upload> </Form.Item> </Form> </Modal> ) } export default DealModal;