import React,{useEffect,useState,useMemo,useRef} from 'react'; import { Form, Button, Input, Row,Upload, Col, TimePicker, DatePicker, InputNumber,message,Image,Modal,Typography ,Popconfirm } from 'antd'; import { DeleteOutlined,FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons'; import { formItemLayout, btnItemLayout } from '../../../components/crud/FormLayoutProps'; import apiurl from '../../../service/apiurl'; import NormalSelect from '../../../components/Form/NormalSelect'; import "./index.less" import moment from 'moment'; import dayjs from "dayjs" import { createCrudService } from '../../../components/crud/_'; import { httpget2, httppost2 } from '../../../utils/request'; const { RangePicker } = DatePicker const { Dragger } = Upload; const url = "http://223.75.53.141:9102/test.by-lyf.tmp" const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { const types = [ { label: "水利", value:1 }, { label: "岗前培训", value:2 },{ label: "在岗培训", value:3 },{ label: "政治学习教育", value:4 },{ label: "其他", value:5 }, ] const [details, setDetails] = useState([]) const [form] = Form.useForm(); const [fileList, setFileList] = useState([]) //上传文件列表 const [fileIds, setFileIds] = useState([]) const [iframeSrc, setIframeSrc] = useState('') const [pdfViewOPen, setPdfViewOPen] = useState(false) const [loading, setLoading] = useState(false) const [fileList1, setFileList1] = useState([]) //上传文件列表 const [fileIds1, setFileIds1] = useState([]) const [iframeSrc1, setIframeSrc1] = useState('') const [pdfViewOPen1, setPdfViewOPen1] = useState(false) const [loading1, setLoading1] = useState(false) /** * @description 获取查看时文件 * @param {*} type * @returns */ const getFileInfo = async (params) => { try { const res = await httpget2(apiurl.pxjl.getFile + `/${params.id}`) if (res.code === 200) { if (res.data?.files1) { let fileArr1 = res.data?.files1.map(item => { return { name: item.fileName, response: { data: { filePath: item.filePath, fileId: item.fileId } }, } }) setFileList1(fileArr1) } if (res.data?.files2) { let fileArr = res.data?.files2.map(item => { return { name: item.fileName, response: { data: { filePath: item.filePath, fileId: item.fileId } }, } }) setFileList(fileArr) } } } catch (error) { console.log(error); } } /** * @description 文件下载 * @param {String} params 文件fileId */ const download = (params) => { let downloadLink = document.createElement("a"); downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/tsg/personnelPlanLog/file/download/${params}`; downloadLink.download = `${params.fileName}`; downloadLink.style.display = "none"; // 将链接添加到页面中 document.body.appendChild(downloadLink); // 模拟点击事件,开始下载 downloadLink.click(); } const download1 = (params) => { let downloadLink = document.createElement("a"); downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/tsg/personnelPlanLog/file/download/${params}`; downloadLink.download = `${params.fileName}`; downloadLink.style.display = "none"; // 将链接添加到页面中 document.body.appendChild(downloadLink); // 模拟点击事件,开始下载 downloadLink.click(); } /** * @description 上传图片 * @param {string} file 上传的文件 */ const fileChange = (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 fileIds = info.fileList.map(file => { return file.response?.data?.fileId }) setFileIds(fileIds) setFileList(info.fileList) } const fileChange1 = (info) => { if (info.file.status === "done") { setLoading1(false); } if (info.file.status === "uploading") { setLoading1(true); } if (info.file.status === "error") { message.error("文件上传失败") setLoading1(false); } let fileIds = info.fileList.map(file => { return file.response?.data?.fileId }) setFileIds1(fileIds) setFileList1(info.fileList) console.log(info.fileList); } /** * @description pdf文件预览 * @param {String} params 文件预览url */ const viewPdf = (params) => { setIframeSrc(params) setPdfViewOPen(true) } const viewPdf1 = (params) => { setIframeSrc1(params) setPdfViewOPen1(true) } const onfinish = (values) => { values.stm = values.tm ? values.tm[0].format("HH:mm:ss") : '' values.etm = values.tm ? values.tm[1].format("HH:mm:ss") : '' values.regDate = moment(values.regDate).format('YYYY-MM-DD') const files1 = fileList1.map(item => ({fileId:item.response?.data?.fileId })); const files = fileList.map(item => ({ fileId: item.response?.data?.fileId })); values.files1 = files1; values.files2 = files; if (mode === 'edit') { onEdit(apiurl.pxjl.edit,{...record,...values}); } if (mode === 'save') { onSave(apiurl.pxjl.save,values) } } /** * @description 删除上传的图片 * @param {string} id 删除的id */ const deleteFile = (fileId) => { console.log(fileId); let filterFile = fileList.filter(item => item.response?.data?.fileId !== fileId); setFileList(filterFile) } const deleteFile1 = (fileId) => { console.log(fileId); let filterFile = fileList1.filter(item => item.response?.data?.fileId !== fileId); setFileList1(filterFile) } const [jh, setJh] = useState([]) const getJhList = async () => { try { const res = await httppost2(apiurl.pxjl.list) if (res.code == 200) { setJh(res.data.map(item => ({label:item.name,value:item.id}))) } } catch (error) { console.log(error); } } const imgbeforeUpload = (file) => { const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/jpg' || file.type === 'image/png'; if (!isJpgOrPng) { message.error('请上传图片格式的文件!'); } const isLt2M = file.size / 1024 / 1024 < 5; if (!isLt2M) { message.error('图片大小需小于5M!'); } return isJpgOrPng && isLt2M ? true : Upload.LIST_IGNORE; }; useEffect(()=>{ if (mode !== "save") { getFileInfo(record) const momentArr = (record?.stm && record.etm) ? [dayjs("2024-05-06" + record.stm), dayjs("2024-05-06" +record.etm)] : '' form.setFieldValue("tm",momentArr) } }, [record,mode]) useEffect(() => { const userName = localStorage.getItem('userName') form.setFieldValue("regDate", moment()) form.setFieldValue("applicant",userName) getJhList() }, []) return (
基本信息
{/* */}
dateString} getValueProps={(value) => ({ value: value ? moment(value) : undefined })} > setTimeValue(e)} /> dateString} getValueProps={(value) => ({ value: value ? moment(value) : undefined })} > {mode !== "view" && { console.log(info.dataTransfer.files); }} fileList={fileList1} disabled={loading1} maxCount={1} // onSuccess={handleSuccess} >

