diff --git a/jjb.config.js b/jjb.config.js index 6c92b5b..86d79ad 100644 --- a/jjb.config.js +++ b/jjb.config.js @@ -9,7 +9,7 @@ module.exports = { // 应用后端分支名称,部署上线需要 javaGitBranch: "", // 接口服务地址 - API_HOST: "开发环境后端地址", + API_HOST: "http://192.168.20.100:30140", }, production: { // 应用后端分支名称,部署上线需要 @@ -24,7 +24,7 @@ module.exports = { contextInject: { // 应用Key appKey: "", - fileUrl: "附件地址", + fileUrl: "http://192.168.20.230:7811/csyfile/", }, // public/index.html注入全局变量 windowInject: { @@ -39,12 +39,14 @@ module.exports = { }, }, // 注入js链接集合 - scripts: [], + scripts: [ + "https://api.map.baidu.com/api?v=1.0&type=webgl&ak=OElqFYoKiAH8KFtph8ftLKF5NlNrbCUr", + ], }, // 开发服务 server: { // 监听端口号 - port: "8080", + port: "8081", // 服务地址 host: "127.0.0.1", // 是否自动打开浏览器 diff --git a/package.json b/package.json index 4f2fbd9..bb88b53 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,8 @@ "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "zy-react-library": "latest" + "react-to-print": "^3.2.0", + "zy-react-library": "^1.0.93" }, "devDependencies": { "@antfu/eslint-config": "^5.4.1", diff --git a/src/api/acceptance/index.js b/src/api/acceptance/index.js new file mode 100644 index 0000000..552f5b6 --- /dev/null +++ b/src/api/acceptance/index.js @@ -0,0 +1,10 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const acceptanceList = declareRequest( + "acceptanceLoading", + `Post > @/hidden/hidden/checkList`, +); +export const acceptanceReview = declareRequest( + "acceptanceLoading", + `Put > @/hidden/hidden/check`, +); diff --git a/src/api/average/index.js b/src/api/average/index.js new file mode 100644 index 0000000..a535517 --- /dev/null +++ b/src/api/average/index.js @@ -0,0 +1,10 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const averageCorpInfoCountList = declareRequest( + "averageLoading", + `Post > @/hidden/hidden/generalHiddenListByCorp`, +); +export const averageByCorpInfoList = declareRequest( + "ignoreLoading", + "Post > @/hidden/hidden/generalHiddenList", +); diff --git a/src/api/confirm/index.js b/src/api/confirm/index.js new file mode 100644 index 0000000..8a8ca20 --- /dev/null +++ b/src/api/confirm/index.js @@ -0,0 +1,10 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const confirmList = declareRequest( + "confirmLoading", + `Post > @/hidden/hidden/confirmList`, +); +export const confirmSubmit = declareRequest( + "confirmLoading", + `Put > @/hidden/hidden/confirm`, +); diff --git a/src/api/confirmUser/index.js b/src/api/confirmUser/index.js new file mode 100644 index 0000000..d570ecc --- /dev/null +++ b/src/api/confirmUser/index.js @@ -0,0 +1,18 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const confirmUserList = declareRequest( + "confirmUserLoading", + `Post > @/hidden/hiddenConfirmUser/listAll`, +); +export const confirmUserDelete = declareRequest( + "confirmUserLoading", + `Delete > @/hidden/hiddenConfirmUser/{id}`, +); +export const confirmUserAdd = declareRequest( + "confirmUserLoading", + `Post > @/hidden/hiddenConfirmUser/save`, +); +export const confirmUserAllList = declareRequest( + "confirmUserLoading", + `Post > @/hidden/hiddenConfirmUser/list`, +); diff --git a/src/api/ignore/index.js b/src/api/ignore/index.js new file mode 100644 index 0000000..0638e22 --- /dev/null +++ b/src/api/ignore/index.js @@ -0,0 +1,14 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const ignoreList = declareRequest( + "ignoreLoading", + "Post > @/hidden/hidden/ignoreList", +); +export const ignoreCorpInfoCountList = declareRequest( + "ignoreLoading", + "Post > @/hidden/hidden/ignoreHiddenListByCorp", +); +export const ignoreByCorpInfoList = declareRequest( + "ignoreLoading", + "Post > @/hidden/hidden/ignoreHiddenList", +); diff --git a/src/api/ledger/index.js b/src/api/ledger/index.js new file mode 100644 index 0000000..1bb10c9 --- /dev/null +++ b/src/api/ledger/index.js @@ -0,0 +1,26 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const ledgerList = declareRequest( + "ledgerLoading", + "Post > @/hidden/hidden/list", +); +export const hiddenDelete = declareRequest( + "ledgerLoading", + `Delete > @/hidden/hidden/{id}`, +); +export const hiddenAdd = declareRequest( + "ledgerLoading", + `Post > @/hidden/hidden/save`, +); +export const hiddenEdit = declareRequest( + "ledgerLoading", + `Put > @/hidden/hidden/edit`, +); +export const hiddenView = declareRequest( + "ledgerLoading", + `Get > /hidden/hidden/{id}`, +); +export const hiddenExportColumn = declareRequest( + "ledgerLoading", + `Get > /hidden/hidden/exportHiddenFields`, +); diff --git a/src/api/part/index.js b/src/api/part/index.js new file mode 100644 index 0000000..f9ed860 --- /dev/null +++ b/src/api/part/index.js @@ -0,0 +1,30 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const partList = declareRequest( + "partLoading", + `Post > @/hidden/hiddenRegion/list`, +); +export const partTreeList = declareRequest( + "partLoading", + `Post > @/hidden/hiddenRegion/listByTree`, +); +export const partAdd = declareRequest( + "partLoading", + `Post > @/hidden/hiddenRegion/save`, +); +export const partEdit = declareRequest( + "partLoading", + `Put > @/hidden/hiddenRegion/edit`, +); +export const partDelete = declareRequest( + "partLoading", + `Delete > @/hidden/hiddenRegion/{id}`, +); +export const partView = declareRequest( + "partLoading", + `Get > /hidden/hiddenRegion/{id}`, +); +export const partGetParentId = declareRequest( + "partLoading", + `Get > /hidden/hiddenRegion/getInfoByHiddenregionId/{id}`, +); diff --git a/src/api/rectification/index.js b/src/api/rectification/index.js new file mode 100644 index 0000000..9907f19 --- /dev/null +++ b/src/api/rectification/index.js @@ -0,0 +1,18 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const rectificationList = declareRequest( + "rectificationLoading", + "Post > @/hidden/hidden/rectifyList", +); +export const rectificationAddTemporarySafetyMeasures = declareRequest( + "rectificationLoading", + "Put > @/hidden/hidden/tempSafeMeasure", +); +export const rectificationRequestAnExtension = declareRequest( + "rectificationLoading", + "Post > @/hidden/hiddenExamine/requestAnExtension", +); +export const rectificationSave = declareRequest( + "rectificationLoading", + "Put > @/hidden/hidden/rectify", +); diff --git a/src/api/specialDisposal/index.js b/src/api/specialDisposal/index.js new file mode 100644 index 0000000..89999a6 --- /dev/null +++ b/src/api/specialDisposal/index.js @@ -0,0 +1,22 @@ +import { declareRequest } from "@cqsjjb/jjb-dva-runtime"; + +export const specialDisposalList = declareRequest( + "specialDisposalLoading", + "Post > @/hidden/hidden/extensionHiddenList", +); +export const specialDisposalReview = declareRequest( + "specialDisposalLoading", + "Post > @/hidden/hiddenExamine/reviewSpecial", +); +export const postponementReview = declareRequest( + "specialDisposalLoading", + "Post > @/hidden/hiddenExamine/reviewExtension", +); +export const specialDisposalCorpInfoCountList = declareRequest( + "specialDisposalLoading", + "Post > @/hidden/hidden/extensionHiddenListByCorp", +); +export const specialDisposalByCorpInfoList = declareRequest( + "ignoreLoading", + "Post > @/hidden/hidden/extensionHiddenList", +); diff --git a/src/assets/images/ai_recognize.png b/src/assets/images/ai_recognize.png new file mode 100644 index 0000000..e3cc0fc Binary files /dev/null and b/src/assets/images/ai_recognize.png differ diff --git a/src/enumerate/namespace/index.js b/src/enumerate/namespace/index.js index b392d90..b9271bd 100644 --- a/src/enumerate/namespace/index.js +++ b/src/enumerate/namespace/index.js @@ -5,3 +5,12 @@ import { defineNamespace } from "@cqsjjb/jjb-dva-runtime"; export const NS_GLOBAL = defineNamespace("global"); +export const NS_LEDGER = defineNamespace("ledger"); +export const NS_IGNORE = defineNamespace("ignore"); +export const NS_CONFIRM_USER = defineNamespace("confirmUser"); +export const NS_CONFIRM = defineNamespace("confirm"); +export const NS_RECTIFICATION = defineNamespace("rectification"); +export const NS_SPECIAL_DISPOSAL = defineNamespace("specialDisposal"); +export const NS_ACCEPTANCE = defineNamespace("acceptance"); +export const NS_PART = defineNamespace("part"); +export const NS_AVERAGE = defineNamespace("average"); diff --git a/src/pages/Container/BranchCompany/Average/Acceptance/List/index.js b/src/pages/Container/BranchCompany/Average/Acceptance/List/index.js new file mode 100644 index 0000000..085e938 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Acceptance/List/index.js @@ -0,0 +1,126 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import dayjs from "dayjs"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_ACCEPTANCE } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["acceptanceList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + params: { eqType: 1 }, + }); + + return ( +
+ }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { name: "checkUserName", label: "验收人" }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> + getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "整改时间", dataIndex: "rectificationTime" }, + { title: "验收人", dataIndex: "hiddenYUserName", width: 100 }, + { title: "隐患状态", dataIndex: "state", render: () => "待验收" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_ACCEPTANCE], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/Acceptance/Review/index.js b/src/pages/Container/BranchCompany/Average/Acceptance/Review/index.js new file mode 100644 index 0000000..cc95b72 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Acceptance/Review/index.js @@ -0,0 +1,73 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Form, message } from "antd"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; +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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { NS_ACCEPTANCE } from "~/enumerate/namespace"; + +function Rectification(props) { + const query = useGetUrlQuery(); + const [form] = Form.useForm(); + const status = Form.useWatch("status", form); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const onSubmit = async (values) => { + await uploadFile({ single: false, files: values.files, params: { type: UPLOAD_FILE_TYPE_ENUM["5"], foreignKey: query.hiddenId } }); + await props["acceptanceReview"]({ + id: query.id, + hiddenId: query.hiddenId, + ...values, + }); + message.success("操作成功"); + props.history.goBack(); + }; + return ( +
+ + + 隐患验收 +
+ !(formValues.status === 0), + }, + ...( + status === 1 + ? [ + { name: "descr", label: "验收描述" }, + { name: "rectificationTime", label: "验收时间", render: FORM_ITEM_RENDER_ENUM.DATETIME }, + { name: "files", label: "验收图片", required: false, render: }, + ] + : [] + ), + ]} + /> +
+
+ ); +} + +export default Connect([NS_ACCEPTANCE], true)(Rectification); diff --git a/src/pages/Container/BranchCompany/Average/Acceptance/index.js b/src/pages/Container/BranchCompany/Average/Acceptance/index.js new file mode 100644 index 0000000..af24af4 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Acceptance/index.js @@ -0,0 +1,9 @@ +function Acceptance(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Acceptance; diff --git a/src/pages/Container/BranchCompany/Average/Confirm/List/index.js b/src/pages/Container/BranchCompany/Average/Confirm/List/index.js new file mode 100644 index 0000000..f6a4451 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Confirm/List/index.js @@ -0,0 +1,119 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import dayjs from "dayjs"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_CONFIRM } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["confirmList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + }); + + return ( +
+ }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "隐患状态", dataIndex: "state", render: () => "待确认" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_CONFIRM], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/Confirm/Review/index.js b/src/pages/Container/BranchCompany/Average/Confirm/Review/index.js new file mode 100644 index 0000000..1a86571 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Confirm/Review/index.js @@ -0,0 +1,256 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Divider, Form, message, Modal } from "antd"; +import { useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { NS_CONFIRM } from "~/enumerate/namespace"; + +function Confirm(props) { + const [data, setData] = useState({}); + const [form] = Form.useForm(); + const hiddenLevel = Form.useWatch("hiddenLevel", form); + const deptId = Form.useWatch("deptId", form); + const checkDeptId = Form.useWatch("checkDeptId", form); + const [rejectModalOpen, setRejectModalOpen] = useState(false); + + const onSubmit = (values) => { + Modal.confirm({ + title: "提示", + content: "是否确认隐患?", + onOk: async () => { + await props["confirmSubmit"]({ + status: "1", + rectificationType: data.rectificationType, + ...values, + id: data.id, + hiddenId: data.hiddenId, + }); + message.success("确认成功"); + props.history.goBack(); + }, + }); + }; + + return ( +
+ + { + setData(data); + }} + /> + 隐患确认 +
+ setRejectModalOpen(true)}>打回, + , + ]} + options={[ + { + name: "hiddenLevel", + label: "隐患级别", + span: 24, + render: ( + { + form.setFieldValue("deptName", ""); + form.setFieldValue("userName", ""); + form.setFieldValue("deptName", ""); + form.setFieldValue("userName", ""); + form.setFieldValue("checkDeptName", ""); + form.setFieldValue("checkUserName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("hiddenLevelName", label); + }} + /> + ), + }, + { name: "hiddenLevelName", label: "隐患级别名称", onlyForLabel: true }, + ...( + hiddenLevel !== "hiddenLevel1001" + ? [ + ...( + data.rectificationType === 2 + ? [ + { + name: "deptId", + label: "整改负责人部门", + render: ( + { + form.setFieldValue("userId", ""); + form.setFieldValue("userName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("deptName", label); + }} + /> + ), + }, + { name: "deptName", label: "整改负责人部门名称", onlyForLabel: true }, + { + name: "userId", + label: "整改负责人", + render: ( + form.setFieldValue("userName", label)} + /> + ), + }, + { name: "userName", label: "整改负责人名称", onlyForLabel: true }, + { + name: "rectificationDeadline", + label: "整改完成期限", + render: FORM_ITEM_RENDER_ENUM.DATE, + span: 24, + }, + ] + : [ + { + name: "rectificationType", + label: "是否立即整改", + render: FORM_ITEM_RENDER_ENUM.RADIO, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + span: 24, + componentProps: { + onChange: () => { + form.setFieldValue("checkDeptName", ""); + form.setFieldValue("checkUserName", ""); + }, + }, + }, + { + name: "deptId", + label: "整改负责人部门", + render: ( + { + form.setFieldValue("userId", ""); + form.setFieldValue("userName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("deptName", label); + }} + /> + ), + }, + { name: "deptName", label: "整改负责人部门名称", onlyForLabel: true }, + { + name: "userId", + label: "整改负责人", + render: ( + form.setFieldValue("userName", label)} + /> + ), + }, + { name: "userName", label: "整改负责人名称", onlyForLabel: true }, + { + name: "rectificationDeadline", + label: "整改完成期限", + render: FORM_ITEM_RENDER_ENUM.DATE, + span: 24, + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 2), + }, + { + name: "checkDeptId", + label: "验收部门", + required: false, + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 1), + render: ( + { + form.setFieldValue("checkUserId", ""); + form.setFieldValue("checkUserName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("checkDeptName", label); + }} + /> + ), + }, + { name: "checkDeptName", label: "验收部门名称", onlyForLabel: true }, + { + name: "checkUserId", + label: "验收人", + required: false, + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 1), + render: ( + form.setFieldValue("checkUserName", label)} + /> + ), + }, + { name: "checkUserName", label: "验收人名称", onlyForLabel: true }, + ]), + ] + : [] + ), + ]} + /> +
+ setRejectModalOpen(false)} data={data} /> +
+ ); +} + +const RejectModalComponent = (props) => { + const [form] = Form.useForm(); + const onSubmit = async (values) => { + await props["confirmSubmit"]({ + status: "0", + ...values, + id: props.data.id, + hiddenId: props.data.hiddenId, + rectificationType: props.data.rectificationType, + }); + message.success("打回成功"); + props.onCancel(); + window.history.back(); + }; + + return ( + + + + ); +}; + +const RejectModal = Connect([NS_CONFIRM], true)(RejectModalComponent); +export default Connect([NS_CONFIRM], true)(Confirm); diff --git a/src/pages/Container/BranchCompany/Average/Confirm/index.js b/src/pages/Container/BranchCompany/Average/Confirm/index.js new file mode 100644 index 0000000..6f7975d --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Confirm/index.js @@ -0,0 +1,9 @@ +function Confirm(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Confirm; diff --git a/src/pages/Container/BranchCompany/Average/ConfirmUser/index.js b/src/pages/Container/BranchCompany/Average/ConfirmUser/index.js new file mode 100644 index 0000000..f80e16f --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/ConfirmUser/index.js @@ -0,0 +1,155 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal } from "antd"; +import { useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import AddIcon from "zy-react-library/components/Icon/AddIcon"; +import Search from "zy-react-library/components/Search"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import Table from "zy-react-library/components/Table"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_CONFIRM_USER } from "~/enumerate/namespace"; + +function HiddenConfirmUser(props) { + const [form] = Form.useForm(); + const [addModalOpen, setAddModalOpen] = useState(false); + const { tableProps, getData } = useTable(props["confirmUserList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + }); + + const onDelete = (id) => { + Modal.confirm({ + title: "删除确认", + content: "确定要删除吗?", + onOk: async () => { + await props["confirmUserDelete"]({ id }); + message.success("删除成功"); + getData(); + }, + }); + }; + + return ( +
+ }, + ]} + form={form} + onFinish={getData} + /> +
( + <> + + + )} + columns={[ + { title: "用户名", dataIndex: "name" }, + { title: "姓名", dataIndex: "userName" }, + { title: "部门", dataIndex: "deptName" }, + { title: "岗位", dataIndex: "postName" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + ), + }, + ]} + {...tableProps} + /> + setAddModalOpen(false)} getData={getData} /> + + ); +} + +const AddModalComponent = (props) => { + const [form] = Form.useForm(); + const deptId = Form.useWatch("deptId", form); + const onSubmit = async (values) => { + await props["confirmUserAdd"]({ ...values }); + message.success("操作成功"); + props.onCancel(); + props.getData(); + }; + + return ( + { + props.onCancel(); + form.resetFields(); + }} + onOk={form.submit} + loading={props.confirmUser.confirmUserLoading} + > + { + form.setFieldValue("userId", ""); + form.setFieldValue("confirmUsers", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("deptName", label); + }} + /> + ), + }, + { name: "deptName", label: "部门名称", onlyForLabel: true }, + { + name: "userId", + label: "隐患确认人", + render: ( + { + form.setFieldValue("confirmUsers", option.map(item => ({ + name: item.name, + userName: item.username, + userId: item.id, + postName: item.postName, + postId: item.postId, + }))); + }} + /> + ), + }, + { name: "confirmUsers", label: "确认人信息", onlyForLabel: true }, + ]} + /> + + ); +}; + +const AddModal = Connect([NS_CONFIRM_USER], true)(AddModalComponent); +export default Connect([NS_CONFIRM_USER], true)(HiddenConfirmUser); diff --git a/src/pages/Container/BranchCompany/Average/HiddenView/index.js b/src/pages/Container/BranchCompany/Average/HiddenView/index.js new file mode 100644 index 0000000..41db77d --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/HiddenView/index.js @@ -0,0 +1,11 @@ +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; + +function HiddenView() { + return ( +
+ +
+ ); +} + +export default HiddenView; diff --git a/src/pages/Container/BranchCompany/Average/Ignore/List/index.js b/src/pages/Container/BranchCompany/Average/Ignore/List/index.js new file mode 100644 index 0000000..d5f0f95 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Ignore/List/index.js @@ -0,0 +1,103 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import dayjs from "dayjs"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_IGNORE } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["ignoreList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + }); + + return ( +
+ }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { + title: "确认时间", + dataIndex: "confirmTime", + render: (_, record) => record.confirmTime ? dayjs(record.confirmTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { title: "隐患状态", dataIndex: "state", render: () => "已忽略" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_IGNORE], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/Ignore/index.js b/src/pages/Container/BranchCompany/Average/Ignore/index.js new file mode 100644 index 0000000..cdd5984 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Ignore/index.js @@ -0,0 +1,9 @@ +function Ignore(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Ignore; diff --git a/src/pages/Container/BranchCompany/Average/Ledger/Add/index.js b/src/pages/Container/BranchCompany/Average/Ledger/Add/index.js new file mode 100644 index 0000000..59c7294 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Ledger/Add/index.js @@ -0,0 +1,475 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Input, message } from "antd"; +import { useEffect, useRef, useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import Map from "zy-react-library/components/Map"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Upload from "zy-react-library/components/Upload"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; +import useDeleteFile from "zy-react-library/hooks/useDeleteFile"; +import useGetFile from "zy-react-library/hooks/useGetFile"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { getFileUrl } from "zy-react-library/utils"; +import ai_recognize from "~/assets/images/ai_recognize.png"; +import { NS_CONFIRM_USER, NS_LEDGER, NS_PART } from "~/enumerate/namespace"; + +function Add(props) { + const query = useGetUrlQuery(); + const [form] = Form.useForm(); + const hiddenFindDept = Form.useWatch("hiddenFindDept", form); + const rectificationDeptId = Form.useWatch("rectificationDeptId", form); + const checkDeptId = Form.useWatch("checkDeptId", form); + const isAi = Form.useWatch("isAi", form); + + const [aiHiddenImageRecognizeLoading, setAIHiddenImageRecognizeLoading] = useState(false); + const aiHiddenImageRecognizeFilePath = useRef(""); + + const [hiddenPartType, setHiddenPartType] = useState("select"); + const [confirmUserList, setConfirmUserList] = useState([]); + + const [deleteHiddenImageFiles, setDeleteHiddenImageFiles] = useState([]); + const [deleteHiddenVideoFiles, setDeleteHiddenVideoFiles] = useState([]); + const [deleteAfterRectificationImageFiles, setDeleteAfterRectificationImageFiles] = useState([]); + + const { getUserInfo } = useGetUserInfo(); + const { loading: deleteFileLoading, deleteFile } = useDeleteFile(); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const { loading: getFileLoading, getFile } = useGetFile(); + + const getData = async () => { + if (query.id) { + const { data } = await props["hiddenView"]({ id: query.id }); + const hiddenImageFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["3"], eqForeignKey: query.hiddenId }); + const hiddenVideoFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["102"], eqForeignKey: query.hiddenId }); + const afterRectificationImageFiles = await getFile({ + eqType: UPLOAD_FILE_TYPE_ENUM["4"], + eqForeignKey: query.hiddenId, + }); + const values = { + hiddenImageFiles, + hiddenVideoFiles, + afterRectificationImageFiles, + confirmUserId: data.confirmUserCO?.userId, + rectificationDeptId: data.hiddenUserPresetsCO?.rectifyDeptId, + rectificationUserId: data.hiddenUserPresetsCO?.rectifyUserId, + ...data, + }; + form.setFieldsValue({ + ...values, + confirmUserName: data.confirmUserCO?.userName, + confirmDeptName: data.confirmUserCO?.deptName, + confirmDeptId: data.confirmUserCO?.deptId, + rectificationDeptName: data.hiddenUserPresetsCO?.rectifyDeptName, + rectificationUserName: data.hiddenUserPresetsCO?.rectifyUserName, + }); + } + else { + const userInfo = await getUserInfo(); + form.setFieldsValue({ + hiddenFindDept: userInfo.departmentId, + creatorId: userInfo.userId, + hiddenFindDeptName: userInfo.departmentName, + creatorName: userInfo.name, + }); + } + }; + + const getConfirmUserList = async () => { + const { data } = await props["confirmUserAllList"](); + setConfirmUserList(data); + }; + + useEffect(() => { + getData(); + getConfirmUserList(); + }, []); + + const onSubmit = async (values) => { + await deleteFile({ single: false, files: deleteHiddenImageFiles }); + await deleteFile({ single: false, files: deleteHiddenVideoFiles }); + await deleteFile({ single: false, files: deleteAfterRectificationImageFiles }); + const { id } = await uploadFile({ + single: false, + files: values.hiddenImageFiles, + params: { type: UPLOAD_FILE_TYPE_ENUM["3"], foreignKey: query.hiddenId }, + }); + await uploadFile({ + single: false, + files: values.hiddenVideoFiles, + params: { type: UPLOAD_FILE_TYPE_ENUM["102"], foreignKey: id }, + }); + await uploadFile({ + single: false, + files: values.afterRectificationImageFiles, + params: { type: UPLOAD_FILE_TYPE_ENUM["4"], foreignKey: id }, + }); + if (hiddenPartType === "input") { + await props["partAdd"]({ hiddenregion: values.hiddenPart }); + } + await props[!query.id ? "hiddenAdd" : "hiddenEdit"]({ + ...values, + id: query.id, + hiddenId: id, + source: "1", + }); + message.success("操作成功"); + props.history.goBack(); + }; + const getAIHiddenImageRecognize = async () => { + const hiddenImageFiles = form.getFieldValue("hiddenImageFiles"); + if (!hiddenImageFiles || hiddenImageFiles.length === 0) { + message.warning("请上传图片"); + return; + } + if (hiddenImageFiles.length > 1) { + message.warning("只能上传一张图片"); + return; + } + setAIHiddenImageRecognizeLoading(true); + if (!aiHiddenImageRecognizeFilePath.current) { + const { filePath } = await uploadFile({ files: hiddenImageFiles, params: { type: UPLOAD_FILE_TYPE_ENUM["3"] } }); + aiHiddenImageRecognizeFilePath.current = filePath; + } + try { + const response = await fetch("http://101.201.170.9:3000/ai-manager/ai/url/modelResult", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ url: getFileUrl() + aiHiddenImageRecognizeFilePath.current }), + }); + const { data } = await response.json(); + form.setFieldValue("isAi", 1); + form.setFieldValue("hiddenDesc", data.description); + form.setFieldValue("legalBasis", data.legalBasis); + form.setFieldValue("rectificationDescr", data.guidance); + aiHiddenImageRecognizeFilePath.current = ""; + await deleteFile({ files: [{ filePath: aiHiddenImageRecognizeFilePath.current }] }); + } + catch { + message.error("获取图片识别结果失败"); + } + finally { + setAIHiddenImageRecognizeLoading(false); + } + }; + + return ( +
+ +
+ { + if (isAi === 1) { + form.setFieldValue("isAi", ""); + form.setFieldValue("hiddenDesc", ""); + form.setFieldValue("legalBasis", ""); + form.setFieldValue("rectificationDescr", ""); + } + }} + onGetRemoveFile={(file) => { + setDeleteHiddenImageFiles([...deleteHiddenImageFiles, file]); + }} + tipContent={( + <> + ai_recognize +
+ 最多上传 + {isAi === 1 ? 1 : 4} + 个文件,并且只能上传jpg、jpeg、png格式的文件。 +
+ + )} + /> + ), + span: 24, + }, + { name: "isAi", label: "是否AI识别隐患", onlyForLabel: true }, + { name: "hiddenDesc", label: "隐患描述", render: FORM_ITEM_RENDER_ENUM.TEXTAREA, span: 24 }, + { + name: "legalBasis", + label: "法律依据", + render: FORM_ITEM_RENDER_ENUM.TEXTAREA, + span: 24, + required: false, + hidden: !(isAi === 1), + componentProps: { readOnly: true }, + }, + { + name: "hiddenPart", + customizeRender: true, + render: ( + +
+ + { + hiddenPartType === "select" + ? + : + } + + +
+
+ ), + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: ( + form.setFieldValue("hiddenLevelName", label)} + /> + ), + }, + { name: "hiddenLevelName", label: "隐患级别名称", onlyForLabel: true }, + { + name: "hiddenType", + label: "隐患类型", + render: ( + form.setFieldValue("hiddenTypeName", label)} + /> + ), + }, + { name: "hiddenTypeName", label: "隐患类型名称", onlyForLabel: true }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.RADIO, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + { name: "map", customizeRender: true, render: , span: 24 }, + { name: "positionDesc", label: "隐患位置描述", required: false, span: 24 }, + { + name: "hiddenVideoFiles", + label: "隐患视频", + render: ( + { + setDeleteHiddenVideoFiles([...deleteHiddenVideoFiles, file]); + }} + /> + ), + span: 24, + required: false, + }, + { + name: "hiddenFindDept", + label: "隐患发现部门", + render: ( + { + form.setFieldValue("creatorId", ""); + form.setFieldValue("creatorName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("hiddenFindDeptName", label); + }} + /> + ), + }, + { name: "hiddenFindDeptName", label: "隐患发现部门名称", onlyForLabel: true }, + { + name: "creatorId", + label: "隐患发现人", + render: ( + form.setFieldValue("creatorName", label)} + /> + ), + }, + { name: "creatorName", label: "隐患发现人名称", onlyForLabel: true }, + { name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATETIME }, + { + name: "confirmUserId", + label: "隐患确认人", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: confirmUserList, + itemsField: { valueKey: "userId", labelKey: "userName" }, + componentProps: { + onChange: (value) => { + const findItem = confirmUserList.find(item => item.userId === value); + form.setFieldValue("confirmUserName", findItem.userName); + form.setFieldValue("confirmDeptName", findItem.deptName); + form.setFieldValue("confirmDeptId", findItem.deptId); + }, + }, + }, + { name: "confirmUserName", label: "隐患确认人名称", onlyForLabel: true }, + { name: "confirmDeptName", label: "隐患确认人部门名称", onlyForLabel: true }, + { name: "confirmDeptId", label: "隐患确认人部门id", onlyForLabel: true }, + { + name: "rectificationType", + label: "隐患处置", + render: FORM_ITEM_RENDER_ENUM.RADIO, + items: HIDDEN_RECTIFICATION_TYPE_ENUM, + span: 24, + componentProps: { + onChange: (value) => { + if (value.target.value === 2) { + form.setFieldValue("rectificationDeptId", ""); + form.setFieldValue("rectificationUserId", ""); + form.setFieldValue("rectificationDeptName", ""); + form.setFieldValue("rectificationUserName", ""); + form.setFieldValue("hiddenYDeptName", ""); + form.setFieldValue("hiddenYUserName", ""); + } + else { + const hiddenFindDept = form.getFieldValue("hiddenFindDept"); + const creatorId = form.getFieldValue("creatorId"); + const hiddenFindDeptName = form.getFieldValue("hiddenFindDeptName"); + const creatorName = form.getFieldValue("creatorName"); + form.setFieldValue("rectificationDeptId", hiddenFindDept); + form.setFieldValue("rectificationUserId", creatorId); + form.setFieldValue("checkDeptId", hiddenFindDept); + form.setFieldValue("checkUserId", creatorId); + form.setFieldValue("rectificationDeptName", hiddenFindDeptName); + form.setFieldValue("rectificationUserName", creatorName); + form.setFieldValue("hiddenYDeptName", hiddenFindDeptName); + form.setFieldValue("hiddenYUserName", creatorName); + } + }, + }, + }, + { + name: "rectificationDeadline", + label: "整改期限", + required: false, + render: FORM_ITEM_RENDER_ENUM.DATE, + span: 24, + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 2), + }, + { + name: "rectificationDescr", + label: "整改描述", + render: FORM_ITEM_RENDER_ENUM.TEXTAREA, + span: 24, + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 1), + }, + { + name: "afterRectificationImageFiles", + label: "整改后图片", + render: ( + { + setDeleteAfterRectificationImageFiles([...deleteAfterRectificationImageFiles, file]); + }} + /> + ), + span: 24, + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 1), + }, + { + name: "rectificationDeptId", + label: "整改部门", + required: false, + render: ( + { + form.setFieldValue("rectificationUserId", ""); + form.setFieldValue("rectificationUserName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("rectificationDeptName", label); + }} + /> + ), + }, + { name: "rectificationDeptName", label: "整改部门名称", onlyForLabel: true }, + { + name: "rectificationUserId", + label: "整改人", + required: false, + render: ( + form.setFieldValue("rectificationUserName", label)} + /> + ), + }, + { name: "rectificationUserName", label: "整改人名称", onlyForLabel: true }, + { + name: "checkDeptId", + label: "验收部门", + required: false, + render: ( + { + form.setFieldValue("checkUserId", ""); + form.setFieldValue("hiddenYUserName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("hiddenYDeptName", label); + }} + /> + ), + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 1), + }, + { name: "hiddenYDeptName", label: "验收部门名称", onlyForLabel: true }, + { + name: "checkUserId", + label: "验收人", + required: false, + render: ( + form.setFieldValue("hiddenYUserName", label)} + /> + ), + dependencies: ["rectificationType"], + hidden: formValues => !(formValues.rectificationType === 1), + }, + { name: "hiddenYUserName", label: "验收人名称", onlyForLabel: true }, + ]} + /> +
+
+ ); +} + +export default Connect([NS_LEDGER, NS_CONFIRM_USER, NS_PART], true)(Add); diff --git a/src/pages/Container/BranchCompany/Average/Ledger/List/index.js b/src/pages/Container/BranchCompany/Average/Ledger/List/index.js new file mode 100644 index 0000000..8416576 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Ledger/List/index.js @@ -0,0 +1,418 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space, Spin } from "antd"; +import dayjs from "dayjs"; +import { useEffect, useRef, useState } from "react"; +import { useReactToPrint } from "react-to-print"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import AddIcon from "zy-react-library/components/Icon/AddIcon"; +import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; +import PrintIcon from "zy-react-library/components/Icon/PrintIcon"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM, HIDDEN_STATE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_LEDGER } from "~/enumerate/namespace"; +import "./index.less"; + +function List(props) { + const [form] = Form.useForm(); + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [exportByColumnModalOpen, setExportByColumnModalOpen] = useState(false); + const [printModalOpen, setPrintModalOpen] = useState(false); + const [printData, setPrintData] = useState([]); + const { loading: downloadBlobLoading, downloadBlob } = useDownloadBlob(); + const { tableProps, getData } = useTable(props["ledgerList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + }); + + const onDelete = (id) => { + Modal.confirm({ + title: "删除确认", + content: "确定要删除吗?", + onOk: async () => { + await props["hiddenDelete"]({ id }); + message.success("删除成功"); + getData(); + }, + }); + }; + + const onExportExcel = async () => { + const hiddenFindTime = form.getFieldValue("hiddenFindTime"); + if (!hiddenFindTime) { + message.error("请选择隐患发现时间"); + return; + } + if (hiddenFindTime.filter(Boolean).length === 0) { + message.error("请选择隐患发现时间"); + return; + } + Modal.confirm({ + title: "导出确认", + content: "确定要导出excel吗?", + onOk: async () => { + await downloadBlob("/hidden/hidden/exportHidden", { + params: { hiddenFindTime: hiddenFindTime[0], hiddenFindTimeLe: hiddenFindTime[1] }, + }); + message.success("导出成功"); + }, + }); + }; + + return ( +
+ + }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: ( + + ), + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "state", label: "隐患状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_STATE_ENUM }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { name: "checkUserName", label: "验收人" }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + toolBarRender={() => ( + <> + + + + + + )} + columns={[ + { + title: "隐患来源", + dataIndex: "source", + render: (_, record) => getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ + list: HIDDEN_RECTIFICATION_TYPE_ENUM, + status: record.rectificationType, + }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "整改时间", dataIndex: "rectificationTime" }, + { title: "验收人", dataIndex: "hiddenYUserName", width: 100 }, + { + title: "隐患状态", + dataIndex: "state", + render: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }), + }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + { + record.state === 201 && ( + + ) + } + + + ), + }, + ]} + {...tableProps} + /> + + setExportByColumnModalOpen(false)} + /> + { + setPrintModalOpen(false); + setPrintData([]); + }} + /> + + ); +} + +const ExportByColumnModalComponent = (props) => { + const [form] = Form.useForm(); + const { loading, downloadBlob } = useDownloadBlob(); + const [items, setItems] = useState([]); + const getExportColumn = async () => { + const { data } = await props["hiddenExportColumn"](); + setItems(data.map(item => ({ bianma: item, name: item }))); + }; + useEffect(() => { + getExportColumn(); + }, []); + const onSubmit = async (values) => { + Modal.confirm({ + title: "导出确认", + content: "确定要导出excel吗?", + onOk: async () => { + await downloadBlob("/hidden/hidden/exportHidden", { + params: { hiddenFindTime: props.hiddenFindTime[0], hiddenFindTimeLe: props.hiddenFindTime[1], ...values }, + }); + message.success("导出成功"); + props.onCancel(); + }, + }); + }; + return ( + + + + ); +}; + +const PrintModal = (props) => { + const contentRef = useRef(null); + const handlePrint = useReactToPrint({ + contentRef, + pageStyle: `@page { + size: landscape; + margin: 10px; + } + @media print { + body { + margin: 10px; + padding: 10px; + } + } + `, + documentTitle: "", + }); + const getIsQualified = (isQualified) => { + if (isQualified === 1) + return "合格"; + else if (isQualified === 0) + return "不合格"; + return ""; + }; + return ( + +
dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") }, + { title: "检查人", dataIndex: "createName" }, + { title: "责任部门", dataIndex: "hiddenFindDeptName" }, + { title: "事故隐患", dataIndex: "hiddenDesc" }, + { title: "隐患等级", dataIndex: "hiddenLevelName" }, + { title: "治理措施", dataIndex: "tempSafeMeasure" }, + { title: "完成时限", dataIndex: "rectificationDeadline" }, + { title: "整改责任人", dataIndex: "rectificationUserName" }, + { + title: "验收人员", + dataIndex: "hiddenYUserName", + render: (_, record) => record.state === 301 ? record.hiddenYUserName : "", + }, + { title: "验收时间", dataIndex: "hiddenYTime" }, + { + title: "验收结果", + dataIndex: "isQualified", + render: (_, record) => record.state === 301 ? getIsQualified(record.isQualified) : "", + }, + ]} + /> +
+
+ + + + + + + + + + + + + + + + + {(props.data || []).map(item => ( + + + + + + + + + + + + + + ))} + +
排查时间检查人责任部门事故隐患隐患等级治理措施完成时限整改责任人验收人员验收时间验收结果
{dayjs(item.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss")}{item.createName}{item.hiddenFindDeptName}{item.hiddenDesc}{item.hiddenLevelName}{item.RECTIFYDESCR}{item.RECTIFICATIONDEADLINE}{item.rectificationUserName}{item.state === 301 ? item.hiddenYUserName : ""}{item.hiddenYTime}{item.state === 301 ? getIsQualified(item.isSuccess) : ""}
+
+ + ); +}; + +const ExportByColumnModal = Connect([NS_LEDGER], true)(ExportByColumnModalComponent); +export default Connect([NS_LEDGER], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/Ledger/List/index.less b/src/pages/Container/BranchCompany/Average/Ledger/List/index.less new file mode 100644 index 0000000..13dea80 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Ledger/List/index.less @@ -0,0 +1,16 @@ +.print-table { + display: none; + border-collapse: collapse; + width: 100%; + + td, th { + border: 1px solid #eaeaea; + padding: 8px; + line-height: 1.6; + text-align: center; + } + + @media print { + display: table; + } +} diff --git a/src/pages/Container/BranchCompany/Average/Ledger/index.js b/src/pages/Container/BranchCompany/Average/Ledger/index.js new file mode 100644 index 0000000..5382c61 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Ledger/index.js @@ -0,0 +1,9 @@ +function Ledger(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Ledger; diff --git a/src/pages/Container/BranchCompany/Average/Part/index.js b/src/pages/Container/BranchCompany/Average/Part/index.js new file mode 100644 index 0000000..2a2a643 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Part/index.js @@ -0,0 +1,257 @@ +import { RightOutlined } from "@ant-design/icons"; +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space, Spin, Tag } 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 BackIcon from "zy-react-library/components/Icon/BackIcon"; +import BasicLeftTree from "zy-react-library/components/LeftTree/Basic"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { NS_PART } from "~/enumerate/namespace"; + +function Part(props) { + const urlQuery = useGetUrlQuery(); + const [treeData, setTreeData] = useState([]); + const [parentId, setParentId] = useState(urlQuery.eqParentId || ""); + const [parentName, setParentName] = useState(urlQuery.eqParentName || ""); + const [addModalOpen, setAddModalOpen] = useState(false); + const [currentId, setCurrentId] = useState(""); + const getTreeData = async () => { + const { data } = await props["partTreeList"](); + setTreeData(data); + }; + useEffect(() => { + getTreeData(); + }, []); + const { tableProps, getData } = useTable(props["partList"], { + params: () => ({ eqParentId: parentId }), + }); + + const onDelete = (id) => { + Modal.confirm({ + title: "删除确认", + content: "确定要删除吗?", + onOk: async () => { + await props["partDelete"]({ id }); + message.success("删除成功"); + getData(); + getTreeData(); + }, + }); + }; + + useEffect(() => { + const unlisten = props.history.listen((location) => { + const searchParams = new URLSearchParams(location.search); + const newParentId = searchParams.get("eqParentId"); + const newParentName = searchParams.get("eqParentName"); + setParentId(newParentId); + setParentName(newParentName); + getData(); + }); + return unlisten; + }, []); + + const getNextLevel = (hiddenregion, hiddenregionId) => { + setParentName(hiddenregion); + setParentId(hiddenregionId); + const currentSearchParams = new URLSearchParams(props.history.location.search); + currentSearchParams.set("eqParentId", hiddenregionId); + currentSearchParams.set("eqParentName", hiddenregion); + const queryString = currentSearchParams.toString(); + const newPath = `./part${queryString ? `?${queryString}` : ""}`; + props.history.push(newPath); + }; + + return ( +
+
+
+ + { + const hiddenregion = event.at(-1).hiddenregion; + const hiddenregionId = event.at(-1).hiddenregionId; + getNextLevel(hiddenregion, hiddenregionId); + }} + /> + +
+
+ ( + <> + + { + parentId && ( + + ) + } + + )} + columns={[ + { + title: "区域/设备名称", + dataIndex: "hiddenregion", + render: (_, record) => ( + + ), + }, + { title: "负责人部门", dataIndex: "responsibleDeptName" }, + { title: "负责人", dataIndex: "responsibleUserName" }, + { title: "排序", dataIndex: "sortindex" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + + + { + setAddModalOpen(false); + setCurrentId(""); + }} + /> + + ); +} + +const AddModalComponent = (props) => { + const [form] = Form.useForm(); + const responsibleDeptId = Form.useWatch("responsibleDeptId", form); + + const getData = async () => { + const { data } = await props["partView"]({ id: props.id }); + form.setFieldsValue(data); + }; + useEffect(() => { + props.id && getData(); + }, [props.id]); + const onSubmit = async (values) => { + await props[!props.id ? "partAdd" : "partEdit"]({ ...values, parentId: props.parentId, id: props.id }); + message.success("操作成功"); + props.onCancel(); + props.getData(); + props.getTreeData(); + }; + + return ( + { + props.onCancel(); + form.resetFields(); + }} + onOk={form.submit} + loading={props.part.partLoading} + > + {props.parentName} }, + { name: "hiddenregion", label: "区域/设备名称" }, + { + name: "responsibleDeptId", + label: "负责部门", + span: 12, + required: false, + render: ( + { + form.setFieldValue("responsibleUserId", ""); + form.setFieldValue("responsibleUserName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("responsibleDeptName", label); + }} + /> + ), + }, + { name: "responsibleDeptName", label: "负责部门名称", onlyForLabel: true }, + { + name: "responsibleUserId", + label: "负责人", + span: 12, + required: false, + render: ( + form.setFieldValue("responsibleUserName", label)} + /> + ), + }, + { name: "responsibleUserName", label: "负责人名称", onlyForLabel: true }, + { name: "sortindex", label: "排序", render: FORM_ITEM_RENDER_ENUM.NUMBER }, + { name: "comments", label: "备注", render: FORM_ITEM_RENDER_ENUM.TEXTAREA, required: false }, + ]} + /> + + ); +}; + +const AddModal = Connect([NS_PART], true)(AddModalComponent); +export default Connect([NS_PART], true)(Part); diff --git a/src/pages/Container/BranchCompany/Average/Postponement/List/index.js b/src/pages/Container/BranchCompany/Average/Postponement/List/index.js new file mode 100644 index 0000000..ba592c2 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Postponement/List/index.js @@ -0,0 +1,123 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import dayjs from "dayjs"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM, HIDDEN_STATE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_SPECIAL_DISPOSAL } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["specialDisposalList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + params: { eqType: 2 }, + }); + + return ( +
+ }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "隐患状态", dataIndex: "state", render: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }) }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_SPECIAL_DISPOSAL], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/Postponement/Review/index.js b/src/pages/Container/BranchCompany/Average/Postponement/Review/index.js new file mode 100644 index 0000000..a71de46 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Postponement/Review/index.js @@ -0,0 +1,82 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space } from "antd"; +import { useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import { NS_SPECIAL_DISPOSAL } from "~/enumerate/namespace"; + +function Review(props) { + const query = useGetUrlQuery(); + const [rejectModalOpen, setRejectModalOpen] = useState(false); + const onSubmit = () => { + Modal.confirm({ + title: "提示", + content: "是否确认通过延期?", + onOk: async () => { + await props["postponementReview"]({ + id: query.id, + hiddenId: query.hiddenId, + state: 3, + }); + message.success("操作成功"); + props.history.goBack(); + }, + }); + }; + return ( +
+ + +
+ + + + + +
+ setRejectModalOpen(false)} data={{ id: query.id, hiddenId: query.hiddenId }} /> +
+ ); +} + +const RejectModalComponent = (props) => { + const [form] = Form.useForm(); + const onSubmit = async (values) => { + await props["postponementReview"]({ + state: "4", + ...values, + id: props.data.id, + hiddenId: props.data.hiddenId, + }); + message.success("打回成功"); + props.onCancel(); + window.history.back(); + }; + + return ( + + + + ); +}; + +const RejectModal = Connect([NS_SPECIAL_DISPOSAL], true)(RejectModalComponent); +export default Connect([NS_SPECIAL_DISPOSAL], true)(Review); diff --git a/src/pages/Container/BranchCompany/Average/Postponement/index.js b/src/pages/Container/BranchCompany/Average/Postponement/index.js new file mode 100644 index 0000000..c7cda5f --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Postponement/index.js @@ -0,0 +1,9 @@ +function Postponement(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Postponement; diff --git a/src/pages/Container/BranchCompany/Average/Rectification/List/index.js b/src/pages/Container/BranchCompany/Average/Rectification/List/index.js new file mode 100644 index 0000000..97653e3 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Rectification/List/index.js @@ -0,0 +1,236 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space } from "antd"; +import dayjs from "dayjs"; +import { useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import Upload from "zy-react-library/components/Upload"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; +import useTable from "zy-react-library/hooks/useTable"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_RECTIFICATION } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const [temporarySafetyMeasuresModalOpen, setTemporarySafetyMeasuresModalOpen] = useState(false); + const [requestAnExtensionModalOpen, setRequestAnExtensionModalOpen] = useState(false); + const [currentId, setCurrentId] = useState(""); + const { tableProps, getData } = useTable(props["rectificationList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + }); + + return ( +
+ }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "隐患状态", dataIndex: "state", render: () => "未整改" }, + { + title: "操作", + width: 260, + fixed: "right", + render: (_, record) => ( + + + + + + + ), + }, + ]} + {...tableProps} + /> + { + setTemporarySafetyMeasuresModalOpen(false); + setCurrentId(""); + }} + getData={getData} + /> + { + setRequestAnExtensionModalOpen(false); + setCurrentId(""); + }} + getData={getData} + /> + + ); +} + +const TemporarySafetyMeasuresModalComponent = (props) => { + const [form] = Form.useForm(); + const onSubmit = async (values) => { + await props["rectificationAddTemporarySafetyMeasures"]({ id: props.id, ...values }); + message.success("操作成功"); + props.onCancel(); + props.getData(); + }; + + return ( + + + + ); +}; + +const RequestAnExtensionModalComponent = (props) => { + const [form] = Form.useForm(); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const onSubmit = async (values) => { + const { filePath } = await uploadFile({ files: values.files, params: { type: UPLOAD_FILE_TYPE_ENUM["138"] } }); + await props["rectificationRequestAnExtension"]({ hiddenId: props.id, ...values, disposalFile: filePath }); + message.success("操作成功"); + props.onCancel(); + props.getData(); + }; + + return ( + + }, + ]} + /> + + ); +}; + +const TemporarySafetyMeasuresModal = Connect([NS_RECTIFICATION], true)(TemporarySafetyMeasuresModalComponent); +const RequestAnExtensionModal = Connect([NS_RECTIFICATION], true)(RequestAnExtensionModalComponent); +export default Connect([NS_RECTIFICATION], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/Rectification/Review/index.js b/src/pages/Container/BranchCompany/Average/Rectification/Review/index.js new file mode 100644 index 0000000..dfeba5d --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Rectification/Review/index.js @@ -0,0 +1,219 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Col, Divider, Form, message, Row } from "antd"; +import dayjs from "dayjs"; +import { useState } from "react"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { NS_RECTIFICATION } from "~/enumerate/namespace"; + +function Rectification(props) { + const query = useGetUrlQuery(); + const [form] = Form.useForm(); + const status = Form.useWatch("status", form); + const isRectificationScheme = Form.useWatch("isRectificationScheme", form); + const hiddenUserAddCmds = Form.useWatch("hiddenUserAddCmds", form); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const [data, setData] = useState({}); + const onSubmit = async (values) => { + await uploadFile({ single: false, files: values.afterRectificationImageFiles, params: { type: UPLOAD_FILE_TYPE_ENUM["4"], foreignKey: query.hiddenId } }); + await uploadFile({ single: false, files: values.rectificationPlanImageFiles, params: { type: UPLOAD_FILE_TYPE_ENUM["8"], foreignKey: query.hiddenId } }); + await props["rectificationSave"]({ + id: query.id, + hiddenId: query.hiddenId, + ...values, + }); + message.success("操作成功"); + props.history.goBack(); + }; + const range = (start, end) => { + const result = []; + for (let i = start; i < end; i++) { + result.push(i); + } + return result; + }; + const disabledTime = (current) => { + if (current && current.isSame(dayjs(), "day")) { + return { + disabledHours: () => range(dayjs().hour() + 1, 24), + disabledMinutes: (selectedHour) => { + if (selectedHour === dayjs().hour()) { + return range(dayjs().minute() + 1, 60); + } + return []; + }, + disabledSeconds: (selectedHour, selectedMinute) => { + if (selectedHour === dayjs().hour() && selectedMinute === dayjs().minute()) { + return range(dayjs().second() + 1, 60); + } + return []; + }, + }; + } + return {}; + }; + return ( +
+ + { + setData(data); + form.setFieldValue("tempSafeMeasure", data.tempSafeMeasure); + }} + /> + 隐患整改 +
+ current && current > dayjs().endOf("day"), + disabledTime, + }, + }, + { name: "tempSafeMeasure", label: "临时安全措施" }, + { name: "afterRectificationImageFiles", label: "整改后图片", span: 24, render: }, + { + key: "acceptance", + customizeRender: true, + span: 24, + render: ( + <> + + {(fields, { add, remove }) => ( + <> + {fields.map((field, index) => ( + +
+ + { + form.setFieldValue(["hiddenUserAddCmds", field.name, "userId"], ""); + form.setFieldValue(["hiddenUserAddCmds", field.name, "userName"], ""); + }} + onGetLabel={(label) => { + form.setFieldValue(["hiddenUserAddCmds", field.name, "deptName"], label); + }} + /> + + + + + + + +
+ { + // 获取已存在的用户名 + const confirmUserName = data?.hiddenConfirmUserCO?.rectifyUserName; + const presetUserName = data?.hiddenUserPresetsCO?.rectifyUserName; + + // 验证是否与已有用户名相同 + if (value && (value === confirmUserName || value === presetUserName)) { + return Promise.reject(new Error("验收人不能与整改人相同")); + } + + return Promise.resolve(); + } }, + ] + } + name={[field.name, "userId"]} + > + form.setFieldValue(["hiddenUserAddCmds", field.name, "userName"], label)} + /> + + { + index >= 1 + ? + : + } +
+
+ + + + + + + + + ))} + + )} + + + ), + }, + { name: "isRectificationScheme", label: "整改方案", span: 24, render: FORM_ITEM_RENDER_ENUM.RADIO, items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }] }, + ...( + isRectificationScheme !== undefined + ? ( + isRectificationScheme === 1 + ? [ + { name: "governStanDards", label: "治理标准" }, + { name: "governMethod", label: "治理方法" }, + { name: "expenditure", label: "经费落实" }, + { name: "principal", label: "负责人员" }, + { name: "programming", label: "工时安排" }, + { name: "timeLimitFor", label: "时限要求" }, + { name: "jobRequireMent", label: "工作要求" }, + { name: "otherBusiness", label: "其他事项" }, + { name: "rectificationPlanImageFiles", label: "方案图片", span: 24, render: }, + ] + : [] + ) + : [] + ), + ] + ), + ]} + /> + + + ); +} + +export default Connect([NS_RECTIFICATION], true)(Rectification); diff --git a/src/pages/Container/BranchCompany/Average/Rectification/index.js b/src/pages/Container/BranchCompany/Average/Rectification/index.js new file mode 100644 index 0000000..47f68a3 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/Rectification/index.js @@ -0,0 +1,9 @@ +function Rectification(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Rectification; diff --git a/src/pages/Container/BranchCompany/Average/SpecialDisposal/List/index.js b/src/pages/Container/BranchCompany/Average/SpecialDisposal/List/index.js new file mode 100644 index 0000000..15ce320 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/SpecialDisposal/List/index.js @@ -0,0 +1,123 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +import dayjs from "dayjs"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_SPECIAL_DISPOSAL } from "~/enumerate/namespace"; + +function List(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["specialDisposalList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + params: { eqType: 1 }, + }); + + return ( +
+ }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "隐患状态", dataIndex: "state", render: () => "待处理特殊隐患" }, + { + title: "操作", + width: 150, + fixed: "right", + render: (_, record) => ( + + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_SPECIAL_DISPOSAL], true)(List); diff --git a/src/pages/Container/BranchCompany/Average/SpecialDisposal/Review/index.js b/src/pages/Container/BranchCompany/Average/SpecialDisposal/Review/index.js new file mode 100644 index 0000000..414e0c9 --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/SpecialDisposal/Review/index.js @@ -0,0 +1,137 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Divider, Form, message } from "antd"; +import FormBuilder from "zy-react-library/components/FormBuilder"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; +import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useUploadFile from "zy-react-library/hooks/useUploadFile"; +import { NS_SPECIAL_DISPOSAL } from "~/enumerate/namespace"; + +function Review(props) { + const query = useGetUrlQuery(); + const [form] = Form.useForm(); + const deptId = Form.useWatch("deptId", form); + const { loading: uploadFileLoading, uploadFile } = useUploadFile(); + const onSubmit = async (values) => { + const { filePath } = await uploadFile({ files: values.files, params: { type: UPLOAD_FILE_TYPE_ENUM["138"] } }); + await props["specialDisposalReview"]({ + ...values, + id: query.id, + hiddenId: query.hiddenId, + disposalFile: filePath, + }); + message.success("操作成功"); + props.history.goBack(); + }; + return ( +
+ + { + form.setFieldValue("tempSafeMeasure", data.tempSafeMeasure); + }} + /> + 特殊处理审核 +
+ { + form.setFieldValue("modifyRectifyPerson", 0); + form.setFieldValue("deptId", ""); + form.setFieldValue("deptName", ""); + form.setFieldValue("rectifyPersonId", ""); + form.setFieldValue("rectifyPersonName", ""); + }, + }, + }, + { + name: "disposalPlan", + label: "处置方案", + span: 24, + render: FORM_ITEM_RENDER_ENUM.TEXTAREA, + dependencies: ["state"], + hidden: formValues => !(formValues.state === 2), + }, + { + name: "files", + label: "处置方案附件", + span: 24, + render: , + dependencies: ["state"], + hidden: formValues => !(formValues.state === 2), + }, + { + name: "modifyRectifyPerson", + label: "是否更换整改负责人", + span: 24, + render: FORM_ITEM_RENDER_ENUM.RADIO, + items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }], + componentProps: { + onChange: () => { + form.setFieldValue("deptId", ""); + form.setFieldValue("deptName", ""); + form.setFieldValue("rectifyPersonId", ""); + form.setFieldValue("rectifyPersonName", ""); + }, + }, + dependencies: ["state"], + hidden: formValues => !(formValues.state === 1), + }, + { + name: "deptId", + label: "整改负责人部门", + render: ( + { + form.setFieldValue("rectifyPersonId", ""); + form.setFieldValue("rectifyPersonName", ""); + }} + onGetLabel={(label) => { + form.setFieldValue("deptName", label); + }} + /> + ), + dependencies: ["state", "modifyRectifyPerson"], + hidden: formValues => !(formValues.state === 1 && formValues.modifyRectifyPerson === 1), + }, + { name: "deptName", label: "整改负责人部门名称", onlyForLabel: true }, + { + name: "rectifyPersonId", + label: "整改负责人", + render: ( + form.setFieldValue("rectifyPersonName", label)} + /> + ), + dependencies: ["state", "modifyRectifyPerson"], + hidden: formValues => !(formValues.state === 1 && formValues.modifyRectifyPerson === 1), + }, + { name: "rectifyPersonName", label: "整改负责人名称", onlyForLabel: true }, + ]} + /> +
+
+ ); +} + +export default Connect([NS_SPECIAL_DISPOSAL], true)(Review); diff --git a/src/pages/Container/BranchCompany/Average/SpecialDisposal/index.js b/src/pages/Container/BranchCompany/Average/SpecialDisposal/index.js new file mode 100644 index 0000000..3b1401b --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/SpecialDisposal/index.js @@ -0,0 +1,9 @@ +function SpecialDisposal(props) { + return ( +
+ {props.children} +
+ ); +} + +export default SpecialDisposal; diff --git a/src/pages/Container/BranchCompany/Average/index.js b/src/pages/Container/BranchCompany/Average/index.js new file mode 100644 index 0000000..3d64bcc --- /dev/null +++ b/src/pages/Container/BranchCompany/Average/index.js @@ -0,0 +1,9 @@ +function Average(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Average; diff --git a/src/pages/Container/BranchCompany/index.js b/src/pages/Container/BranchCompany/index.js new file mode 100644 index 0000000..627f42d --- /dev/null +++ b/src/pages/Container/BranchCompany/index.js @@ -0,0 +1,9 @@ +function BranchCompany(props) { + return ( +
+ {props.children} +
+ ); +} + +export default BranchCompany; diff --git a/src/pages/Container/Supervision/Average/Average/CorpInfoList/index.js b/src/pages/Container/Supervision/Average/Average/CorpInfoList/index.js new file mode 100644 index 0000000..da61bbb --- /dev/null +++ b/src/pages/Container/Supervision/Average/Average/CorpInfoList/index.js @@ -0,0 +1,52 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +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_AVERAGE } from "~/enumerate/namespace"; + +function CorpInfoList(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["averageCorpInfoCountList"], { form }); + + return ( +
+ +
( + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_AVERAGE], true)(CorpInfoList); diff --git a/src/pages/Container/Supervision/Average/Average/HiddenList/index.js b/src/pages/Container/Supervision/Average/Average/HiddenList/index.js new file mode 100644 index 0000000..2e5d106 --- /dev/null +++ b/src/pages/Container/Supervision/Average/Average/HiddenList/index.js @@ -0,0 +1,285 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space, Spin } from "antd"; +import dayjs from "dayjs"; +import { useRef, useState } from "react"; +import { useReactToPrint } from "react-to-print"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; +import PrintIcon from "zy-react-library/components/Icon/PrintIcon"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM, HIDDEN_STATE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_AVERAGE } from "~/enumerate/namespace"; + +function HiddenList(props) { + const query = useGetUrlQuery(); + const { loading: downloadBlobLoading, downloadBlob } = useDownloadBlob(); + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [printModalOpen, setPrintModalOpen] = useState(false); + const [printData, setPrintData] = useState([]); + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["averageByCorpInfoList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + params: { + corpId: query.corpId, + }, + }); + + const onExportExcel = async () => { + if (selectedRowKeys.length === 0) { + message.error("请选中要导出的数据"); + return; + } + Modal.confirm({ + title: "导出确认", + content: "确定要导出excel吗?", + onOk: async () => { + await downloadBlob("/hidden/hidden/exportHiddenById", { + params: { ids: selectedRowKeys }, + }); + message.success("导出成功"); + }, + }); + }; + + return ( +
+ +
+ + }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "state", label: "隐患状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_STATE_ENUM }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { name: "checkUserName", label: "验收人" }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + headerTitle={query.corpName} + toolBarRender={() => ( + + + + + )} + columns={[ + { + title: "隐患来源", + dataIndex: "source", + render: (_, record) => getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "整改时间", dataIndex: "rectificationTime" }, + { title: "验收人", dataIndex: "hiddenYUserName", width: 100 }, + { + title: "隐患状态", + dataIndex: "state", + render: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }), + }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + + { + setPrintModalOpen(false); + setPrintData([]); + }} + /> + + ); +} + +const PrintModal = (props) => { + const contentRef = useRef(null); + const handlePrint = useReactToPrint({ + contentRef, + pageStyle: `@page { + size: landscape; + margin: 10px; + } + @media print { + body { + margin: 10px; + padding: 10px; + } + } + `, + documentTitle: "", + }); + return ( + +
getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患发现人", dataIndex: "createName" }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { title: "确认人", dataIndex: "confirmUserName" }, + { title: "整改负责人", dataIndex: "rectificationUserName" }, + { title: "隐患状态", dataIndex: "state", render: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }) }, + { title: "验收人", dataIndex: "hiddenYUserName" }, + ]} + /> +
+
+ + + + + + + + + + + + + + {(props.data || []).map(item => ( + + + + + + + + + + + ))} + +
隐患来源隐患描述隐患发现人隐患发现时间确认人整改负责人隐患状态验收人
{getLabelName({ list: HIDDEN_SOURCE_ENUM, status: item.source })}{item.hiddenDesc}{item.createName}{item.hiddenFindTime ? dayjs(item.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : ""}{item.confirmUserName}{item.rectificationUserName}{getLabelName({ list: HIDDEN_STATE_ENUM, status: item.state })}{item.hiddenYUserName}
+
+ + ); +}; + +export default Connect([NS_AVERAGE], true)(HiddenList); diff --git a/src/pages/Container/Supervision/Average/Average/index.js b/src/pages/Container/Supervision/Average/Average/index.js new file mode 100644 index 0000000..cdd5984 --- /dev/null +++ b/src/pages/Container/Supervision/Average/Average/index.js @@ -0,0 +1,9 @@ +function Ignore(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Ignore; diff --git a/src/pages/Container/Supervision/Average/HiddenView/index.js b/src/pages/Container/Supervision/Average/HiddenView/index.js new file mode 100644 index 0000000..41db77d --- /dev/null +++ b/src/pages/Container/Supervision/Average/HiddenView/index.js @@ -0,0 +1,11 @@ +import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj"; + +function HiddenView() { + return ( +
+ +
+ ); +} + +export default HiddenView; diff --git a/src/pages/Container/Supervision/Average/Ignore/CorpInfoList/index.js b/src/pages/Container/Supervision/Average/Ignore/CorpInfoList/index.js new file mode 100644 index 0000000..1bec23b --- /dev/null +++ b/src/pages/Container/Supervision/Average/Ignore/CorpInfoList/index.js @@ -0,0 +1,49 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +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_IGNORE } from "~/enumerate/namespace"; + +function CorpInfoList(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["ignoreCorpInfoCountList"], { form }); + + return ( +
+ + ( + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_IGNORE], true)(CorpInfoList); diff --git a/src/pages/Container/Supervision/Average/Ignore/HiddenList/index.js b/src/pages/Container/Supervision/Average/Ignore/HiddenList/index.js new file mode 100644 index 0000000..5f1e508 --- /dev/null +++ b/src/pages/Container/Supervision/Average/Ignore/HiddenList/index.js @@ -0,0 +1,154 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space, Spin } from "antd"; +import dayjs from "dayjs"; +import { useState } from "react"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_IGNORE } from "~/enumerate/namespace"; + +function HiddenList(props) { + const query = useGetUrlQuery(); + const { loading: downloadBlobLoading, downloadBlob } = useDownloadBlob(); + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["ignoreByCorpInfoList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + params: { + corpId: query.corpId, + }, + }); + + const onExportExcel = async () => { + if (selectedRowKeys.length === 0) { + message.error("请选中要导出的数据"); + return; + } + Modal.confirm({ + title: "导出确认", + content: "确定要导出excel吗?", + onOk: async () => { + await downloadBlob("/hidden/hidden/exportHiddenById", { + params: { ids: selectedRowKeys }, + }); + message.success("导出成功"); + }, + }); + }; + + return ( +
+ +
+ + }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + headerTitle={query.corpName} + toolBarRender={() => ( + + )} + columns={[ + { + title: "隐患来源", + dataIndex: "source", + render: (_, record) => getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { + title: "确认时间", + dataIndex: "confirmTime", + render: (_, record) => record.confirmTime ? dayjs(record.confirmTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { title: "隐患状态", dataIndex: "state", render: () => "已忽略" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + + + ); +} + +export default Connect([NS_IGNORE], true)(HiddenList); diff --git a/src/pages/Container/Supervision/Average/Ignore/index.js b/src/pages/Container/Supervision/Average/Ignore/index.js new file mode 100644 index 0000000..cdd5984 --- /dev/null +++ b/src/pages/Container/Supervision/Average/Ignore/index.js @@ -0,0 +1,9 @@ +function Ignore(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Ignore; diff --git a/src/pages/Container/Supervision/Average/SpecialDisposal/CorpInfoList/index.js b/src/pages/Container/Supervision/Average/SpecialDisposal/CorpInfoList/index.js new file mode 100644 index 0000000..3438384 --- /dev/null +++ b/src/pages/Container/Supervision/Average/SpecialDisposal/CorpInfoList/index.js @@ -0,0 +1,52 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, Space } from "antd"; +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_SPECIAL_DISPOSAL } from "~/enumerate/namespace"; + +function CorpInfoList(props) { + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["specialDisposalCorpInfoCountList"], { form }); + + return ( +
+ +
( + + + + ), + }, + ]} + {...tableProps} + /> + + ); +} + +export default Connect([NS_SPECIAL_DISPOSAL], true)(CorpInfoList); diff --git a/src/pages/Container/Supervision/Average/SpecialDisposal/HiddenList/index.js b/src/pages/Container/Supervision/Average/SpecialDisposal/HiddenList/index.js new file mode 100644 index 0000000..d98db07 --- /dev/null +++ b/src/pages/Container/Supervision/Average/SpecialDisposal/HiddenList/index.js @@ -0,0 +1,165 @@ +import { Connect } from "@cqsjjb/jjb-dva-runtime"; +import { Button, Form, message, Modal, Space, Spin } from "antd"; +import dayjs from "dayjs"; +import { useState } from "react"; +import HeaderBack from "zy-react-library/components/HeaderBack"; +import ExportIcon from "zy-react-library/components/Icon/ExportIcon"; +import Search from "zy-react-library/components/Search"; +import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; +import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary"; +import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj"; +import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj"; +import Table from "zy-react-library/components/Table"; +import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; +import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj"; +import useDownloadBlob from "zy-react-library/hooks/useDownloadBlob"; +import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; +import useTable from "zy-react-library/hooks/useTable"; +import { getLabelName } from "zy-react-library/utils"; +import { NS_SPECIAL_DISPOSAL } from "~/enumerate/namespace"; + +function HiddenList(props) { + const query = useGetUrlQuery(); + const { loading: downloadBlobLoading, downloadBlob } = useDownloadBlob(); + const [selectedRowKeys, setSelectedRowKeys] = useState([]); + const [form] = Form.useForm(); + const { tableProps, getData } = useTable(props["specialDisposalByCorpInfoList"], { + form, + transform: formData => ({ + hiddenFindTime: formData.hiddenFindTime?.[0], + hiddenFindTimeLe: formData.hiddenFindTime?.[1], + }), + params: { + corpId: query.corpId, + }, + }); + + const onExportExcel = async () => { + if (selectedRowKeys.length === 0) { + message.error("请选中要导出的数据"); + return; + } + Modal.confirm({ + title: "导出确认", + content: "确定要导出excel吗?", + onOk: async () => { + await downloadBlob("/hidden/hidden/exportHiddenById", { + params: { ids: selectedRowKeys }, + }); + message.success("导出成功"); + }, + }); + }; + + return ( +
+ +
+ + }, + { + name: "hiddenType", + label: "隐患类型", + render: , + }, + { + name: "hiddenPart", + label: "隐患部位", + render: , + }, + { + name: "hiddenLevel", + label: "隐患级别", + render: , + }, + { name: "creatorName", label: "隐患发现人" }, + { name: "confirmUserName", label: "确认人" }, + { name: "rectificationUserName", label: "整改人" }, + { name: "rectificationDeptId", label: "整改部门", render: }, + { + name: "isRelated", + label: "是否相关方", + render: FORM_ITEM_RENDER_ENUM.SELECT, + items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }], + }, + ]} + form={form} + onFinish={getData} + /> +
{ + setSelectedRowKeys(selectedRowKeys); + }, + }} + headerTitle={query.corpName} + toolBarRender={() => ( + + )} + columns={[ + { + title: "隐患来源", + dataIndex: "source", + render: (_, record) => getLabelName({ list: HIDDEN_SOURCE_ENUM, status: record.source }), + }, + { title: "隐患描述", dataIndex: "hiddenDesc" }, + { title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 }, + { title: "隐患类型", dataIndex: "hiddenTypeName" }, + { title: "隐患部位", dataIndex: "hiddenPartName" }, + { title: "隐患发现部门", dataIndex: "hiddenFindDeptName" }, + { title: "隐患发现人", dataIndex: "createName", width: 130 }, + { + title: "隐患发现时间", + dataIndex: "hiddenFindTime", + render: (_, record) => record.hiddenFindTime ? dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : "", + }, + { + title: "整改类型", + dataIndex: "rectificationType", + width: 100, + render: (_, record) => getLabelName({ list: HIDDEN_RECTIFICATION_TYPE_ENUM, status: record.rectificationType }), + }, + { title: "确认人", dataIndex: "confirmUserName", width: 100 }, + { title: "整改人", dataIndex: "rectificationUserName", width: 100 }, + { title: "隐患状态", dataIndex: "state", render: () => "待处理特殊隐患" }, + { + title: "操作", + width: 100, + fixed: "right", + render: (_, record) => ( + + + + ), + }, + ]} + {...tableProps} + /> + + + + ); +} + +export default Connect([NS_SPECIAL_DISPOSAL], true)(HiddenList); diff --git a/src/pages/Container/Supervision/Average/SpecialDisposal/index.js b/src/pages/Container/Supervision/Average/SpecialDisposal/index.js new file mode 100644 index 0000000..cdd5984 --- /dev/null +++ b/src/pages/Container/Supervision/Average/SpecialDisposal/index.js @@ -0,0 +1,9 @@ +function Ignore(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Ignore; diff --git a/src/pages/Container/Supervision/Average/index.js b/src/pages/Container/Supervision/Average/index.js new file mode 100644 index 0000000..3d64bcc --- /dev/null +++ b/src/pages/Container/Supervision/Average/index.js @@ -0,0 +1,9 @@ +function Average(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Average; diff --git a/src/pages/Container/Supervision/index.js b/src/pages/Container/Supervision/index.js new file mode 100644 index 0000000..eda14bf --- /dev/null +++ b/src/pages/Container/Supervision/index.js @@ -0,0 +1,9 @@ +function Supervision(props) { + return ( +
+ {props.children} +
+ ); +} + +export default Supervision;