From bd5bb63a519240461e9f0c1a91cc9f144d97e40a Mon Sep 17 00:00:00 2001 From: "853931625@qq.com" Date: Wed, 10 Jun 2026 10:11:15 +0800 Subject: [PATCH] =?UTF-8?q?6.5=20=E9=9C=80=E6=B1=82=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/accident/index.js | 40 +-- .../Accident/components/Accident/index.js | 248 ++++++++++-------- src/pages/Container/Event/index.js | 15 +- .../Container/SuperviseAccident/Info/index.js | 66 ++++- .../Container/SuperviseAccident/List/index.js | 114 ++++---- 5 files changed, 267 insertions(+), 216 deletions(-) diff --git a/src/api/accident/index.js b/src/api/accident/index.js index 4f306a7..a08b775 100644 --- a/src/api/accident/index.js +++ b/src/api/accident/index.js @@ -1,38 +1,42 @@ -import { declareRequest } from '@cqsjjb/jjb-dva-runtime'; +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; export const accidentList = declareRequest( - 'accidentLoading', - 'Post > @/accident/accident/list', + "accidentLoading", + "Post > @/accident/accident/list", ); export const accidentAdd = declareRequest( - 'accidentLoading', - 'Post > @/accident/accident/save' + "accidentLoading", + "Post > @/accident/accident/save", ); export const accidentEdit = declareRequest( - 'accidentLoading', - 'Put > @/accident/accident/edit' + "accidentLoading", + "Put > @/accident/accident/edit", ); export const accidentDelete = declareRequest( - 'accidentLoading', - 'Delete > @/accident/accident/{id}' + "accidentLoading", + "Delete > @/accident/accident/{id}", ); export const accidentBatchDelete = declareRequest( - 'accidentLoading', - 'Delete > @/accident/accident/ids?ids={ids}' + "accidentLoading", + "Delete > @/accident/accident/ids?ids={ids}", ); -export const accidentInfo = declareRequest('accidentLoading', 'Get > /accident/accident/{id}'); +export const accidentInfo = declareRequest("accidentLoading", "Get > /accident/accident/{id}"); export const accidentCountByCorpinfoAndType = declareRequest( - 'accidentLoading', - 'Post > @/accident/accident/countByCorpinfoAndType' + "accidentLoading", + "Post > @/accident/accident/countByCorpinfoAndType", ); export const getCorpInfoList = declareRequest( - 'accidentLoading', - 'Post > @/basicInfo/corpInfo/list' + "accidentLoading", + "Post > @/basicInfo/corpInfo/list", ); export const accidentExport = declareRequest( - 'accidentLoading', - 'Post > @/accident/accident/export' + "accidentLoading", + "Post > @/accident/accident/export", +); +export const countByIncidentType = declareRequest( + "accidentLoading", + "Post > @/accident/accident/countByIncidentType", ); diff --git a/src/pages/Container/Accident/components/Accident/index.js b/src/pages/Container/Accident/components/Accident/index.js index 658441b..2bef760 100644 --- a/src/pages/Container/Accident/components/Accident/index.js +++ b/src/pages/Container/Accident/components/Accident/index.js @@ -1,29 +1,27 @@ -import React, { useEffect, useState } from "react"; +import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Button, Descriptions, Form, message, Modal, Space } from "antd"; +import { useEffect, useState } from "react"; import FormBuilder from "zy-react-library/components/FormBuilder"; +import AddIcon from "zy-react-library/components/Icon/AddIcon"; +import DeleteIcon from "zy-react-library/components/Icon/DeleteIcon"; +import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; +import Page from "zy-react-library/components/Page"; +import PreviewImg from "zy-react-library/components/PreviewImg"; import Search from "zy-react-library/components/Search"; +import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import Table from "zy-react-library/components/Table"; import Upload from "zy-react-library/components/Upload"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; -import { TWO_DECIMAL_PLACES } from "zy-react-library/regular"; -import useTable from "zy-react-library/hooks/useTable"; import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; -import useGetFile from "zy-react-library/hooks/useGetFile"; -import useUploadFile from "zy-react-library/hooks/useUploadFile"; -import { NS_ACCIDENT } from "~/enumerate/namespace"; -import AddIcon from "zy-react-library/components/Icon/AddIcon"; -import DeleteIcon from "zy-react-library/components/Icon/DeleteIcon"; -import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; -import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; -import useUrlQueryCriteria from "zy-react-library/hooks/useUrlQueryCriteria"; -import PreviewImg from "zy-react-library/components/PreviewImg"; import useDownloadFile from "zy-react-library/hooks/useDownloadFile"; -import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; -import Page from "zy-react-library/components/Page"; - +import useGetFile from "zy-react-library/hooks/useGetFile"; +import useTable from "zy-react-library/hooks/useTable"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import useUrlQueryCriteria from "zy-react-library/hooks/useUrlQueryCriteria"; +import { NS_ACCIDENT } from "~/enumerate/namespace"; function Accident(props) { const [addModalVisible, setAddModalVisible] = useState(false); @@ -41,8 +39,8 @@ function Accident(props) { eqCorpinfoId: props.corpinfoId, }, transform: data => ({ - geIncidentDate: data.incidentDate?.[0] ? (data.incidentDate[0] + " 00:00:00") : "", - leIncidentDate: data.incidentDate?.[1] ? (data.incidentDate[1] + " 23:59:59") : "", + geIncidentDate: data.incidentDate?.[0] ? (`${data.incidentDate[0]} 00:00:00`) : "", + leIncidentDate: data.incidentDate?.[1] ? (`${data.incidentDate[1]} 23:59:59`) : "", }), }); const typeName = props.type === 1 ? "事件" : "事故"; @@ -50,7 +48,7 @@ function Accident(props) { + > ( - {!props.isSupervise && props.permission(props.addPermission) && - - } - {props.permission(props.exportPermission) && - } + {props.permission(props.exportPermission) + && ( + - } - {!props.isSupervise && props.permission(props.deleteBatchPermission) && - - } + await downloadBlob("/accident/accident/export", { params: { ...exportParams, eqType: props.type } }); + }} + > + 全部导出 + + )} + {!props.isSupervise && props.permission(props.deleteBatchPermission) + && ( + + )} )} columns={[ @@ -127,66 +135,72 @@ function Accident(props) { > 查看 - {!props.isSupervise && props.permission(props.editPermission) && - - } - {!props.isSupervise && props.permission(props.deletePermission) && - - } + {!props.isSupervise && props.permission(props.editPermission) + && ( + + )} + {!props.isSupervise && props.permission(props.deletePermission) + && ( + + )} ), }, ]} {...tableProps} /> - {addModalVisible && { - setAddModalVisible(false); - setCurrentId(""); - setAccidentId(""); - }} - type={props.type} - typeName={typeName} - getData={getData} - />} + {addModalVisible && ( + { + setAddModalVisible(false); + setCurrentId(""); + setAccidentId(""); + }} + type={props.type} + typeName={typeName} + getData={getData} + /> + )} - {infoModalVisible && { - setInfoModalVisible(false); - setCurrentId(""); - setAccidentId(""); - }} - typeName={typeName} - getData={getData} - />} + {infoModalVisible && ( + { + setInfoModalVisible(false); + setCurrentId(""); + setAccidentId(""); + }} + typeName={typeName} + getData={getData} + /> + )} ); } @@ -218,7 +232,7 @@ function AddModalComponent(props) { const values = { ...data, imageFiles, - attachmentFiles + attachmentFiles, }; form.setFieldsValue(values); @@ -255,31 +269,32 @@ function AddModalComponent(props) { await uploadFile({ single: false, files: values.imageFiles, - params: { type: UPLOAD_FILE_TYPE_ENUM["136"], foreignKey: accidentId } + params: { type: UPLOAD_FILE_TYPE_ENUM["136"], foreignKey: accidentId }, }); } if (values.attachmentFiles && values.attachmentFiles.length > 0) { await uploadFile({ single: false, files: values.attachmentFiles, - params: { type: UPLOAD_FILE_TYPE_ENUM["137"], foreignKey: accidentId } + params: { type: UPLOAD_FILE_TYPE_ENUM["137"], foreignKey: accidentId }, }); } // 保存基本信息 await props["accidentEdit"]({ ...values, ...dicNames, id: props.currentId }); - } else { + } + else { // 上传文件 const { id } = await uploadFile({ single: false, files: values.imageFiles, - params: { type: UPLOAD_FILE_TYPE_ENUM["136"], foreignKey: "" } + params: { type: UPLOAD_FILE_TYPE_ENUM["136"], foreignKey: "" }, }); if (values.attachmentFiles && values.attachmentFiles.length > 0) { await uploadFile({ single: false, files: values.attachmentFiles, - params: { type: UPLOAD_FILE_TYPE_ENUM["137"], foreignKey: id } + params: { type: UPLOAD_FILE_TYPE_ENUM["137"], foreignKey: id }, }); } @@ -294,7 +309,8 @@ function AddModalComponent(props) { onCancel(); props.getData(); message.success("操作成功"); - } catch (error) { + } + catch (error) { message.error("操作失败,请重试"); } }; @@ -318,8 +334,8 @@ function AddModalComponent(props) { options={[ { name: "incidentNumber", label: `${typeName}案号` }, { name: "incidentName", label: `${typeName}名称` }, - { name: "incidentType", label: `${typeName}类型`, render: setDicNames({ ...dicNames, incidentTypeName: label })} /> }, - { name: "incidentLevel", label: `${typeName}等级`, render: setDicNames({ ...dicNames, incidentLevelName: label })} /> }, + { name: "incidentType", label: `${typeName}类型`, render: setDicNames({ ...dicNames, incidentTypeName: label })} /> }, + { name: "incidentLevel", label: `${typeName}等级`, render: setDicNames({ ...dicNames, incidentLevelName: label })} /> }, { name: "location", label: `${typeName}发生地点` }, { name: "incidentDate", label: `${typeName}发生时间`, render: FORM_ITEM_RENDER_ENUM.DATETIME }, { name: "directLoss", label: "直接经济损失(万元)", render: FORM_ITEM_RENDER_ENUM.NUMBER, componentProps: { precision: 2, min: 0 }, required: false }, @@ -344,7 +360,7 @@ function AddModalComponent(props) { }} /> ), - span: 24 + span: 24, }, // 添加附件上传 { @@ -359,7 +375,7 @@ function AddModalComponent(props) { }} /> ), - span: 24 + span: 24, }, ]} /> @@ -371,7 +387,7 @@ function InfoModalComponent(props) { const [info, setInfo] = useState({}); const [imageFiles, setImageFiles] = useState([]); const [attachmentFiles, setAttachmentFiles] = useState([]); - const { loading, downloadFile } = useDownloadFile() + const { loading, downloadFile } = useDownloadFile(); const typeName = props.typeName; const { getFile } = useGetFile(); @@ -432,7 +448,7 @@ function InfoModalComponent(props) { label: `${typeName}图片`, children: ( - ) + ), }, // 显示附件 { @@ -448,7 +464,7 @@ function InfoModalComponent(props) { ))} {attachmentFiles.length === 0 && } - ) + ), }, ]} /> diff --git a/src/pages/Container/Event/index.js b/src/pages/Container/Event/index.js index 6c0e2fd..7949c7e 100644 --- a/src/pages/Container/Event/index.js +++ b/src/pages/Container/Event/index.js @@ -2,15 +2,16 @@ import Accident from "../Accident/components/Accident"; function AccidentContainer(props) { return ( - ); } -export default AccidentContainer; \ No newline at end of file +export default AccidentContainer; diff --git a/src/pages/Container/SuperviseAccident/Info/index.js b/src/pages/Container/SuperviseAccident/Info/index.js index 8c4e642..8944fdf 100644 --- a/src/pages/Container/SuperviseAccident/Info/index.js +++ b/src/pages/Container/SuperviseAccident/Info/index.js @@ -1,16 +1,62 @@ -import Accident from "../../Accident/components/Accident"; +import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Form } from "antd"; +import { useEffect, useState } from "react"; +import Page from "zy-react-library/components/Page"; +import Table from "zy-react-library/components/Table"; +import useDictionary from "zy-react-library/hooks/useDictionary"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_ACCIDENT } from "~/enumerate/namespace"; + +function Bulletin(props) { + const [form] = Form.useForm(); + const query = useGetUrlQuery(); + const { getDictionary } = useDictionary(); + const [accidentType, setAccidentType] = useState([]); + const [countByIncidentType, setCountByIncidentType] = useState([]); + + useEffect(() => { + getDictionary({ dictValue: "accidentType" }).then((res) => { + setAccidentType(res); + }); + }, []); + + const { tableProps } = useTable(props["countByIncidentType"], { + form, + usePagination: false, + params: { + eqAccidentType: query.eqAccidentType, + corpinfoId: query.corpinfoId, + }, + onSuccess: ({ data }) => { + setCountByIncidentType(data); + }, + }); + + const getAccidentCount = (corpinfoId, incidentType) => { + return countByIncidentType.find(item => item.corpinfoId === corpinfoId && item.incidentType === incidentType)?.count || 0; + }; -function AccidentContainer(props) { - const {corpinfoId,eqAccidentType} = useGetUrlQuery(); return ( - + + + ({ + dataIndex: `countByCorpinfoAndType_${item.dictValue}`, + title: `${item.dictLabel}`, + render: (_, record) => ( + getAccidentCount(record.corpinfoId, item.dictValue) + ), + })), + ]} + {...tableProps} + dataSource={[{ corpinfoId: query.corpinfoId || countByIncidentType[0]?.corpinfoId }]} + /> + + ); } -export default AccidentContainer; +export default Connect([NS_ACCIDENT], true)(Permission(Bulletin)); diff --git a/src/pages/Container/SuperviseAccident/List/index.js b/src/pages/Container/SuperviseAccident/List/index.js index 91d5cf5..044ca7f 100644 --- a/src/pages/Container/SuperviseAccident/List/index.js +++ b/src/pages/Container/SuperviseAccident/List/index.js @@ -1,97 +1,81 @@ -import {Connect} from "@cqsjjb/jjb-dva-runtime"; -import {Button, Form, Space} from "antd"; -import {useEffect, useState} from "react"; +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form } from "antd"; +import { useState } from "react"; +import Page from "zy-react-library/components/Page"; import Search from "zy-react-library/components/Search"; import Table from "zy-react-library/components/Table"; import useTable from "zy-react-library/hooks/useTable"; -import {NS_ACCIDENT} from "~/enumerate/namespace"; -import useDictionary from "zy-react-library/hooks/useDictionary"; -import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; -import useUrlQueryCriteria from "zy-react-library/hooks/useUrlQueryCriteria"; -import Page from "zy-react-library/components/Page"; - - -const TYPE = [ - {name: "事件", bianma: "1"}, - {name: "事故", bianma: "2"}, -] +import { NS_ACCIDENT } from "~/enumerate/namespace"; function SuperviseAccident(props) { - const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [form] = Form.useForm(); - const {getDictionary} = useDictionary(); - const [accidentType, setAccidentType] = useState([]); - const {getUrlCriteriaQuery} = useUrlQueryCriteria(); + const [accidentCountByCorpinfoAndType, setAccidentCountByCorpinfoAndType] = useState([]); - useEffect(() => { - getDictionary({dictValue: "accidentType"}).then(res => { - setAccidentType(res); - }); - }, []); - const getAccidentCountByCorpinfoAndType=async (corpinfoIds,type)=>{ - const {data} = await props["accidentCountByCorpinfoAndType"]({corpinfoIds,eqAccidentType:type}) - setAccidentCountByCorpinfoAndType(data) - } + const getAccidentCountByCorpinfoAndType = async (corpinfoIds, type) => { + const { data } = await props["accidentCountByCorpinfoAndType"]({ corpinfoIds, eqAccidentType: type }); + setAccidentCountByCorpinfoAndType(data); + }; - const {tableProps, getData} = useTable(props["getCorpInfoList"], { + const { tableProps, getData } = useTable(props["getCorpInfoList"], { form, params: { - inType: [0,1,6], + inType: [0, 1, 6], }, - onSuccess: ({data}) => { - getAccidentCountByCorpinfoAndType(data.map(item => item.id),form.getFieldValue("eqAccidentType")) + onSuccess: ({ data }) => { + getAccidentCountByCorpinfoAndType(data.map(item => item.id), form.getFieldValue("eqAccidentType")); }, }); - const getAccidentCount=(id,type)=>{ - return accidentCountByCorpinfoAndType.find(item => item.corpinfoId === id && item.incidentType === type)?.[`count`] || 0; - } - const searchType = getUrlCriteriaQuery("searchFormKeys","searchFormValues").eqAccidentType; + const getAccidentTotal = (id, key) => { + return accidentCountByCorpinfoAndType.find(item => item.corpinfoId === id)?.[key] || 0; + }; return (
setSelectedRowKeys(selectedRowKeys), - }} + columns={[ - {dataIndex: "corpName", title: `公司名称`}, - ...accidentType.map(item => ({ - dataIndex: `countByCorpinfoAndType_${item.dictValue}`, - title: `${item.dictLabel}`, - render: (_, record) => ( - getAccidentCount(record.id,item.dictValue) - ), - })), + { dataIndex: "corpName", title: `公司名称` }, { - title: "操作", - width: 160, - fixed: "right", + dataIndex: "eventCount", + title: "事件总数", + width: 180, render: (_, record) => ( - - - + + ), }, + { + dataIndex: "accidentCount", + title: "事故总数", + width: 180, + render: (_, record) => ( + + + ), + }, + ]} {...tableProps} />