点击或拖拽文件到此区域上传

支持扩展名:.rar .zip .doc .docx .pdf .jpg .png .ppt

} { fileList1.length > 0 && fileList1.map(file => { return (
{file.name.indexOf('.docx') > -1 ?
{ download1(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: file.name.indexOf('.pdf') > -1 ?
{ viewPdf1(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: file.name.indexOf('.zip') > -1 ?
{ download1(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: file.name.indexOf('.xlsx') > -1 ?
{ download1(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: } {file.name}
deleteFile1(file.response?.data?.fileId)}>
) }) }
其他信息
{mode !== "view" && { console.log(info.dataTransfer.files); }} fileList={fileList} disabled={loading} // onSuccess={handleSuccess} >

点击或拖拽文件到此区域上传

支持扩展名:.rar .zip .doc .docx .pdf .jpg .png .ppt

} { fileList.length > 0 && fileList.map(file => { return (
{file.name.indexOf('.docx') > -1 ?
{ download(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: file.name.indexOf('.pdf') > -1 ?
{ viewPdf(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: file.name.indexOf('.zip') > -1 ?
{ download(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: file.name.indexOf('.xlsx') > -1 ?
{ download(file.response?.data?.fileId) }} style={{ cursor: 'pointer' }} >
: } {file.name}
deleteFile(file.response?.data?.fileId)}>
) }) }
{ mode==='view'?null:( <> ) }
{ setPdfViewOPen(false) }} >