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 [structChech, setStructChech] = useState([]); //选中的结构物 const [factorChech, setFactorChech] = useState({}); //选中的结构物 const [activeKey, setActiveKey] = useState([]); // const [correlationId, setCorrelationId] = useState([]); // useEffect(async () => { if (eidtData?.id) { setProjectId(eidtData?.projectId) setStructId(eidtData?.structId || []) setFactorId(eidtData?.factors?.map(s => s.codeName) || []) let data = await getData(eidtData?.projectId) let struc = data?.filter(s => eidtData?.structId?.includes(s.strucId)) || [] setStructChech(struc) let Factor = {} struc?.forEach(d => { Factor[d.strucId] = d.factor?.filter(w => eidtData?.structList?.find(h => h.structId == d.strucId)?.factors?.map(g => g.codeName)?.includes(w.proto)) }) setFactorChech(Factor) // 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) => { console.log(11, v); let data = { id: eidtData?.id, reportName: v.reportName, //报表名称 projectId: v.projectId, //所属项目 projectName: v.projectName, //项目名称 reportType: v.reportType, //报表类型 reportPicPath: v.reportPicPath && v.reportPicPath[0] && v.reportPicPath[0]?.response?.url || eidtData.reportPicPath, //首页图片 framer: v.framer, //制定者 auditor: v.auditor, //审核者 ratifier: v.ratifier, //批准者 coverTime: v.coverTime && moment(v.coverTime).format('YYYY-MM-DD'), structId: v.structId, //结构物id structList: [] } v.structId?.forEach(p => { let structFind = eidtData?.structList?.find(d => d.structId == p) || {} let structData = { structId: p } let structNameIndex = p.toString().length || 0 for (let key in v) { if (key?.indexOf(p) != -1) { //结构物概况图片 if (key?.slice(structNameIndex) == 'overview') structData.overview = v[key] && v[key][0]?.response?.url || structFind.overview //结构物描述 if (key?.slice(structNameIndex) == 'projectOverview') structData.projectOverview = v[key] //结论 if (key?.slice(structNameIndex) == 'conclusion') structData.conclusion = v[key] //开始结束时间 if (key?.slice(structNameIndex) == 'reportTime') { structData.reportStartTime = v[key] && v[key][0] && moment(v[key][0]).format('YYYY-MM-DD HH:mm:ss') structData.reportEndTime = v[key] && v[key][1] && moment(v[key][1]).format('YYYY-MM-DD HH:mm:ss') } //包含的监测因素 structData.factors = [] } } // debugger v[p + 'factorId']?.forEach(d => { let factorFind = structFind?.factors?.find(c => c.codeName == d) || {} let index = d.length + structNameIndex + 5 let factorData = {} for (let key in v) { factorData.codeName = d factorData.tempName = factorData.tempName || [] if (key?.indexOf(p + 'struc') != -1 && key?.indexOf('struc' + 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 || factorFind.pointPicPath //索力监测描述 if (key?.slice(index) == 'factorDescrip') factorData.factorDescrip = v[key] //测点选择 if (key?.slice(index) == 'sensorNames') factorData.sensorNames = factorChech[p]?.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] && v[key][0] && moment(v[key][0]).format('YYYY-MM-DD HH:mm:ss') factorData.endTime = v[key] && v[key][1] && 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[p]?.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[p]?.find(p => p.proto == 1004)?.sensor?.find(f => v[key] == f.id)?.name }) } //数据初始时间 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] && v[key][0] && moment(v[key][0]).format('YYYY-MM-DD HH:mm:ss') factorData.releEndTime = v[key] && v[key][1] && 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 structData.factors?.push(factorData) }) data.structList.push(structData) }) dispatch(service.postAutomaticReport(data)).then((res) => { if (res.success) { close() success() } }) }) }} width={770} onCancel={() => close()} >
{ }} getFormApi={(formApi) => (form.current = formApi)} > { setProjectId(v) getData(v) form.current.setValue('structId', []) setStructId([]) // setFactorList([]) // form.current.setValue('factorId', []) setStructChech([]) }} > {projectList?.map((item) => { return })} { // setFactorList(strucData?.find(s => v.includes(s.stdrucId)) || []) setStructId(v) // form.current.setValue('factorId', []) setStructChech(strucData?.filter(s => v.includes(s.strucId)) || []) }} > {strucData?.map((item) => { return })} {/*所选结构物 */} {structChech?.length > 0 ? { // setActiveKey(v) }} > { structChech?.map(s => { let structFind = eidtData?.structList?.find(d => d.structId == s.strucId) || {} return
d.structId == s.strucId)?.conclusion || ""} rules={[{ required: true, message: "请输入结构物描述" }]} /> s.codeName) || []} rules={[{ required: true, message: "请选择监测因素" }]} disabled={structId ? false : true} onChange={v => { setFactorChech({ ...factorChech, [s.strucId]: s.factor?.filter(d => v.includes(d.proto)) || [] }) // setActiveKey(v) }} > {s.factor?.map((item) => { return })} {factorChech[s.strucId] ? { // setActiveKey(v) }} > { factorChech[s.strucId]?.map(p => { let factorFind = structFind?.factors?.find(c => c.codeName == p.proto) || {} return
{s.proto == 2001 && } a.id) || []} rules={[{ required: true, message: "请选择测点选择" }]} > {p.sensor?.map((item) => { return })} { ['2001', '4004', '4007', '4008'].includes(p.proto) && } { ['4009', '3001', '4004', '4001', '4007'].includes(s.proto) && <> c.index == 1)?.id || ""} onChange={v => { }} > {p.sensor?.map((item) => { return })} c.index == 2)?.id || ""} > {s.factors?.find(d => d.proto == 1004 || d.proto == 1002)?.sensor?.map((item) => { return })} }
}) }
: ""}
}) }
: ""}
); } 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);