import { connect } from 'react-redux'; import React, { useEffect, useState } from 'react'; import { Button, Modal, Form, Input, Divider, Spin, Image, DatePicker, Descriptions, Table } from 'antd' import ProTable from '@ant-design/pro-table'; import { getReportSpotPrepare, getSpotCheck, getSpotCheckDetail } from '../actions/extract' import { getReportDetail } from '../actions/patrol'; import moment from 'moment' import '../components/maintenanceTable.less' const DetailForm = (props) => { const { visible, data, handleClose, loading } = props //console.log('data1', data) const [qndmn] = useState(localStorage.getItem('qndmn')) const changeBoolean = (bool) => { // console.log('bool', bool) return bool ? '无异常' : '有异常' } const reportTypeText = (text) => { switch (text) { case 'road': return '道路'; // case 'countyRoad': return '县道'; case 'villageRoad': return '乡道'; case 'rusticRoad': return '村道'; // case 'bridge': return '桥梁'; case 'culvert': return '涵洞'; case 'other': return '其他'; // case 'conserve': return '养护'; case 'patrol': return '巡查'; case 'construction': return '在建'; default: return text; } } const keyList = [ { key: '路线代码', name: 'codeRoad' }, { key: '其他', name: 'projectType' }, { key: '道路类型', name: 'reportType' }, { key: '路线名称', name: 'road' }, { key: '路线代码', name: 'codeRoad' }, { key: '养护路段', name: 'roadSectionStart' }, { key: '具体位置', name: 'address' }, { key: '路面类型', name: 'roadType' }, { key: '路面宽度(米)', name: 'roadWidth' }, { key: '错车道(个)', name: 'wrongLane' }, { key: '行道树(棵)', name: 'roadsideTrees' }, { key: '边沟(米)', name: 'roadsideDitch' }, { key: '护栏(米)', name: 'guardrail' }, { key: '标线(米)', name: 'roadMarking' }, { key: '养护人员人数(人)', name: 'maintenanceStaffCount' }, { key: '修整路肩(平方米)', name: 'shoulderRepair' }, { key: '清理边沟(米)', name: 'ditchCleaning' }, { key: '修补沥青路面(平方米)', name: 'asphaltRepair' }, { key: '修补水泥路面(平方米)', name: 'concreteRepair' }, { key: '除草(米)', name: 'grassMowing' }, { key: '树刷白(株/公里)', name: 'treeWhitening' }, { key: '桩刷白(个)', name: 'pileWhitening' }, { key: '维护护栏(个)', name: 'guardrailMaintenance' }, { key: '修复端头(块)', name: 'endHeadRepair' }, { key: '其他养护内容', name: 'otherDescription' }, { key: '养护前图片', name: 'conserveBeforePic' }, { key: '养护中图片', name: 'conserveUnderwayPic' }, { key: '养护后图片', name: 'conserveAfterPic' }, { key: '上报视频', name: 'videoUrl' }, ]; const keyListOld = [ // { key: '编号', name: 'id' }, { key: '工程类型', name: 'projectType' }, { key: '所在路段', name: 'road' }, { key: '具体位置', name: 'address' }, { key: '巡查内容', name: 'content' }, { key: '路线代码', name: 'codeRoad' }, // { key: '病害照片', name: 'scenePic' }, { key: '养护前', name: 'conserveBeforePic' }, { key: '养护中', name: 'conserveUnderwayPic' }, { key: '养护后', name: 'conserveAfterPic' }, ]; const roadInfo = [ { key: '路面类型', name: 'roadType' }, { key: '路面宽度/米', name: 'roadWidth' }, { key: '错车道/个', name: 'wrongLane' }, { key: '行道树/棵', name: 'roadsideTrees' }, { key: '边沟/米', name: 'roadsideDitch' }, { key: '护栏/米', name: 'guardrail' }, { key: '标线/米', name: 'roadMarking' }, ]; const mantenanceInfo = [ { key: '养护人员人数/人', name: 'maintenanceStaffCount' }, { key: '修整路肩/平方米', name: 'shoulderRepair' }, { key: '开挖、清理边沟/米', name: 'ditchCleaning' }, { key: '修补沥青路面/平米', name: 'asphaltRepair' }, { key: '修补水泥路面/平米', name: 'concreteRepair' }, { key: '除草/米', name: 'grassMowing' }, { key: '行道树刷白/株/公里', name: 'treeWhitening' }, { key: '公里桩/百米桩刷漆/个', name: 'pileWhitening' }, { key: '维修护栏/米', name: 'guardrailMaintenance' }, { key: '修复端头/块', name: 'endHeadRepair' }, { key: '其他', name: 'otherDescription' }, ]; const mantenancePic = [ { key: '养护前图片', name: 'conserveBeforePic' }, { key: '养护中图片', name: 'conserveUnderwayPic' }, { key: '养护后图片', name: 'conserveAfterPic' }, ]; const renderContent = (data) => { if (data) { console.log('data1111', data) if (moment(data.time).isAfter(moment('2023-08-03 00:00:00'))) { return
{data['codeRoad'] && data['codeRoad'].length ? data['codeRoad'][0] === 'X' ? '县道' : data['codeRoad'][0] === 'Y' ? '乡道' : '村道' : ''} {reportTypeText(data['projectType']) || ''} {data['codeRoad'] || ''} {data['code'] || ''} {data['roadSectionStart'] + '-' + data['roadSectionEnd'] || ''} {data['address'] || ''} {roadInfo.map(item => ( {data[item.name] || ''} ))} {mantenanceInfo.map(item => ( {data[item.name] || ''} ))} {mantenancePic.map(item => (
{data[item.name]?.map(imgSrc => { return
}) || '暂无图片'}
))}
{data['videoUrl']?.map(videoSrc => { return
}) || '暂无视频'}
// if (data) { // if (moment(data.time).isAfter(moment('2023-08-03 00:00:00'))) { // return keyList.map(obj => { // return
// {obj.key} // { // obj.name != 'conserveBeforePic' && obj.name != 'conserveAfterPic' && obj.name != 'roadSectionStart' && obj.name != 'videoUrl' && obj.name.indexOf('conserve') == -1 ? // // : obj.name != 'roadSectionStart' && obj.name != 'videoUrl' ? //
// { // data[obj.name] && data[obj.name] instanceof Array ? data[obj.name].map(imgSrc => { // return
// //
// }) : '暂无图片' // } //
: obj.name != 'videoUrl' ?
// //
:
// { // data[obj.name] && data[obj.name] instanceof Array ? data[obj.name].map(videoUrl => { // return
// //
// }) : '暂无视频' // } //
// } //
// }) // } else { // return keyListOld.map(obj => { // return
// {obj.key} // { // obj.name != 'scenePic' && obj.name.indexOf('conserve') == -1 ? // // : //
// { // data[obj.name] && data[obj.name] instanceof Array ? data[obj.name].map(imgSrc => { // return
// //
// }) : '暂无图片' // } //
// } //
// }) // } } else { return
{data['codeRoad'] && data['codeRoad'].length ? data['codeRoad'][0] === 'X' ? '县道' : data['codeRoad'][0] === 'Y' ? '乡道' : '村道' : ''} {data['roadSectionStart'] && data['roadSectionEnd'] ? (data['roadSectionStart'] + '-' + data['roadSectionEnd']) : ''} {data['codeRoad'] || ''} {/* {data['code'] || ''} */} {data['address'] || ''} {data['content'] || ''} {mantenancePic.map(item => (
{data[item.name]?.map(imgSrc => { return
}) || '暂无图片'}
))}
{data['videoUrl']?.map(videoSrc => { return
}) || '暂无视频'}
} } else { return '暂无数据' } } // const renderContent = (data) => { // if (data) { // if (data['inspectionNoException']) { // // 当'无异常'字段为true时,显示'无异常'和其他非异常相关字段 // return keyList.map(obj => { // if (obj.name === 'inspectionNoException' || obj.name === 'reportType' || obj.name === 'projectType' || obj.name === 'road' || obj.name === 'roadSectionStart' || obj.name === 'address' || obj.name === 'codeRoad' || obj.name === 'scenePic' || obj.name === 'videoUrl') { // return ( //
// {obj.key} // { // obj.name === 'scenePic' && data[obj.name] instanceof Array ? //
// { // data[obj.name].map(imgSrc => { // return
// //
// }) // } //
// : obj.name === 'roadSectionStart' ? //
// //
// : // // } //
// ); // } else { // return null; // 不渲染异常相关字段 // } // }); // } else { // // 当'无异常'字段为false或未定义时,显示其他异常相关字段 // return keyList.map(obj => { // if (obj.name !== 'inspectionNoException') { // return ( //
// {obj.key} // { // obj.name !== 'scenePic' && obj.name !== 'roadSectionStart' && obj.name.indexOf('conserve') === -1 ? // // : obj.name !== 'roadSectionStart' ? //
// { // data[obj.name] && data[obj.name] instanceof Array ? data[obj.name].map(imgSrc => { // return
// //
// }) : '暂无图片' // } //
// :
// //
// } //
// ); // } else { // return null; // 不渲染其他异常字段 // } // }); // } // } else { // return '暂无数据'; // } // } return ( {renderContent(data)} ) } const MaintenanceSpotCheck = (props) => { const { dispatch, user, loading, reportDetail, reportDetailLoading } = props const [data, setData] = useState()//外层表格的数据 const [vis, setVis] = useState(false)//模态框的显示与隐藏变量 const [count, setCount] = useState(0) const [depId, setDepId] = useState(0) const [depName, setDepName] = useState('') const [total, setTotal] = useState(0) const [previewId, setPreviewId] = useState(0) const [reportData, setReportData] = useState([]) const [detailVisible, setDetailVisible] = useState(false) const [dateRange, setDateRange] = useState(['1970-1-1', '2099-12-31']); const { RangePicker } = DatePicker const [expandedRowKeys, setExpandedRowKeys] = useState([]); //console.log('reportData', reportData) const checkDetail = (record) => { dispatch(getReportDetail(record?.id)) } const handleOpen = () => { setDetailVisible(true) } const handleClose = () => { setDetailVisible(false) } //里层列名 const columns = [ { title: '抽查日期', key: 'spotDate', dataIndex: 'spotDate', align: 'center', // render: (_, record) => { // return // } }, { title: '抽查乡镇', key: 'projectType', dataIndex: 'depName', align: 'center', }, { title: '抽查数量', key: 'count', dataIndex: 'count', align: 'center', }, { title: '抽查总数', key: 'reportCount', dataIndex: 'reportCount', align: 'center', }, ] const queryData = (query = { startTime: '1970-1-1', endTime: '2099-12-31' }) => { dispatch(getSpotCheckDetail(query)).then(res => { if (res.success) { const data = res?.payload.data?.map(item => { return { spotDate: moment(item.date).format('YYYY-MM-DD'), depName: item.department?.name, reportCount: item.reportCount, count: Math.ceil((item.reportCount * item.percentage) / 100), reportDetail: item.reportSpotChecks?.map(child => { return child.report }), id: item.id } }) //console.log('data1', data) setReportData(data) } }) } useEffect(() => { queryData() }, []) const [form] = Form.useForm() const addHanler = () => { setVis(true) } const extractHandler = () => { form.validateFields(['percentValue']).then(async (values) => { if (Number(values.percentValue) > 0) { const res = await dispatch(getReportSpotPrepare({ percentage: Number(values.percentValue) })) // setCount(res?.payload.data?.reportCount) // setDepId(res?.payload.data?.lukyDepartment?.id) // setDepName(res?.payload.data?.lukyDepartment?.name) setPreviewId(res?.payload.data?.previewId) // setTotal(Math.ceil((res?.payload.data?.reportCount) * (Number(values.percentValue) / 100))) form.setFieldsValue({ 'result': res?.payload.data?.reportCount, 'village': res?.payload.data?.lukyDepartment?.name, 'total': Math.ceil((res?.payload.data?.reportCount) * (Number(values.percentValue) / 100)) }) } }) } const cancelHandler = () => { setVis(false) form.resetFields() } const okHandler = async () => { if (previewId !== 0) { const res = await dispatch(getSpotCheck({ previewId })) const rslt = res.payload.data.map(item => { return { spotDate: moment(item.date).format('YYYY-MM-DD'), depName: item.department?.name, reportCount: item.reportCount, count: Math.ceil((item.reportCount * item.percentage) / 100), reportDetail: item.reportSpotChecks?.map(child => { return child.report }), id: item.id } }) || [] setReportData(rslt) form.resetFields() setVis(false) } } //console.log('setReportData', reportData) const lookhandler = () => { if ((dateRange && dateRange instanceof Array && dateRange[0] != '')) { queryData({ startTime: moment(dateRange[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss'), endTime: moment(dateRange[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss') }) } } return (
{ setDateRange(dateString) }} style={{ marginRight: '50px' }} /> ( < Table pagination={false} dataSource={record?.reportDetail} columns={ [ { title: '所属道路', dataIndex: 'road' }, { title: '所在路段', key: 'address', dataIndex: 'address', align: 'center', render: (_, r) => { return `${r?.roadSectionStart || ''}-${r?.roadSectionEnd || ''}` } }, { title: '具体位置', dataIndex: 'address' }, { title: '上报人', width: 100, key: 'userName', dataIndex: 'userName', align: 'center', render: (text, r) => { return r?.user?.name || '' } }, { title: '上报时间', key: 'time', dataIndex: 'time', valueType: 'dateTime', align: 'center', render: (_, r) => { return moment(r?.time).format('YYYY-MM-DD HH:mm:ss') } }, { title: '操作', key: 'caozuo', align: 'center', render: (_, r) => { return } } // { title: '', dataIndex: 'subColumn1' }, // { title: '', dataIndex: 'subColumn2' }, // ... 其他子表格列配置 ]} /> ), }} pagination={{ pageSize: 10, defaultPageSize: 10, showSizeChanger: false, }} rowKey={(record) => { return record.id }} toolBarRender={false} search={false} />
{/* % */}
) } function mapStateToProps(state) { const { auth, spotCheckDetail, reportDetail } = state //('state1', state) return { user: auth.user, loading: spotCheckDetail?.isRequesting, reportDetailLoading: reportDetail.isRequesting, reportDetail: reportDetail.data, } } export default connect(mapStateToProps)(MaintenanceSpotCheck);