diff --git a/router.md b/router.md index f7adda2..9aadeca 100644 --- a/router.md +++ b/router.md @@ -68,3 +68,5 @@ `/emergencyRescue/container/enterprise/planAndDrill/emergencyPlan/list` - 预案与演练/应急演练管理 `/emergencyRescue/container/enterprise/planAndDrill/emergencyExercise/list` +- 应急救援/值班管理/值班日志 + `/emergencyRescue/container/enterprise/emergencyRescue/duty/dutyLog/list` diff --git a/src/api/dutyLog/index.js b/src/api/dutyLog/index.js new file mode 100644 index 0000000..2cc73fd --- /dev/null +++ b/src/api/dutyLog/index.js @@ -0,0 +1,26 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const dutyLogList = declareRequest( + "dutyLogLoading", + "Post > @/emergencyRescue/dutyLog/list", +); +export const dutyLogAdd = declareRequest( + "dutyLogLoading", + "Post > @/emergencyRescue/dutyLog/save", +); +export const dutyLogUpdate = declareRequest( + "dutyLogLoading", + "Put > @/emergencyRescue/dutyLog/edit", +); +export const dutyLogInfo = declareRequest( + "dutyLogLoading", + "Get > /emergencyRescue/dutyLog/{id}", +); +export const dutyLogDelete = declareRequest( + "dutyLogLoading", + "Delete > @/emergencyRescue/dutyLog/{id}", +); +export const dutyLogDeleteBatch = declareRequest( + "dutyLogLoading", + "Delete > @/emergencyRescue/dutyLog/ids?ids={ids}", +); diff --git a/src/enumerate/namespace/index.js b/src/enumerate/namespace/index.js index baa46d3..c1b014d 100644 --- a/src/enumerate/namespace/index.js +++ b/src/enumerate/namespace/index.js @@ -26,3 +26,4 @@ export const NS_EMERGENCY_RESCUE_TEAM = defineNamespace("emergencyRescueTeam"); export const NS_ENTERPRISE_PLAN = defineNamespace("enterprisePlan"); export const NS_EMERGENCY_PLAN = defineNamespace("emergencyPlan"); export const NS_EMERGENCY_EXERCISE = defineNamespace("emergencyExercise"); +export const NS_DUTY_LOG = defineNamespace("dutyLog"); diff --git a/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/Add/index.js b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/Add/index.js new file mode 100644 index 0000000..6a3296d --- /dev/null +++ b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/Add/index.js @@ -0,0 +1,96 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { message } from "antd"; +import { useEffect, useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import Page from "zy-react-library/components/Page"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; +import { NS_DUTY_LOG } from "~/enumerate/namespace"; + +function Add(props) { + const [userInfo, setUserInfo] = useState({}); + + const query = useGetUrlQuery(); + const { getUserInfo } = useGetUserInfo(); + + const [form] = FormBuilder.useForm(); + + const getData = async () => { + if (!query.id) + return; + + const { data } = await props["dutyLogInfo"]({ id: query.id }); + form.setFieldsValue({ + ...data, + time: [data.startTime, data.endTime], + }); + }; + + useEffect(() => { + getData(); + (async () => { + const userInfo = await getUserInfo(); + setUserInfo(userInfo); + })(); + }, []); + + const onSubmit = async (values) => { + const { success } = await props[query.id ? "dutyLogUpdate" : "dutyLogAdd"]({ + ...values, + startTime: values.time[0], + endTime: values.time[1], + id: query.id, + }); + if (success) { + message.success(query.id ? "编辑成功" : "新增成功"); + props.history.goBack(); + } + }; + + return ( + + { + form.setFieldValue("dutyPersonnelName", label); + }} + /> + ), + }, + { name: "dutyPersonnelName", label: "值班人员名称", onlyForLabel: true }, + { + name: "reliefPersonnel", + label: "接班人员", + render: ( + { + form.setFieldValue("reliefPersonnelName", label); + }} + /> + ), + }, + { name: "reliefPersonnelName", label: "接班人员名称", onlyForLabel: true }, + ]} + form={form} + onFinish={onSubmit} + /> + + ); +} + +export default Connect([NS_DUTY_LOG], true)(Add); diff --git a/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/List/index.js b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/List/index.js new file mode 100644 index 0000000..a351cb1 --- /dev/null +++ b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/List/index.js @@ -0,0 +1,142 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, message, Modal, Space } from "antd"; +import { useState } from "react"; +import AddIcon from "zy-react-library/components/Icon/AddIcon"; +import DeleteIcon from "zy-react-library/components/Icon/DeleteIcon"; +import Page from "zy-react-library/components/Page"; +import Search from "zy-react-library/components/Search"; +import Table from "zy-react-library/components/Table"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_DUTY_LOG } from "~/enumerate/namespace"; + +function List(props) { + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + + const [form] = Search.useForm(); + + const { tableProps, getData } = useTable(props["dutyLogList"], { + form, + }); + + const onDelete = (record) => { + Modal.confirm({ + title: "删除确认", + content: `确定要删除【${record.unitName}】吗`, + onOk: async () => { + const { success } = await props["dutyLogDelete"]({ 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["dutyLogDeleteBatch"]({ ids: selectedRowKeys }); + if (success) { + message.success("删除成功"); + getData(); + } + }, + }); + }; + + return ( + + + { + setSelectedRowKeys(selectedRowKeys); + }, + }} + toolBarRender={() => ( + + + + + )} + columns={[ + { title: "单位名称", dataIndex: "unitName" }, + { title: "开始时间", dataIndex: "startTime" }, + { title: "结束时间", dataIndex: "endTime" }, + { title: "值班人员", dataIndex: "dutyPersonnelName" }, + { title: "接班人员", dataIndex: "reliefPersonnelName" }, + { title: "值班记录", dataIndex: "dutyRecord" }, + { title: "处理情况", dataIndex: "handlingSituation" }, + { title: "交接事宜", dataIndex: "handoverMatters" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_DUTY_LOG], true)(List); diff --git a/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/View/index.js b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/View/index.js new file mode 100644 index 0000000..e59e1af --- /dev/null +++ b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/View/index.js @@ -0,0 +1,42 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Descriptions } from "antd"; +import { useEffect, useState } from "react"; +import Page from "zy-react-library/components/Page"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import { NS_DUTY_LOG } from "~/enumerate/namespace"; + +function View(props) { + const [info, setInfo] = useState({}); + + const query = useGetUrlQuery(); + + const getData = async () => { + const { data } = await props["dutyLogInfo"]({ id: query.id }); + setInfo(data); + }; + + useEffect(() => { + getData(); + }, []); + + return ( + + + + ); +} + +export default Connect([NS_DUTY_LOG], true)(View); diff --git a/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/index.js b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/index.js new file mode 100644 index 0000000..8b636a5 --- /dev/null +++ b/src/pages/Container/Enterprise/EmergencyRescue/Duty/DutyLog/index.js @@ -0,0 +1,5 @@ +function DutyLog(props) { + return props.children; +} + +export default DutyLog; diff --git a/src/pages/Container/Enterprise/EmergencyRescue/Duty/index.js b/src/pages/Container/Enterprise/EmergencyRescue/Duty/index.js new file mode 100644 index 0000000..978a87d --- /dev/null +++ b/src/pages/Container/Enterprise/EmergencyRescue/Duty/index.js @@ -0,0 +1,5 @@ +function Duty(props) { + return props.children; +} + +export default Duty; diff --git a/src/pages/Container/Enterprise/EmergencyRescue/index.js b/src/pages/Container/Enterprise/EmergencyRescue/index.js new file mode 100644 index 0000000..9e94ab9 --- /dev/null +++ b/src/pages/Container/Enterprise/EmergencyRescue/index.js @@ -0,0 +1,5 @@ +function EmergencyRescue(props) { + return props.children; +} + +export default EmergencyRescue;