From f2f2a01bfb2f817c0e0e1e0677fd330da51e9677 Mon Sep 17 00:00:00 2001 From: ylj20011123 Date: Thu, 4 Dec 2025 16:47:35 +0800 Subject: [PATCH] update --- config/router.ts | 26 +- src/assets/errorIcon.png | Bin 0 -> 9004 bytes src/assets/normalIcon.png | Bin 0 -> 9830 bytes src/components/PageAccess.tsx | 3 - .../leftSelectTree/leftSelectTree.tsx | 1 - src/components/leftSelectTree/style.less | 24 +- src/layouts/index.tsx | 1 - src/models/user.ts | 36 +- src/pages/authority.ts | 6 +- .../components/AddInspectionContent.tsx | 193 +++++ .../components/AddInspectionItems.tsx | 138 ++++ .../RectificationStatusInfoModal.tsx | 319 ++++++++ src/pages/operationReport/index.tsx | 757 ++++++++++++++++++ .../operationReport/onSiteInspection.tsx | 254 ++++++ .../operationReport/rectificationStatus.tsx | 254 ++++++ .../operationReport/routineInspection.tsx | 279 +++++++ .../operationReport/securityIssueList.tsx | 230 ++++++ src/pages/operationReport/service.ts | 101 +++ src/pages/operationReport/style.less | 137 ++++ src/pages/previewFile/index.tsx | 17 - src/utils/handleRedirect.ts | 2 - 21 files changed, 2743 insertions(+), 35 deletions(-) create mode 100644 src/assets/errorIcon.png create mode 100644 src/assets/normalIcon.png create mode 100644 src/pages/operationReport/components/AddInspectionContent.tsx create mode 100644 src/pages/operationReport/components/AddInspectionItems.tsx create mode 100644 src/pages/operationReport/components/RectificationStatusInfoModal.tsx create mode 100644 src/pages/operationReport/index.tsx create mode 100644 src/pages/operationReport/onSiteInspection.tsx create mode 100644 src/pages/operationReport/rectificationStatus.tsx create mode 100644 src/pages/operationReport/routineInspection.tsx create mode 100644 src/pages/operationReport/securityIssueList.tsx create mode 100644 src/pages/operationReport/service.ts create mode 100644 src/pages/operationReport/style.less delete mode 100644 src/pages/previewFile/index.tsx diff --git a/config/router.ts b/config/router.ts index f5a3d5a..dd16ada 100644 --- a/config/router.ts +++ b/config/router.ts @@ -39,9 +39,29 @@ export default [ component: "@/pages/serverpartAssets/index", }, { - path: '/previewFile/index', - name: '预览附件', - component: "@/pages/previewFile/index", + path: '/operationReport/index', + name: '运营报表', + component: "@/pages/operationReport/index", + }, + { + path: '/operationReport/routineInspection', + name: '日常检查记录表', + component: "@/pages/operationReport/routineInspection", + }, + { + path: '/operationReport/onSiteInspection', + name: '现场检查记录表', + component: "@/pages/operationReport/onSiteInspection", + }, + { + path: '/operationReport/securityIssueList', + name: '安全问题记录表', + component: "@/pages/operationReport/securityIssueList", + }, + { + path: '/operationReport/rectificationStatus', + name: '整改情况追踪表', + component: "@/pages/operationReport/rectificationStatus", }, diff --git a/src/assets/errorIcon.png b/src/assets/errorIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..b13a61c2aade9933d2bfef91d1879e7af37c9975 GIT binary patch literal 9004 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 H6X^c{_hY3E literal 0 HcmV?d00001 diff --git a/src/components/PageAccess.tsx b/src/components/PageAccess.tsx index 041af68..a82439d 100644 --- a/src/components/PageAccess.tsx +++ b/src/components/PageAccess.tsx @@ -25,9 +25,6 @@ const PageAccess: FC = (props): ReactElement | null => { //当遇到输入的是菜单组件中可展开的节点的path的时候就没有权限了, 此时可能会报错, //加可选操作符可避免这个报错导致的页面渲染问题 const accessible = authority[pathname]?.some((item: string) => userAuthority.includes(item)); - console.log('authority', authority); - console.log('userAuthority', userAuthority); - console.log('children', children); let res = children; diff --git a/src/components/leftSelectTree/leftSelectTree.tsx b/src/components/leftSelectTree/leftSelectTree.tsx index 8092731..c789f5b 100644 --- a/src/components/leftSelectTree/leftSelectTree.tsx +++ b/src/components/leftSelectTree/leftSelectTree.tsx @@ -38,7 +38,6 @@ const LeftSelectTree = ({ setSelectedId, reload, actionRef, currentUser, width, const { loading: treeLoading, data: treeViews } = useRequest(async () => { const search = window.location.search; const addressParams = Object.fromEntries(new URLSearchParams(search).entries()); - console.log('addressParamsaddressParamsaddressParams', addressParams); const req: any = { UserIdEncrypted: addressParams.UserIdEncrypted } diff --git a/src/components/leftSelectTree/style.less b/src/components/leftSelectTree/style.less index d9608db..e4dda01 100644 --- a/src/components/leftSelectTree/style.less +++ b/src/components/leftSelectTree/style.less @@ -24,9 +24,27 @@ display: flex; align-items: center; - .noBottom { - .ant-form-item { - margin-bottom: 0 !important; + .ant-form { + .ant-row { + .noBottom { + .ant-form-item { + margin-bottom: 0; + } + } + } + } + } + } + + .ant-pro-card-body { + .ant-tree { + .ant-tree-list { + .ant-tree-list-holder { + .ant-tree-list-holder-inner { + .ant-tree-treenode { + margin-bottom: 10px; + } + } } } } diff --git a/src/layouts/index.tsx b/src/layouts/index.tsx index f68fb0b..2f76235 100644 --- a/src/layouts/index.tsx +++ b/src/layouts/index.tsx @@ -47,7 +47,6 @@ const handleGetOpenKeys = (currentLocation: API.MenuItem[] | []): string[] => { const BasicLayout: FC<{ user: UserModelState, global: ProfileModelState, dispatch: any, location: any }> = (props) => { const [collapsed, setCollapsed] = useState(false); const { pathname } = useLocation(); - console.log('pathname', pathname); const { dispatch, diff --git a/src/models/user.ts b/src/models/user.ts index 6b94453..8a71171 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -258,10 +258,34 @@ const UserModel: UserModelType = { component: "@/pages/serverpartAssets/index", }, { - path: '/previewFile/index', + path: '/operationReport/index', redirect: '', - name: '预览附件', - component: "@/pages/previewFile/index", + name: '运营报表', + component: "@/pages/operationReport/index", + }, + { + path: '/operationReport/routineInspection', + redirect: '', + name: '日常巡检记录表', + component: "@/pages/operationReport/routineInspection", + }, + { + path: '/operationReport/onSiteInspection', + redirect: '', + name: '现场巡检记录表', + component: "@/pages/operationReport/onSiteInspection", + }, + { + path: '/operationReport/securityIssueList', + redirect: '', + name: '安全问题记录表', + component: "@/pages/operationReport/securityIssueList", + }, + { + path: '/operationReport/rectificationStatus', + redirect: '', + name: '整改情况追踪表', + component: "@/pages/operationReport/rectificationStatus", }, ] } @@ -338,7 +362,11 @@ const UserModel: UserModelType = { "/redReversal/index", "/InvoiceSearch/index", "/serverpartAssets/index", - "/previewFile/index", + "/operationReport/index", + "/operationReport/routineInspection", + "/operationReport/onSiteInspection", + "/operationReport/securityIssueList", + "/operationReport/rectificationStatus", // '/examine/index', // '/examine/modal', // '/examine/question', diff --git a/src/pages/authority.ts b/src/pages/authority.ts index 16ef436..b7cce4b 100644 --- a/src/pages/authority.ts +++ b/src/pages/authority.ts @@ -6,7 +6,11 @@ const authority: PageAuthority = { '/redReversal/index': ['/redReversal/index'], '/InvoiceSearch/index': ['/InvoiceSearch/index'], '/serverpartAssets/index': ['/serverpartAssets/index'], - '/previewFile/index': ['/previewFile/index'], + '/operationReport/index': ['/operationReport/index'], + '/operationReport/routineInspection': ['/operationReport/routineInspection'], + '/operationReport/onSiteInspection': ['/operationReport/onSiteInspection'], + '/operationReport/securityIssueList': ['/operationReport/securityIssueList'], + '/operationReport/rectificationStatus': ['/operationReport/rectificationStatus'], }; diff --git a/src/pages/operationReport/components/AddInspectionContent.tsx b/src/pages/operationReport/components/AddInspectionContent.tsx new file mode 100644 index 0000000..86ea23f --- /dev/null +++ b/src/pages/operationReport/components/AddInspectionContent.tsx @@ -0,0 +1,193 @@ +// 同步检查项目的悬浮框 +import { uploadAHYDPicture } from "@/pages/serverpartAssets/service"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { ProForm, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea, ProFormTimePicker, ProFormUploadButton, ProFormUploadDragger } from "@ant-design/pro-components"; +import { Col, FormInstance, message, Modal, Row } from "antd"; +import { useRef, useState } from "react"; +import { connect } from "umi"; + + +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; +} + +type DetailProps = { + onRef: any, + onShow: boolean, + setOnShow: (value: boolean) => void + handleAddInspectionContentData: (formRef: any) => void +} + +const AddInspectionContent = ({ onRef, onShow, setOnShow, handleAddInspectionContentData }: DetailProps) => { + const { confirm } = Modal; + const AddInspectionContentFormRef = useRef(); + + // 文件列表 + const [fileList, setFileList] = useState([]) + // 预览图片 + const [imagePreviewVisible, setImagePreviewVisible] = useState(false) + + // 预览上传后的图片 + const handlePreview = async () => { + setFileList(fileList) + setImagePreviewVisible(true) + }; + + return ( +
+ { + setOnShow(false) + setFileList([]) + }} + onOk={async () => { // 提交框内的数据 + AddInspectionContentFormRef.current?.validateFields().then((res: any) => { + if (handleAddInspectionContentData) { + let str: string = '' + if (fileList && fileList.length > 0) { + fileList.forEach((item: any) => { + if (str) { + str += `,${item.url}` + } else { + str = `${item.url}` + } + }) + } + let obj: any = { + ...res, + EXCEPTIONPHOTO_URL: str + } + handleAddInspectionContentData(obj) + } + }) + setOnShow(false) + setFileList([]) + }} + > + + + + + + + + + + + + + + + + { + 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) + console.log('successsuccesssuccess', success); + + 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 是展示在页面上的绝对链接 + }) + setFileList(list) + } + } else { + message.error("您上传的图片不存在.") + } + }, + onChange: async (info: any) => { + console.log('infoinfoinfo', info); + + 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) + } + }); + } + } + }} + /> + + + + + + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(AddInspectionContent); \ No newline at end of file diff --git a/src/pages/operationReport/components/AddInspectionItems.tsx b/src/pages/operationReport/components/AddInspectionItems.tsx new file mode 100644 index 0000000..d553997 --- /dev/null +++ b/src/pages/operationReport/components/AddInspectionItems.tsx @@ -0,0 +1,138 @@ +// 同步检查项目的悬浮框 +import { ProForm, ProFormDateTimePicker, ProFormDigit, ProFormSelect, ProFormText, ProFormTimePicker } from "@ant-design/pro-components"; +import { Col, FormInstance, Modal, Row } from "antd"; +import { useRef } from "react"; +import { connect } from "umi"; + +type DetailProps = { + onRef: any, + onShow: boolean, + setOnShow: (value: boolean) => void + handleGetNewProjectData: (formRef: any) => void + pageDataType: number // 页面类型 1000 是日常巡检 3000 是现场巡检 +} + +const AddInspectionItems = ({ onRef, onShow, setOnShow, handleGetNewProjectData, pageDataType }: DetailProps) => { + const AddInspectionItemsFormRef = useRef(); + + + return ( +
+ { + setOnShow(false) + }} + onOk={async () => { // 提交框内的数据 + AddInspectionItemsFormRef.current?.validateFields().then((res: any) => { + if (handleGetNewProjectData) { + handleGetNewProjectData(res) + } + }) + setOnShow(false) + }} + > + + + + + + + + + + + + + + + { + pageDataType === 3000 ? + <> + + + + + + + + + + : "" + } + {/* + + + + + */} + + + + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(AddInspectionItems); \ No newline at end of file diff --git a/src/pages/operationReport/components/RectificationStatusInfoModal.tsx b/src/pages/operationReport/components/RectificationStatusInfoModal.tsx new file mode 100644 index 0000000..e23c386 --- /dev/null +++ b/src/pages/operationReport/components/RectificationStatusInfoModal.tsx @@ -0,0 +1,319 @@ +// 同步检查项目的悬浮框 +import { uploadAHYDPicture } from "@/pages/serverpartAssets/service"; +import { ExclamationCircleOutlined } from "@ant-design/icons"; +import { ProForm, ProFormDatePicker, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea, ProFormTimePicker, ProFormUploadButton } from "@ant-design/pro-components"; +import { Col, FormInstance, message, Modal, Row } from "antd"; +import { useRef, useState } from "react"; +import { connect } from "umi"; +import { handleGetServerpartTree, handleGetSERVERPARTTYPEList } from "../service"; + +type DetailProps = { + onRef: any, + onShow: boolean, + setOnShow: (value: boolean) => void + handleGetRectificationStatusData: any + parentRow: 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 RectificationStatusInfoModal = ({ onRef, onShow, setOnShow, handleGetRectificationStatusData, parentRow }: DetailProps) => { + const { confirm } = Modal; + const RectificationStatusInfoFormRef = useRef(); + // 文件列表 + const [fileList, setFileList] = useState([]) + // 预览图片 + const [imagePreviewVisible, setImagePreviewVisible] = useState(false) + // 当前片区下的服务区列表 + const [serverPartList, setServerPartList] = useState() + + // 预览上传后的图片 + const handlePreview = async () => { + setFileList(fileList) + setImagePreviewVisible(true) + }; + + // 根据区域获取到服务区列表 + const handleGetServerPartList = async (id: string) => { + const req: any = { + ProvinceCode: "530000", + SPRegionType_ID: id + } + const data = await handleGetServerpartTree(req) + console.log('dsadasda', data); + if (data && data.length > 0) { + let list = data[0].children + setServerPartList(list) + } else { + setServerPartList([]) + } + } + + return ( +
+ { + setOnShow(false) + }} + onOk={async () => { // 提交框内的数据 + RectificationStatusInfoFormRef.current?.validateFields().then((res: any) => { + if (handleGetRectificationStatusData) { + let str: string = '' + if (fileList && fileList.length > 0) { + fileList.forEach((item: any) => { + if (str) { + str += `,${item.url}` + } else { + str = `${item.url}` + } + }) + } + let obj: any = { + ...res, + LOCALEPHOTO: str + } + handleGetRectificationStatusData(obj) + } + }) + setOnShow(false) + }} + > + { + if (parentRow) { + console.log('parentRowparentRowparentRow', parentRow); + handleGetServerPartList(parentRow?.SPREGIONTYPE_ID) + return { + SERVERPART_ID: parentRow?.SERVERPART_ID, + SERVERPART_NAME: parentRow?.SERVERPART_NAME, + SPREGIONTYPE_ID: parentRow?.SPREGIONTYPE_ID, + SPREGIONTYPE_NAME: parentRow?.SPREGIONTYPE_NAME, + } + } else { + return { + + } + } + }} + > + + + { + const req: any = { + SearchParameter: { + SERVERPARTSTATICTYPE_ID: 1000, + TYPE_STATE: 1, + PROVINCE_CODE: 530000 + }, + PageIndex: 1, + PageSize: 100, + SortStr: "TYPE_INDEX,SERVERPARTTYPE_ID" + } + const data = await handleGetSERVERPARTTYPEList(req) + console.log('datadatadatadata', data); + let list: any = [] + if (data && data.length > 0) { + data.forEach((item: any) => { + list.push({ label: item.TYPE_NAME, value: item.SERVERPARTTYPE_ID }) + }) + } + return list + }} + fieldProps={{ + showSearch: true, + filterOption: (input, option) => + (option?.label ?? '').toLowerCase().includes(input.toLowerCase()), + optionFilterProp: 'label', + onChange: (value: any, option: any) => { + console.log('valuevalue', value); + handleGetServerPartList(value) + if (value) { + RectificationStatusInfoFormRef.current?.setFieldsValue({ SPREGIONTYPE_NAME: option.label }) + } else { + RectificationStatusInfoFormRef.current?.setFieldsValue({ SPREGIONTYPE_NAME: "" }) + } + } + }} + disabled={parentRow} + /> + + + + + + { + console.log('e', e); + if (e) { + RectificationStatusInfoFormRef.current?.setFieldsValue({ SERVERPART_NAME: option.label }) + } else { + RectificationStatusInfoFormRef.current?.setFieldsValue({ SERVERPART_NAME: "" }) + } + } + }} + rules={[{ required: true, message: '请选择服务区!' }]} + disabled={parentRow} + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + 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) + console.log('successsuccesssuccess', success); + + 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 是展示在页面上的绝对链接 + }) + setFileList(list) + } + } else { + message.error("您上传的图片不存在.") + } + }, + onChange: async (info: any) => { + console.log('infoinfoinfo', info); + + 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) + } + }); + } + } + }} + /> + + + + + + + + + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(RectificationStatusInfoModal); \ No newline at end of file diff --git a/src/pages/operationReport/index.tsx b/src/pages/operationReport/index.tsx new file mode 100644 index 0000000..a0ed913 --- /dev/null +++ b/src/pages/operationReport/index.tsx @@ -0,0 +1,757 @@ +// 预览附件的页面 +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 { useEffect, useRef, useState } from "react"; +import { Button, Col, Divider, message, Row, Image } from "antd"; +import { handleGetPATROLList, handleGetSERVERPARTDetail, handleGetServerpartTree, handleGetSERVERPARTTYPEList, handleSynchroPATROL, handleSynchroRECTIFICATION } from "./service"; +import { handleGetPassportInfoById } from "../DigitalElectronics/service"; +import moment from "moment"; +import { encryptAES } from "@/utils/handleAes"; +import AddInspectionItems from "./components/AddInspectionItems"; +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"; + + +type DetailProps = { + PATROLID: string; //巡检id + currentUser?: any;// 用户明细 +} + + +const OperationReport = ({ PATROLID }: DetailProps) => { + const actionRef = useRef(); + const AddInspectionItemsRef = useRef(); + const AddInspectionContentRef = useRef(); + const formRef = useRef(); + // 选中的行 + const [selectedRowKey, setSelectedRowKey] = useState(); + // 保存数据 + const [saveLoading, setSaveLoading] = useState(false) + // 当前的用户信息 + const [userInfoDetail, setUserInfoDetail] = useState() + // 当前片区下的服务区列表 + const [serverPartList, setServerPartList] = useState() + // 当前服务区下的方位 + const [SERVERPARTREGION, setSERVERPARTREGION] = useState() + // 显示同步巡检项目的悬浮框 + const [showInspectionItemsModal, setShowInspectionItemsModal] = useState(false) + // 巡检项目 表格数据 + const [inspectionItemsTableData, setInspectionItemsTableData] = useState() + // 添加巡检内容的悬浮框 + const [addContentModal, setAddContentModal] = useState(false) + // 根据当前的巡检项目的id 里面包含的巡检内容 + const [inspectionItemObj, setInspectionItemObj] = useState() + // 巡检内容 显示的列表 + const [inspectionContentList, setInspectionContentList] = useState() + // 页面的数据类型 区分日常巡检 和 现场巡检 + const [pageDataType, setPageDataType] = useState(1000) + // 整改情况modal + const [rectificationStatusModal, setRectificationStatusModal] = useState(false) + // 当前的巡检记录 + const [currentRecord, setCurrentRecord] = useState() + + + // 表格字段 + const columns: any = [ + { + title: "序号", + dataIndex: 'index', + valueType: 'index', + hideInSearch: true, + align: 'center', + width: 80, + ellipsis: true + }, + { + title: "状态", + dataIndex: 'PATROLDETAIL_STATE', + valueType: 'select', + hideInSearch: true, + align: 'center', + width: 120, + ellipsis: true, + fieldProps: { + options: [ + { label: "编辑中", value: 1 }, + { label: "巡查中", value: 2 }, + { label: "待跟进", value: 3 }, + { label: "整改中", value: 4 }, + { label: "已完成", value: 5 }, + ] + } + }, + { + title: pageDataType === 3000 ? "检查项目" : "巡检项目", + dataIndex: 'PATROL_POSITION', + hideInSearch: true, + align: 'center', + width: 180, + ellipsis: true + }, + { + title: "合作单位", + dataIndex: 'DUTYUNIT_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "检查人", + dataIndex: 'PATROL_POSITION', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + hideInTable: pageDataType === 3000 ? false : true + }, + { + title: "检查开始时间", + dataIndex: 'INSPECTION_STARTTIME', + hideInSearch: true, + align: 'center', + width: 180, + ellipsis: true, + hideInTable: pageDataType === 3000 ? false : true + }, + { + title: "检查完成时间", + dataIndex: 'INSPECTION_ENDTIME', + hideInSearch: true, + align: 'center', + width: 180, + ellipsis: true, + hideInTable: pageDataType === 3000 ? false : true + }, + ] + + // 数据录入的方法 + const handleAddUpdate = async (obj: any) => { + // 用参数去判断 两个嵌套的子集 是否已经有数据了 没有的话 就提示 + let list: any = [] + console.log('inspectionItemsTableDatainspectionItemsTableData', inspectionItemsTableData); + console.log('inspectionItemObjinspectionItemObjinspectionItemObj', inspectionItemObj); + 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) { + item.PATROLCONTENTList = inspectionItemObj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] + } + }) + } + + + + const req: any = { + ...obj, + INSPECTION_ENDTIME: moment(obj.INSPECTION_ENDTIME).format('YYYY-MM-DD'), + INSPECTION_STARTTIME: moment(obj.INSPECTION_STARTTIME).format('YYYY-MM-DD'), + PATROL_DATE: moment(obj.PATROL_DATE).format('YYYY-MM-DD'), + PATROL_STARTTIME: `${moment(obj.PATROL_DATE).format('YYYY-MM-DD')} ${moment(obj.PATROL_STARTTIME).format('HH:mm:ss')}`, + PATROL_ENDTIME: `${moment(obj.PATROL_DATE).format('YYYY-MM-DD')} ${moment(obj.PATROL_ENDTIME).format('HH:mm:ss')}`, + STAFF_ID: userInfoDetail.ID, + STAFF_NAME: userInfoDetail.Name, + OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + PATROL_TYPE: pageDataType || 1000, + PATROLDETAILList: list + } + console.log('reqreqreq', req); + + + + if (req.PATROLDETAILList && req.PATROLDETAILList.length > 0) { + // 只要有一个子集就是 true + let isOk: boolean = false + req.PATROLDETAILList.forEach((item: any) => { + if (item.PATROLCONTENTList && item.PATROLCONTENTList.length > 0) { + isOk = true + } + }) + if (!isOk) { + message.error('巡检内容数据未录入!') + return + } + } else { + message.error('巡检项目数据未录入!') + return + } + + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + const data = await handleSynchroPATROL(newReq) + console.log('datadadsad', data); + if (data.Result_Code === 100) { + message.success('同步成功!') + + } else { + message.error(data.Result_Desc) + } + setSaveLoading(false) + } + + // 根据区域获取到服务区列表 + const handleGetServerPartList = async (id: string) => { + const req: any = { + ProvinceCode: "530000", + SPRegionType_ID: id + } + const data = await handleGetServerpartTree(req) + console.log('dsadasda', data); + if (data && data.length > 0) { + let list = data[0].children + setServerPartList(list) + } else { + setServerPartList([]) + } + } + + // 拿到新增的巡检项目的内容 假保存的 + const handleGetNewProjectData = async (formData: any) => { + if (inspectionItemsTableData && inspectionItemsTableData.length > 0) { + let list: any = JSON.parse(JSON.stringify(inspectionItemsTableData)) + list.push({ + ...formData, + rowIndex: inspectionItemsTableData.length + 1, + STAFF_ID: userInfoDetail.ID, + STAFF_NAME: userInfoDetail.Name, + OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + }) + setInspectionItemsTableData(list) + } else { + let list: any = [{ ...formData, rowIndex: 1 }] + setSelectedRowKey(`${formData?.PATROL_ID}-1`); + setInspectionItemsTableData(list) + } + + setShowInspectionItemsModal(false) + } + + // 拿到添加巡检内容 悬浮框里面的内容 + const handleAddInspectionContentData = async (formData: any) => { + let obj: any = {} + if (inspectionItemObj) { + obj = JSON.parse(JSON.stringify(inspectionItemObj)) + } + let list: any = [] + if (inspectionItemObj && inspectionItemObj[selectedRowKey] && inspectionItemObj[selectedRowKey].length > 0) { + list = JSON.parse(JSON.stringify(inspectionItemObj[selectedRowKey])) + } + + if (list && list.length > 0) { + list.push({ ...formData, rowId: selectedRowKey }) + } else { + list = [{ ...formData, rowId: selectedRowKey }] + } + obj[selectedRowKey] = list + + setInspectionItemObj(obj) + setInspectionContentList(list) + + // setInspectionItemObj + // setInspectionContentList + } + + // 根据传入的行号 切换显示的巡检内容 + const handleChangeContentList = async (id: string) => { + let list: any = [] + if (inspectionItemObj && inspectionItemObj[id] && inspectionItemObj[id].length > 0) { + list = inspectionItemObj[id] + } + setInspectionContentList(list) + } + + // 拿到整改情况的录入数据 + const handleGetRectificationStatusData = async (formData: any) => { + console.log('formDataformData', formData); + const req: any = { + ...formData, + PATROL_ID: PATROLID, + STAFF_ID: userInfoDetail.ID, + STAFF_NAME: userInfoDetail.Name, + OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + } + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + + const data = await handleSynchroRECTIFICATION(newReq) + if (data.Result_Code === 100) { + message.success('同步成功!') + + } else { + message.error(data.Result_Desc) + } + setRectificationStatusModal(false) + } + + // 获取到服务区方位的方法 + const handleGetSERVERPARTREGION = async (id: string) => { + setSERVERPARTREGION([]) + const req: any = { + SERVERPARTId: id + } + const data = await handleGetServerpartInfo(req) + console.log('datadatadata', data); + let list: any = [] + if (data.RegionInfo && data.RegionInfo.length > 0) { + data.RegionInfo.forEach((item: any) => { + list.push({ label: item.SERVERPART_REGIONNAME, value: item.SERVERPART_REGION }) + }) + } + setSERVERPARTREGION(list) + } + + + return ( +
+
+
+
{`${pageDataType === 3000 ? '现场巡检' : '日常巡检'}${PATROLID ? '详情' : '录入'}`}
+
+ { + PATROLID ? '' : + + } + +
+
+ { + // 地址栏传参 UserIdEncrypted 为当前登录用户的加密id + const search = window.location.search; + const addressParams = Object.fromEntries(new URLSearchParams(search).entries()); + console.log('addressParamsaddressParams', addressParams); + const req: any = { + UserIdEncrypted: addressParams.UserIdEncrypted + } + const userInfo = await handleGetPassportInfoById(req) + setUserInfoDetail(userInfo) + + if (addressParams.dataType) { + setPageDataType(Number(addressParams.dataType)) + } + + if (PATROLID) { + const req: any = { + PATROL_IDS: PATROLID + } + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + const data = await handleGetPATROLList(newReq) + if (data && data.length > 0) { + let detail: any = data[0] + console.log('detaildetail', detail); + + setCurrentRecord(detail) + if (detail.PATROLDETAILList && detail.PATROLDETAILList.length > 0) { + console.log('sdada', detail.PATROLDETAILList); + let list: any = detail.PATROLDETAILList + setInspectionItemsTableData(list) + + let obj: any = {} + + list.forEach((item: any, index: number) => { + obj[`${item?.PATROL_ID}-${item?.rowIndex || item?.PATROLDETAIL_ID}`] = item.PATROLCONTENTList + }) + + 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}`); + } + + handleGetServerPartList(detail.SPREGIONTYPE_ID) + + handleGetSERVERPARTREGION(detail.SERVERPART_ID) + return { + ...detail + } + } + + + + } else { + return { + STAFF_NAME: userInfo.Name, + OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss') + } + } + }} + > + + + + + + + { + const req: any = { + SearchParameter: { + SERVERPARTSTATICTYPE_ID: 1000, + TYPE_STATE: 1, + PROVINCE_CODE: 530000 + }, + PageIndex: 1, + PageSize: 100, + SortStr: "TYPE_INDEX,SERVERPARTTYPE_ID" + } + const data = await handleGetSERVERPARTTYPEList(req) + console.log('datadatadatadata', data); + let list: any = [] + if (data && data.length > 0) { + data.forEach((item: any) => { + list.push({ label: item.TYPE_NAME, value: item.SERVERPARTTYPE_ID }) + }) + } + return list + }} + fieldProps={{ + showSearch: true, + filterOption: (input, option) => + (option?.label ?? '').toLowerCase().includes(input.toLowerCase()), + optionFilterProp: 'label', + onChange: (value: any, option: any) => { + console.log('valuevalue', value); + handleGetServerPartList(value) + if (value) { + formRef.current?.setFieldsValue({ SPREGIONTYPE_NAME: option.label }) + } else { + formRef.current?.setFieldsValue({ SPREGIONTYPE_NAME: "" }) + } + } + }} + rules={[{ + required: true, + message: '请选择所属片区!' + }]} + readonly={PATROLID ? true : false} + /> + + + + + + { + console.log('e', e); + handleGetSERVERPARTREGION(e) + if (e) { + formRef.current?.setFieldsValue({ SERVERPART_NAME: option.label }) + } else { + formRef.current?.setFieldsValue({ SERVERPART_NAME: "" }) + } + } + }} + readonly={PATROLID ? true : false} + /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + pageDataType === 3000 ? + + {/* */} + : + <> + + + + + + + + } + + + + {/* 非表单内容 */} + + + 巡检项目 +
+ { + return `${record?.PATROL_ID}-${record?.rowIndex || record?.PATROLDETAIL_ID}` + }} + search={PATROLID ? false : {}} + options={false} + columns={columns} + bordered + scroll={{ x: "100%", y: 230 }} + dataSource={inspectionItemsTableData} + onRow={(record) => ({ + onClick: () => { + setSelectedRowKey(`${record?.PATROL_ID}-${record?.rowIndex || record?.PATROLDETAIL_ID}`); + handleChangeContentList(`${record?.PATROL_ID}-${record?.rowIndex || record?.PATROLDETAIL_ID}`) + }, + })} + className="leftItemProTable" + rowClassName={(record) => (`${record?.PATROL_ID}-${record?.rowIndex || record?.PATROLDETAIL_ID}` === selectedRowKey ? 'ant-table-row-selected' : '')} + toolbar={{ + actions: PATROLID ? [] : [ + + ] + }} + /> +
+ + + 巡检内容 + +
+ { + selectedRowKey ? + PATROLID ? '' : + : "" + } +
+ +
+ { + inspectionContentList && inspectionContentList.length > 0 ? + inspectionContentList.map((item: any) => { + return
+
+ +
+
+
{item?.PATROLDETAIL_CONTENT || ""}
+ { + item.EXCEPTION_CONTENT ? +
+
异常描述:
+
{item?.EXCEPTION_CONTENT || ""}
+
+ + {item.EXCEPTIONPHOTO_URL && + item.EXCEPTIONPHOTO_URL.split(',').map((url: string, index: number) => ( + + ))} + +
+
: "" + } +
+ +
+
{ + setRectificationStatusModal(true) + }}>整改情况
+
+
+ }) : "" + } +
+ + + +
+ + + + {/* 添加巡检项目 */} + + + {/* 添加巡检内容的悬浮框 */} + + + {/* 整改情况 的录入悬浮框 */} + +
+ + ) +} + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(OperationReport); \ No newline at end of file diff --git a/src/pages/operationReport/onSiteInspection.tsx b/src/pages/operationReport/onSiteInspection.tsx new file mode 100644 index 0000000..d67b1df --- /dev/null +++ b/src/pages/operationReport/onSiteInspection.tsx @@ -0,0 +1,254 @@ +// 服务商现场检查记录表 +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 moment from 'moment' +import { encryptAES } from "@/utils/handleAes"; +import { Drawer } from "antd"; +import OperationReport from './index' + + +const onSiteInspection = () => { + const actionRef = useRef(); + const formRef = useRef(); + const [collapsible, setCollapsible] = useState(false) + // 树相关的属性和方法 + const [selectedId, setSelectedId] = useState() + // 行数据信息 + const [currentRow, setCurrentRow] = useState() + // 显示详情抽屉 + const [showDetailDrawer, setShowDetailDrawer] = useState(false) + + const columns: any = [ + { + title: '巡检时间', + dataIndex: 'search_date', + valueType: 'dateRange', + hideInTable: true, + hideInDescriptions: true, + search: { + transform: (value: any) => { + return { + INSPECTION_STARTTIME_Start: value[0], + INSPECTION_STARTTIME_End: value[1], + }; + }, + }, + fieldProps: { + ranges: { + "本月": [moment().startOf('M'), moment()], + "上月": [moment().subtract(1, 'M').startOf('M'), moment().subtract(1, 'M').endOf('M')], + "近三月": [moment().subtract(3, 'M').startOf('M'), moment().endOf('M')], + "近半年": [moment().subtract(6, 'M').startOf('M'), moment().endOf('M')], + } + }, + initialValue: [moment().startOf('M'), moment()], + }, + { + title: "序号", + dataIndex: 'index', + valueType: 'index', + hideInSearch: true, + align: 'center', + width: 80, + ellipsis: true + }, + { + title: "状态", + dataIndex: 'COMPLETE_STATE', + valueType: 'select', + hideInSearch: true, + align: 'center', + width: 120, + ellipsis: true, + fieldProps: { + options: [ + { label: "编辑中", value: 1 }, + { label: "巡查中", value: 2 }, + { label: "待跟进", value: 3 }, + { label: "整改中", value: 4 }, + { label: "已完成", value: 5 }, + ] + } + }, + { + title: "标题", + dataIndex: 'PATROL_TITLE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + return { + setCurrentRow(record) + setShowDetailDrawer(true) + }}>{record?.PATROL_TITLE || ""} + } + }, + { + title: "片区名称", + dataIndex: 'SPREGIONTYPE_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "服务区名称", + dataIndex: 'SERVERPART_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "检查人", + dataIndex: 'PATROL_PERSON', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "检查日期", + dataIndex: 'PATROL_DATE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "检查开始时间", + dataIndex: 'PATROL_STARTTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "检查完成时间", + dataIndex: 'PATROL_ENDTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "要求整改时间", + dataIndex: '要求整改时间', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "跟进处理时间", + dataIndex: '跟进处理时间', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "处理完成时间", + dataIndex: '处理完成时间', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "是否逾期", + dataIndex: 'overdueOrNot', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + let type: string = new Date(record?.INSPECTION_ENDTIME).getTime() > new Date(record?.PATROL_ENDTIME).getTime() ? '是' : "否" + return {type} + } + } + ] + + + + return ( +
+ +
+ { + if (!selectedId) { + return { data: [], success: true } + } + + const req: any = { + SearchParameter: { + PATROL_TYPES: 3000, + SERVERPART_IDS: selectedId, + INSPECTION_STARTTIME_Start: params?.INSPECTION_STARTTIME_Start || "", + INSPECTION_STARTTIME_End: params?.INSPECTION_STARTTIME_End || "", + }, + PageIndex: 1, + PageSize: 999999, + } + + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + const data = await handleGetPATROLList(newReq) + if (data && data.length > 0) { + return { data, success: true } + } + return { data: [], success: true } + }} + toolbar={{ + actions: [ + + ] + }} + /> +
+ + + {/* 详情抽屉 */} + { + setShowDetailDrawer(false); + setCurrentRow(undefined); + }} + bodyStyle={{ padding: '0 24px 24px' }} + destroyOnClose + closable={false} + > + + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(onSiteInspection); \ No newline at end of file diff --git a/src/pages/operationReport/rectificationStatus.tsx b/src/pages/operationReport/rectificationStatus.tsx new file mode 100644 index 0000000..baa1365 --- /dev/null +++ b/src/pages/operationReport/rectificationStatus.tsx @@ -0,0 +1,254 @@ +// 整改情况追踪表 +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, handleGetRECTIFICATIONList } from "./service"; +import moment from 'moment' +import { encryptAES } from "@/utils/handleAes"; +import { Drawer } from "antd"; +import OperationReport from './index' + + +const rectificationStatus = () => { + const actionRef = useRef(); + const formRef = useRef(); + const [collapsible, setCollapsible] = useState(false) + // 树相关的属性和方法 + const [selectedId, setSelectedId] = useState() + // 行数据信息 + const [currentRow, setCurrentRow] = useState() + // 显示详情抽屉 + const [showDetailDrawer, setShowDetailDrawer] = useState(false) + + const columns: any = [ + { + title: '巡检时间', + dataIndex: 'search_date', + valueType: 'dateRange', + hideInTable: true, + hideInDescriptions: true, + search: { + transform: (value: any) => { + return { + INSPECTION_STARTTIME_Start: value[0], + INSPECTION_STARTTIME_End: value[1], + }; + }, + }, + fieldProps: { + ranges: { + "本月": [moment().startOf('M'), moment()], + "上月": [moment().subtract(1, 'M').startOf('M'), moment().subtract(1, 'M').endOf('M')], + "近三月": [moment().subtract(3, 'M').startOf('M'), moment().endOf('M')], + "近半年": [moment().subtract(6, 'M').startOf('M'), moment().endOf('M')], + } + }, + initialValue: [moment().startOf('M'), moment()], + }, + { + title: "序号", + dataIndex: 'index', + valueType: 'index', + hideInSearch: true, + align: 'center', + width: 80, + ellipsis: true + }, + { + title: "片区名称", + dataIndex: 'SPREGIONTYPE_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "服务区名称", + dataIndex: 'SERVERPART_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "责任单位", + dataIndex: 'DUTYUNIT', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "责任人", + dataIndex: 'DUTYPSNNAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "联系电话", + dataIndex: 'PHONE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "巡检人", + dataIndex: 'INSPECTIONPSN', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "巡检日期", + dataIndex: 'INSPECTIONDATE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + }, + { + title: "巡检问题", + dataIndex: 'INSPECTIONQUESTION', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "整改要求", + dataIndex: 'RECTIFICATIONREQUEST', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "整改期限", + dataIndex: 'DEADLINE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "整改截止时间", + dataIndex: 'TILLTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "整改完成时间", + dataIndex: 'FINISHTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "整改结果", + dataIndex: 'RECTIFICATION_RESULT', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "现场照片", + dataIndex: 'LOCALEPHOTO', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "整改后照片", + dataIndex: 'RESULTPHOTO', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "状态", + dataIndex: 'COMPLETE_STATE', + valueType: 'select', + hideInSearch: true, + align: 'center', + width: 120, + ellipsis: true, + fieldProps: { + options: [ + { label: "编辑中", value: 1 }, + { label: "巡查中", value: 2 }, + { label: "待跟进", value: 3 }, + { label: "整改中", value: 4 }, + { label: "已完成", value: 5 }, + ] + } + } + ] + + return ( +
+ +
+ { + const req: any = { + SearchParameter: { + INSPECTIONDATE_Start: params?.INSPECTION_STARTTIME_Start || "", + INSPECTIONDATE_End: params?.INSPECTION_STARTTIME_End || "", + }, + PageIndex: 1, + PageSize: 999999, + } + + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + + const data = await handleGetRECTIFICATIONList(newReq) + if (data && data.length > 0) { + return { data, success: true } + } + return { data: [], success: true } + }} + toolbar={{ + actions: [ + + ] + }} + /> +
+ + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(rectificationStatus); \ No newline at end of file diff --git a/src/pages/operationReport/routineInspection.tsx b/src/pages/operationReport/routineInspection.tsx new file mode 100644 index 0000000..ba28a88 --- /dev/null +++ b/src/pages/operationReport/routineInspection.tsx @@ -0,0 +1,279 @@ +// 服务商日常检查记录表 +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 moment from 'moment' +import { encryptAES } from "@/utils/handleAes"; +import { Drawer } from "antd"; +import OperationReport from './index' + + +const routineInspection = () => { + const actionRef = useRef(); + const formRef = useRef(); + const [collapsible, setCollapsible] = useState(false) + // 树相关的属性和方法 + const [selectedId, setSelectedId] = useState() + // 行数据信息 + const [currentRow, setCurrentRow] = useState() + // 显示详情抽屉 + const [showDetailDrawer, setShowDetailDrawer] = useState(false) + + const columns: any = [ + { + title: '巡检时间', + dataIndex: 'search_date', + valueType: 'dateRange', + hideInTable: true, + hideInDescriptions: true, + search: { + transform: (value: any) => { + return { + INSPECTION_STARTTIME_Start: value[0], + INSPECTION_STARTTIME_End: value[1], + }; + }, + }, + fieldProps: { + ranges: { + "本月": [moment().startOf('M'), moment()], + "上月": [moment().subtract(1, 'M').startOf('M'), moment().subtract(1, 'M').endOf('M')], + "近三月": [moment().subtract(3, 'M').startOf('M'), moment().endOf('M')], + "近半年": [moment().subtract(6, 'M').startOf('M'), moment().endOf('M')], + } + }, + initialValue: [moment().startOf('M'), moment()], + }, + { + title: "序号", + dataIndex: 'index', + valueType: 'index', + hideInSearch: true, + align: 'center', + width: 80, + ellipsis: true + }, + { + title: "状态", + dataIndex: 'COMPLETE_STATE', + valueType: 'select', + hideInSearch: true, + align: 'center', + width: 120, + ellipsis: true, + fieldProps: { + options: [ + { label: "编辑中", value: 1 }, + { label: "巡查中", value: 2 }, + { label: "待跟进", value: 3 }, + { label: "整改中", value: 4 }, + { label: "已完成", value: 5 }, + ] + } + }, + { + title: "任务标题", + dataIndex: 'PATROL_TITLE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + return { + setCurrentRow(record) + setShowDetailDrawer(true) + }}>{record?.PATROL_TITLE || ""} + } + }, + { + title: "片区名称", + dataIndex: 'SPREGIONTYPE_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "服务区名称", + dataIndex: 'SERVERPART_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "发布人", + dataIndex: 'STAFF_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "发布时间", + dataIndex: 'OPERATE_DATE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "巡检日期", + dataIndex: 'PATROL_DATE', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "时段名称", + dataIndex: '时段名称', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "开始时间", + dataIndex: 'PATROL_STARTTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + return record?.PATROL_STARTTIME ? moment(record?.PATROL_STARTTIME).format('YYYY-MM-DD') : "" + } + }, + { + title: "截止时间", + dataIndex: 'PATROL_ENDTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + return record?.PATROL_ENDTIME ? moment(record?.PATROL_ENDTIME).format('YYYY-MM-DD') : "" + } + }, + { + title: "巡检人", + dataIndex: 'PATROL_PERSON', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "巡检开始时间", + dataIndex: 'INSPECTION_STARTTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + return record?.INSPECTION_STARTTIME ? moment(record?.INSPECTION_STARTTIME).format('YYYY-MM-DD') : "" + } + }, + { + title: "巡检完成时间", + dataIndex: 'INSPECTION_ENDTIME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + return record?.INSPECTION_ENDTIME ? moment(record?.INSPECTION_ENDTIME).format('YYYY-MM-DD') : "" + } + }, + { + title: "是否逾期", + dataIndex: 'overdueOrNot', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + render: (_, record) => { + let type: string = new Date(record?.INSPECTION_ENDTIME).getTime() > new Date(record?.PATROL_ENDTIME).getTime() ? '是' : "否" + return {type} + } + } + ] + + return ( +
+ +
+ { + if (!selectedId) { + return { data: [], success: true } + } + const req: any = { + SearchParameter: { + PATROL_TYPES: 1000, + SERVERPART_IDS: selectedId, + INSPECTION_STARTTIME_Start: params?.INSPECTION_STARTTIME_Start || "", + INSPECTION_STARTTIME_End: params?.INSPECTION_STARTTIME_End || "", + }, + PageIndex: 1, + PageSize: 999999, + } + + let newReq: any = { + name: "", + value: encryptAES(JSON.stringify(req)) + } + const data = await handleGetPATROLList(newReq) + if (data && data.length > 0) { + return { data, success: true } + } + return { data: [], success: true } + }} + toolbar={{ + actions: [ + + ] + }} + /> +
+ + + {/* 详情抽屉 */} + { + setShowDetailDrawer(false); + setCurrentRow(undefined); + }} + bodyStyle={{ padding: '0 24px 24px' }} + destroyOnClose + closable={false} + > + + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(routineInspection); \ No newline at end of file diff --git a/src/pages/operationReport/securityIssueList.tsx b/src/pages/operationReport/securityIssueList.tsx new file mode 100644 index 0000000..7be78a6 --- /dev/null +++ b/src/pages/operationReport/securityIssueList.tsx @@ -0,0 +1,230 @@ +// 安全问题记录表 +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 moment from 'moment' +import { encryptAES } from "@/utils/handleAes"; +import { Drawer } from "antd"; +import OperationReport from './index' + + +const securityIssueList = () => { + const actionRef = useRef(); + const formRef = useRef(); + const [collapsible, setCollapsible] = useState(false) + // 树相关的属性和方法 + const [selectedId, setSelectedId] = useState() + // 行数据信息 + const [currentRow, setCurrentRow] = useState() + // 显示详情抽屉 + const [showDetailDrawer, setShowDetailDrawer] = useState(false) + + const columns: any = [ + { + title: '巡检时间', + dataIndex: 'search_date', + valueType: 'dateRange', + hideInTable: true, + hideInDescriptions: true, + search: { + transform: (value: any) => { + return { + INSPECTION_STARTTIME_Start: value[0], + INSPECTION_STARTTIME_End: value[1], + }; + }, + }, + fieldProps: { + ranges: { + "本月": [moment().startOf('M'), moment()], + "上月": [moment().subtract(1, 'M').startOf('M'), moment().subtract(1, 'M').endOf('M')], + "近三月": [moment().subtract(3, 'M').startOf('M'), moment().endOf('M')], + "近半年": [moment().subtract(6, 'M').startOf('M'), moment().endOf('M')], + } + }, + initialValue: [moment().startOf('M'), moment()], + }, + { + title: "序号", + dataIndex: 'index', + valueType: 'index', + hideInSearch: true, + align: 'center', + width: 80, + ellipsis: true + }, + { + title: "片区名称", + dataIndex: 'SPREGIONTYPE_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "服务区名称", + dataIndex: 'SERVERPART_NAME', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "发现日期", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "问题类型", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "问题描述", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "风险等级", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "发现人", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true, + }, + { + title: "责任单位", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "临时处置措施", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "是否停业整改", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "上报时间", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "审核人", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "状态", + dataIndex: 'COMPLETE_STATE', + valueType: 'select', + hideInSearch: true, + align: 'center', + width: 120, + ellipsis: true, + fieldProps: { + options: [ + { label: "编辑中", value: 1 }, + { label: "巡查中", value: 2 }, + { label: "待跟进", value: 3 }, + { label: "整改中", value: 4 }, + { label: "已完成", value: 5 }, + ] + } + }, + { + title: "备注", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + }, + { + title: "附件", + dataIndex: '', + hideInSearch: true, + align: 'center', + width: 150, + ellipsis: true + } + ] + + + + return ( +
+ +
+ { + + }} + toolbar={{ + actions: [ + + ] + }} + /> +
+ + +
+ ) +} + + + +export default connect(({ user }: ConnectState) => ({ + currentUser: user.data +}))(securityIssueList); \ No newline at end of file diff --git a/src/pages/operationReport/service.ts b/src/pages/operationReport/service.ts new file mode 100644 index 0000000..f1a0069 --- /dev/null +++ b/src/pages/operationReport/service.ts @@ -0,0 +1,101 @@ +import requestOld from "@/utils/requestOld" + +// 获取日常巡检表列表 +export async function handleGetPATROLList(params: any) { + const data = await requestOld(`/Examine/GetPATROLList`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data.Result_Data.List +} + + +// 获得区域列表 +export async function handleGetSERVERPARTTYPEList(params: any) { + const data = await requestOld(`/BasicConfig/GetSERVERPARTTYPEList`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data.Result_Data.List +} + +// 同步日常巡检 +export async function handleSynchroPATROL(params: any) { + const data = await requestOld(`/Examine/SynchroPATROL`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data +} + +// 获取服务区信息 +export async function handleGetServerpartTree(params: any) { + const data = await requestOld(`/BaseInfo/GetServerpartTree`, { + method: 'GET', + params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data.Result_Data.List +} + +// 同步巡检整改通知表 +export async function handleSynchroRECTIFICATION(params: any) { + const data = await requestOld(`/Examine/SynchroRECTIFICATION`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data +} + +// 获取巡检整改通知表列表 +export async function handleGetRECTIFICATIONList(params: any) { + const data = await requestOld(`/Examine/GetRECTIFICATIONList`, { + method: 'POST', + data: params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data.Result_Data.List +} + +// 获取服务区方位的方法 +export async function handleGetSERVERPARTDetail(params: any) { + const data = await requestOld(`/BaseInfo/GetSERVERPARTDetail`, { + method: 'GET', + params + }) + + if (data.Result_Code !== 100) { + return data + } + + return data.Result_Data +} + diff --git a/src/pages/operationReport/style.less b/src/pages/operationReport/style.less new file mode 100644 index 0000000..9376ddb --- /dev/null +++ b/src/pages/operationReport/style.less @@ -0,0 +1,137 @@ +.operationReportMain { + box-sizing: border-box; + background-color: #fff; + padding: 32px 24px; + + + .pageTitle { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + box-sizing: border-box; + padding: 0 16px; + + .pageTitleLeft {} + + .pageTitleCenter { + font-size: 30px; + font-weight: bold; + color: #333; + margin-bottom: 24px; + } + + .pageTitleRight {} + + } + + .inspectionItemsTitle { + margin: 0; + } + + .inspectionContentListBox { + width: 100%; + height: 370px; + overflow-y: auto; + + .inspectionContentItem { + width: 100%; + display: flex; + align-items: flex-start; + border-bottom: 1px solid #dadada; + box-sizing: border-box; + padding: 12px; + + .inspectionContentItemLeft { + width: 40px; + margin-right: 10px; + display: flex; + justify-content: center; + + .inspectionContentItemIcon { + width: 25px; + height: 25px; + } + } + + .inspectionContentItemCenter { + width: calc(100% - 150px); + + .inspectionContentText { + font-family: "Microsoft YaHei"; + font-size: 16px; + } + + .errorContentTextBox { + .errorContentTitle { + font-weight: bold; + } + + .errorContentText { + margin-top: 8px; + } + + .errorContentImgList { + width: 100%; + display: flex; + flex-wrap: wrap; + align-items: center; + + .errorContentImg { + width: 80px; + height: 80px; + margin-right: 10px; + } + } + } + } + + .inspectionContentItemRight { + width: 100px; + + .btnText { + color: #1677ff; + cursor: pointer; + } + } + } + + } + + .leftItem { + width: 100%; + height: 420px; + overflow-y: auto; + + + .leftItemProTable { + .ant-pro-card { + .ant-pro-card-body { + .ant-table-wrapper { + .ant-spin-nested-loading { + .ant-spin-container { + .ant-table { + .ant-table-container { + .ant-table-body { + .ant-table-tbody { + .ant-table-row-selected { + td { + background-color: #c4defc; + } + } + } + } + } + } + } + } + } + } + } + } + } + + .leftItem::-webkit-scrollbar { + display: none; + } +} \ No newline at end of file diff --git a/src/pages/previewFile/index.tsx b/src/pages/previewFile/index.tsx deleted file mode 100644 index 91f5e7d..0000000 --- a/src/pages/previewFile/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -// 预览附件的页面 -import { connect } from "umi"; -import { ConnectState } from "@/models/global"; - -const previewFile = () => { - - return ( -
- 111 -
- ) -} - - -export default connect(({ user }: ConnectState) => ({ - currentUser: user.data -}))(previewFile); \ No newline at end of file diff --git a/src/utils/handleRedirect.ts b/src/utils/handleRedirect.ts index 8034c92..2e2c3e7 100644 --- a/src/utils/handleRedirect.ts +++ b/src/utils/handleRedirect.ts @@ -19,7 +19,6 @@ const handleRedirect = ( new Promise((resolve) => { let routePath = '' const queryString = window.location.search; - console.log('queryString', queryString); let { location: { search, pathname }, @@ -28,7 +27,6 @@ const handleRedirect = ( pathname = pathname.split('/cloudMenu')[1] } routePath = `${pathname}${search}`; - console.log('routePath', routePath); // Object.keys(indexValidMenuItemByPath)[0];