import React, { useState, useRef, useEffect } from "react"; import { connect } from "react-redux"; import { Modal, Form, Notification, Tooltip, Upload, Button, Checkbox, CheckboxGroup, Collapse } from "@douyinfe/semi-ui"; import { IconUpload } from '@douyinfe/semi-icons'; import moment from "moment"; const AutomaticModal = ({ actions, dispatch, apiRoot, qiniuUrl, visible, eidtData, close, success, projectList }) => { const { service, problem } = actions; const form = useRef();//表单 const [strucData, setStrucData] = useState([]) //结构物数据 const [projectId, setProjectId] = useState(); //项目id const [structId, setStructId] = useState(); //结构物id const [factorId, setFactorId] = useState([]); //监测因素id const [factorList, setFactorList] = useState([]); //监测因素 const [factorChech, setFactorChech] = useState([]); //选中的监测因素 const [activeKey, setActiveKey] = useState([]); // const [correlationId, setCorrelationId] = useState([]); // useEffect(async () => { if (eidtData?.id) { console.log(eidtData); setProjectId(eidtData?.projectId) setStructId(eidtData?.structId) setFactorId(eidtData?.factors?.map(s => s.codeName) || []) let data = await getData(eidtData?.projectId) let Factor = data?.find(s => s.strucId == eidtData?.structId)?.factor || [] setFactorList(Factor) setFactorChech(Factor?.filter(s => eidtData?.factors?.map(s => s.codeName)?.includes(s.proto))) // setActiveKey(eidtData?.factors?.map(s => s.codeName) || []) } }, []) const getData = async (projectId) => { let data = [] await dispatch(service.getFactorList({ pepProjectId: projectId })).then((res) => { if (res.success) { setStrucData(res.payload.data) data = res.payload.data } }) return data } return ( <> { form.current.validate().then((v) => { let data = { id: eidtData?.id, reportName: v.reportName, projectId: v.projectId, projectName: v.projectName, reportType: v.reportType, reportPicPath: v.reportPicPath[0]?.response?.url, framer: v.framer, auditor: v.auditor, ratifier: v.ratifier, structId: v.structId, projectOverview: v.projectOverview, reportStartTime: moment(v.reportTime[0]).format('YYYY-MM-DD HH:mm:ss'), reportEndTime: moment(v.reportTime[1]).format('YYYY-MM-DD HH:mm:ss'), time: eidtData?.time && moment(eidtData?.time).format('YYYY-MM-DD HH:mm:ss') || null, factors: [] } v.factorId?.forEach(d => { let index = d.length let factorData = {} for (let key in v) { factorData.codeName = d factorData.tempName = factorData.tempName || [] if (key?.indexOf(d) != -1) { if (key?.slice(index) == 'pointDescrip') factorData.pointDescrip = v[key] if (key?.slice(index) == 'pointPicPath') factorData.pointPicPath = v[key] && v[key][0]?.response?.url if (key?.slice(index) == 'factorDescrip') factorData.factorDescrip = v[key] if (key?.slice(index) == 'sensorNames') factorData.sensorNames = factorChech?.find(p => p.proto == d)?.sensor?.filter(f => v[key]?.includes(f.id))?.map(c => ({ id: c.id, name: c.name })) || [] if (key?.slice(index) == 'startEndTime') { factorData.startTime = v[key] && moment(v[key][0]).format('YYYY-MM-DD HH:mm:ss') factorData.endTime = v[key] && moment(v[key][1]).format('YYYY-MM-DD HH:mm:ss') } if (key?.slice(index) == 'tempName1') { factorData.tempName?.push({ index: 1, id: v[key], name: factorChech?.find(p => p.proto == d)?.sensor?.find(f => v[key] == f.id)?.name }) } if (key?.slice(index) == 'tempName2') { factorData.tempName?.push({ index: 2, id: v[key], name: factorChech?.find(p => p.proto == 1004)?.sensor?.find(f => v[key] == f.id)?.name }) } if (key?.slice(index) == 'factorDescrip') factorData.factorDescrip = v[key] // if (key?.slice(index) == 'glStaName') factorData.glStaName = v[key] // if (key?.slice(index) == 'tempStaName') factorData.tempStaName = v[key] if (key?.slice(index) == 'initialTime') factorData.initialTime = v[key] && moment(v[key]).format('YYYY-MM-DD HH:mm:ss') if (key?.slice(index) == 'releTime') { factorData.releStartTime = v[key] && moment(v[key][0]).format('YYYY-MM-DD HH:mm:ss') factorData.releEndTime = v[key] && moment(v[key][1]).format('YYYY-MM-DD HH:mm:ss') } } } factorData.glStaName = factorData?.tempName?.find(s => s.index == 1)?.name factorData.tempStaName = factorData?.tempName?.find(s => s.index == 2)?.name || factorData?.tempName?.find(s => s.index == 1)?.name data.factors?.push(factorData) }) dispatch(service.postAutomaticReport(data)).then((res) => { if (res.success) { close() success() } }) }) }} width={700} onCancel={() => close()} >
{ }} getFormApi={(formApi) => (form.current = formApi)} > { setProjectId(v) getData(v) form.current.setValue('structId', null) setStructId("") setFactorList([]) form.current.setValue('factorId', []) setFactorChech([]) }} > {projectList?.map((item) => { return })} { setFactorList(strucData?.find(s => s.strucId == v)?.factor || []) setStructId(v) form.current.setValue('factorId', []) setFactorChech([]) }} > {strucData?.map((item) => { return })} s.codeName) || []} rules={[{ required: true, message: "请选择监测因素" }]} disabled={structId ? false : true} onChange={v => { setFactorChech(factorList?.filter(s => v.includes(s.proto))) // setActiveKey(v) }} > {factorList?.map((item) => { return })} {factorChech?.length > 0 ? { // setActiveKey(v) }} > { factorChech?.map(s => { return
c.codeName == s.proto)?.pointDescrip || ""} rules={[{ required: true, message: "请输入布点描述" }]} /> c.codeName == s.proto)?.pointPicPath && [{ url: `/_file-server/${eidtData?.factors?.find(c => c.codeName == s.proto)?.pointPicPath?.slice(qiniuUrl.length + 1)}`, name: eidtData?.factors?.find(c => c.codeName == s.proto)?.pointPicPath?.split('/')?.pop(), status: 'success', preview: ['png', 'jpg', 'jpeg'].includes(eidtData?.factors?.find(c => c.codeName == s.proto)?.pointPicPath?.split('.')?.pop()?.replace('.', '')) }] || null} rules={[{ required: true, message: "请上传布点图片" }]} action={`${apiRoot}/attachments/p`} accept={'.png, .jpg, .jpeg'} limit={1} maxSize={5120} > {s.proto == 2001 && c.codeName == s.proto)?.factorDescrip || ""} /> } c.codeName == s.proto)?.sensorNames?.map(a => a.id) || []} rules={[{ required: true, message: "请选择测点选择" }]} > {s.sensor?.map((item) => { return })} c.codeName == s.proto)?.startTime && [moment(eidtData?.factors?.find(c => c.codeName == s.proto)?.startTime).format('YYYY-MM-DD HH:mm:ss'), moment(eidtData?.factors?.find(c => c.codeName == s.proto)?.endTime).format('YYYY-MM-DD HH:mm:ss')] || null} rules={[{ required: true, message: "请选择开始结束时间" }]} /> { ['2001', '4004', '4007', '4008'].includes(s.proto) && c.codeName == s.proto)?.initialTime && moment(eidtData?.factors?.find(c => c.codeName == s.proto)?.initialTime).format('YYYY-MM-DD HH:mm:ss')} /> } { ['4009', '3001', '4004', '4001', '4007'].includes(s.proto) && <> c.codeName == s.proto)?.tempName?.find(c => c.index == 1)?.id || ""} onChange={v => { }} > {s.sensor?.map((item) => { return })} c.codeName == s.proto)?.tempName?.find(c => c.index == 2)?.id || ""} > {factorList?.find(d => d.proto == 1004 || d.proto == 1002)?.sensor?.map((item) => { return })} c.codeName == s.proto)?.releStartTime && [moment(eidtData?.factors?.find(c => c.codeName == s.proto)?.releStartTime).format('YYYY-MM-DD HH:mm:ss'), moment(eidtData?.factors?.find(c => c.codeName == s.proto)?.releEndTime).format('YYYY-MM-DD HH:mm:ss')] || null} /> } {/* c.codeName == s.proto)?.glStaName || ""} /> c.codeName == s.proto)?.tempStaName || ""} /> */}
}) }
: ""}
); } function mapStateToProps (state) { const { auth, global, members } = state; return { // loading: members.isRequesting, user: auth.user, actions: global.actions, apiRoot: global.apiRoot, qiniuUrl: global.qiniu?.domain }; } export default connect(mapStateToProps)(AutomaticModal);