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={() => (
+
+ )}
+ onClick={() => {
+ setAddModalVisible(true);
+ }}
+ >
+ 新增
+
+ )}
+ onClick={onDeleteBatch}
+ >
+ 批量删除
+
+
+ )}
+ 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={() => (
+
+ )}
+ onClick={() => {
+ setAddModalVisible(true);
+ }}
+ >
+ 新增
+
+ )}
+ onClick={onDeleteBatch}
+ >
+ 批量删除
+
+
+ )}
+ 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={() => (
+
+ )}
+ onClick={() => {
+ setAddModalVisible(true);
+ }}
+ >
+ 新增
+
+ )}
+ onClick={onDeleteBatch}
+ >
+ 批量删除
+
+
+ )}
+ 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={() => (
+
+ )}
+ onClick={() => {
+ setAddModalVisible(true);
+ }}
+ >
+ 新增
+
+ )}
+ onClick={onDeleteBatch}
+ >
+ 批量删除
+
+
+ )}
+ 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,
});