import React,{useEffect,useState,useMemo,useRef} from 'react'; import { Form, Button, Input, Row,Upload, Col, TreeSelect, 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 { httpget2, httppost2,xyt_httpget2 } from '../../../../utils/request'; import apiurl from '../../../../service/apiurl'; import NormalSelect from '../../../../components/Form/NormalSelect'; import "./index.less" import moment from 'moment'; 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 riskOptions = [ {label:"低风险",value:1}, {label:"一般风险",value:2}, {label:"较大风险",value:3}, {label:"重大风险",value:4}, ] 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 [deptList, setDeptList] = useState([]) const [deptUserList, setDeptUserList] = useState([]) const [resultOptions, setResultOptions] = useState([]) // 获取造成后果list const getResultList = async() => { try { const result = await httpget2(apiurl.rcgl.aqgl.fxgkqd.dictionary,{dictCd:"result"}); if (result.code == 200) { setResultOptions(result.data.map(item => ({label:item.dictNm,value:item.id}))); } } catch (error) { console.log(error); } } // 获取部门数据 const getDeptList = async() => { try { const result = await xyt_httpget2(apiurl.rcgl.zbgl.zbb.deptlist); if (result.code == 200) { setDeptList(result.data); getDeptUser() } } catch (error) { console.log(error); } } // 获取部门人员数据 const getDeptUser = async() => { try { const result = await xyt_httpget2(apiurl.rcgl.zbgl.zbb.userList, {pageNum:1,pageSize:9999}); if (result.code == 200) { setDeptUserList(result.rows) } } 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/risk/info/file/download/${params.fileId}`; 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) } /** * @description pdf文件预览 * @param {String} params 文件预览url */ const viewPdf = (params) => { setIframeSrc(params) setPdfViewOPen(true) } const onfinish = (values) => { let oldFiles = fileList.map(item => ({ fileId: item.response?.data?.fileId })) const dicId = values.result.map(item=> ({sysDictId:item})) values.menuId = record.code; values.result = dicId; if (mode === 'edit') { values.files = oldFiles; values.id = record.id; onEdit(apiurl.rcgl.aqgl.fxgkqd.edit,values) } if (mode === 'save') { values.files = oldFiles onSave(apiurl.rcgl.aqgl.fxgkqd.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 buildTree = (data, parentId) => { let tree = []; data.forEach((node) => { node.title = node.deptName; node.key = node.deptId; if (node.parentId === parentId) { let children = buildTree(data, node.deptId); if (children.length) { node.children = children; } tree.push(node); } }); return tree; } const handleTreeList = (dept, user) => { const deptArr = dept.map(item => { return { ...item, value: item.deptId, title: item.deptName, disabled: item.userId ? false : true, children: user.filter(u => u.deptId == item.deptId).map(u => ({ ...u, value: u.userId, title: u.nickName })) } }) console.log("deptArr",deptArr); const treelist = buildTree(deptArr,0) return treelist } const treeList = useMemo(() => { if (deptUserList?.length > 0 && deptList?.length > 0) { return handleTreeList(deptList,deptUserList) } else { return [] } }, [deptUserList, deptList]) useEffect(() => { if (mode != 'save') { const imgFile = record?.files?.map(o => ({ name: o.fileName, response: { data: { filePath: o.filePath, fileId:o.fileId } }, })) setFileList(imgFile) form.setFieldValue("result",record?.result?.map(item => item.sysDictId)) } }, [record, mode]) useEffect(() => { getDeptList() getResultList() }, []) return ( <>