From 536f978f5b5222527d2fef7e54d66b4432147d6f Mon Sep 17 00:00:00 2001 From: ylj20011123 Date: Fri, 19 Dec 2025 15:27:37 +0800 Subject: [PATCH] update --- .../RectificationStatusInfoModal.tsx | 15 +- src/pages/operationReport/index.tsx | 187 ++++++++++++++++-- .../operationReport/onSiteInspection.tsx | 1 + .../operationReport/rectificationStatus.tsx | 1 + .../operationReport/routineInspection.tsx | 32 ++- .../operationReport/securityIssueList.tsx | 1 + src/pages/operationReport/service.ts | 30 +++ 7 files changed, 249 insertions(+), 18 deletions(-) diff --git a/src/pages/operationReport/components/RectificationStatusInfoModal.tsx b/src/pages/operationReport/components/RectificationStatusInfoModal.tsx index 9b5e5bb..5fab070 100644 --- a/src/pages/operationReport/components/RectificationStatusInfoModal.tsx +++ b/src/pages/operationReport/components/RectificationStatusInfoModal.tsx @@ -6,6 +6,7 @@ import { Col, FormInstance, message, Modal, Row } from "antd"; import { useRef, useState } from "react"; import { connect } from "umi"; import { handleGetServerpartTree, handleGetSERVERPARTTYPEList } from "../service"; +import { encryptAES } from "@/utils/handleAes"; type DetailProps = { onRef: any, @@ -102,7 +103,15 @@ const RectificationStatusInfoModal = ({ onRef, currentRowInfo, onShow, setOnShow request={async () => { if (currentRowInfo) { console.log('currentRowInfocurrentRowInfocurrentRowInfo', currentRowInfo); - + console.log('parentRowparentRowparentRow', parentRow); + handleGetServerPartList(parentRow?.SPREGIONTYPE_ID) + return { + ...parentRow, + belongAreaCode: parentRow?.SPREGIONTYPE_ID, + belongArea: parentRow?.SPREGIONTYPE_NAME, + SACode: parentRow?.SERVERPART_ID, + SAName: parentRow?.SERVERPART_NAME, + } } else if (parentRow) { console.log('parentRowparentRowparentRow', parentRow); handleGetServerPartList(parentRow?.belongAreaCode) @@ -161,7 +170,7 @@ const RectificationStatusInfoModal = ({ onRef, currentRowInfo, onShow, setOnShow } } }} - disabled={parentRow} + // disabled={parentRow} /> @@ -186,7 +195,7 @@ const RectificationStatusInfoModal = ({ onRef, currentRowInfo, onShow, setOnShow } }} rules={[{ required: true, message: '请选择服务区!' }]} - disabled={parentRow} + // disabled={parentRow} /> diff --git a/src/pages/operationReport/index.tsx b/src/pages/operationReport/index.tsx index a670e9c..9abf3a9 100644 --- a/src/pages/operationReport/index.tsx +++ b/src/pages/operationReport/index.tsx @@ -2,9 +2,9 @@ import { connect } from "umi"; import { ConnectState } from "@/models/global"; import './style.less' -import { ActionType, FormInstance, ProForm, ProFormDatePicker, ProFormSelect, ProFormText, ProFormTimePicker, ProTable } from "@ant-design/pro-components"; +import { ActionType, FormInstance, ProForm, ProFormDatePicker, ProFormSelect, ProFormText, ProFormTimePicker, ProFormUploadButton, ProTable } from "@ant-design/pro-components"; import { useEffect, useRef, useState } from "react"; -import { Button, Col, Divider, message, Row, Image } from "antd"; +import { Button, Col, Divider, message, Row, Image, Modal } from "antd"; import { handleGetPATROLList, handleGetSERVERPARTDetail, handleGetServerpartTree, handleGetSERVERPARTTYPEList, handleSynchroPATROL, handleSynchroRECTIFICATION } from "./service"; import { handleGetPassportInfoById } from "../DigitalElectronics/service"; import moment from "moment"; @@ -14,16 +14,28 @@ import AddInspectionContent from "./components/AddInspectionContent"; import normalIcon from '../../assets/normalIcon.png' import errorIcon from '../../assets/errorIcon.png' import RectificationStatusInfoModal from "./components/RectificationStatusInfoModal"; -import { handleGetServerpartInfo } from "../serverpartAssets/service"; +import { handleGetServerpartInfo, uploadAHYDPicture } from "../serverpartAssets/service"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; type DetailProps = { PATROLID: string; //巡检id currentUser?: any;// 用户明细 } - +const beforeUpload = (file: any) => { + const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; + if (!isJpgOrPng) { + message.error('请上传JPEG、jpg、png格式的图片文件!'); + } + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + message.error('图片大小不超过 2MB!'); + } + return isJpgOrPng && isLt2M; +} const OperationReport = ({ PATROLID }: DetailProps) => { + const { confirm } = Modal; const actionRef = useRef(); const AddInspectionItemsRef = useRef(); const AddInspectionContentRef = useRef(); @@ -46,6 +58,8 @@ const OperationReport = ({ PATROLID }: DetailProps) => { const [addContentModal, setAddContentModal] = useState(false) // 根据当前的巡检项目的id 里面包含的巡检内容 const [inspectionItemObj, setInspectionItemObj] = useState() + // 根据当前的巡检项目的id 里面包含的现场照片 + const [inspectionItemPhoto, setInspectionItemPhoto] = useState() // 巡检内容 显示的列表 const [inspectionContentList, setInspectionContentList] = useState() // 页面的数据类型 区分日常巡检 和 现场巡检 @@ -56,8 +70,16 @@ const OperationReport = ({ PATROLID }: DetailProps) => { const [currentRecord, setCurrentRecord] = useState() // 整改情况的行数据 const [currentRectification, setCurrentRectification] = useState() + // 文件列表 + const [fileList, setFileList] = useState([]) + // 预览图片 + const [imagePreviewVisible, setImagePreviewVisible] = useState(false) - + // 预览上传后的图片 + const handlePreview = async () => { + setFileList(fileList) + setImagePreviewVisible(true) + }; // 表格字段 const columns: any = [ { @@ -105,7 +127,7 @@ const OperationReport = ({ PATROLID }: DetailProps) => { }, { title: "检查人", - dataIndex: 'PATROL_POSITION', + dataIndex: 'INSPECTION_PERSON', hideInSearch: true, align: 'center', width: 150, @@ -139,9 +161,27 @@ const OperationReport = ({ PATROLID }: DetailProps) => { if (inspectionItemsTableData && inspectionItemsTableData.length > 0) { list = JSON.parse(JSON.stringify(inspectionItemsTableData)) list.forEach((item: any) => { - if (inspectionItemObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] && inspectionItemObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`].length > 0) { + if (inspectionItemObj && inspectionItemObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] && inspectionItemObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`].length > 0) { item.PATROLCONTENTList = inspectionItemObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] } + + if (inspectionItemPhoto && inspectionItemPhoto[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] && inspectionItemPhoto[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`].length > 0) { + // item.PATROLCONTENTList = inspectionItemPhoto[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] + // 保存现场照片的路径 + + let url: string = "" + let list: any = inspectionItemPhoto[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] + if (list && list.length > 0) { + list.forEach((item: any) => { + if (url) { + url += `,${item.url}` + } else { + url = item.url + } + }) + } + item.ONSITEPHOTO_URL = url + } }) } @@ -158,8 +198,10 @@ const OperationReport = ({ PATROLID }: DetailProps) => { STAFF_NAME: userInfoDetail.Name, OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), PATROL_TYPE: pageDataType || 1000, + PATROL_STATE: 1000, PATROLDETAILList: list } + console.log('reqreq', req); if (req.PATROLDETAILList && req.PATROLDETAILList.length > 0) { // 只要有一个子集就是 true @@ -171,10 +213,12 @@ const OperationReport = ({ PATROLID }: DetailProps) => { }) if (!isOk) { message.error('巡检内容数据未录入!') + setSaveLoading(false) return } } else { message.error('巡检项目数据未录入!') + setSaveLoading(false) return } @@ -183,6 +227,7 @@ const OperationReport = ({ PATROLID }: DetailProps) => { value: encryptAES(JSON.stringify(req)) } const data = await handleSynchroPATROL(newReq) + setSaveLoading(false) if (data.Result_Code === 100) { message.success('同步成功!') @@ -248,9 +293,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => { setInspectionItemObj(obj) setInspectionContentList(list) - - // setInspectionItemObj - // setInspectionContentList } // 根据传入的行号 切换显示的巡检内容 @@ -260,6 +302,13 @@ const OperationReport = ({ PATROLID }: DetailProps) => { list = inspectionItemObj[id] } setInspectionContentList(list) + + // 现场照片内容 + let photoList: any = [] + if (inspectionItemPhoto && inspectionItemPhoto[id] && inspectionItemPhoto[id].length > 0) { + photoList = inspectionItemPhoto[id] + } + setFileList(photoList) } // 拿到整改情况的录入数据 @@ -367,15 +416,31 @@ const OperationReport = ({ PATROLID }: DetailProps) => { let list: any = detail.PATROLDETAILList setInspectionItemsTableData(list) - let obj: any = {} + console.log('listlistlist', list); + let obj: any = {} + let photoObj: any = {} list.forEach((item: any, index: number) => { obj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] = item.PATROLCONTENTList + let photoList: any = item.ONSITEPHOTO_URL ? item.ONSITEPHOTO_URL.split(',') : [] + let list: any = [] + if (photoList && photoList.length > 0) { + photoList.forEach((item: any, index: number) => { + list.push({ + url: item, + uid: index + }) + }) + } + photoObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] = list }) + + setInspectionItemPhoto(photoObj) setInspectionItemObj(obj) setInspectionContentList(obj[`${list[0].PATROL_ID}-${list[0].rowIndex || list[0].PATROLDETAIL_ID}`]) setSelectedRowKey(`${list[0].PATROL_ID}-${list[0].rowIndex || list[0].PATROLDETAIL_ID}`); + setFileList(photoObj[`${list[0].PATROL_ID}-${list[0].rowIndex || list[0].PATROLDETAIL_ID}`]) } handleGetServerPartList(detail.SPREGIONTYPE_ID) @@ -626,6 +691,24 @@ const OperationReport = ({ PATROLID }: DetailProps) => { + {fileList && fileList.length > 0 &&
+ { + setImagePreviewVisible(vis) + } + + }}> + { + fileList.map((n) => + + ) + } + + +
} + {/* 非表单内容 */} @@ -726,9 +809,87 @@ const OperationReport = ({ PATROLID }: DetailProps) => { }) : "" } + { + selectedRowKey ? +
+
+ { + const formData = new FormData(); + formData.append('files', info.file); + formData.append('TableType', '1208'); + formData.append('ImageName', typeof info.file !== 'string' ? info.file?.name : ''); + if (info.filename) { + const success = await uploadAHYDPicture(formData) + + if (success) { + let list: any = [] + if (fileList && fileList.length > 0) { + list = JSON.parse(JSON.stringify(fileList)) + } + list.push({ + name: success.Result_Data.ImageName, + url: success.Result_Data.ImageUrl, // url 是展示在页面上的绝对链接 + }) + if (selectedRowKey) { + let obj: any = inspectionItemPhoto ? JSON.parse(JSON.stringify(inspectionItemPhoto)) : {} + + let newList: any = list + + obj[selectedRowKey] = newList + setInspectionItemPhoto(obj) + } + setFileList(list) + } + } else { + message.error("您上传的图片不存在.") + } + }, + onChange: async (info: any) => { + if (info.file.status === 'removed') { + confirm({ + title: '确认删除该图片吗?', + icon: , + async onOk() { + let list: any = JSON.parse(JSON.stringify(fileList)) + let res: any = [] + if (list && list.length > 0) { + list.forEach((item: any) => { + if (item.url === info.file.url) { + + } else { + res.push(item) + } + }) + } + setFileList(res) + + if (selectedRowKey) { + let obj: any = inspectionItemPhoto ? JSON.parse(JSON.stringify(inspectionItemPhoto)) : {} + obj[selectedRowKey] = res + setInspectionItemPhoto(obj) + } + } + }); + } + } + }} + disabled={PATROLID ? true : false} + /> +
+
+ : "" + } - -
diff --git a/src/pages/operationReport/onSiteInspection.tsx b/src/pages/operationReport/onSiteInspection.tsx index a8ddfb7..5c32d27 100644 --- a/src/pages/operationReport/onSiteInspection.tsx +++ b/src/pages/operationReport/onSiteInspection.tsx @@ -200,6 +200,7 @@ const onSiteInspection = () => { const req: any = { SearchParameter: { + PATROL_STATE: 1000, PATROL_TYPES: 3000, SERVERPART_IDS: selectedId, INSPECTION_STARTTIME_Start: params?.INSPECTION_STARTTIME_Start || "", diff --git a/src/pages/operationReport/rectificationStatus.tsx b/src/pages/operationReport/rectificationStatus.tsx index 29b4908..7c6aad9 100644 --- a/src/pages/operationReport/rectificationStatus.tsx +++ b/src/pages/operationReport/rectificationStatus.tsx @@ -229,6 +229,7 @@ const rectificationStatus = () => { request={async (params) => { const req: any = { SearchParameter: { + PATROL_STATE: 1000, INSPECTIONDATE_Start: params?.INSPECTION_STARTTIME_Start || "", INSPECTIONDATE_End: params?.INSPECTION_STARTTIME_End || "", PATROLCONTENT_TYPE: params?.PATROLCONTENT_TYPE || "" diff --git a/src/pages/operationReport/routineInspection.tsx b/src/pages/operationReport/routineInspection.tsx index ba28a88..678fe5b 100644 --- a/src/pages/operationReport/routineInspection.tsx +++ b/src/pages/operationReport/routineInspection.tsx @@ -4,10 +4,10 @@ import { connect } from "umi"; import LeftSelectTree from "@/components/leftSelectTree/leftSelectTree"; import { ActionType, FormInstance, ProTable } from "@ant-design/pro-components"; import { useEffect, useRef, useState } from "react"; -import { handleGetPATROLList } from "./service"; +import { handlDeletePATROL, handleGetPATROLList } from "./service"; import moment from 'moment' import { encryptAES } from "@/utils/handleAes"; -import { Drawer } from "antd"; +import { Button, Drawer, message, Popconfirm } from "antd"; import OperationReport from './index' @@ -202,6 +202,26 @@ const routineInspection = () => { } ] + // 删除巡检记录 + const handleDeletePatrolid = async (PATROL_ID: string) => { + const req: any = { + PATROLId: PATROL_ID + } + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + const data = await handlDeletePATROL(newReq) + if (data.Result_Code === 100) { + message.success(data.Result_Desc) + setShowDetailDrawer(false); + setCurrentRow(undefined); + actionRef.current?.reload() + } else { + message.error(data.Result_Desc) + } + } + return (
@@ -225,6 +245,7 @@ const routineInspection = () => { } const req: any = { SearchParameter: { + PATROL_STATE: 1000, PATROL_TYPES: 1000, SERVERPART_IDS: selectedId, INSPECTION_STARTTIME_Start: params?.INSPECTION_STARTTIME_Start || "", @@ -265,6 +286,13 @@ const routineInspection = () => { bodyStyle={{ padding: '0 24px 24px' }} destroyOnClose closable={false} + // footer={
+ // { + // handleDeletePatrolid(currentRow?.PATROL_ID) + // }}> + // + // + //
} > diff --git a/src/pages/operationReport/securityIssueList.tsx b/src/pages/operationReport/securityIssueList.tsx index f8a4a07..0e4dd0a 100644 --- a/src/pages/operationReport/securityIssueList.tsx +++ b/src/pages/operationReport/securityIssueList.tsx @@ -164,6 +164,7 @@ const securityIssueList = () => { const req: any = { SearchParameter: { + PATROL_STATE: 1000, SERVERPART_IDS: selectedId, PATROL_DATE_Start: params?.PATROL_DATE_Start || "", PATROL_DATE_End: params?.PATROL_DATE_End || "", diff --git a/src/pages/operationReport/service.ts b/src/pages/operationReport/service.ts index deca2e5..dc5b14a 100644 --- a/src/pages/operationReport/service.ts +++ b/src/pages/operationReport/service.ts @@ -215,3 +215,33 @@ export async function handlGetDeleteRENTCALCULATION(params: any) { return data } + + +// 删除巡检记录 +export async function handlDeletePATROL(params: any) { + const data = await requestOld(`/Examine/DeletePATROL`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data +} + + +// 获取巡检整改通知表明细 +export async function handlGetRECTIFICATIONDetail(params: any) { + const data = await requestOld(`/Examine/GetRECTIFICATIONDetail`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data +}