import React,{useEffect,useState} from 'react'; import { Form, Button, Input, Row, Col, DatePicker, Upload,message,Image,Modal } from 'antd'; import { DeleteOutlined,FileWordOutlined,FilePdfOutlined,FilePptOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons'; import { formItemLayout, btnItemLayout } from '../../../../components/crud/FormLayoutProps'; import { createCrudService } from '../../../../components/crud/_'; import apiurl from '../../../../service/apiurl'; import moment from 'moment'; import "./index.less" const { Dragger } = Upload; const url = "http://223.75.53.141:9100/gs-tsg" const ModalForm = ({ mode, record,onEdit,onSave,onCrudSuccess }) => { if(record.tmStart && record.tmEnd) { record.tmStart = moment(record.tmStart) record.tmEnd = moment(record.tmEnd) } const [form] = Form.useForm(); const [fileList, setFileList] = useState([]) //上传文件列表 const [fileParams, setFileParams] = useState([]) // 文件参数 const [flag, setFlag] = useState(false) const [iframeSrc, setIframeSrc] = useState('') const [pdfViewOPen, setPdfViewOPen] = useState(false) const [loading, setLoading] = useState(false) /** * @description 表单重置 */ const onReset = () => { form.resetFields(); }; console.log(record); const onFinish = async(values) => { if(values.meetDate){ values.startDate = moment(values.meetDate[0]).format('YYYY-MM-DD HH:mm:ss') values.endDate = moment(values.meetDate[1]).format('YYYY-MM-DD HH:mm:ss') delete values.meetDate }else { values.tmStart = moment(values.tmStart).format('YYYY-MM-DD 00:00:00') values.tmEnd = moment(values.tmEnd).format('YYYY-MM-DD 00:00:00') } values.relatedObjectId = record.relatedObjectId values.relatedObjectType = "bzPredictionScheme4" if (mode === 'edit') { console.log(fileList); let oldFiles = fileList.map(item => ({ fileId: item.response?.data?.fileId })) values.id = record.id values.attachList = oldFiles; onEdit(apiurl.fxzb.yaxb.edit,values) } if (mode === 'save') { values.attachList = fileParams onSave(apiurl.fxzb.yaxb.save,values) } } /** * @description 删除上传的图片 * @param {string} id 删除的id */ const deleteFile = (fileId) => { let filterFile = fileList.filter(item => item.response?.data?.fileId !== fileId); setFileList(filterFile) // if (mode === "edit" && flag) { // createCrudService(apiurl.fxzb.yaxb.deleteFile + `/${record.id}/${fileId}`).delGet().then(res => { // setFlag(false) // if (res.code === 200) { // message.success("删除附件成功") // onCrudSuccess() // } // }) // } } /** * @description 上传文件之前的回调 * @param {Object} file 文件信息 */ // const handleBeforeUpload = (file) => { // // 限制上传文件的数量 // const maxFiles = 1; // if (fileList.length >= maxFiles) { // message.error(`最多只能上传 ${maxFiles} 个文件`); // setIsRenderItem(false) // return false; // } else { // setIsRenderItem(true) // } // return true; // }; /** * @description 上传图片 * @param {string} file 上传的文件 */ const fileChange = (info) => { console.log(info); if (info.file.status === "done") { setLoading(false); } if (info.file.status === "uploading") { setLoading(true); } if (info.file.status === "error") { message.error("文件上传失败") setLoading(false); } let params = info.fileList.map(file => { return { fileId: file.response?.data?.fileId, tmCreate: file.response?.data?.uploadTime, } }) setFileParams(params) setFileList(info.fileList) setFlag(false) } /** * @description 获取查看时文件 * @param {Array} params 文件详细数组 * @returns */ const getFileInfo = (params) => { console.log(params); let fetchArr = params?.attachList.map(item => { return createCrudService(apiurl.fxzb.gczx.ytygc.getFile + `/${item.fileId}`) .delGet() } ); Promise.all(fetchArr).then(res => { let fileArr = res.map(item => { return { name: item.data.fileName, response: { data: { filePath: item.data.filePath, fileId:item.data.fileId } }, } }) setFlag(true) setFileList(fileArr) }).catch(err => console.log(err)) } /** * @description pdf文件预览 * @param {String} params 文件预览url */ const viewPdf = (params) => { setIframeSrc(params) setPdfViewOPen(true) } /** * @description 文件下载 * @param {String} params 文件fileId */ const download = (params) => { let downloadLink = document.createElement("a"); downloadLink.href = `${process.env.REACT_APP_API_URL}/gunshiApp/xfflood/bzPredictionScheme/file/download/${params}`; downloadLink.download = `${params.fileName}`; downloadLink.style.display = "none"; // 将链接添加到页面中 document.body.appendChild(downloadLink); // 模拟点击事件,开始下载 downloadLink.click(); } useEffect(() => { if (mode === "view" || mode === "edit") { getFileInfo(record) } }, [record,mode]) return ( <>