From 36803e73622b80a6d32c3105790a34295f45aaf6 Mon Sep 17 00:00:00 2001 From: LiuJiaNan <15703339975@163.com> Date: Fri, 10 Apr 2026 17:00:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E6=80=A5=E6=BC=94=E7=BB=83=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20=E6=8D=A2=E8=A1=8C=E7=AC=A6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/emergencyExercise/index.js | 100 ++++++++ .../EmergencyAddressBook/List/index.js | 4 +- .../ExpertEmergencyRescueExpert/List/index.js | 4 +- .../List/index.js | 4 +- .../ExpertEmergencyRescueTeam/List/index.js | 4 +- .../List/index.js | 4 +- .../List/index.js | 4 +- .../EmergencyRescueTeam/List/index.js | 4 +- .../List/index.js | 4 +- .../List/index.js | 4 +- .../List/index.js | 4 +- .../List/index.js | 4 +- .../ClosedCardPort/List/index.js | 4 +- .../DrainageWell/List/index.js | 4 +- .../EmergencyEquipment/List/index.js | 4 +- .../EmergencyShelter/List/index.js | 4 +- .../MaterialEquipment/List/index.js | 4 +- .../Add/components/BasicInfo/index.js | 51 ++++ .../Institutional/index.js | 206 ++++++++++++++++ .../InstitutionalPersonnel/index.js | 232 ++++++++++++++++++ .../components/CommandOrganization/index.js | 17 ++ .../Add/components/PlanAttachments/index.js | 79 ++++++ .../PlanContent/DrillContent/index.js | 206 ++++++++++++++++ .../PlanContent/DrillScene/index.js | 206 ++++++++++++++++ .../Add/components/PlanContent/index.js | 17 ++ .../Add/components/SummaryEvaluation/index.js | 89 +++++++ .../EmergencyExercise/Add/index.js | 156 ++++++++++++ .../EmergencyExercise/View/index.js | 170 +++++++++++++ .../Add/components/GradeResponse/index.js | 4 +- .../components/OrganizationStructure/index.js | 2 +- .../Add/components/PlanAttachments/index.js | 4 +- .../Add/components/PlanInstructions/index.js | 6 +- .../Add/components/PlanResources/index.js | 4 +- 33 files changed, 1551 insertions(+), 62 deletions(-) create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/BasicInfo/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/Institutional/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/InstitutionalPersonnel/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanAttachments/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillContent/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillScene/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/SummaryEvaluation/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/index.js create mode 100644 src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/View/index.js diff --git a/src/api/emergencyExercise/index.js b/src/api/emergencyExercise/index.js index 842a069..5a2b8f0 100644 --- a/src/api/emergencyExercise/index.js +++ b/src/api/emergencyExercise/index.js @@ -24,3 +24,103 @@ export const emergencyExerciseDeleteBatch = declareRequest( "emergencyExerciseLoading", "Delete > @/emergencyRescue/emergencyDrill/ids?ids={ids}", ); +export const emergencyExerciseOrganizationList = declareRequest( + "emergencyExerciseOrganizationLoading", + "Post > @/emergencyRescue/emergencyDrillOrganization/list", +); +export const emergencyExerciseOrganizationListAll = declareRequest( + "emergencyExerciseOrganizationLoading", + "Get > /emergencyRescue/emergencyDrillOrganization/listAll", +); +export const emergencyExerciseOrganizationInfo = declareRequest( + "emergencyExerciseOrganizationLoading", + "Get > /emergencyRescue/emergencyDrillOrganization/{id}", +); +export const emergencyExerciseOrganizationAdd = declareRequest( + "emergencyExerciseOrganizationLoading", + "Post > @/emergencyRescue/emergencyDrillOrganization/save", +); +export const emergencyExerciseOrganizationUpdate = declareRequest( + "emergencyExerciseOrganizationLoading", + "Put > @/emergencyRescue/emergencyDrillOrganization/edit", +); +export const emergencyExerciseOrganizationDelete = declareRequest( + "emergencyExerciseOrganizationLoading", + "Delete > @/emergencyRescue/emergencyDrillOrganization/{id}", +); +export const emergencyExerciseOrganizationDeleteBatch = declareRequest( + "emergencyExerciseOrganizationLoading", + "Delete > @/emergencyRescue/emergencyDrillOrganization/ids?ids={ids}", +); +export const emergencyExerciseOrganizationPersonnelList = declareRequest( + "emergencyExerciseOrganizationPersonnelLoading", + "Post > @/emergencyRescue/emergencyDrillOrganizationPersonnel/list", +); +export const emergencyExerciseOrganizationPersonnelInfo = declareRequest( + "emergencyExerciseOrganizationPersonnelLoading", + "Get > /emergencyRescue/emergencyDrillOrganizationPersonnel/{id}", +); +export const emergencyExerciseOrganizationPersonnelAdd = declareRequest( + "emergencyExerciseOrganizationPersonnelLoading", + "Post > @/emergencyRescue/emergencyDrillOrganizationPersonnel/save", +); +export const emergencyExerciseOrganizationPersonnelUpdate = declareRequest( + "emergencyExerciseOrganizationPersonnelLoading", + "Put > @/emergencyRescue/emergencyDrillOrganizationPersonnel/edit", +); +export const emergencyExerciseOrganizationPersonnelDelete = declareRequest( + "emergencyExerciseOrganizationPersonnelLoading", + "Delete > @/emergencyRescue/emergencyDrillOrganizationPersonnel/{id}", +); +export const emergencyExerciseOrganizationPersonnelDeleteBatch = declareRequest( + "emergencyExerciseOrganizationPersonnelLoading", + "Delete > @/emergencyRescue/emergencyDrillOrganizationPersonnel/ids?ids={ids}", +); +export const emergencyExerciseContentList = declareRequest( + "emergencyExerciseContentLoading", + "Post > @/emergencyRescue/emergencyDrillContent/list", +); +export const emergencyExerciseContentInfo = declareRequest( + "emergencyExerciseContentLoading", + "Get > /emergencyRescue/emergencyDrillContent/{id}", +); +export const emergencyExerciseContentAdd = declareRequest( + "emergencyExerciseContentLoading", + "Post > @/emergencyRescue/emergencyDrillContent/save", +); +export const emergencyExerciseContentUpdate = declareRequest( + "emergencyExerciseContentLoading", + "Put > @/emergencyRescue/emergencyDrillContent/edit", +); +export const emergencyExerciseContentDelete = declareRequest( + "emergencyExerciseContentLoading", + "Delete > @/emergencyRescue/emergencyDrillContent/{id}", +); +export const emergencyExerciseContentDeleteBatch = declareRequest( + "emergencyExerciseContentLoading", + "Delete > @/emergencyRescue/emergencyDrillContent/ids?ids={ids}", +); +export const emergencyExerciseScenarioList = declareRequest( + "emergencyExerciseScenarioLoading", + "Post > @/emergencyRescue/emergencyDrillScenario/list", +); +export const emergencyExerciseScenarioInfo = declareRequest( + "emergencyExerciseScenarioLoading", + "Get > /emergencyRescue/emergencyDrillScenario/{id}", +); +export const emergencyExerciseScenarioAdd = declareRequest( + "emergencyExerciseScenarioLoading", + "Post > @/emergencyRescue/emergencyDrillScenario/save", +); +export const emergencyExerciseScenarioUpdate = declareRequest( + "emergencyExerciseScenarioLoading", + "Put > @/emergencyRescue/emergencyDrillScenario/edit", +); +export const emergencyExerciseScenarioDelete = declareRequest( + "emergencyExerciseScenarioLoading", + "Delete > @/emergencyRescue/emergencyDrillScenario/{id}", +); +export const emergencyExerciseScenarioDeleteBatch = declareRequest( + "emergencyExerciseScenarioLoading", + "Delete > @/emergencyRescue/emergencyDrillScenario/ids?ids={ids}", +); diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyAddressBook/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyAddressBook/List/index.js index d760b91..f0e7cd5 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyAddressBook/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyAddressBook/List/index.js @@ -32,9 +32,7 @@ function List(props) { const { tableProps, getData } = useTable(props["emergencyAddressBookList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, usePagination: false, }); diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpert/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpert/List/index.js index c602b79..0d3f280 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpert/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpert/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["expertEmergencyRescueExpertList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpertGroup/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpertGroup/List/index.js index ee3667f..5a7df50 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpertGroup/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueExpertGroup/List/index.js @@ -20,9 +20,7 @@ function List(props) { const { tableProps, getData } = useTable(props["expertEmergencyRescueExpertGroupList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueTeam/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueTeam/List/index.js index 5448637..a6ba101 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueTeam/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyExpertTeam/ExpertEmergencyRescueTeam/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["expertEmergencyRescueTeamList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyOrganization/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyOrganization/List/index.js index ac87bb1..0c69d56 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyOrganization/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyOrganization/List/index.js @@ -20,9 +20,7 @@ function List(props) { const { tableProps, getData } = useTable(props["enterpriseEmergencyOrganizationList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyPersonnel/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyPersonnel/List/index.js index 7be3b11..64d70df 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyPersonnel/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyManagementOrganization/EnterpriseEmergencyPersonnel/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["enterpriseEmergencyPersonnelList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyRescueTeam/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyRescueTeam/List/index.js index 6cb869b..73b6ba3 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyRescueTeam/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/EmergencyRescueTeam/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["emergencyRescueTeamList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/CommunicationGuaranteeOrganization/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/CommunicationGuaranteeOrganization/List/index.js index 51353c7..05949b8 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/CommunicationGuaranteeOrganization/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/CommunicationGuaranteeOrganization/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["communicationGuaranteeOrganizationList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/MedicalGuaranteeOrganization/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/MedicalGuaranteeOrganization/List/index.js index 78f072f..ca4d2d7 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/MedicalGuaranteeOrganization/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/MedicalGuaranteeOrganization/List/index.js @@ -20,9 +20,7 @@ function List(props) { const { tableProps, getData } = useTable(props["medicalGuaranteeOrganizationList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TechnicalSupportGuaranteeOrganization/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TechnicalSupportGuaranteeOrganization/List/index.js index b1481f8..c45446a 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TechnicalSupportGuaranteeOrganization/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TechnicalSupportGuaranteeOrganization/List/index.js @@ -20,9 +20,7 @@ function List(props) { const { tableProps, getData } = useTable(props["technicalSupportGuaranteeOrganizationList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TransportGuaranteeOrganization/List/index.js b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TransportGuaranteeOrganization/List/index.js index 78b2f17..07ad497 100644 --- a/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TransportGuaranteeOrganization/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyOrganization/ProfessionalGuaranteeOrganization/TransportGuaranteeOrganization/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["transportGuaranteeOrganizationList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyResource/ClosedCardPort/List/index.js b/src/pages/Container/Enterprise/EmergencyResource/ClosedCardPort/List/index.js index 6926621..4923615 100644 --- a/src/pages/Container/Enterprise/EmergencyResource/ClosedCardPort/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyResource/ClosedCardPort/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["closedCardPortList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyResource/DrainageWell/List/index.js b/src/pages/Container/Enterprise/EmergencyResource/DrainageWell/List/index.js index e6ddd62..85726a7 100644 --- a/src/pages/Container/Enterprise/EmergencyResource/DrainageWell/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyResource/DrainageWell/List/index.js @@ -20,9 +20,7 @@ function List(props) { const { tableProps, getData } = useTable(props["drainageWellList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyResource/EmergencyEquipment/List/index.js b/src/pages/Container/Enterprise/EmergencyResource/EmergencyEquipment/List/index.js index 3ff4dbc..e2543cb 100644 --- a/src/pages/Container/Enterprise/EmergencyResource/EmergencyEquipment/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyResource/EmergencyEquipment/List/index.js @@ -20,9 +20,7 @@ function List(props) { const { tableProps, getData } = useTable(props["emergencyEquipmentList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyResource/EmergencyShelter/List/index.js b/src/pages/Container/Enterprise/EmergencyResource/EmergencyShelter/List/index.js index 9215ce6..905e9c6 100644 --- a/src/pages/Container/Enterprise/EmergencyResource/EmergencyShelter/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyResource/EmergencyShelter/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["emergencyShelterList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/EmergencyResource/MaterialEquipment/List/index.js b/src/pages/Container/Enterprise/EmergencyResource/MaterialEquipment/List/index.js index dfac42f..769ee43 100644 --- a/src/pages/Container/Enterprise/EmergencyResource/MaterialEquipment/List/index.js +++ b/src/pages/Container/Enterprise/EmergencyResource/MaterialEquipment/List/index.js @@ -19,9 +19,7 @@ function List(props) { const { tableProps, getData } = useTable(props["materialEquipmentList"], { form, - params: { - corpinfoId: query.corpinfoId, - }, + params: { corpinfoId: query.corpinfoId }, }); const onDelete = (record) => { diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/BasicInfo/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/BasicInfo/index.js new file mode 100644 index 0000000..2411e2e --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/BasicInfo/index.js @@ -0,0 +1,51 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { message } from "antd"; +import { useEffect } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function BasicInfo(props) { + const [form] = FormBuilder.useForm(); + + useEffect(() => { + form.setFieldsValue(props.basicInfo); + }, [props.basicInfo]); + + const onSubmit = async (values) => { + const { success, data } = await props[!props.drillId ? "emergencyExerciseAdd" : "emergencyExerciseUpdate"]({ + ...values, + id: props.drillId, + }); + if (success) { + message.success("保存成功"); + props.setUrlState({ + drillId: data?.id || props.drillId, + currentStep: "commandOrganization", + }); + props.getBasicInfo(); + } + }; + + return ( +
+ +
+ ); +} + +export default Connect([NS_EMERGENCY_EXERCISE], true)(BasicInfo); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/Institutional/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/Institutional/index.js new file mode 100644 index 0000000..7be3596 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/Institutional/index.js @@ -0,0 +1,206 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Divider, 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 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_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function Institutional(props) { + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [currentId, setCurrentId] = useState(""); + const [addModalVisible, setAddModalVisible] = useState(false); + + const [form] = Search.useForm(); + + const { tableProps, getData } = useTable(props["emergencyExerciseOrganizationList"], { + form, + params: { likeDrillId: props.drillId }, + useStorageQueryCriteria: false, + }); + + const onDelete = (record) => { + Modal.confirm({ + title: "删除确认", + content: `确定要删除【${record.orgName}】吗`, + onOk: async () => { + const { success } = await props["emergencyExerciseOrganizationDelete"]({ id: record.id }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + const onDeleteBatch = () => { + if (selectedRowKeys.length === 0) { + message.warning("请选择要删除的记录"); + return; + } + Modal.confirm({ + title: "删除确认", + content: "确认要删除吗?", + onOk: async () => { + const { success } = await props["emergencyExerciseOrganizationDeleteBatch"]({ ids: selectedRowKeys }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + return ( +
+ 机构列表 + + { + setSelectedRowKeys(selectedRowKeys); + }, + }} + toolBarRender={() => ( + + + + + )} + options={false} + columns={[ + { title: "机构名称", dataIndex: "orgName" }, + { title: "组成单位", dataIndex: "constituentUnit" }, + { title: "机构职责", dataIndex: "orgDuties" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + { + addModalVisible && ( + { + setAddModalVisible(false); + setCurrentId(""); + }} + getData={getData} + /> + ) + } + + ); +} + +const AddModalComponent = (props) => { + const [form] = FormBuilder.useForm(); + + const getData = async () => { + if (!props.id) + return; + + const { data } = await props["emergencyExerciseOrganizationInfo"]({ id: props.id }); + form.setFieldsValue(data); + }; + + useEffect(() => { + getData(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props[!props.id ? "emergencyExerciseOrganizationAdd" : "emergencyExerciseOrganizationUpdate"]({ + ...values, + id: props.id, + drillId: props.drillId, + }); + if (success) { + message.success(`${!props.id ? "新增" : "编辑"}成功`); + props.onCancel(); + props.getData(); + } + }; + + return ( + + + + ); +}; + +const AddModal = Connect([NS_EMERGENCY_EXERCISE], true)(AddModalComponent); +export default Connect([NS_EMERGENCY_EXERCISE], true)(Institutional); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/InstitutionalPersonnel/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/InstitutionalPersonnel/index.js new file mode 100644 index 0000000..3038d47 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/InstitutionalPersonnel/index.js @@ -0,0 +1,232 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Divider, 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 Search from "zy-react-library/components/Search"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useTable from "zy-react-library/hooks/useTable"; +import { PHONE } from "zy-react-library/regular"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function InstitutionalPersonnel(props) { + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [currentId, setCurrentId] = useState(""); + const [addModalVisible, setAddModalVisible] = useState(false); + + const [form] = Search.useForm(); + + const { tableProps, getData } = useTable(props["emergencyExerciseOrganizationPersonnelList"], { + form, + params: { likeDrillId: props.drillId }, + useStorageQueryCriteria: false, + }); + + const onDelete = (record) => { + Modal.confirm({ + title: "删除确认", + content: `确定要删除【${record.personName}】吗`, + onOk: async () => { + const { success } = await props["emergencyExerciseOrganizationPersonnelDelete"]({ id: record.id }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + const onDeleteBatch = () => { + if (selectedRowKeys.length === 0) { + message.warning("请选择要删除的记录"); + return; + } + Modal.confirm({ + title: "删除确认", + content: "确认要删除吗?", + onOk: async () => { + const { success } = await props["emergencyExerciseOrganizationPersonnelDeleteBatch"]({ ids: selectedRowKeys }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + return ( +
+ 机构人员列表 + +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + toolBarRender={() => ( + + + + + )} + options={false} + columns={[ + { title: "应急指挥机构", dataIndex: "orgName" }, + { title: "姓名", dataIndex: "personName" }, + { title: "单位", dataIndex: "unit" }, + { title: "职务", dataIndex: "position" }, + { title: "联系电话", dataIndex: "contactPhone" }, + { title: "紧急联系电话", dataIndex: "emergencyContactPhone" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + { + addModalVisible && ( + { + setAddModalVisible(false); + setCurrentId(""); + }} + getData={getData} + /> + ) + } + + ); +} + +const AddModalComponent = (props) => { + const [form] = FormBuilder.useForm(); + + const [organizationList, setOrganizationList] = useState([]); + + const getOrganizationListAll = async () => { + const { data } = await props["emergencyExerciseOrganizationListAll"]({ likeDrillId: props.drillId }); + setOrganizationList(data); + }; + + const getData = async () => { + if (!props.id) + return; + + const { data } = await props["emergencyExerciseOrganizationPersonnelInfo"]({ id: props.id }); + form.setFieldsValue(data); + }; + + useEffect(() => { + getData(); + getOrganizationListAll(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props[!props.id ? "emergencyExerciseOrganizationPersonnelAdd" : "emergencyExerciseOrganizationPersonnelUpdate"]({ + ...values, + id: props.id, + drillId: props.drillId, + }); + if (success) { + message.success(`${!props.id ? "新增" : "编辑"}成功`); + props.onCancel(); + props.getData(); + } + }; + + return ( + + + + ); +}; + +const AddModal = Connect([NS_EMERGENCY_EXERCISE], true)(AddModalComponent); +export default Connect([NS_EMERGENCY_EXERCISE], true)(InstitutionalPersonnel); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/index.js new file mode 100644 index 0000000..905c9e9 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/CommandOrganization/index.js @@ -0,0 +1,17 @@ +import Institutional from "./Institutional"; +import InstitutionalPersonnel from "./InstitutionalPersonnel"; + +function CommandOrganization(props) { + return ( +
+
+ +
+
+ +
+
+ ); +} + +export default CommandOrganization; diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanAttachments/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanAttachments/index.js new file mode 100644 index 0000000..a359cd0 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanAttachments/index.js @@ -0,0 +1,79 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, message, Space } from "antd"; +import { useEffect } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import Upload from "zy-react-library/components/Upload"; +import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; +import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function PlanAttachments(props) { + const [form] = FormBuilder.useForm(); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const { loading: deleteFileLoading, deleteFile } = useDeleteFile(); + + useEffect(() => { + form.setFieldsValue(props.basicInfo); + }, [props.basicInfo]); + + const onSubmit = async (values) => { + await deleteFile({ single: false, files: values.deleteEmergencyDrillFiles }); + const { id: emergencyDrill } = await uploadFile({ + single: false, + files: values.emergencyDrillFiles, + params: { type: UPLOAD_FILE_TYPE_ENUM[704], foreignKey: props.basicInfo.emergencyDrill }, + }); + const { success } = await props["emergencyExerciseUpdate"]({ + ...values, + emergencyDrill, + id: props.drillId, + }); + if (success) { + message.success("保存成功"); + props.goBack(); + } + }; + + return ( +
+ + + + + )} + span={24} + options={[ + { + name: "emergencyDrillFiles", + label: "附件", + render: ( + { + form.setFieldValue("deleteEmergencyDrillFiles", [...(form.getFieldValue("deleteEmergencyDrillFiles") || []), file]); + }} + /> + ), + }, + { name: "deleteEmergencyDrillFiles", label: "删除的附件", onlyForLabel: true }, + ]} + form={form} + onFinish={onSubmit} + /> +
+ ); +} + +export default Connect([NS_EMERGENCY_EXERCISE], true)(PlanAttachments); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillContent/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillContent/index.js new file mode 100644 index 0000000..9580ace --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillContent/index.js @@ -0,0 +1,206 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Divider, 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 Search from "zy-react-library/components/Search"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; + +import useTable from "zy-react-library/hooks/useTable"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function DrillContent(props) { + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [currentId, setCurrentId] = useState(""); + const [addModalVisible, setAddModalVisible] = useState(false); + + const [form] = Search.useForm(); + + const { tableProps, getData } = useTable(props["emergencyExerciseContentList"], { + form, + params: { likeDrillId: props.drillId }, + useStorageQueryCriteria: false, + }); + + const onDelete = (record) => { + Modal.confirm({ + title: "删除确认", + content: `确定要删除【${record.drillContent}】吗`, + onOk: async () => { + const { success } = await props["emergencyExerciseContentDelete"]({ id: record.id }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + const onDeleteBatch = () => { + if (selectedRowKeys.length === 0) { + message.warning("请选择要删除的记录"); + return; + } + Modal.confirm({ + title: "删除确认", + content: "确认要删除吗?", + onOk: async () => { + const { success } = await props["emergencyExerciseContentDeleteBatch"]({ ids: selectedRowKeys }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + return ( +
+ 演练内容列表 + +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + toolBarRender={() => ( + + + + + )} + options={false} + columns={[ + { title: "演练内容", dataIndex: "drillContent" }, + { title: "演练内容序号", dataIndex: "contentOrder" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + { + addModalVisible && ( + { + setAddModalVisible(false); + setCurrentId(""); + }} + getData={getData} + /> + ) + } + + ); +} + +const AddModalComponent = (props) => { + const [form] = FormBuilder.useForm(); + + const getData = async () => { + if (!props.id) + return; + + const { data } = await props["emergencyExerciseContentInfo"]({ id: props.id }); + form.setFieldsValue(data); + }; + + useEffect(() => { + getData(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props[!props.id ? "emergencyExerciseContentAdd" : "emergencyExerciseContentUpdate"]({ + ...values, + id: props.id, + drillId: props.drillId, + }); + if (success) { + message.success(`${!props.id ? "新增" : "编辑"}成功`); + props.onCancel(); + props.getData(); + } + }; + + return ( + + + + ); +}; + +const AddModal = Connect([NS_EMERGENCY_EXERCISE], true)(AddModalComponent); +export default Connect([NS_EMERGENCY_EXERCISE], true)(DrillContent); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillScene/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillScene/index.js new file mode 100644 index 0000000..9742edc --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/DrillScene/index.js @@ -0,0 +1,206 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Divider, 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 Search from "zy-react-library/components/Search"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; + +import useTable from "zy-react-library/hooks/useTable"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function DrillScene(props) { + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [currentId, setCurrentId] = useState(""); + const [addModalVisible, setAddModalVisible] = useState(false); + + const [form] = Search.useForm(); + + const { tableProps, getData } = useTable(props["emergencyExerciseScenarioList"], { + form, + params: { likeDrillId: props.drillId }, + useStorageQueryCriteria: false, + }); + + const onDelete = (record) => { + Modal.confirm({ + title: "删除确认", + content: `确定要删除【${record.drillScenario}】吗`, + onOk: async () => { + const { success } = await props["emergencyExerciseScenarioDelete"]({ id: record.id }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + const onDeleteBatch = () => { + if (selectedRowKeys.length === 0) { + message.warning("请选择要删除的记录"); + return; + } + Modal.confirm({ + title: "删除确认", + content: "确认要删除吗?", + onOk: async () => { + const { success } = await props["emergencyExerciseScenarioDeleteBatch"]({ ids: selectedRowKeys }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + return ( +
+ 演练场景列表 + +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + toolBarRender={() => ( + + + + + )} + options={false} + columns={[ + { title: "演练场景", dataIndex: "drillScenario" }, + { title: "演练场景序号", dataIndex: "scenarioOrder" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + { + addModalVisible && ( + { + setAddModalVisible(false); + setCurrentId(""); + }} + getData={getData} + /> + ) + } + + ); +} + +const AddModalComponent = (props) => { + const [form] = FormBuilder.useForm(); + + const getData = async () => { + if (!props.id) + return; + + const { data } = await props["emergencyExerciseScenarioInfo"]({ id: props.id }); + form.setFieldsValue(data); + }; + + useEffect(() => { + getData(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props[!props.id ? "emergencyExerciseScenarioAdd" : "emergencyExerciseScenarioUpdate"]({ + ...values, + id: props.id, + drillId: props.drillId, + }); + if (success) { + message.success(`${!props.id ? "新增" : "编辑"}成功`); + props.onCancel(); + props.getData(); + } + }; + + return ( + + + + ); +}; + +const AddModal = Connect([NS_EMERGENCY_EXERCISE], true)(AddModalComponent); +export default Connect([NS_EMERGENCY_EXERCISE], true)(DrillScene); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/index.js new file mode 100644 index 0000000..ee0521d --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/PlanContent/index.js @@ -0,0 +1,17 @@ +import DrillContent from "./DrillContent"; +import DrillScene from "./DrillScene"; + +function PlanContent(props) { + return ( +
+
+ +
+
+ +
+
+ ); +} + +export default PlanContent; diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/SummaryEvaluation/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/SummaryEvaluation/index.js new file mode 100644 index 0000000..de2e418 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/components/SummaryEvaluation/index.js @@ -0,0 +1,89 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, message, Space } from "antd"; +import { useEffect } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +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 useDeleteFile from "zy-react-library/hooks/useDeleteFile"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function SummaryEvaluation(props) { + const [form] = FormBuilder.useForm(); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const { loading: deleteFileLoading, deleteFile } = useDeleteFile(); + + useEffect(() => { + form.setFieldsValue(props.basicInfo); + }, [props.basicInfo]); + + const onSubmit = async (values) => { + await deleteFile({ single: false, files: values.deleteSummaryEvaluationFiles }); + const { id: summaryAssessmentFileId } = await uploadFile({ + single: false, + files: values.summaryEvaluationFiles, + params: { type: UPLOAD_FILE_TYPE_ENUM[705], foreignKey: props.basicInfo.summaryAssessmentFileId }, + }); + const { success } = await props["emergencyExerciseUpdate"]({ + ...values, + summaryAssessmentFileId, + id: props.drillId, + }); + if (success) { + message.success("保存成功"); + props.setUrlState({ + currentStep: "planAttachments", + }); + props.getBasicInfo(); + } + }; + + return ( +
+ + + + + )} + span={24} + options={[ + { + name: "drillPurpose", + label: "演练目的", + render: FORM_ITEM_RENDER_ENUM.TEXTAREA, + componentProps: { disabled: true }, + }, + { + name: "summaryEvaluationFiles", + label: "相关附件", + render: ( + { + form.setFieldValue("deleteSummaryEvaluationFiles", [...(form.getFieldValue("deleteSummaryEvaluationFiles") || []), file]); + }} + /> + ), + }, + { name: "deleteSummaryEvaluationFiles", label: "删除的附件", onlyForLabel: true }, + ]} + form={form} + onFinish={onSubmit} + /> +
+ ); +} + +export default Connect([NS_EMERGENCY_EXERCISE], true)(SummaryEvaluation); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/index.js new file mode 100644 index 0000000..4655fd1 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/Add/index.js @@ -0,0 +1,156 @@ +import useUrlState from "@ahooksjs/use-url-state"; +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Space, Tabs } from "antd"; +import { useEffect, useState } from "react"; +import Page from "zy-react-library/components/Page"; +import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; +import useGetFile from "zy-react-library/hooks/useGetFile"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; +import BasicInfo from "./components/BasicInfo"; +import CommandOrganization from "./components/CommandOrganization"; +import PlanAttachments from "./components/PlanAttachments"; +import PlanContent from "./components/PlanContent"; +import SummaryEvaluation from "./components/SummaryEvaluation"; + +function Add(props) { + const { loading: getFileLoading, getFile } = useGetFile(); + const query = useGetUrlQuery(); + const [urlState, setUrlState] = useUrlState( + { + currentStep: "basicInfo", + drillId: query.id, + }, + { navigateMode: "replace" }, + ); + + const [basicInfo, setBasicInfo] = useState({}); + + const getBasicInfo = async () => { + if (!urlState.drillId) + return; + + const { data } = await props["emergencyExerciseInfo"]({ id: urlState.drillId }); + const summaryEvaluationFiles = []; + const emergencyDrillFiles = []; + if (data.summaryAssessmentFileId) { + const fileItems = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[705], eqForeignKey: data.summaryAssessmentFileId }); + summaryEvaluationFiles.push(...fileItems); + } + if (data.emergencyDrill) { + const fileItems = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[704], eqForeignKey: data.emergencyDrill }); + emergencyDrillFiles.push(...fileItems); + } + setBasicInfo({ + ...data, + summaryEvaluationFiles, + emergencyDrillFiles, + }); + }; + + useEffect(() => { + getBasicInfo(); + }, [urlState.drillId]); + + const subordinateTabDisabled = !urlState.drillId; + const isShowFooter = ["basicInfo", "summaryEvaluation", "planAttachments"].includes(urlState.currentStep); + + const previousStep = () => { + const stepMapping = { + commandOrganization: "basicInfo", + planContent: "commandOrganization", + summaryEvaluation: "planContent", + planAttachments: "summaryEvaluation", + }; + + const prevStep = stepMapping[urlState.currentStep]; + if (prevStep) + setUrlState({ currentStep: prevStep }); + }; + + const nextStep = () => { + const stepFlow = { + commandOrganization: "planContent", + planContent: "summaryEvaluation", + }; + + const nextStep = stepFlow[urlState.currentStep]; + if (nextStep) { + setUrlState({ currentStep: nextStep }); + } + }; + + return ( + + + + + )} + > + setUrlState({ currentStep: key })} + items={[ + { + key: "basicInfo", + label: "应急演练基本信息", + children: ( + + ), + }, + { + key: "commandOrganization", + label: "应急指挥机构", + children: (), + disabled: subordinateTabDisabled, + }, + { + key: "planContent", + label: "演练内容及场景", + children: (), + disabled: subordinateTabDisabled, + }, + { + key: "summaryEvaluation", + label: "总结评估", + children: ( + + ), + disabled: subordinateTabDisabled, + }, + { + key: "planAttachments", + label: "应急演练附件", + children: ( + + ), + disabled: subordinateTabDisabled, + }, + ]} + /> + + ); +} + +export default Connect([NS_EMERGENCY_EXERCISE], true)(Add); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/View/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/View/index.js new file mode 100644 index 0000000..9b99316 --- /dev/null +++ b/src/pages/Container/Enterprise/PlanAndDrill/EmergencyExercise/View/index.js @@ -0,0 +1,170 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Descriptions, Divider, Spin } from "antd"; +import { useEffect, useState } from "react"; +import Page from "zy-react-library/components/Page"; +import PreviewImg from "zy-react-library/components/PreviewImg"; +import PreviewPdf from "zy-react-library/components/PreviewPdf"; +import Table from "zy-react-library/components/Table"; +import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; +import useGetFile from "zy-react-library/hooks/useGetFile"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { getFileSuffix } from "zy-react-library/utils"; +import { NS_EMERGENCY_EXERCISE } from "~/enumerate/namespace"; + +function View(props) { + const query = useGetUrlQuery(); + const { loading: getFileLoading, getFile } = useGetFile(); + + const [basicInfo, setBasicInfo] = useState({}); + + const { tableProps: organizationTableProps } = useTable(props["emergencyExerciseOrganizationList"], { + params: { likeDrillId: query.id }, + useStorageQueryCriteria: false, + }); + const { tableProps: organizationPersonnelTableProps } = useTable(props["emergencyExerciseOrganizationPersonnelList"], { + params: { likeDrillId: query.id }, + useStorageQueryCriteria: false, + }); + const { tableProps: contentTableProps } = useTable(props["emergencyExerciseContentList"], { + params: { likeDrillId: query.id }, + useStorageQueryCriteria: false, + }); + const { tableProps: scenarioTableProps } = useTable(props["emergencyExerciseScenarioList"], { + params: { likeDrillId: query.id }, + useStorageQueryCriteria: false, + }); + + const getBasicInfo = async () => { + const { data } = await props["emergencyExerciseInfo"]({ id: query.id }); + const summaryEvaluationFiles = []; + const emergencyDrillFiles = []; + if (data.summaryAssessmentFileId) { + const fileItems = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[705], eqForeignKey: data.summaryAssessmentFileId }); + summaryEvaluationFiles.push(...fileItems); + } + if (data.emergencyDrill) { + const fileItems = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[704], eqForeignKey: data.emergencyDrill }); + emergencyDrillFiles.push(...fileItems); + } + setBasicInfo({ + ...data, + summaryEvaluationFiles, + emergencyDrillFiles, + }); + }; + + useEffect(() => { + getBasicInfo(); + }, []); + + const previewFile = (files = []) => { + const pdfFile = []; + const imgFile = []; + for (let i = 0; i < files.length; i++) { + const file = files[i]; + if (getFileSuffix(file.fileName) === "pdf") + pdfFile.push(file); + else + imgFile.push(file); + } + return ( + <> + + + + ); + }; + + return ( + + 应急演练基本信息 + + + + 应急指挥机构 +
+ 应急指挥机构人员 +
+ 演练内容 +
+ 演练场景 +
+ 总结评价 + + + + 应急演练方案附件 + + + + + ); +} + +export default Connect([NS_EMERGENCY_EXERCISE], true)(View); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/GradeResponse/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/GradeResponse/index.js index 7b7c781..4164504 100644 --- a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/GradeResponse/index.js +++ b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/GradeResponse/index.js @@ -13,9 +13,7 @@ function GradeResponse(props) { const [currentId, setCurrentId] = useState(""); const { tableProps, getData } = useTable(props["enterprisePlanLevelResponseList"], { - params: { - likePlanId: props.planId, - }, + params: { likePlanId: props.planId }, useStorageQueryCriteria: false, onSuccess: () => { props.mode !== "view" && props.setResponseLevelRefresh(true); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/OrganizationStructure/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/OrganizationStructure/index.js index 796bce5..1e3ca97 100644 --- a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/OrganizationStructure/index.js +++ b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/OrganizationStructure/index.js @@ -80,7 +80,7 @@ function OrganizationStructure(props) { return (
-
+
{props.mode !== "view" && ( diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanAttachments/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanAttachments/index.js index 3f82802..71096de 100644 --- a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanAttachments/index.js +++ b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanAttachments/index.js @@ -23,9 +23,7 @@ function PlanAttachments(props) { const [currentId, setCurrentId] = useState(""); const { tableProps, getData } = useTable(props["enterprisePlanAttachmentList"], { - params: { - likePlanId: props.planId, - }, + params: { likePlanId: props.planId }, useStorageQueryCriteria: false, }); diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanInstructions/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanInstructions/index.js index 0ef7696..fab580c 100644 --- a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanInstructions/index.js +++ b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanInstructions/index.js @@ -17,9 +17,7 @@ function PlanInstructions(props) { const isEditCommandIdRef = useRef(""); const { tableProps, getData } = useTable(props["enterprisePlanCommandSettingList"], { - params: { - likePlanId: props.planId, - }, + params: { likePlanId: props.planId }, useStorageQueryCriteria: false, }); @@ -84,7 +82,7 @@ function PlanInstructions(props) { }; return ( -
+
{ props.mode !== "view" && (
diff --git a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanResources/index.js b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanResources/index.js index 5f11994..ede68f1 100644 --- a/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanResources/index.js +++ b/src/pages/Container/Enterprise/PlanAndDrill/EnterprisePlan/Add/components/PlanResources/index.js @@ -17,9 +17,7 @@ function GradeResponse(props) { const [currentId, setCurrentId] = useState(""); const { tableProps, getData } = useTable(props["enterprisePlanResourceList"], { - params: { - likePlanId: props.planId, - }, + params: { likePlanId: props.planId }, useStorageQueryCriteria: false, });