init
parent
3c06f3a91e
commit
421662ae0d
|
|
@ -9,7 +9,7 @@ module.exports = {
|
|||
// 应用后端分支名称,部署上线需要
|
||||
javaGitBranch: "<branch-name>",
|
||||
// 接口服务地址
|
||||
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",
|
||||
// 是否自动打开浏览器
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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`,
|
||||
);
|
||||
|
|
@ -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",
|
||||
);
|
||||
|
|
@ -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`,
|
||||
);
|
||||
|
|
@ -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`,
|
||||
);
|
||||
|
|
@ -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",
|
||||
);
|
||||
|
|
@ -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`,
|
||||
);
|
||||
|
|
@ -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}`,
|
||||
);
|
||||
|
|
@ -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",
|
||||
);
|
||||
|
|
@ -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",
|
||||
);
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ name: "creatorName", label: "隐患发现人" },
|
||||
{ name: "confirmUserName", label: "确认人" },
|
||||
{ name: "rectificationUserName", label: "整改人" },
|
||||
{ name: "rectificationDeptId", label: "整改部门", render: <DepartmentSelectTree /> },
|
||||
{ name: "checkUserName", label: "验收人" },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
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: () => "待验收" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 150,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./review?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
验收
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_ACCEPTANCE], true)(List);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="隐患验收" />
|
||||
<HiddenInfo isShowHeaderBack={false} />
|
||||
<Divider orientation="left">隐患验收</Divider>
|
||||
<div style={{ paddingBottom: 20 }}>
|
||||
<FormBuilder
|
||||
values={{
|
||||
status: 1,
|
||||
}}
|
||||
form={form}
|
||||
loading={props.acceptance.acceptanceLoading || uploadFileLoading}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{
|
||||
name: "status",
|
||||
label: "是否合格",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }],
|
||||
},
|
||||
{
|
||||
name: "repulseCause",
|
||||
label: "打回意见",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
||||
dependencies: ["status"],
|
||||
hidden: formValues => !(formValues.status === 0),
|
||||
},
|
||||
...(
|
||||
status === 1
|
||||
? [
|
||||
{ name: "descr", label: "验收描述" },
|
||||
{ name: "rectificationTime", label: "验收时间", render: FORM_ITEM_RENDER_ENUM.DATETIME },
|
||||
{ name: "files", label: "验收图片", required: false, render: <Upload /> },
|
||||
]
|
||||
: []
|
||||
),
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_ACCEPTANCE], true)(Rectification);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Acceptance(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Acceptance;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ 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}
|
||||
/>
|
||||
<Table
|
||||
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: "state", render: () => "待确认" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./review?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
确认
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_CONFIRM], true)(List);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="确认" />
|
||||
<HiddenInfo
|
||||
isShowHeaderBack={false}
|
||||
onGetData={(data) => {
|
||||
setData(data);
|
||||
}}
|
||||
/>
|
||||
<Divider orientation="left">隐患确认</Divider>
|
||||
<div style={{ paddingBottom: 20 }}>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
loading={props.confirm.confirmLoading}
|
||||
showCancelButton={false}
|
||||
submitButtonText="通过"
|
||||
onFinish={onSubmit}
|
||||
extraActionButtons={[
|
||||
<Button key="reject" type="primary" danger onClick={() => setRejectModalOpen(true)}>打回</Button>,
|
||||
<Button key="back" onClick={() => props.history.goBack()}>取消</Button>,
|
||||
]}
|
||||
options={[
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
span: 24,
|
||||
render: (
|
||||
<HiddenLevelSelectTree
|
||||
isShowMajor={false}
|
||||
isShowLarger={false}
|
||||
onChange={() => {
|
||||
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: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
form.setFieldValue("userId", "");
|
||||
form.setFieldValue("userName", "");
|
||||
}}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("deptName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "deptName", label: "整改负责人部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "userId",
|
||||
label: "整改负责人",
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: deptId }}
|
||||
onGetLabel={label => 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: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
form.setFieldValue("userId", "");
|
||||
form.setFieldValue("userName", "");
|
||||
}}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("deptName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "deptName", label: "整改负责人部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "userId",
|
||||
label: "整改负责人",
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: deptId }}
|
||||
onGetLabel={label => 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: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
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: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: checkDeptId }}
|
||||
onGetLabel={label => form.setFieldValue("checkUserName", label)}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "checkUserName", label: "验收人名称", onlyForLabel: true },
|
||||
]),
|
||||
]
|
||||
: []
|
||||
),
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<RejectModal open={rejectModalOpen} onCancel={() => setRejectModalOpen(false)} data={data} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="驳回原因"
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.confirm.confirmLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
onFinish={onSubmit}
|
||||
showActionButtons={false}
|
||||
span={24}
|
||||
labelCol={{ span: 6 }}
|
||||
options={[
|
||||
{ name: "repulseCause", label: "意见", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const RejectModal = Connect([NS_CONFIRM], true)(RejectModalComponent);
|
||||
export default Connect([NS_CONFIRM], true)(Confirm);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Confirm(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Confirm;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
labelCol={{ span: 4 }}
|
||||
options={[
|
||||
{ name: "likeName", label: "用户名" },
|
||||
{ name: "likeUserName", label: "姓名" },
|
||||
{ name: "eqDeptId", label: "部门", render: <DepartmentSelectTree /> },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
toolBarRender={() => (
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<AddIcon />}
|
||||
onClick={() => {
|
||||
setAddModalOpen(true);
|
||||
}}
|
||||
>
|
||||
新增
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "用户名", dataIndex: "name" },
|
||||
{ title: "姓名", dataIndex: "userName" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "岗位", dataIndex: "postName" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
<AddModal open={addModalOpen} onCancel={() => setAddModalOpen(false)} getData={getData} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="新增隐患确认人"
|
||||
width={800}
|
||||
open={props.open}
|
||||
onCancel={() => {
|
||||
props.onCancel();
|
||||
form.resetFields();
|
||||
}}
|
||||
onOk={form.submit}
|
||||
loading={props.confirmUser.confirmUserLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{
|
||||
name: "deptId",
|
||||
label: "部门",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
form.setFieldValue("userId", "");
|
||||
form.setFieldValue("confirmUsers", "");
|
||||
}}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("deptName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "deptName", label: "部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "userId",
|
||||
label: "隐患确认人",
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
mode="multiple"
|
||||
params={{ departmentId: deptId }}
|
||||
onGetOption={(option) => {
|
||||
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 },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const AddModal = Connect([NS_CONFIRM_USER], true)(AddModalComponent);
|
||||
export default Connect([NS_CONFIRM_USER], true)(HiddenConfirmUser);
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj";
|
||||
|
||||
function HiddenView() {
|
||||
return (
|
||||
<div>
|
||||
<HiddenInfo />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default HiddenView;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{ 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}
|
||||
/>
|
||||
<Table
|
||||
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) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_IGNORE], true)(List);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Ignore(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Ignore;
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title={query.id ? "编辑" : "新增"} />
|
||||
<div style={{ paddingBottom: 10 }}>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
loading={deleteFileLoading || uploadFileLoading || getFileLoading || aiHiddenImageRecognizeLoading || props.ledger.ledgerLoading}
|
||||
values={{
|
||||
isRelated: 2,
|
||||
rectificationType: 2,
|
||||
}}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{
|
||||
name: "hiddenImageFiles",
|
||||
label: "隐患图片",
|
||||
render: (
|
||||
<Upload
|
||||
maxCount={isAi === 1 ? 1 : 4}
|
||||
onRemove={() => {
|
||||
if (isAi === 1) {
|
||||
form.setFieldValue("isAi", "");
|
||||
form.setFieldValue("hiddenDesc", "");
|
||||
form.setFieldValue("legalBasis", "");
|
||||
form.setFieldValue("rectificationDescr", "");
|
||||
}
|
||||
}}
|
||||
onGetRemoveFile={(file) => {
|
||||
setDeleteHiddenImageFiles([...deleteHiddenImageFiles, file]);
|
||||
}}
|
||||
tipContent={(
|
||||
<>
|
||||
<img
|
||||
src={ai_recognize}
|
||||
alt="ai_recognize"
|
||||
style={{ width: 150, height: 30, cursor: "pointer", marginBottom: 10 }}
|
||||
onClick={getAIHiddenImageRecognize}
|
||||
/>
|
||||
<div>
|
||||
最多上传
|
||||
{isAi === 1 ? 1 : 4}
|
||||
个文件,并且只能上传jpg、jpeg、png格式的文件。
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
),
|
||||
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: (
|
||||
<Form.Item label="隐患部位" required>
|
||||
<div style={{ display: "flex", gap: 10 }}>
|
||||
<Form.Item name="hiddenPart" noStyle rules={[{ required: true, message: "请选择隐患部位" }]}>
|
||||
{
|
||||
hiddenPartType === "select"
|
||||
? <HiddenPartSelectTree />
|
||||
: <Input placeholder="请输入隐患部位" />
|
||||
}
|
||||
</Form.Item>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={() => {
|
||||
if (hiddenPartType === "select")
|
||||
setHiddenPartType("input");
|
||||
if (hiddenPartType === "input")
|
||||
setHiddenPartType("select");
|
||||
form.setFieldValue("hiddenPart", "");
|
||||
}}
|
||||
>
|
||||
{hiddenPartType === "select" ? "输入" : "选择"}
|
||||
</Button>
|
||||
</div>
|
||||
</Form.Item>
|
||||
),
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: (
|
||||
<HiddenLevelSelectTree
|
||||
isShowNeglect={false}
|
||||
onGetLabel={label => form.setFieldValue("hiddenLevelName", label)}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "hiddenLevelName", label: "隐患级别名称", onlyForLabel: true },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: (
|
||||
<DictionarySelectTree
|
||||
dictValue="hiddenType"
|
||||
onGetLabel={label => 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: <Map required={false} />, span: 24 },
|
||||
{ name: "positionDesc", label: "隐患位置描述", required: false, span: 24 },
|
||||
{
|
||||
name: "hiddenVideoFiles",
|
||||
label: "隐患视频",
|
||||
render: (
|
||||
<Upload
|
||||
fileType="video"
|
||||
onGetRemoveFile={(file) => {
|
||||
setDeleteHiddenVideoFiles([...deleteHiddenVideoFiles, file]);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
span: 24,
|
||||
required: false,
|
||||
},
|
||||
{
|
||||
name: "hiddenFindDept",
|
||||
label: "隐患发现部门",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
form.setFieldValue("creatorId", "");
|
||||
form.setFieldValue("creatorName", "");
|
||||
}}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("hiddenFindDeptName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "hiddenFindDeptName", label: "隐患发现部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "creatorId",
|
||||
label: "隐患发现人",
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: hiddenFindDept }}
|
||||
onGetLabel={label => 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: (
|
||||
<Upload onGetRemoveFile={(file) => {
|
||||
setDeleteAfterRectificationImageFiles([...deleteAfterRectificationImageFiles, file]);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
span: 24,
|
||||
dependencies: ["rectificationType"],
|
||||
hidden: formValues => !(formValues.rectificationType === 1),
|
||||
},
|
||||
{
|
||||
name: "rectificationDeptId",
|
||||
label: "整改部门",
|
||||
required: false,
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
form.setFieldValue("rectificationUserId", "");
|
||||
form.setFieldValue("rectificationUserName", "");
|
||||
}}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("rectificationDeptName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "rectificationDeptName", label: "整改部门名称", onlyForLabel: true },
|
||||
{
|
||||
name: "rectificationUserId",
|
||||
label: "整改人",
|
||||
required: false,
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: rectificationDeptId }}
|
||||
onGetLabel={label => form.setFieldValue("rectificationUserName", label)}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "rectificationUserName", label: "整改人名称", onlyForLabel: true },
|
||||
{
|
||||
name: "checkDeptId",
|
||||
label: "验收部门",
|
||||
required: false,
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
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: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: checkDeptId }}
|
||||
onGetLabel={label => form.setFieldValue("hiddenYUserName", label)}
|
||||
/>
|
||||
),
|
||||
dependencies: ["rectificationType"],
|
||||
hidden: formValues => !(formValues.rectificationType === 1),
|
||||
},
|
||||
{ name: "hiddenYUserName", label: "验收人名称", onlyForLabel: true },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_LEDGER, NS_CONFIRM_USER, NS_PART], true)(Add);
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Spin spinning={downloadBlobLoading}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: (
|
||||
<HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />
|
||||
),
|
||||
},
|
||||
{ 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: <DepartmentSelectTree /> },
|
||||
{ name: "checkUserName", label: "验收人" },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => {
|
||||
setSelectedRowKeys(selectedRowKeys);
|
||||
},
|
||||
}}
|
||||
toolBarRender={() => (
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<AddIcon />}
|
||||
onClick={() => {
|
||||
props.history.push("./add");
|
||||
}}
|
||||
>
|
||||
新增
|
||||
</Button>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<PrintIcon />}
|
||||
onClick={() => {
|
||||
if (selectedRowKeys.length === 0) {
|
||||
message.error("请选中要打印的数据");
|
||||
return;
|
||||
}
|
||||
setPrintModalOpen(true);
|
||||
setPrintData(tableProps.dataSource.filter(item => selectedRowKeys.includes(item.id)));
|
||||
}}
|
||||
>
|
||||
打印
|
||||
</Button>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<ExportIcon />}
|
||||
onClick={() => {
|
||||
onExportExcel();
|
||||
}}
|
||||
>
|
||||
导出
|
||||
</Button>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<ExportIcon />}
|
||||
onClick={() => {
|
||||
const hiddenFindTime = form.getFieldValue("hiddenFindTime");
|
||||
if (!hiddenFindTime) {
|
||||
message.error("请选择隐患发现时间");
|
||||
return;
|
||||
}
|
||||
if (hiddenFindTime.filter(Boolean).length === 0) {
|
||||
message.error("请选择隐患发现时间");
|
||||
return;
|
||||
}
|
||||
setExportByColumnModalOpen(true);
|
||||
}}
|
||||
>
|
||||
按列导出
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
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) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
{
|
||||
record.state === 201 && (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./add?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
<Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</Spin>
|
||||
<ExportByColumnModal
|
||||
open={exportByColumnModalOpen}
|
||||
hiddenFindTime={form.getFieldValue("hiddenFindTime")}
|
||||
onCancel={() => setExportByColumnModalOpen(false)}
|
||||
/>
|
||||
<PrintModal
|
||||
open={printModalOpen}
|
||||
data={printData}
|
||||
onCancel={() => {
|
||||
setPrintModalOpen(false);
|
||||
setPrintData([]);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="按列导出"
|
||||
width={800}
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
loading={loading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{
|
||||
name: "exportFields",
|
||||
label: "导出内容",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items,
|
||||
componentProps: {
|
||||
mode: "multiple",
|
||||
},
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="打印"
|
||||
width={1500}
|
||||
okText="打印"
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={handlePrint}
|
||||
>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={false}
|
||||
dataSource={props.data}
|
||||
pagination={false}
|
||||
columns={[
|
||||
{ title: "排查时间", dataIndex: "hiddenFindTime", render: (_, record) => 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) : "",
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<div ref={contentRef}>
|
||||
<table className="print-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>排查时间</th>
|
||||
<th>检查人</th>
|
||||
<th>责任部门</th>
|
||||
<th>事故隐患</th>
|
||||
<th>隐患等级</th>
|
||||
<th>治理措施</th>
|
||||
<th>完成时限</th>
|
||||
<th>整改责任人</th>
|
||||
<th>验收人员</th>
|
||||
<th>验收时间</th>
|
||||
<th>验收结果</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{(props.data || []).map(item => (
|
||||
<tr key={item.id}>
|
||||
<td>{dayjs(item.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss")}</td>
|
||||
<td>{item.createName}</td>
|
||||
<td>{item.hiddenFindDeptName}</td>
|
||||
<td>{item.hiddenDesc}</td>
|
||||
<td>{item.hiddenLevelName}</td>
|
||||
<td>{item.RECTIFYDESCR}</td>
|
||||
<td>{item.RECTIFICATIONDEADLINE}</td>
|
||||
<td>{item.rectificationUserName}</td>
|
||||
<td>{item.state === 301 ? item.hiddenYUserName : ""}</td>
|
||||
<td>{item.hiddenYTime}</td>
|
||||
<td>{item.state === 301 ? getIsQualified(item.isSuccess) : ""}</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const ExportByColumnModal = Connect([NS_LEDGER], true)(ExportByColumnModalComponent);
|
||||
export default Connect([NS_LEDGER], true)(List);
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Ledger(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Ledger;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<div style={{ display: "flex", gap: 20 }}>
|
||||
<div style={{ width: 300 }}>
|
||||
<Spin spinning={props.part.partLoading}>
|
||||
<BasicLeftTree
|
||||
treeData={treeData}
|
||||
nameKey="hiddenregion"
|
||||
idKey="hiddenregionId"
|
||||
onGetNodePaths={(event) => {
|
||||
const hiddenregion = event.at(-1).hiddenregion;
|
||||
const hiddenregionId = event.at(-1).hiddenregionId;
|
||||
getNextLevel(hiddenregion, hiddenregionId);
|
||||
}}
|
||||
/>
|
||||
</Spin>
|
||||
</div>
|
||||
<div style={{ flex: 1 }}>
|
||||
<Table
|
||||
toolBarRender={() => (
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<AddIcon />}
|
||||
onClick={() => {
|
||||
setAddModalOpen(true);
|
||||
}}
|
||||
>
|
||||
新增
|
||||
</Button>
|
||||
{
|
||||
parentId && (
|
||||
<Button
|
||||
icon={<BackIcon />}
|
||||
onClick={() => {
|
||||
props.history.goBack();
|
||||
}}
|
||||
>
|
||||
返回
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
</>
|
||||
)}
|
||||
columns={[
|
||||
{
|
||||
title: "区域/设备名称",
|
||||
dataIndex: "hiddenregion",
|
||||
render: (_, record) => (
|
||||
<Button
|
||||
type="link"
|
||||
icon={<RightOutlined />}
|
||||
iconPosition="end"
|
||||
onClick={() => {
|
||||
const hiddenregion = record.hiddenregion;
|
||||
const hiddenregionId = record.hiddenregionId;
|
||||
getNextLevel(hiddenregion, hiddenregionId);
|
||||
}}
|
||||
>
|
||||
{record.hiddenregion}
|
||||
</Button>
|
||||
),
|
||||
},
|
||||
{ title: "负责人部门", dataIndex: "responsibleDeptName" },
|
||||
{ title: "负责人", dataIndex: "responsibleUserName" },
|
||||
{ title: "排序", dataIndex: "sortindex" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 150,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setAddModalOpen(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
编辑
|
||||
</Button>
|
||||
<Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<AddModal
|
||||
open={addModalOpen}
|
||||
id={currentId}
|
||||
parentName={parentName}
|
||||
parentId={parentId}
|
||||
getData={getData}
|
||||
getTreeData={getTreeData}
|
||||
onCancel={() => {
|
||||
setAddModalOpen(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title={props.id ? "编辑" : "新增"}
|
||||
width={800}
|
||||
open={props.open}
|
||||
onCancel={() => {
|
||||
props.onCancel();
|
||||
form.resetFields();
|
||||
}}
|
||||
onOk={form.submit}
|
||||
loading={props.part.partLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 10 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{ name: "parentName", label: "上级区域/设备名称", required: false, render: <Tag color="blue">{props.parentName}</Tag> },
|
||||
{ name: "hiddenregion", label: "区域/设备名称" },
|
||||
{
|
||||
name: "responsibleDeptId",
|
||||
label: "负责部门",
|
||||
span: 12,
|
||||
required: false,
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
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: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: responsibleDeptId }}
|
||||
onGetLabel={label => 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 },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const AddModal = Connect([NS_PART], true)(AddModalComponent);
|
||||
export default Connect([NS_PART], true)(Part);
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ name: "creatorName", label: "隐患发现人" },
|
||||
{ name: "confirmUserName", label: "确认人" },
|
||||
{ name: "rectificationUserName", label: "整改人" },
|
||||
{ name: "rectificationDeptId", label: "整改部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
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: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }) },
|
||||
{
|
||||
title: "操作",
|
||||
width: 150,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./review?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
审核
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_SPECIAL_DISPOSAL], true)(List);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="延期审核" />
|
||||
<HiddenInfo isShowHeaderBack={false} />
|
||||
<div style={{ paddingBottom: 20, textAlign: "center" }}>
|
||||
<Space>
|
||||
<Button type="primary" onClick={onSubmit}>通过</Button>
|
||||
<Button key="reject" type="primary" danger onClick={() => setRejectModalOpen(true)}>打回</Button>
|
||||
<Button key="back" onClick={() => props.history.goBack()}>取消</Button>
|
||||
</Space>
|
||||
</div>
|
||||
<RejectModal open={rejectModalOpen} onCancel={() => setRejectModalOpen(false)} data={{ id: query.id, hiddenId: query.hiddenId }} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="驳回原因"
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.specialDisposal.specialDisposalLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
onFinish={onSubmit}
|
||||
showActionButtons={false}
|
||||
span={24}
|
||||
labelCol={{ span: 6 }}
|
||||
options={[
|
||||
{ name: "examine", label: "意见", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const RejectModal = Connect([NS_SPECIAL_DISPOSAL], true)(RejectModalComponent);
|
||||
export default Connect([NS_SPECIAL_DISPOSAL], true)(Review);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Postponement(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Postponement;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ name: "creatorName", label: "隐患发现人" },
|
||||
{ name: "confirmUserName", label: "确认人" },
|
||||
{ name: "rectificationUserName", label: "整改人" },
|
||||
{ name: "rectificationDeptId", label: "整改部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
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: 260,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./review?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
整改
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setTemporarySafetyMeasuresModalOpen(true);
|
||||
setCurrentId(record.id);
|
||||
}}
|
||||
>
|
||||
临时安全措施
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
setRequestAnExtensionModalOpen(true);
|
||||
setCurrentId(record.hiddenId);
|
||||
}}
|
||||
>
|
||||
申请延期
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
<TemporarySafetyMeasuresModal
|
||||
id={currentId}
|
||||
open={temporarySafetyMeasuresModalOpen}
|
||||
onCancel={() => {
|
||||
setTemporarySafetyMeasuresModalOpen(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
getData={getData}
|
||||
/>
|
||||
<RequestAnExtensionModal
|
||||
id={currentId}
|
||||
open={requestAnExtensionModalOpen}
|
||||
onCancel={() => {
|
||||
setRequestAnExtensionModalOpen(false);
|
||||
setCurrentId("");
|
||||
}}
|
||||
getData={getData}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="添加临时安全措施"
|
||||
width={800}
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
loading={props.rectification.rectificationLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{ name: "tempSafeMeasure", label: "临时安全措施", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="申请延期"
|
||||
width={800}
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
loading={props.rectification.rectificationLoading || uploadFileLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{ name: "delayTime", label: "申请延期日期", render: FORM_ITEM_RENDER_ENUM.DATE },
|
||||
{ name: "disposalPlan", label: "处置方案", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
{ name: "files", label: "处置方案附件", required: false, render: <Upload fileType="document" maxCount={1} /> },
|
||||
]}
|
||||
/>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
const TemporarySafetyMeasuresModal = Connect([NS_RECTIFICATION], true)(TemporarySafetyMeasuresModalComponent);
|
||||
const RequestAnExtensionModal = Connect([NS_RECTIFICATION], true)(RequestAnExtensionModalComponent);
|
||||
export default Connect([NS_RECTIFICATION], true)(List);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="整改" />
|
||||
<HiddenInfo
|
||||
isShowHeaderBack={false}
|
||||
onGetData={(data) => {
|
||||
setData(data);
|
||||
form.setFieldValue("tempSafeMeasure", data.tempSafeMeasure);
|
||||
}}
|
||||
/>
|
||||
<Divider orientation="left">隐患整改</Divider>
|
||||
<div style={{ paddingBottom: 20 }}>
|
||||
<FormBuilder
|
||||
values={{
|
||||
status: 1,
|
||||
hiddenUserAddCmds: [
|
||||
{ deptId: "", deptName: "", userId: "", userName: "", type: 300 },
|
||||
],
|
||||
}}
|
||||
form={form}
|
||||
loading={uploadFileLoading || props.rectification.rectificationLoading}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{
|
||||
name: "status",
|
||||
label: "是否正常整改",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 0, name: "否" }],
|
||||
},
|
||||
...(
|
||||
status === 0
|
||||
? [
|
||||
{ name: "repulseCause", span: 24, label: "无法正常整改原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]
|
||||
: [
|
||||
{ name: "descr", label: "整改描述" },
|
||||
{ name: "investmentFunds", label: "投入资金", render: FORM_ITEM_RENDER_ENUM.NUMBER, componentProps: { addonAfter: "元" } },
|
||||
{
|
||||
name: "rectificationTime",
|
||||
label: "整改时间",
|
||||
render: FORM_ITEM_RENDER_ENUM.DATETIME,
|
||||
componentProps: {
|
||||
disabledDate: current => current && current > dayjs().endOf("day"),
|
||||
disabledTime,
|
||||
},
|
||||
},
|
||||
{ name: "tempSafeMeasure", label: "临时安全措施" },
|
||||
{ name: "afterRectificationImageFiles", label: "整改后图片", span: 24, render: <Upload /> },
|
||||
{
|
||||
key: "acceptance",
|
||||
customizeRender: true,
|
||||
span: 24,
|
||||
render: (
|
||||
<>
|
||||
<Form.List name="hiddenUserAddCmds">
|
||||
{(fields, { add, remove }) => (
|
||||
<>
|
||||
{fields.map((field, index) => (
|
||||
<Row gutter={24} key={field.key}>
|
||||
<Col span={12}>
|
||||
<Form.Item label="验收部门" rules={[{ required: true, message: "请选择验收部门" }]} name={[field.name, "deptId"]}>
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
form.setFieldValue(["hiddenUserAddCmds", field.name, "userId"], "");
|
||||
form.setFieldValue(["hiddenUserAddCmds", field.name, "userName"], "");
|
||||
}}
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue(["hiddenUserAddCmds", field.name, "deptName"], label);
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item label="验收部门名称" noStyle name={[field.name, "deptName"]}>
|
||||
<input type="hidden" />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item label="验收人" required>
|
||||
<div style={{ display: "flex", gap: 10 }}>
|
||||
<Form.Item
|
||||
noStyle
|
||||
rules={
|
||||
[
|
||||
{ required: true, message: "请选择验收人" },
|
||||
{ validator: (_, value) => {
|
||||
// 获取已存在的用户名
|
||||
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"]}
|
||||
>
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: hiddenUserAddCmds?.[field.name]?.deptId || "" }}
|
||||
onGetLabel={label => form.setFieldValue(["hiddenUserAddCmds", field.name, "userName"], label)}
|
||||
/>
|
||||
</Form.Item>
|
||||
{
|
||||
index >= 1
|
||||
? <Button type="primary" danger onClick={() => remove(field.name)}>删除</Button>
|
||||
: <Button type="primary" onClick={() => add({ deptId: "", deptName: "", userId: "", userName: "", type: 300 })}>新增</Button>
|
||||
}
|
||||
</div>
|
||||
</Form.Item>
|
||||
<Form.Item label="验收人名称" noStyle name={[field.name, "userName"]}>
|
||||
<input type="hidden" />
|
||||
</Form.Item>
|
||||
<Form.Item label="用户类型" noStyle name={[field.name, "type"]}>
|
||||
<input type="hidden" />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
))}
|
||||
</>
|
||||
)}
|
||||
</Form.List>
|
||||
</>
|
||||
),
|
||||
},
|
||||
{ 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: <Upload /> },
|
||||
]
|
||||
: []
|
||||
)
|
||||
: []
|
||||
),
|
||||
]
|
||||
),
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_RECTIFICATION], true)(Rectification);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Rectification(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Rectification;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ name: "creatorName", label: "隐患发现人" },
|
||||
{ name: "confirmUserName", label: "确认人" },
|
||||
{ name: "rectificationUserName", label: "整改人" },
|
||||
{ name: "rectificationDeptId", label: "整改部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
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: 150,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./review?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
审核
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_SPECIAL_DISPOSAL], true)(List);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="特殊处理审核" />
|
||||
<HiddenInfo
|
||||
isShowHeaderBack={false}
|
||||
onGetData={(data) => {
|
||||
form.setFieldValue("tempSafeMeasure", data.tempSafeMeasure);
|
||||
}}
|
||||
/>
|
||||
<Divider orientation="left">特殊处理审核</Divider>
|
||||
<div style={{ paddingBottom: 20 }}>
|
||||
<FormBuilder
|
||||
values={{
|
||||
state: 2,
|
||||
}}
|
||||
form={form}
|
||||
loading={uploadFileLoading || props.specialDisposal.specialDisposalLoading}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{
|
||||
name: "state",
|
||||
label: "是否通过",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 2, name: "通过" }, { bianma: 1, name: "不通过" }],
|
||||
componentProps: {
|
||||
onChange: () => {
|
||||
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: <Upload fileType="document" maxCount={1} />,
|
||||
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: (
|
||||
<DepartmentSelectTree
|
||||
onChange={() => {
|
||||
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: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: deptId }}
|
||||
onGetLabel={label => form.setFieldValue("rectifyPersonName", label)}
|
||||
/>
|
||||
),
|
||||
dependencies: ["state", "modifyRectifyPerson"],
|
||||
hidden: formValues => !(formValues.state === 1 && formValues.modifyRectifyPerson === 1),
|
||||
},
|
||||
{ name: "rectifyPersonName", label: "整改负责人名称", onlyForLabel: true },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_SPECIAL_DISPOSAL], true)(Review);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function SpecialDisposal(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default SpecialDisposal;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Average(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Average;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function BranchCompany(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default BranchCompany;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "corpName", label: "企业名称" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "企业名称", dataIndex: "corpName" },
|
||||
{ title: "一般隐患", children: [
|
||||
{ title: "轻微隐患数", dataIndex: "minorCount" },
|
||||
{ title: "一般隐患数", dataIndex: "generalCount" },
|
||||
] },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./HiddenList?corpName=${record.corpName}&corpId=${record.corpId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_AVERAGE], true)(CorpInfoList);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="一般隐患" />
|
||||
<div style={{ padding: 20 }}>
|
||||
<Spin spinning={downloadBlobLoading}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ 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: <DepartmentSelectTree /> },
|
||||
{ name: "checkUserName", label: "验收人" },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => {
|
||||
setSelectedRowKeys(selectedRowKeys);
|
||||
},
|
||||
}}
|
||||
headerTitle={query.corpName}
|
||||
toolBarRender={() => (
|
||||
<Space>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<PrintIcon />}
|
||||
onClick={() => {
|
||||
if (selectedRowKeys.length === 0) {
|
||||
message.error("请选择要打印的隐患");
|
||||
return;
|
||||
}
|
||||
setPrintModalOpen(true);
|
||||
setPrintData(tableProps.dataSource.filter(item => selectedRowKeys.includes(item.id)));
|
||||
}}
|
||||
>
|
||||
打印
|
||||
</Button>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<ExportIcon />}
|
||||
onClick={() => {
|
||||
onExportExcel();
|
||||
}}
|
||||
>
|
||||
导出
|
||||
</Button>
|
||||
</Space>
|
||||
)}
|
||||
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) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</Spin>
|
||||
</div>
|
||||
<PrintModal
|
||||
open={printModalOpen}
|
||||
data={printData}
|
||||
onCancel={() => {
|
||||
setPrintModalOpen(false);
|
||||
setPrintData([]);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
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 (
|
||||
<Modal
|
||||
title="打印"
|
||||
width={1500}
|
||||
okText="打印"
|
||||
open={props.open}
|
||||
onCancel={props.onCancel}
|
||||
onOk={handlePrint}
|
||||
>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={false}
|
||||
dataSource={props.data}
|
||||
pagination={false}
|
||||
columns={[
|
||||
{
|
||||
title: "隐患来源",
|
||||
dataIndex: "source",
|
||||
render: (_, record) => 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" },
|
||||
]}
|
||||
/>
|
||||
<div ref={contentRef}>
|
||||
<table className="print-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>隐患来源</th>
|
||||
<th>隐患描述</th>
|
||||
<th>隐患发现人</th>
|
||||
<th>隐患发现时间</th>
|
||||
<th>确认人</th>
|
||||
<th>整改负责人</th>
|
||||
<th>隐患状态</th>
|
||||
<th>验收人</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{(props.data || []).map(item => (
|
||||
<tr key={item.id}>
|
||||
<td>{getLabelName({ list: HIDDEN_SOURCE_ENUM, status: item.source })}</td>
|
||||
<td>{item.hiddenDesc}</td>
|
||||
<td>{item.createName}</td>
|
||||
<td>{item.hiddenFindTime ? dayjs(item.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") : ""}</td>
|
||||
<td>{item.confirmUserName}</td>
|
||||
<td>{item.rectificationUserName}</td>
|
||||
<td>{getLabelName({ list: HIDDEN_STATE_ENUM, status: item.state })}</td>
|
||||
<td>{item.hiddenYUserName}</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
export default Connect([NS_AVERAGE], true)(HiddenList);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Ignore(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Ignore;
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj";
|
||||
|
||||
function HiddenView() {
|
||||
return (
|
||||
<div>
|
||||
<HiddenInfo />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default HiddenView;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "corpName", label: "企业名称" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "企业名称", dataIndex: "corpName" },
|
||||
{ title: "忽略隐患数", dataIndex: "ignoreCount" },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./HiddenList?corpName=${record.corpName}&corpId=${record.corpId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_IGNORE], true)(CorpInfoList);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="忽略隐患" />
|
||||
<div style={{ padding: 20 }}>
|
||||
<Spin spinning={downloadBlobLoading}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{ 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}
|
||||
/>
|
||||
<Table
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => {
|
||||
setSelectedRowKeys(selectedRowKeys);
|
||||
},
|
||||
}}
|
||||
headerTitle={query.corpName}
|
||||
toolBarRender={() => (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<ExportIcon />}
|
||||
onClick={() => {
|
||||
onExportExcel();
|
||||
}}
|
||||
>
|
||||
导出
|
||||
</Button>
|
||||
)}
|
||||
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) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</Spin>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_IGNORE], true)(HiddenList);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Ignore(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Ignore;
|
||||
|
|
@ -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 (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "corpName", label: "企业名称" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "企业名称", dataIndex: "corpName" },
|
||||
{ title: "一般隐患", children: [
|
||||
{ title: "轻微隐患数", dataIndex: "minorCount" },
|
||||
{ title: "一般隐患数", dataIndex: "generalCount" },
|
||||
] },
|
||||
{
|
||||
title: "操作",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`./HiddenList?corpName=${record.corpName}&corpId=${record.corpId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_SPECIAL_DISPOSAL], true)(CorpInfoList);
|
||||
|
|
@ -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 (
|
||||
<div>
|
||||
<HeaderBack title="特殊处置隐患" />
|
||||
<div style={{ padding: 20 }}>
|
||||
<Spin spinning={downloadBlobLoading}>
|
||||
<Search
|
||||
options={[
|
||||
{ name: "source", label: "隐患来源", render: FORM_ITEM_RENDER_ENUM.SELECT, items: HIDDEN_SOURCE_ENUM },
|
||||
{ name: "hiddenDesc", label: "隐患描述" },
|
||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATE_RANGE },
|
||||
{ name: "hiddenFindDept", label: "隐患发现部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "hiddenType",
|
||||
label: "隐患类型",
|
||||
render: <DictionarySelectTree dictValue="hiddenType" />,
|
||||
},
|
||||
{
|
||||
name: "hiddenPart",
|
||||
label: "隐患部位",
|
||||
render: <HiddenPartSelectTree />,
|
||||
},
|
||||
{
|
||||
name: "hiddenLevel",
|
||||
label: "隐患级别",
|
||||
render: <HiddenLevelSelectTree isShowNeglect={false} isShowLarger={false} isShowMajor={false} />,
|
||||
},
|
||||
{ name: "creatorName", label: "隐患发现人" },
|
||||
{ name: "confirmUserName", label: "确认人" },
|
||||
{ name: "rectificationUserName", label: "整改人" },
|
||||
{ name: "rectificationDeptId", label: "整改部门", render: <DepartmentSelectTree /> },
|
||||
{
|
||||
name: "isRelated",
|
||||
label: "是否相关方",
|
||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
|
||||
},
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => {
|
||||
setSelectedRowKeys(selectedRowKeys);
|
||||
},
|
||||
}}
|
||||
headerTitle={query.corpName}
|
||||
toolBarRender={() => (
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<ExportIcon />}
|
||||
onClick={() => {
|
||||
onExportExcel();
|
||||
}}
|
||||
>
|
||||
导出
|
||||
</Button>
|
||||
)}
|
||||
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) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||
}}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</Spin>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Connect([NS_SPECIAL_DISPOSAL], true)(HiddenList);
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Ignore(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Ignore;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Average(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Average;
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
function Supervision(props) {
|
||||
return (
|
||||
<div>
|
||||
{props.children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Supervision;
|
||||
Loading…
Reference in New Issue