Compare commits
4 Commits
master
...
majorHidden
| Author | SHA1 | Date |
|---|---|---|
|
|
736f176782 | |
|
|
d3679c4d3b | |
|
|
4832f978b5 | |
|
|
3233b9f7c5 |
|
|
@ -9,9 +9,10 @@ module.exports = {
|
||||||
// 应用后端分支名称,部署上线需要
|
// 应用后端分支名称,部署上线需要
|
||||||
javaGitBranch: "<branch-name>",
|
javaGitBranch: "<branch-name>",
|
||||||
// 接口服务地址
|
// 接口服务地址
|
||||||
|
API_HOST: "https://gbs-gateway.qhdsafety.com",
|
||||||
// API_HOST: "http://192.168.20.100:30140",
|
// API_HOST: "http://192.168.20.100:30140",
|
||||||
// API_HOST: "http://192.168.10.127",
|
// API_HOST: "http://192.168.10.127",
|
||||||
API_HOST: "",
|
// API_HOST: "",
|
||||||
},
|
},
|
||||||
production: {
|
production: {
|
||||||
// 应用后端分支名称,部署上线需要
|
// 应用后端分支名称,部署上线需要
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-to-print": "^3.2.0",
|
"react-to-print": "^3.2.0",
|
||||||
"zy-react-library": "^1.2.35"
|
"zy-react-library": "^1.3.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@antfu/eslint-config": "^5.4.1",
|
"@antfu/eslint-config": "^5.4.1",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
// 重大-较大隐患确认
|
||||||
|
export const majorConfirm = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorConfirm",
|
||||||
|
);
|
||||||
|
|
||||||
|
// 重大-较大隐患核实
|
||||||
|
export const majorVerify = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorVerify",
|
||||||
|
);
|
||||||
|
// 重大-较大隐患核定
|
||||||
|
export const majorApprove = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorApprove",
|
||||||
|
);
|
||||||
|
// 重大-较大隐患整改 暂存
|
||||||
|
export const majorRectifyDraft = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorRectifyDraft",
|
||||||
|
);
|
||||||
|
// 重大-较大隐患整改 申请验收
|
||||||
|
export const majorRectify = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorRectify",
|
||||||
|
);
|
||||||
|
// 重大-较大隐患验收
|
||||||
|
export const majorCheck = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorCheck",
|
||||||
|
);
|
||||||
|
|
||||||
|
export const majorListPage = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorListPage",
|
||||||
|
);
|
||||||
|
export const majorHiddenStatistics = declareRequest(
|
||||||
|
"hiddenMajorLoading",
|
||||||
|
"Post > @/hidden/hiddenMajor/majorHiddenStatistics",
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
import type { FC } from "react";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组件属性
|
||||||
|
*/
|
||||||
|
export interface HiddenInfoProps {
|
||||||
|
/** id,默认取 query.id */
|
||||||
|
id?: string;
|
||||||
|
/** id 的字段,默认 id */
|
||||||
|
idKey?: string;
|
||||||
|
/** hiddenId,默认取 query.hiddenId */
|
||||||
|
hiddenId?: string;
|
||||||
|
/** hiddenId 的字段,默认 hiddenId */
|
||||||
|
hiddenIdKey?: string;
|
||||||
|
/** 是否显示头部的返回,默认 true */
|
||||||
|
isShowHeaderBack?: boolean;
|
||||||
|
/** 获取数据 */
|
||||||
|
onGetData?: (data: Record<string, any>) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 隐患查看组件(港务局版本)
|
||||||
|
*/
|
||||||
|
declare const HiddenInfo: FC<HiddenInfoProps>;
|
||||||
|
|
||||||
|
export default HiddenInfo;
|
||||||
|
|
@ -0,0 +1,208 @@
|
||||||
|
import { request } from "@cqsjjb/jjb-common-lib/http";
|
||||||
|
import { Descriptions, Divider, Spin } from "antd";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import VideoIcon from "zy-react-library/components/Icon/VideoIcon";
|
||||||
|
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||||
|
import Video from "zy-react-library/components/Video";
|
||||||
|
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 useDownloadFile from "zy-react-library/hooks/useDownloadFile";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
import { getLabelName } from "zy-react-library/utils";
|
||||||
|
import { HIDDEN_STATE_ENUM } from "~/enumerate/constant";
|
||||||
|
/**
|
||||||
|
* 隐患查看组件(港务局版本)
|
||||||
|
*/
|
||||||
|
function HiddenInfo(props) {
|
||||||
|
const {
|
||||||
|
|
||||||
|
hiddenId = "",
|
||||||
|
hiddenIdKey = "hiddenId",
|
||||||
|
|
||||||
|
onGetData,
|
||||||
|
} = props;
|
||||||
|
|
||||||
|
const [info, setInfo] = useState({
|
||||||
|
hiddenUserPresetsCO: {},
|
||||||
|
hiddenRectifyUserCO: [],
|
||||||
|
hiddenConfirmUserCO: [],
|
||||||
|
hiddenAcceptUserCO: [],
|
||||||
|
hiddenAcceptQualifiedUserCO: [],
|
||||||
|
hiddenAcceptUnqualifiedUserCO: [],
|
||||||
|
hiddenInspecCO: {},
|
||||||
|
hiddenSpecialList: [],
|
||||||
|
hiddenExtensionList: [],
|
||||||
|
});
|
||||||
|
const [hiddenImageFiles, setHiddenImageFiles] = useState([]);
|
||||||
|
const [hiddenVideoFiles, setHiddenVideoFiles] = useState([]);
|
||||||
|
const [afterRectificationImageFiles, setAfterRectificationImageFiles] = useState([]);
|
||||||
|
const [rectificationPlanImageFiles, setRectificationPlanImageFiles] = useState([]);
|
||||||
|
const [acceptImageFiles, setAcceptImageFiles] = useState([]);
|
||||||
|
const [inspectionAcceptImageFiles, setInspectionAcceptImageFiles] = useState([]);
|
||||||
|
const [loading, setLoading] = useState(true);
|
||||||
|
const [videoModalOpen, setVideoModalOpen] = useState(false);
|
||||||
|
|
||||||
|
const { getFile } = useGetFile();
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
const { loading: downloadFileLoading, downloadFile } = useDownloadFile();
|
||||||
|
|
||||||
|
const getFileData = async (info) => {
|
||||||
|
const hiddenImageFiles = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["3"],
|
||||||
|
eqForeignKey: hiddenId || query[hiddenIdKey],
|
||||||
|
});
|
||||||
|
setHiddenImageFiles(hiddenImageFiles);
|
||||||
|
const hiddenVideoFiles = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["102"],
|
||||||
|
eqForeignKey: hiddenId || query[hiddenIdKey],
|
||||||
|
});
|
||||||
|
setHiddenVideoFiles(hiddenVideoFiles);
|
||||||
|
|
||||||
|
if (info.hiddenRectifyUserCO && info.hiddenRectifyUserCO.length > 0) {
|
||||||
|
for (let i = 0; i < info.hiddenRectifyUserCO.length; i++) {
|
||||||
|
if (info.hiddenRectifyUserCO[i].hiddenUserId) {
|
||||||
|
const afterRectificationImageFiles = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["4"],
|
||||||
|
eqForeignKey: info.hiddenRectifyUserCO[i].hiddenUserId,
|
||||||
|
});
|
||||||
|
setAfterRectificationImageFiles(prevState => [...prevState, afterRectificationImageFiles]);
|
||||||
|
}
|
||||||
|
if (info.hiddenRectifyUserCO[i].isRectificationScheme === 1 && info.hiddenRectifyUserCO[i].hiddenSchemeCO && Object.keys(info.hiddenRectifyUserCO[i].hiddenSchemeCO).length > 0) {
|
||||||
|
if (info.hiddenRectifyUserCO[i].hiddenSchemeCO.hiddenSchemeId) {
|
||||||
|
const rectificationPlanImageFiles = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["8"],
|
||||||
|
eqForeignKey: info.hiddenRectifyUserCO[i].hiddenSchemeCO.hiddenSchemeId,
|
||||||
|
});
|
||||||
|
setRectificationPlanImageFiles(prevState => [...prevState, rectificationPlanImageFiles]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (info.hiddenAcceptQualifiedUserCO && info.hiddenAcceptQualifiedUserCO.length > 0) {
|
||||||
|
for (let i = 0; i < info.hiddenAcceptQualifiedUserCO.length; i++) {
|
||||||
|
if (info.hiddenAcceptQualifiedUserCO[i].hiddenUserId) {
|
||||||
|
const acceptImageFiles = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["5"],
|
||||||
|
eqForeignKey: info.hiddenAcceptQualifiedUserCO[i].hiddenUserId,
|
||||||
|
});
|
||||||
|
setAcceptImageFiles(prevState => [...prevState, acceptImageFiles]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (info.hiddenInspecCO && Object.keys(info.hiddenInspecCO).length > 0) {
|
||||||
|
const inspectionAcceptImageFiles = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["146"],
|
||||||
|
eqForeignKey: hiddenId || query[hiddenIdKey],
|
||||||
|
});
|
||||||
|
setInspectionAcceptImageFiles(inspectionAcceptImageFiles);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
request(`/hidden/hidden/hidden/${query[hiddenIdKey]}`, "get").then((res) => {
|
||||||
|
if (res.data) {
|
||||||
|
res.data.hiddenAcceptQualifiedUserCO = [];
|
||||||
|
res.data.hiddenAcceptUnqualifiedUserCO = [];
|
||||||
|
if (res.data.hiddenAcceptUserCO && res.data.hiddenAcceptUserCO.length > 0) {
|
||||||
|
for (let i = 0; i < res.data.hiddenAcceptUserCO.length; i++) {
|
||||||
|
if (res.data.hiddenAcceptUserCO[i].status === 1) {
|
||||||
|
res.data.hiddenAcceptQualifiedUserCO.push(res.data.hiddenAcceptUserCO[i]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
res.data.hiddenAcceptUnqualifiedUserCO.push(res.data.hiddenAcceptUserCO[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setInfo(res.data);
|
||||||
|
getFileData(res.data);
|
||||||
|
|
||||||
|
onGetData?.(res.data);
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
useEffect(() => {
|
||||||
|
getData();
|
||||||
|
}, [props.id, props.hiddenId]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Spin spinning={loading || downloadFileLoading}>
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">隐患信息</Divider>
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
column={1}
|
||||||
|
styles={{ label: { width: 200 } }}
|
||||||
|
items={[
|
||||||
|
{ label: "隐患来源", children: getLabelName({ list: HIDDEN_SOURCE_ENUM, status: info.source }) },
|
||||||
|
{ label: "隐患类型", children: info.hiddenTypeName },
|
||||||
|
{ label: "隐患级别", children: info.hiddenLevelName },
|
||||||
|
{ label: "隐患状态", children: getLabelName({ list: HIDDEN_STATE_ENUM, status: info.state }) },
|
||||||
|
{ label: "隐患描述", children: info.hiddenDesc },
|
||||||
|
{ label: "隐患部位", children: info.hiddenPartName },
|
||||||
|
...(
|
||||||
|
(info.source === 2 || info.source === 3) && (info.hiddenCheckListCO && Object.keys(info.hiddenCheckListCO).length > 0)
|
||||||
|
? [
|
||||||
|
{ label: "风险点(单元)", children: info.hiddenCheckListCO.listRiskPoints },
|
||||||
|
{ label: "辨识部位", children: info.hiddenCheckListCO.identifiedLocations },
|
||||||
|
{ label: "存在风险", children: info.hiddenCheckListCO.existingRisks },
|
||||||
|
{ label: "风险分级", children: info.hiddenCheckListCO.riskLevel },
|
||||||
|
{ label: "隐患清单", children: info.hiddenCheckListCO.listName },
|
||||||
|
{ label: "检查内容", children: info.hiddenCheckListCO.inspectionContent },
|
||||||
|
]
|
||||||
|
: []
|
||||||
|
),
|
||||||
|
{
|
||||||
|
label: "隐患上报位置(经纬度)",
|
||||||
|
children: [info.longitude && `经度:${info.longitude}`, info.latitude && `纬度:${info.latitude}`].filter(Boolean).join(" "),
|
||||||
|
},
|
||||||
|
...(info.positionDesc ? [{ label: "隐患位置描述", children: info.positionDesc }] : []),
|
||||||
|
{ label: "隐患发现人", children: info.creatorName },
|
||||||
|
{ label: "隐患发现时间", children: info.hiddenFindTime },
|
||||||
|
{
|
||||||
|
label: "整改类型",
|
||||||
|
children: "限期整改",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "是否相关方",
|
||||||
|
children: getLabelName({
|
||||||
|
list: [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }],
|
||||||
|
status: info.isRelated,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
...(info.isRelated === 1 ? [{ label: "相关方项目", children: info.projectName }] : []),
|
||||||
|
{ label: "隐患图片", children: <PreviewImg files={hiddenImageFiles} /> },
|
||||||
|
...(hiddenVideoFiles.length > 0
|
||||||
|
? [{
|
||||||
|
label: "隐患视频",
|
||||||
|
children: (
|
||||||
|
<VideoIcon onClick={() => {
|
||||||
|
setVideoModalOpen(true);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
}]
|
||||||
|
: []),
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Spin>
|
||||||
|
{
|
||||||
|
videoModalOpen && (
|
||||||
|
<Video
|
||||||
|
visible={videoModalOpen}
|
||||||
|
source={hiddenVideoFiles[0].url}
|
||||||
|
onCancel={() => setVideoModalOpen(false)}
|
||||||
|
title="隐患视频"
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenInfo;
|
||||||
|
|
@ -3,5 +3,22 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const IS_RELATED_ENUM = [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }];
|
export const IS_RELATED_ENUM = [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }];
|
||||||
|
export const HIDDEN_MAJOR_LEVEL = [{ bianma: "jdyh001", name: "较大隐患" }, { bianma: "hiddenLevel2002", name: "重大隐患" }];
|
||||||
|
export const HIDDEN_STATE_ENUM = [
|
||||||
|
{ bianma: "100", name: "待确认" },
|
||||||
|
{ bianma: "110", name: "待核实" },
|
||||||
|
{ bianma: "120", name: "待核定" },
|
||||||
|
{ bianma: "97", name: "已过期" },
|
||||||
|
{ bianma: "200", name: "待整改" },
|
||||||
|
{ bianma: "300", name: "已整改" },
|
||||||
|
{ bianma: "301", name: "已验收" },
|
||||||
|
{ bianma: "101", name: "已忽略" },
|
||||||
|
{ bianma: "202", name: "待处理特殊处置" },
|
||||||
|
{ bianma: "400", name: "已归档" },
|
||||||
|
{ bianma: "201", name: "确认打回" },
|
||||||
|
{ bianma: "302", name: "验收打回" },
|
||||||
|
{ bianma: "99", name: "强制关闭(人员变动)" },
|
||||||
|
{ bianma: "98", name: "安全环保检查/清单排查暂存" },
|
||||||
|
{ bianma: "102", name: "安全环保检查,隐患待指派" },
|
||||||
|
];
|
||||||
export {};
|
export {};
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,4 @@ export const NS_SPECIAL_DISPOSAL = defineNamespace("specialDisposal");
|
||||||
export const NS_ACCEPTANCE = defineNamespace("acceptance");
|
export const NS_ACCEPTANCE = defineNamespace("acceptance");
|
||||||
export const NS_PART = defineNamespace("part");
|
export const NS_PART = defineNamespace("part");
|
||||||
export const NS_AVERAGE = defineNamespace("average");
|
export const NS_AVERAGE = defineNamespace("average");
|
||||||
|
export const NS_MAJOR_HIDDEN = defineNamespace("majorHidden");
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ function List(props) {
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
params: { eqType: 1 },
|
params: { eqType: 1 },
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ function List(props) {
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ function Confirm(props) {
|
||||||
<HiddenLevelSelectTree
|
<HiddenLevelSelectTree
|
||||||
isShowMajor={false}
|
isShowMajor={false}
|
||||||
isShowLarger={false}
|
isShowLarger={false}
|
||||||
isShowNeglect={data.rectificationType === 2}
|
isShowNeglect={true}
|
||||||
onChange={(event) => {
|
onChange={(event) => {
|
||||||
if (event === "hiddenLevel1001") {
|
if (event === "hiddenLevel1001") {
|
||||||
form.setFieldValue("deptName", "");
|
form.setFieldValue("deptName", "");
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import {Permission} from "@cqsjjb/jjb-common-decorator/permission";
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
import {Connect} from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import {Button, Form, message, Modal, Space} from "antd";
|
import { Button, Form, message, Modal, Space } from "antd";
|
||||||
import {useEffect, useState} from "react";
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
|
|
@ -10,13 +10,13 @@ import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||||
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
||||||
import Table from "zy-react-library/components/Table";
|
import Table from "zy-react-library/components/Table";
|
||||||
import useTable from "zy-react-library/hooks/useTable";
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
import {NS_CONFIRM_USER} from "~/enumerate/namespace";
|
import { NS_CONFIRM_USER } from "~/enumerate/namespace";
|
||||||
|
|
||||||
function HiddenConfirmUser(props) {
|
function HiddenConfirmUser(props) {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const [addModalOpen, setAddModalOpen] = useState(false);
|
const [addModalOpen, setAddModalOpen] = useState(false);
|
||||||
const [currentId, setCurrentId] = useState("");
|
const [currentId, setCurrentId] = useState("");
|
||||||
const {tableProps, getData} = useTable(props["confirmUserList"], {
|
const { tableProps, getData } = useTable(props["confirmUserList"], {
|
||||||
form,
|
form,
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
|
@ -29,7 +29,7 @@ function HiddenConfirmUser(props) {
|
||||||
title: "删除确认",
|
title: "删除确认",
|
||||||
content: "确定要删除吗?",
|
content: "确定要删除吗?",
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
const {success} = await props["confirmUserDelete"]({id});
|
const { success } = await props["confirmUserDelete"]({ id });
|
||||||
if (success) {
|
if (success) {
|
||||||
message.success("删除成功");
|
message.success("删除成功");
|
||||||
getData();
|
getData();
|
||||||
|
|
@ -41,10 +41,10 @@ function HiddenConfirmUser(props) {
|
||||||
return (
|
return (
|
||||||
<Page isShowAllAction={false}>
|
<Page isShowAllAction={false}>
|
||||||
<Search
|
<Search
|
||||||
labelCol={{span: 4}}
|
labelCol={{ span: 4 }}
|
||||||
options={[
|
options={[
|
||||||
{name: "likeName", label: "姓名"},
|
{ name: "likeName", label: "姓名" },
|
||||||
{name: "eqDeptId", label: "部门", render: <DepartmentSelectTree/>},
|
{ name: "eqDeptId", label: "部门", render: <DepartmentSelectTree /> },
|
||||||
]}
|
]}
|
||||||
form={form}
|
form={form}
|
||||||
onFinish={getData}
|
onFinish={getData}
|
||||||
|
|
@ -55,7 +55,7 @@ function HiddenConfirmUser(props) {
|
||||||
{props.permission("fgs-yhqrr-xz") && (
|
{props.permission("fgs-yhqrr-xz") && (
|
||||||
<Button
|
<Button
|
||||||
type="primary"
|
type="primary"
|
||||||
icon={<AddIcon/>}
|
icon={<AddIcon />}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setAddModalOpen(true);
|
setAddModalOpen(true);
|
||||||
}}
|
}}
|
||||||
|
|
@ -66,10 +66,10 @@ function HiddenConfirmUser(props) {
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
columns={[
|
columns={[
|
||||||
{title: "部门", dataIndex: "deptName"},
|
{ title: "部门", dataIndex: "deptName" },
|
||||||
{title: "岗位", dataIndex: "postName"},
|
{ title: "岗位", dataIndex: "postName" },
|
||||||
{title: "姓名", dataIndex: "name"},
|
{ title: "姓名", dataIndex: "name" },
|
||||||
{title: "手机号", dataIndex: "userName"},
|
{ title: "手机号", dataIndex: "userName" },
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
width: 120,
|
width: 120,
|
||||||
|
|
@ -87,8 +87,8 @@ function HiddenConfirmUser(props) {
|
||||||
编辑
|
编辑
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{props.permission("fgs-yhqrr-sc") &&
|
{props.permission("fgs-yhqrr-sc")
|
||||||
<Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>}
|
&& <Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>}
|
||||||
</Space>
|
</Space>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
@ -113,7 +113,7 @@ const AddModalComponent = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const deptId = Form.useWatch("deptId", form);
|
const deptId = Form.useWatch("deptId", form);
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
const {data} = await props["confirmUserView"]({id: props.id});
|
const { data } = await props["confirmUserView"]({ id: props.id });
|
||||||
form.setFieldsValue({
|
form.setFieldsValue({
|
||||||
...data,
|
...data,
|
||||||
confirmRange: data.confirmRange.split(","),
|
confirmRange: data.confirmRange.split(","),
|
||||||
|
|
@ -124,7 +124,7 @@ const AddModalComponent = (props) => {
|
||||||
props.id && getData();
|
props.id && getData();
|
||||||
}, []);
|
}, []);
|
||||||
const onSubmit = async (values) => {
|
const onSubmit = async (values) => {
|
||||||
const {success} = await props[!props.id ? "confirmUserAdd" : "confirmUserUpdate"]({
|
const { success } = await props[!props.id ? "confirmUserAdd" : "confirmUserUpdate"]({
|
||||||
...values,
|
...values,
|
||||||
confirmRange: values.confirmRange.join(","),
|
confirmRange: values.confirmRange.join(","),
|
||||||
confirmRangeName: values.confirmRangeName.join(","),
|
confirmRangeName: values.confirmRangeName.join(","),
|
||||||
|
|
@ -151,7 +151,7 @@ const AddModalComponent = (props) => {
|
||||||
loading={props.confirmUser.confirmUserLoading}
|
loading={props.confirmUser.confirmUserLoading}
|
||||||
form={form}
|
form={form}
|
||||||
span={24}
|
span={24}
|
||||||
labelCol={{span: 12}}
|
labelCol={{ span: 12 }}
|
||||||
showActionButtons={false}
|
showActionButtons={false}
|
||||||
onFinish={onSubmit}
|
onFinish={onSubmit}
|
||||||
options={[
|
options={[
|
||||||
|
|
@ -171,14 +171,14 @@ const AddModalComponent = (props) => {
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{name: "deptName", label: "部门名称", onlyForLabel: true},
|
{ name: "deptName", label: "部门名称", onlyForLabel: true },
|
||||||
{
|
{
|
||||||
name: "userId",
|
name: "userId",
|
||||||
label: "隐患确认人",
|
label: "隐患确认人",
|
||||||
render: (
|
render: (
|
||||||
<PersonnelSelect
|
<PersonnelSelect
|
||||||
disabled={props.id}
|
disabled={props.id}
|
||||||
params={{departmentId: deptId}}
|
params={{ departmentId: deptId }}
|
||||||
extraParams={{ noMain: 1 }}
|
extraParams={{ noMain: 1 }}
|
||||||
onGetOption={(option) => {
|
onGetOption={(option) => {
|
||||||
form.setFieldValue("name", option.name);
|
form.setFieldValue("name", option.name);
|
||||||
|
|
@ -189,10 +189,10 @@ const AddModalComponent = (props) => {
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{name: "name", label: "确认人", onlyForLabel: true},
|
{ name: "name", label: "确认人", onlyForLabel: true },
|
||||||
{name: "userName", label: "确认人", onlyForLabel: true},
|
{ name: "userName", label: "确认人", onlyForLabel: true },
|
||||||
{name: "postName", label: "确认人", onlyForLabel: true},
|
{ name: "postName", label: "确认人", onlyForLabel: true },
|
||||||
{name: "postId", label: "确认人", onlyForLabel: true},
|
{ name: "postId", label: "确认人", onlyForLabel: true },
|
||||||
{
|
{
|
||||||
name: "confirmRange",
|
name: "confirmRange",
|
||||||
label: "确认范围(部门)",
|
label: "确认范围(部门)",
|
||||||
|
|
@ -206,7 +206,7 @@ const AddModalComponent = (props) => {
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{name: "confirmRangeName", label: "确认范围(部门)名称", onlyForLabel: true},
|
{ name: "confirmRangeName", label: "确认范围(部门)名称", onlyForLabel: true },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import { NS_CONFIRM_USER, NS_LEDGER, NS_PART } from "~/enumerate/namespace";
|
||||||
function Add(props) {
|
function Add(props) {
|
||||||
const query = useGetUrlQuery();
|
const query = useGetUrlQuery();
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
|
const hiddenLevel = Form.useWatch("hiddenLevel", form);
|
||||||
const hiddenFindDept = Form.useWatch("hiddenFindDept", form);
|
const hiddenFindDept = Form.useWatch("hiddenFindDept", form);
|
||||||
const rectificationDeptId = Form.useWatch("rectificationDeptId", form);
|
const rectificationDeptId = Form.useWatch("rectificationDeptId", form);
|
||||||
const checkDeptId = Form.useWatch("checkDeptId", form);
|
const checkDeptId = Form.useWatch("checkDeptId", form);
|
||||||
|
|
@ -117,6 +118,18 @@ function Add(props) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
useEffect(() => {
|
||||||
|
if (!form)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// 清空确认人及其关联的显示字段
|
||||||
|
form.setFieldsValue({
|
||||||
|
confirmUserId: undefined,
|
||||||
|
confirmUserName: "",
|
||||||
|
confirmDeptId: undefined,
|
||||||
|
confirmDeptName: "",
|
||||||
|
});
|
||||||
|
}, [hiddenLevel]);
|
||||||
|
|
||||||
const getConfirmUserList = async () => {
|
const getConfirmUserList = async () => {
|
||||||
const { data } = await props["confirmUserAllList"]();
|
const { data } = await props["confirmUserAllList"]();
|
||||||
|
|
@ -128,12 +141,56 @@ function Add(props) {
|
||||||
setXgfProjectList(data);
|
setXgfProjectList(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isBigOrMajorHidden = ["jdyh001", "hiddenLevel2002", "jdyh002"].includes(hiddenLevel);
|
||||||
|
|
||||||
|
const clearPresetRectificationFields = () => {
|
||||||
|
form.setFieldsValue({
|
||||||
|
rectificationDeadline: undefined,
|
||||||
|
rectificationDescr: undefined,
|
||||||
|
afterRectificationImageFiles: undefined,
|
||||||
|
rectificationDeptId: undefined,
|
||||||
|
rectificationDeptName: undefined,
|
||||||
|
rectificationUserId: undefined,
|
||||||
|
rectificationUserName: undefined,
|
||||||
|
checkDeptId: undefined,
|
||||||
|
checkDeptName: undefined,
|
||||||
|
checkUserId: undefined,
|
||||||
|
checkUserName: undefined,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getData();
|
getData();
|
||||||
getConfirmUserList();
|
getConfirmUserList();
|
||||||
getXgfProjectList();
|
getXgfProjectList();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!hiddenLevel)
|
||||||
|
return;
|
||||||
|
if (isBigOrMajorHidden) {
|
||||||
|
form.setFieldValue("rectificationType", 2);
|
||||||
|
form.setFieldValue("confirmUserId", undefined);
|
||||||
|
|
||||||
|
clearPresetRectificationFields();
|
||||||
|
}
|
||||||
|
}, [form, hiddenLevel, isBigOrMajorHidden]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (isRelated !== 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
form.setFieldsValue({
|
||||||
|
rectificationType: 2,
|
||||||
|
rectificationDescr: undefined,
|
||||||
|
afterRectificationImageFiles: undefined,
|
||||||
|
checkDeptId: undefined,
|
||||||
|
checkDeptName: undefined,
|
||||||
|
checkUserId: undefined,
|
||||||
|
checkUserName: undefined,
|
||||||
|
});
|
||||||
|
}, [form, isRelated]);
|
||||||
|
|
||||||
const clearHiddenRecognizeState = () => {
|
const clearHiddenRecognizeState = () => {
|
||||||
selectHiddens.current = [];
|
selectHiddens.current = [];
|
||||||
currentProcessHiddenIndex.current = -1;
|
currentProcessHiddenIndex.current = -1;
|
||||||
|
|
@ -216,32 +273,60 @@ function Add(props) {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
const onSubmit = async (values) => {
|
const onSubmit = async (values) => {
|
||||||
|
const submitValues = isBigOrMajorHidden
|
||||||
|
? {
|
||||||
|
...values,
|
||||||
|
rectificationType: 2,
|
||||||
|
rectificationDeadline: undefined,
|
||||||
|
rectificationDescr: undefined,
|
||||||
|
afterRectificationImageFiles: [],
|
||||||
|
rectificationDeptId: undefined,
|
||||||
|
rectificationDeptName: undefined,
|
||||||
|
rectificationUserId: undefined,
|
||||||
|
rectificationUserName: undefined,
|
||||||
|
checkDeptId: undefined,
|
||||||
|
checkDeptName: undefined,
|
||||||
|
checkUserId: undefined,
|
||||||
|
checkUserName: undefined,
|
||||||
|
}
|
||||||
|
: isRelated === 1
|
||||||
|
? {
|
||||||
|
...values,
|
||||||
|
rectificationType: 2,
|
||||||
|
rectificationDescr: undefined,
|
||||||
|
afterRectificationImageFiles: [],
|
||||||
|
checkDeptId: undefined,
|
||||||
|
checkDeptName: undefined,
|
||||||
|
checkUserId: undefined,
|
||||||
|
checkUserName: undefined,
|
||||||
|
}
|
||||||
|
: values;
|
||||||
await deleteFile({ single: false, files: deleteHiddenImageFiles.current });
|
await deleteFile({ single: false, files: deleteHiddenImageFiles.current });
|
||||||
await deleteFile({ single: false, files: deleteHiddenVideoFiles.current });
|
await deleteFile({ single: false, files: deleteHiddenVideoFiles.current });
|
||||||
await deleteFile({ single: false, files: deleteAfterRectificationImageFiles.current });
|
await deleteFile({ single: false, files: deleteAfterRectificationImageFiles.current });
|
||||||
const { id } = await uploadFile({
|
const { id } = await uploadFile({
|
||||||
single: false,
|
single: false,
|
||||||
files: values.hiddenImageFiles,
|
files: submitValues.hiddenImageFiles,
|
||||||
params: { type: UPLOAD_FILE_TYPE_ENUM["3"], foreignKey: query.hiddenId },
|
params: { type: UPLOAD_FILE_TYPE_ENUM["3"], foreignKey: query.hiddenId },
|
||||||
});
|
});
|
||||||
await uploadFile({
|
await uploadFile({
|
||||||
single: false,
|
single: false,
|
||||||
files: values.hiddenVideoFiles,
|
files: submitValues.hiddenVideoFiles,
|
||||||
params: { type: UPLOAD_FILE_TYPE_ENUM["102"], foreignKey: id },
|
params: { type: UPLOAD_FILE_TYPE_ENUM["102"], foreignKey: id },
|
||||||
});
|
});
|
||||||
const { id: afterRectificationImageId } = await uploadFile({
|
const { id: afterRectificationImageId } = await uploadFile({
|
||||||
single: false,
|
single: false,
|
||||||
files: values.afterRectificationImageFiles,
|
files: submitValues.afterRectificationImageFiles,
|
||||||
params: { type: UPLOAD_FILE_TYPE_ENUM["4"], foreignKey: "" },
|
params: { type: UPLOAD_FILE_TYPE_ENUM["4"], foreignKey: "" },
|
||||||
});
|
});
|
||||||
let hiddenPart = values.hiddenPart;
|
let hiddenPart = submitValues.hiddenPart;
|
||||||
if (hiddenPartType === "input") {
|
if (hiddenPartType === "input") {
|
||||||
const { data } = await props["partAdd"]({ hiddenregion: values.hiddenPart });
|
const { data } = await props["partAdd"]({ hiddenregion: submitValues.hiddenPart });
|
||||||
hiddenPart = data;
|
hiddenPart = data;
|
||||||
}
|
}
|
||||||
const hiddenImageFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["3"], eqForeignKey: id });
|
const hiddenImageFiles = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["3"], eqForeignKey: id });
|
||||||
const { success } = await props[!query.id ? "hiddenAdd" : "hiddenEdit"]({
|
const { success } = await props[!query.id ? "hiddenAdd" : "hiddenEdit"]({
|
||||||
...values,
|
...submitValues,
|
||||||
id: query.id,
|
id: query.id,
|
||||||
hiddenId: id,
|
hiddenId: id,
|
||||||
source: "1",
|
source: "1",
|
||||||
|
|
@ -328,6 +413,7 @@ function Add(props) {
|
||||||
{
|
{
|
||||||
name: "hiddenImageFiles",
|
name: "hiddenImageFiles",
|
||||||
label: "隐患图片",
|
label: "隐患图片",
|
||||||
|
dependencies: ["isRelated"],
|
||||||
render: (
|
render: (
|
||||||
<Upload
|
<Upload
|
||||||
disabled={!isShowAiButton}
|
disabled={!isShowAiButton}
|
||||||
|
|
@ -377,10 +463,14 @@ function Add(props) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "hiddenLevel",
|
name: "hiddenLevel",
|
||||||
|
dependencies: ["isRelated"],
|
||||||
label: "隐患级别",
|
label: "隐患级别",
|
||||||
render: (
|
render: (
|
||||||
<HiddenLevelSelectTree
|
<HiddenLevelSelectTree
|
||||||
|
key={`hidden-level-${isRelated}`}
|
||||||
isShowNeglect={false}
|
isShowNeglect={false}
|
||||||
|
isShowLarger={isRelated === 0}
|
||||||
|
isShowMajor={isRelated === 0}
|
||||||
onGetLabel={label => form.setFieldValue("hiddenLevelName", label)}
|
onGetLabel={label => form.setFieldValue("hiddenLevelName", label)}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
|
|
@ -411,6 +501,8 @@ function Add(props) {
|
||||||
items: IS_RELATED_ENUM.map(item => ({ ...item, bianma: +item.bianma })),
|
items: IS_RELATED_ENUM.map(item => ({ ...item, bianma: +item.bianma })),
|
||||||
componentProps: {
|
componentProps: {
|
||||||
onChange: () => {
|
onChange: () => {
|
||||||
|
form.setFieldValue("hiddenLevel", undefined);
|
||||||
|
form.setFieldValue("hiddenLevelName", "");
|
||||||
form.setFieldValue("projectName", "");
|
form.setFieldValue("projectName", "");
|
||||||
form.setFieldValue("rectificationDeptId", "");
|
form.setFieldValue("rectificationDeptId", "");
|
||||||
form.setFieldValue("rectificationDeptName", "");
|
form.setFieldValue("rectificationDeptName", "");
|
||||||
|
|
@ -524,6 +616,24 @@ function Add(props) {
|
||||||
},
|
},
|
||||||
{ name: "creatorName", label: "隐患发现人名称", onlyForLabel: true },
|
{ name: "creatorName", label: "隐患发现人名称", onlyForLabel: true },
|
||||||
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATETIME },
|
{ name: "hiddenFindTime", label: "隐患发现时间", render: FORM_ITEM_RENDER_ENUM.DATETIME },
|
||||||
|
{
|
||||||
|
name: "confirmUserId",
|
||||||
|
label: "较大重大隐患确认人",
|
||||||
|
render: (
|
||||||
|
<PersonnelSelect
|
||||||
|
isNeedDepartmentId={false}
|
||||||
|
isNeedCorpInfoId={true}
|
||||||
|
params={{ corpinfoId: userInfo.current.corpinfoId }}
|
||||||
|
onGetLabel={label => form.setFieldValue("confirmUserName", label)}
|
||||||
|
onGetOption={(value) => {
|
||||||
|
form.setFieldValue("confirmUserName", value.name);
|
||||||
|
form.setFieldValue("confirmDeptName", value.departmentName);
|
||||||
|
form.setFieldValue("confirmDeptId", value.departmentId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
hidden: !isBigOrMajorHidden,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "confirmUserId",
|
name: "confirmUserId",
|
||||||
label: "隐患确认人",
|
label: "隐患确认人",
|
||||||
|
|
@ -538,6 +648,7 @@ function Add(props) {
|
||||||
form.setFieldValue("confirmDeptId", findItem.deptId);
|
form.setFieldValue("confirmDeptId", findItem.deptId);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
hidden: isBigOrMajorHidden,
|
||||||
},
|
},
|
||||||
{ name: "confirmUserName", label: "隐患确认人名称", onlyForLabel: true },
|
{ name: "confirmUserName", label: "隐患确认人名称", onlyForLabel: true },
|
||||||
{ name: "confirmDeptName", label: "隐患确认人部门名称", onlyForLabel: true },
|
{ name: "confirmDeptName", label: "隐患确认人部门名称", onlyForLabel: true },
|
||||||
|
|
@ -546,9 +657,12 @@ function Add(props) {
|
||||||
name: "rectificationType",
|
name: "rectificationType",
|
||||||
label: "隐患处置",
|
label: "隐患处置",
|
||||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
items: HIDDEN_RECTIFICATION_TYPE_ENUM,
|
items: (isBigOrMajorHidden || isRelated === 1)
|
||||||
|
? HIDDEN_RECTIFICATION_TYPE_ENUM.filter(item => item.bianma === 2)
|
||||||
|
: HIDDEN_RECTIFICATION_TYPE_ENUM,
|
||||||
span: 24,
|
span: 24,
|
||||||
componentProps: {
|
componentProps: {
|
||||||
|
disabled: isRelated === 1,
|
||||||
onChange: (value) => {
|
onChange: (value) => {
|
||||||
if (isAi === 1) {
|
if (isAi === 1) {
|
||||||
form.setFieldValue("rectificationDescr", selectHiddens.current[currentProcessHiddenIndex.current].rectificationSuggestions);
|
form.setFieldValue("rectificationDescr", selectHiddens.current[currentProcessHiddenIndex.current].rectificationSuggestions);
|
||||||
|
|
@ -601,7 +715,7 @@ function Add(props) {
|
||||||
render: FORM_ITEM_RENDER_ENUM.DATE,
|
render: FORM_ITEM_RENDER_ENUM.DATE,
|
||||||
span: 24,
|
span: 24,
|
||||||
dependencies: ["rectificationType"],
|
dependencies: ["rectificationType"],
|
||||||
hidden: formValues => !(formValues.rectificationType === 2),
|
hidden: formValues => isBigOrMajorHidden || !(formValues.rectificationType === 2),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "rectificationDescr",
|
name: "rectificationDescr",
|
||||||
|
|
@ -609,7 +723,7 @@ function Add(props) {
|
||||||
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
||||||
span: 24,
|
span: 24,
|
||||||
dependencies: ["rectificationType"],
|
dependencies: ["rectificationType"],
|
||||||
hidden: formValues => !(formValues.rectificationType === 1),
|
hidden: formValues => isBigOrMajorHidden || !(formValues.rectificationType === 1),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "afterRectificationImageFiles",
|
name: "afterRectificationImageFiles",
|
||||||
|
|
@ -622,47 +736,51 @@ function Add(props) {
|
||||||
),
|
),
|
||||||
span: 24,
|
span: 24,
|
||||||
dependencies: ["rectificationType"],
|
dependencies: ["rectificationType"],
|
||||||
hidden: formValues => !(formValues.rectificationType === 1),
|
hidden: formValues => isBigOrMajorHidden || !(formValues.rectificationType === 1),
|
||||||
},
|
},
|
||||||
...(
|
...(
|
||||||
isRelated === 0
|
isBigOrMajorHidden
|
||||||
? [
|
? []
|
||||||
{
|
: isRelated === 0
|
||||||
name: "rectificationDeptId",
|
? [
|
||||||
label: "整改部门",
|
{
|
||||||
required: false,
|
name: "rectificationDeptId",
|
||||||
render: (
|
label: "整改部门",
|
||||||
<DepartmentSelectTree
|
required: false,
|
||||||
onChange={() => {
|
render: (
|
||||||
form.setFieldValue("rectificationUserId", "");
|
<DepartmentSelectTree
|
||||||
form.setFieldValue("rectificationUserName", "");
|
onChange={() => {
|
||||||
}}
|
form.setFieldValue("rectificationUserId", "");
|
||||||
onGetLabel={(label) => {
|
form.setFieldValue("rectificationUserName", "");
|
||||||
form.setFieldValue("rectificationDeptName", label);
|
}}
|
||||||
}}
|
onGetLabel={(label) => {
|
||||||
/>
|
form.setFieldValue("rectificationDeptName", label);
|
||||||
),
|
}}
|
||||||
},
|
/>
|
||||||
{ name: "rectificationDeptName", label: "整改部门名称", onlyForLabel: true },
|
),
|
||||||
{
|
hidden: isBigOrMajorHidden,
|
||||||
name: "rectificationUserId",
|
},
|
||||||
label: "整改人",
|
{ name: "rectificationDeptName", label: "整改部门名称", onlyForLabel: true },
|
||||||
required: false,
|
{
|
||||||
render: (
|
name: "rectificationUserId",
|
||||||
<PersonnelSelect
|
label: "整改人",
|
||||||
params={{ departmentId: rectificationDeptId }}
|
required: false,
|
||||||
onGetLabel={label => form.setFieldValue("rectificationUserName", label)}
|
render: (
|
||||||
/>
|
<PersonnelSelect
|
||||||
),
|
params={{ departmentId: rectificationDeptId }}
|
||||||
},
|
onGetLabel={label => form.setFieldValue("rectificationUserName", label)}
|
||||||
{ name: "rectificationUserName", label: "整改人名称", onlyForLabel: true },
|
/>
|
||||||
]
|
),
|
||||||
: [
|
hidden: isBigOrMajorHidden,
|
||||||
{ name: "rectificationDeptName", label: "整改单位", componentProps: { disabled: true } },
|
},
|
||||||
{ name: "rectificationDeptId", label: "整改单位id", onlyForLabel: true },
|
{ name: "rectificationUserName", label: "整改人名称", onlyForLabel: true },
|
||||||
{ name: "rectificationUserName", label: "整改人", componentProps: { disabled: true } },
|
]
|
||||||
{ name: "rectificationUserId", label: "整改人id", onlyForLabel: true },
|
: [
|
||||||
]),
|
{ name: "rectificationDeptName", label: "整改单位", componentProps: { disabled: true } },
|
||||||
|
{ name: "rectificationDeptId", label: "整改单位id", onlyForLabel: true },
|
||||||
|
{ name: "rectificationUserName", label: "整改人", componentProps: { disabled: true } },
|
||||||
|
{ name: "rectificationUserId", label: "整改人id", onlyForLabel: true },
|
||||||
|
]),
|
||||||
{
|
{
|
||||||
name: "checkDeptId",
|
name: "checkDeptId",
|
||||||
label: "验收部门",
|
label: "验收部门",
|
||||||
|
|
@ -679,7 +797,7 @@ function Add(props) {
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
dependencies: ["rectificationType"],
|
dependencies: ["rectificationType"],
|
||||||
hidden: formValues => !(formValues.rectificationType === 1),
|
hidden: formValues => isBigOrMajorHidden || !(formValues.rectificationType === 1),
|
||||||
},
|
},
|
||||||
{ name: "checkDeptName", label: "验收部门名称", onlyForLabel: true },
|
{ name: "checkDeptName", label: "验收部门名称", onlyForLabel: true },
|
||||||
{
|
{
|
||||||
|
|
@ -693,7 +811,7 @@ function Add(props) {
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
dependencies: ["rectificationType"],
|
dependencies: ["rectificationType"],
|
||||||
hidden: formValues => !(formValues.rectificationType === 1),
|
hidden: formValues => isBigOrMajorHidden || !(formValues.rectificationType === 1),
|
||||||
},
|
},
|
||||||
{ name: "checkUserName", label: "验收人名称", onlyForLabel: true },
|
{ name: "checkUserName", label: "验收人名称", onlyForLabel: true },
|
||||||
]}
|
]}
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,12 @@ function List(props) {
|
||||||
const [printModalOpen, setPrintModalOpen] = useState(false);
|
const [printModalOpen, setPrintModalOpen] = useState(false);
|
||||||
const { tableProps, getData } = useTable(props["ledgerList"], {
|
const { tableProps, getData } = useTable(props["ledgerList"], {
|
||||||
form,
|
form,
|
||||||
|
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
state: formData.state ? [formData.state] : undefined,
|
state: formData.state ? [formData.state] : undefined,
|
||||||
|
hiddenLevels: ["hiddenLevel1001", "hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ function List(props) {
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
params: { eqType: 2, entry: 2 },
|
params: { eqType: 2, entry: 2 },
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ function List(props) {
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -61,6 +62,7 @@ function List(props) {
|
||||||
label: "是否相关方",
|
label: "是否相关方",
|
||||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
items: IS_RELATED_ENUM,
|
items: IS_RELATED_ENUM,
|
||||||
|
hidden: props.type === "Stakeholder",
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
form={form}
|
form={form}
|
||||||
|
|
@ -102,7 +104,7 @@ function List(props) {
|
||||||
fixed: "right",
|
fixed: "right",
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Space>
|
<Space>
|
||||||
{props.permission("fgs-yqzg-ck") && (
|
{props.permission(props.ckButton || "fgs-yqzg-ck") && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|
@ -112,7 +114,7 @@ function List(props) {
|
||||||
查看
|
查看
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{props.permission("fgs-yqzg-zg") && (
|
{props.permission(props.zgButton || "fgs-yqzg-zg") && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|
@ -122,7 +124,7 @@ function List(props) {
|
||||||
整改
|
整改
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{props.permission("fgs-yqzg-lsaqcs") && (
|
{props.permission(props.lsaqcsButton || "fgs-yqzg-lsaqcs") && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|
@ -133,7 +135,7 @@ function List(props) {
|
||||||
临时安全措施
|
临时安全措施
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{props.permission("fgs-yqzg-sqyq") && !record.noReviewExtensionNum && (
|
{props.permission(props.sqyqButton || "fgs-yqzg-sqyq") && !record.noReviewExtensionNum && (
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ function List(props) {
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
params: { eqType: 1, entry: 2 },
|
params: { eqType: 1, entry: 2 },
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,115 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 { HIDDEN_MAJOR_LEVEL, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: [100],
|
||||||
|
hiddenLevels: ["jdyh001", "hiddenLevel2002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: "state", render: () => "待确认", width: 100 },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{props.permission("fgs-yhqr-info") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{props.permission("fgs-yhqr-confirm") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`./review?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
确认
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,275 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Divider, Form, message, Modal } from "antd";
|
||||||
|
import { useEffect, useRef, useState } from "react";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||||
|
import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/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 useDeleteFile from "zy-react-library/hooks/useDeleteFile";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
|
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
|
||||||
|
import useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
|
import { NS_CONFIRM, NS_CONFIRM_USER, NS_LEDGER, NS_MAJOR_HIDDEN, NS_PART } from "~/enumerate/namespace";
|
||||||
|
import ConfirmViev from "~/pages/Container/BranchCompany/MajorHidden/HiddenView/confirmViev";
|
||||||
|
|
||||||
|
function Confirm(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const hiddenLevel = Form.useWatch("hiddenLevel", form);
|
||||||
|
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
const [corpData, setCorpData] = useState({});
|
||||||
|
const [confirmUserList, setConfirmUserList] = useState([]);
|
||||||
|
const xgfProjectInfo = useRef({});
|
||||||
|
const { getUserInfo } = useGetUserInfo();
|
||||||
|
|
||||||
|
const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
const deleteLinshiFilse = useRef([]);
|
||||||
|
const deleteBuchongFilse = useRef([]);
|
||||||
|
const isNeglectHidden = hiddenLevel === "hiddenLevel1001";
|
||||||
|
const isMinorOrGeneralHidden = ["hiddenLevel1004", "hiddenLevel1002"].includes(hiddenLevel);
|
||||||
|
const isBigOrMajorHidden = ["jdyh001", "hiddenLevel2002"].includes(hiddenLevel);
|
||||||
|
const isShowConfirmTime = isNeglectHidden || isMinorOrGeneralHidden || isBigOrMajorHidden;
|
||||||
|
|
||||||
|
const getXgfProjectInfo = async (id) => {
|
||||||
|
const { data } = await props["xgfProjectInfo"]({ id });
|
||||||
|
xgfProjectInfo.current = data;
|
||||||
|
};
|
||||||
|
const getImgData = async (value) => {
|
||||||
|
const linshiFilse = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["179"],
|
||||||
|
eqForeignKey: value.hiddenId,
|
||||||
|
});
|
||||||
|
const buchongFilse = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["180"],
|
||||||
|
eqForeignKey: value.hiddenId,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (linshiFilse && linshiFilse.length > 0) {
|
||||||
|
form.setFieldValue("linshiFilse", linshiFilse);
|
||||||
|
}
|
||||||
|
if (buchongFilse && buchongFilse.length > 0) {
|
||||||
|
form.setFieldValue("buchongFilse", buchongFilse);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const data = await getUserInfo();
|
||||||
|
setCorpData(data);
|
||||||
|
};
|
||||||
|
const getConfirmUserList = async () => {
|
||||||
|
const { data } = await props["confirmUserAllList"]();
|
||||||
|
setConfirmUserList(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getData();
|
||||||
|
getConfirmUserList();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const clearLevelRelatedFields = () => {
|
||||||
|
form.setFieldsValue({
|
||||||
|
confirmUserId: undefined,
|
||||||
|
confirmUserName: undefined,
|
||||||
|
deptId: undefined,
|
||||||
|
deptName: undefined,
|
||||||
|
checkDeptId: undefined,
|
||||||
|
checkDeptName: undefined,
|
||||||
|
checkUserId: undefined,
|
||||||
|
checkUserName: undefined,
|
||||||
|
linshiFilse: undefined,
|
||||||
|
buchongFilse: undefined,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const onSubmit = (values) => {
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "是否确认隐患?",
|
||||||
|
onOk: async () => {
|
||||||
|
if (isBigOrMajorHidden) {
|
||||||
|
const { id } = await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.linshiFilse,
|
||||||
|
params: {
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[179],
|
||||||
|
foreignKey: data.hiddenId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.buchongFilse,
|
||||||
|
params: {
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[180],
|
||||||
|
foreignKey: id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const { success } = await props["majorConfirm"]({
|
||||||
|
status: "1",
|
||||||
|
rectificationType: 2,
|
||||||
|
...values,
|
||||||
|
id: data.id,
|
||||||
|
hiddenId: data.hiddenId,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
message.success("确认成功");
|
||||||
|
await deleteFile({ single: false, files: deleteLinshiFilse.current });
|
||||||
|
await deleteFile({ single: false, files: deleteBuchongFilse.current });
|
||||||
|
props.history.goBack();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const onValuesChange = (changedValues) => {
|
||||||
|
if ("hiddenLevel" in changedValues) {
|
||||||
|
console.log(changedValues.hiddenLevel);
|
||||||
|
if (changedValues.hiddenLevel === "jdyh001" || changedValues.hiddenLevel === "hiddenLevel2002") {
|
||||||
|
getImgData(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Page headerTitle="确认" contentPadding="0 20px 20px 20px" isShowFooter={false}>
|
||||||
|
<HiddenInfo
|
||||||
|
onGetData={(data) => {
|
||||||
|
setData(data);
|
||||||
|
|
||||||
|
if (data.isRelated === 1)
|
||||||
|
getXgfProjectInfo(data.projectId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<ConfirmViev hiddenData={data} />
|
||||||
|
<Divider orientation="left">发现隐患部门负责人确认</Divider>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<FormBuilder
|
||||||
|
form={form}
|
||||||
|
loading={props.majorHidden.hiddenMajorLoading || uploadFileLoading || deleteFileLoading || getFileLoading}
|
||||||
|
showCancelButton={false}
|
||||||
|
labelCol={{ span: 6 }}
|
||||||
|
submitButtonText="通过"
|
||||||
|
onFinish={onSubmit}
|
||||||
|
onValuesChange={onValuesChange}
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: (
|
||||||
|
<HiddenLevelSelectTree
|
||||||
|
onChange={(value) => {
|
||||||
|
clearLevelRelatedFields();
|
||||||
|
form.setFieldValue("hiddenLevel", value);
|
||||||
|
form.setFieldValue("userId", undefined);
|
||||||
|
}}
|
||||||
|
onGetLabel={(label) => {
|
||||||
|
form.setFieldValue("hiddenLevelName", label);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "hiddenLevelName", label: "隐患级别名称", onlyForLabel: true },
|
||||||
|
{
|
||||||
|
name: "confirmTime",
|
||||||
|
label: "隐患确认时间",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.DATETIME,
|
||||||
|
hidden: !isShowConfirmTime,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "userId",
|
||||||
|
label: "一般隐患确认人",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: confirmUserList,
|
||||||
|
itemsField: { valueKey: "userId", labelKey: "name" },
|
||||||
|
componentProps: {
|
||||||
|
onChange: (value) => {
|
||||||
|
const findItem = confirmUserList.find(item => item.userId === value);
|
||||||
|
form.setFieldValue("userName", findItem.name);
|
||||||
|
form.setFieldValue("deptName", findItem.deptName);
|
||||||
|
form.setFieldValue("deptId", findItem.deptId);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hidden: !isMinorOrGeneralHidden,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "userId",
|
||||||
|
label: "隐患核实人",
|
||||||
|
render: (
|
||||||
|
<PersonnelSelect
|
||||||
|
isNeedCorpInfoId={true}
|
||||||
|
isNeedDepartmentId={false}
|
||||||
|
extraParams={{ noMain: 1 }}
|
||||||
|
params={{ corpinfoId: corpData.corpinfoId }}
|
||||||
|
onGetLabel={label => form.setFieldValue("checkUserName", label)}
|
||||||
|
onGetOption={(value) => {
|
||||||
|
form.setFieldValue("userName", value.name);
|
||||||
|
form.setFieldValue("deptName", value.departmentName);
|
||||||
|
form.setFieldValue("deptId", value.departmentId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
hidden: !isBigOrMajorHidden,
|
||||||
|
},
|
||||||
|
{ name: "userName", label: "隐患确认人名称", onlyForLabel: true },
|
||||||
|
{ name: "deptName", label: "隐患确认人部门名称", onlyForLabel: true },
|
||||||
|
{ name: "deptId", label: "隐患确认人部门id", onlyForLabel: true },
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "linshiFilse",
|
||||||
|
label: "临时处置信息",
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onGetRemoveFile={(file) => {
|
||||||
|
deleteLinshiFilse.current = [...deleteLinshiFilse.current, file];
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
span: 24,
|
||||||
|
hidden: !isBigOrMajorHidden,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "buchongFilse",
|
||||||
|
label: "补充重大/较大隐患信息",
|
||||||
|
span: 24,
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onGetRemoveFile={(file) => {
|
||||||
|
deleteBuchongFilse.current = [...deleteBuchongFilse.current, file];
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
hidden: !isBigOrMajorHidden,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Page>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN, NS_CONFIRM, NS_LEDGER, NS_CONFIRM_USER, NS_PART], true)(Confirm);
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Confirm(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Confirm;
|
||||||
|
|
@ -0,0 +1,117 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 { HIDDEN_MAJOR_LEVEL, HIDDEN_STATE_ENUM, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: [100, 110, 120, 200, 201, 300, 301, 302, 400, 97, 101],
|
||||||
|
hiddenLevels: ["jdyh001", "hiddenLevel2002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "隐患确认人" },
|
||||||
|
{ name: "verifyUserName", label: "隐患核实人" },
|
||||||
|
{ name: "approveUserName", label: "隐患核定人" },
|
||||||
|
{ name: "rectificationUserName", label: "整改人" },
|
||||||
|
{ name: "checkUserName", label: "隐患验收人" },
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: 130 },
|
||||||
|
{ title: "核实人", dataIndex: "verifyUserName", width: 130 },
|
||||||
|
{ title: "核定人", dataIndex: "approveUserName", width: 130 },
|
||||||
|
{ title: "整改人", dataIndex: "rectifyUserName", width: 130 },
|
||||||
|
{ title: "验收人", dataIndex: "hiddenYUserName", width: 130 },
|
||||||
|
{ title: "隐患状态", dataIndex: "state", render: (_, recode) => getLabelName({ list: HIDDEN_STATE_ENUM, status: recode.state }) },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
hidden: !props.permission("fgs-yhgl-info"),
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{/* {props.permission("fgs-yhgl-info") && ( */}
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
{/* )} */}
|
||||||
|
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function HiddenManage(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenManage;
|
||||||
|
|
@ -0,0 +1,273 @@
|
||||||
|
import { Button, Descriptions, Divider } from "antd";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useDownloadFile from "zy-react-library/hooks/useDownloadFile";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
|
|
||||||
|
function ViewModal(props) {
|
||||||
|
const record = props.hiddenData || {};
|
||||||
|
console.log(record);
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
const { downloadFile } = useDownloadFile();
|
||||||
|
|
||||||
|
const downloadFun = async (type) => {
|
||||||
|
const data = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM[type],
|
||||||
|
eqForeignKey: record.hiddenId,
|
||||||
|
});
|
||||||
|
if (data && data.length > 0) {
|
||||||
|
data.forEach((item) => {
|
||||||
|
downloadFile({ url: item.filePath });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
(record.hiddenConfirmUserCO && record.hiddenConfirmUserCO.length > 0)
|
||||||
|
&& (
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">发现隐患部门负责人确认</Divider>
|
||||||
|
{
|
||||||
|
record.hiddenConfirmUserCO.map(item => (
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
key={item.id}
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
items={[
|
||||||
|
{ label: "隐患级别", children: item.hiddenLevelName || "-", span: 2 },
|
||||||
|
{ label: "隐患确认人", children: item.userName || "-", span: 2 },
|
||||||
|
{ label: "隐患确认时间", children: item.rectificationTime || "-", span: 2 },
|
||||||
|
...((record.hiddenConfirmUserCO && record.hiddenConfirmUserCO.length > 0 && record.hiddenConfirmUserCO[0].status !== 0)
|
||||||
|
? [{ label: "临时处置信息", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(179)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 }, { label: "补充重大/较大隐患信息", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(180)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 }]
|
||||||
|
: []),
|
||||||
|
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
(record.hiddenVerifyUserCO && record.hiddenVerifyUserCO.length > 0 && record.hiddenVerifyUserCO[0].status !== 2)
|
||||||
|
|
||||||
|
&& (
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">分公司安委会办公室副主任核实</Divider>
|
||||||
|
{
|
||||||
|
record.hiddenVerifyUserCO.map(item => (
|
||||||
|
<Descriptions
|
||||||
|
key={item.id}
|
||||||
|
bordered
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
items={[
|
||||||
|
{ label: "隐患级别", children: item.hiddenLevelName || "-", span: 2 },
|
||||||
|
{ label: "核实人", children: item.userName || "-", span: 2 },
|
||||||
|
{ label: "核对时间", children: item.rectificationTime || "-", span: 2 },
|
||||||
|
{ label: "核对结果", children: item.status === 0 ? "打回" : item.status === 1 ? "核实通过" : "-", span: 2 },
|
||||||
|
...(item.status === 0
|
||||||
|
? [
|
||||||
|
{ label: "打回原因", children: item.repulseCause, span: 2 },
|
||||||
|
]
|
||||||
|
: [{ label: "安委会办公室会议记录", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(181)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 }, { label: "整改建议及方案", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(182)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 }]),
|
||||||
|
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
(record.hiddenApproveUserCO && record.hiddenApproveUserCO.length > 0 && record.hiddenApproveUserCO[0].status !== 2)
|
||||||
|
|
||||||
|
&& (
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">港股公司安委会办公室核定</Divider>
|
||||||
|
{
|
||||||
|
record.hiddenApproveUserCO.map(item => (
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
key={item.id}
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
items={[
|
||||||
|
{ label: "隐患级别", children: item.hiddenLevelName || "-", span: 2 },
|
||||||
|
{ label: "核定人", children: item.userName || "-", span: 2 },
|
||||||
|
{ label: "隐患核定时间", children: item.rectificationTime || "-", span: 2 },
|
||||||
|
{ label: "隐患调查报告", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(183)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 },
|
||||||
|
{ label: "安委会或党委会决议记录", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(184)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 },
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
(record.hiddenRectifyUserCO && record.hiddenRectifyUserCO.length > 0 && record.hiddenRectifyUserCO[0].status !== 2)
|
||||||
|
|
||||||
|
&& (
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">较大隐患整改</Divider>
|
||||||
|
{
|
||||||
|
record.hiddenRectifyUserCO.map(item => (
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
key={item.id}
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
items={[
|
||||||
|
{ label: "整改部门", children: item.deptName || "-", span: 2 },
|
||||||
|
{ label: "整改人", children: item.userName || "-", span: 2 },
|
||||||
|
{ label: "临时处置措施", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(185)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 },
|
||||||
|
{ label: "隐患整改方案", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(186)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 },
|
||||||
|
{ label: "隐患整改过程记录", children: (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
loading={getFileLoading}
|
||||||
|
onClick={() => downloadFun(187)}
|
||||||
|
>
|
||||||
|
下载
|
||||||
|
</Button>
|
||||||
|
), span: 2 },
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
(record.hiddenAcceptUserCO && record.hiddenAcceptUserCO.length > 0 && record.hiddenAcceptUserCO[0].status !== 2 && record.state === 400)
|
||||||
|
|
||||||
|
&& (
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">较大隐患验收</Divider>
|
||||||
|
{
|
||||||
|
record.hiddenAcceptUserCO.map(item => (
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
|
||||||
|
key={item.id}
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
items={[
|
||||||
|
{ label: "验收人", children: item.userName || "-", span: 2 },
|
||||||
|
{ label: "验收时间", children: item.rectificationTime || "-", span: 2 },
|
||||||
|
{ label: "验收结果", children: item.status === 0 ? "验收打回" : item.status === 1 ? "验收通过" : "-", span: 2 },
|
||||||
|
...(item.status === 0
|
||||||
|
? [
|
||||||
|
{ label: "打回原因", children: item.repulseCause, span: 2 },
|
||||||
|
]
|
||||||
|
: []),
|
||||||
|
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
(record.lastRejectAcceptUserCO && record.lastRejectAcceptUserCO.length > 0 && record.lastRejectAcceptUserCO[0].status !== 2 && record.state !== 400)
|
||||||
|
|
||||||
|
&& (
|
||||||
|
<div>
|
||||||
|
<Divider orientation="left">较大隐患验收</Divider>
|
||||||
|
{
|
||||||
|
record.lastRejectAcceptUserCO.map(item => (
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
key={item.id}
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
items={[
|
||||||
|
{ label: "验收人", children: item.userName || "-", span: 2 },
|
||||||
|
{ label: "验收时间", children: item.rectificationTime || "-", span: 2 },
|
||||||
|
{ label: "验收结果", children: item.status === 0 ? "验收打回" : "验收通过", span: 2 },
|
||||||
|
...(item.status === 0
|
||||||
|
? [
|
||||||
|
{ label: "打回原因", children: item.repulseCause, span: 2 },
|
||||||
|
]
|
||||||
|
: []),
|
||||||
|
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ViewModal;
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { useState } from "react";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
import HiddenInfo from "~/components/HiddenInfo/gwj";
|
||||||
|
import ConfirmViev from "./confirmViev";
|
||||||
|
|
||||||
|
function HiddenView() {
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
const [hiddenData, setHiddenData] = useState({});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page headerTitle="查看" contentPadding="0 20px 20px 20px">
|
||||||
|
<HiddenInfo history={query.history === "1"} onGetData={data => setHiddenData(data)} />
|
||||||
|
<ConfirmViev hiddenData={hiddenData} />
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenView;
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 { HIDDEN_MAJOR_LEVEL, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: [200],
|
||||||
|
hiddenLevels: ["jdyh001", "hiddenLevel2002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "隐患确认人" },
|
||||||
|
{ name: "verifyUserName", label: "隐患核实人" },
|
||||||
|
{ name: "approveUserName", label: "隐患核定人" },
|
||||||
|
{ name: "rectificationUserName", label: "整改人" },
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: 130 },
|
||||||
|
{ title: "核实人", dataIndex: "verifyUserName", width: 130 },
|
||||||
|
{ title: "核定人", dataIndex: "approveUserName", width: 130 },
|
||||||
|
{ title: "整改人", dataIndex: "rectifyUserName", width: 130 },
|
||||||
|
{ title: "隐患状态", dataIndex: "state", render: () => "待整改" },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{props.permission("fgs-yhzg-info") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{props.permission("fgs-yhzg-rectification") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`./Rectification?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
整改
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,347 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Descriptions, Divider, Form, message, Modal, Space } from "antd";
|
||||||
|
import { useRef, useState } from "react";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||||
|
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
||||||
|
import Upload from "zy-react-library/components/Upload";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useDeleteFile from "zy-react-library/hooks/useDeleteFile";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
|
import useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
|
import HiddenInfo from "~/components/HiddenInfo/gwj";
|
||||||
|
import { NS_LEDGER, NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
import ConfirmViev from "~/pages/Container/BranchCompany/MajorHidden/HiddenView/confirmViev";
|
||||||
|
|
||||||
|
function Rectification(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
|
const deptId = Form.useWatch("deptId", form);
|
||||||
|
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
const [deleteLinshiFilse, setDeleteLinshiFilse] = useState([]);
|
||||||
|
const [deleteYhzgfyFiles, setDeleteYhzgfyFiles] = useState([]);
|
||||||
|
const [deleteYhzggcjlFilse, setDeleteYhzggcjlFilse] = useState([]);
|
||||||
|
|
||||||
|
const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
|
||||||
|
const xgfProjectInfo = useRef({});
|
||||||
|
|
||||||
|
const pageLoading = props.majorHidden.hiddenMajorLoading || uploadFileLoading || deleteFileLoading || getFileLoading;
|
||||||
|
|
||||||
|
const attachmentConfigList = [
|
||||||
|
{
|
||||||
|
field: "linshiFilse",
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[185],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: "yhzgfyFiles",
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[186],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: "yhzggcjlFilse",
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[187],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const getXgfProjectInfo = async (id) => {
|
||||||
|
const { data } = await props["xgfProjectInfo"]({ id });
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
xgfProjectInfo.current = data;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getImgData = async (value) => {
|
||||||
|
const [linshiFilse, yhzgfyFiles, yhzggcjlFilse] = await Promise.all([
|
||||||
|
getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["185"],
|
||||||
|
eqForeignKey: value.hiddenId,
|
||||||
|
}),
|
||||||
|
getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["186"],
|
||||||
|
eqForeignKey: value.hiddenId,
|
||||||
|
}),
|
||||||
|
getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM["187"],
|
||||||
|
eqForeignKey: value.hiddenId,
|
||||||
|
}),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (linshiFilse && linshiFilse.length > 0) {
|
||||||
|
form.setFieldValue("linshiFilse", linshiFilse);
|
||||||
|
}
|
||||||
|
if (yhzgfyFiles && yhzgfyFiles.length > 0) {
|
||||||
|
form.setFieldValue("yhzgfyFiles", yhzgfyFiles);
|
||||||
|
}
|
||||||
|
if (yhzggcjlFilse && yhzggcjlFilse.length > 0) {
|
||||||
|
form.setFieldValue("yhzggcjlFilse", yhzggcjlFilse);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getHiddenUserId = (onlyAccepted = false) => {
|
||||||
|
const hiddenAcceptUser = data.hiddenAcceptUserCO && data.hiddenAcceptUserCO.length > 0 ? data.hiddenAcceptUserCO[0] : null;
|
||||||
|
|
||||||
|
if (!hiddenAcceptUser) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (onlyAccepted && hiddenAcceptUser.status !== 2) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return hiddenAcceptUser.hiddenUserId;
|
||||||
|
};
|
||||||
|
|
||||||
|
const uploadAttachments = async (values) => {
|
||||||
|
for (const item of attachmentConfigList) {
|
||||||
|
const files = values[item.field];
|
||||||
|
|
||||||
|
if (files && files.length > 0 && files[0].originFileObj) {
|
||||||
|
await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files,
|
||||||
|
params: {
|
||||||
|
type: item.type,
|
||||||
|
foreignKey: data.hiddenId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteRemovedAttachments = async () => {
|
||||||
|
await Promise.allSettled([
|
||||||
|
deleteLinshiFilse,
|
||||||
|
deleteYhzgfyFiles,
|
||||||
|
deleteYhzggcjlFilse,
|
||||||
|
].map((files) => {
|
||||||
|
if (!files || files.length === 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return deleteFile({
|
||||||
|
single: false,
|
||||||
|
files,
|
||||||
|
});
|
||||||
|
}).filter(Boolean));
|
||||||
|
};
|
||||||
|
|
||||||
|
const buildPayload = (values, onlyAccepted = false) => ({
|
||||||
|
rectificationType: 2,
|
||||||
|
...values,
|
||||||
|
id: data.id,
|
||||||
|
hiddenId: data.hiddenId,
|
||||||
|
hiddenUserId: getHiddenUserId(onlyAccepted),
|
||||||
|
});
|
||||||
|
|
||||||
|
const onSubmit = async () => {
|
||||||
|
let values;
|
||||||
|
|
||||||
|
try {
|
||||||
|
values = await form.validateFields();
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "是否申请验收?",
|
||||||
|
onOk: async () => {
|
||||||
|
try {
|
||||||
|
await uploadAttachments(values);
|
||||||
|
|
||||||
|
const { success } = await props["majorRectify"](buildPayload(values, true));
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
message.success("申请验收成功");
|
||||||
|
await deleteRemovedAttachments();
|
||||||
|
props.history.goBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
message.error("申请验收失败");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTempSave = async () => {
|
||||||
|
const values = form.getFieldsValue(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await uploadAttachments(values);
|
||||||
|
|
||||||
|
const { success } = await props["majorRectifyDraft"](buildPayload(values));
|
||||||
|
|
||||||
|
if (success) {
|
||||||
|
message.success("暂存成功");
|
||||||
|
await deleteRemovedAttachments();
|
||||||
|
props.history.goBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
message.error("暂存失败");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Page
|
||||||
|
headerTitle="整改"
|
||||||
|
extraActionButtons={(
|
||||||
|
<Space>
|
||||||
|
<Button
|
||||||
|
onClick={onTempSave}
|
||||||
|
loading={pageLoading}
|
||||||
|
>
|
||||||
|
暂存
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
onClick={onSubmit}
|
||||||
|
loading={pageLoading}
|
||||||
|
>
|
||||||
|
申请验收
|
||||||
|
</Button>
|
||||||
|
</Space>
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<HiddenInfo
|
||||||
|
|
||||||
|
onGetData={(data) => {
|
||||||
|
setData(data);
|
||||||
|
getImgData(data);
|
||||||
|
|
||||||
|
if (data.hiddenAcceptUserCO && data.hiddenAcceptUserCO.length > 0 && data.hiddenAcceptUserCO[0].status === 2) {
|
||||||
|
form.setFieldValue("deptId", data.hiddenAcceptUserCO[0].deptId);
|
||||||
|
form.setFieldValue("deptName", data.hiddenAcceptUserCO[0].deptName);
|
||||||
|
form.setFieldValue("userId", data.hiddenAcceptUserCO[0].userId);
|
||||||
|
form.setFieldValue("userName", data.hiddenAcceptUserCO[0].userName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.isRelated === 1)
|
||||||
|
getXgfProjectInfo(data.projectId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<ConfirmViev hiddenData={data} />
|
||||||
|
<Divider orientation="left">较大隐患整改</Divider>
|
||||||
|
<div>
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
size="middle"
|
||||||
|
style={{ marginBottom: 20 }}
|
||||||
|
items={[
|
||||||
|
{ label: "整改部门", children: (data.hiddenRectifyUserCO && data.hiddenRectifyUserCO.length > 0) ? data.hiddenRectifyUserCO[0].deptName : "-", span: 2 },
|
||||||
|
{ label: "整改负责人", children: (data.hiddenRectifyUserCO && data.hiddenRectifyUserCO.length > 0) ? data.hiddenRectifyUserCO[0].userName : "-", span: 2 },
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<FormBuilder
|
||||||
|
form={form}
|
||||||
|
loading={pageLoading}
|
||||||
|
showCancelButton={false}
|
||||||
|
showSubmitButton={false}
|
||||||
|
options={[
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "linshiFilse",
|
||||||
|
label: "临时处置措施",
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onGetRemoveFile={(file) => {
|
||||||
|
setDeleteLinshiFilse(prev => [...prev, file]);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
span: 24,
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "yhzgfyFiles",
|
||||||
|
label: "隐患整改方案",
|
||||||
|
span: 24,
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onGetRemoveFile={(file) => {
|
||||||
|
setDeleteYhzgfyFiles(prev => [...prev, file]);
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "yhzggcjlFilse",
|
||||||
|
label: "隐患整改过程记录",
|
||||||
|
span: 24,
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onGetRemoveFile={(file) => {
|
||||||
|
setDeleteYhzggcjlFilse(prev => [...prev, file]);
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "deptId",
|
||||||
|
label: "隐患验收部门",
|
||||||
|
render: (
|
||||||
|
<DepartmentSelectTree
|
||||||
|
searchType="inType"
|
||||||
|
params={{ enterpriseType: [1] }}
|
||||||
|
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 },
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Page>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN, NS_LEDGER], true)(Rectification);
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Rectification(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Rectification;
|
||||||
|
|
@ -0,0 +1,119 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 { HIDDEN_MAJOR_LEVEL, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: [110],
|
||||||
|
hiddenLevels: ["jdyh001", "hiddenLevel2002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "隐患确认人" },
|
||||||
|
{ name: "verifyUserName", label: "隐患核实人" },
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: 130 },
|
||||||
|
{ title: "核实人", dataIndex: "verifyUserName", width: 130 },
|
||||||
|
{ title: "隐患状态", dataIndex: "state", render: () => "待核实" },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{props.permission("fgs-yhhs-info") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{props.permission("fgs-yhhs-verify") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`./Verify?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
核实
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,198 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Divider, Form, message, Modal } from "antd";
|
||||||
|
import { useRef, useState } from "react";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||||
|
import 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 useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
|
import HiddenInfo from "~/components/HiddenInfo/gwj";
|
||||||
|
import { NS_CONFIRM, NS_LEDGER, NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
import ConfirmViev from "~/pages/Container/BranchCompany/MajorHidden/HiddenView/confirmViev";
|
||||||
|
|
||||||
|
function Verify(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
|
const deptId = Form.useWatch("deptId", form);
|
||||||
|
|
||||||
|
const status = Form.useWatch("status", form);
|
||||||
|
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
|
||||||
|
const xgfProjectInfo = useRef({});
|
||||||
|
|
||||||
|
const getXgfProjectInfo = async (id) => {
|
||||||
|
const { data } = await props["xgfProjectInfo"]({ id });
|
||||||
|
console.log(data);
|
||||||
|
xgfProjectInfo.current = data;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onSubmit = (values) => {
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "是否确认核实?",
|
||||||
|
onOk: async () => {
|
||||||
|
const { id } = await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.awhbgsjlFilse,
|
||||||
|
params: {
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[181],
|
||||||
|
foreignKey: data.hiddenId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.zgjyfaFilse,
|
||||||
|
params: {
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[182],
|
||||||
|
foreignKey: id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { success } = await props["majorVerify"]({
|
||||||
|
rectificationType: 2,
|
||||||
|
...values,
|
||||||
|
id: data.id,
|
||||||
|
hiddenId: data.hiddenId,
|
||||||
|
hiddenLevel: data.hiddenLevel,
|
||||||
|
hiddenLevelName: data.hiddenLevelName,
|
||||||
|
});
|
||||||
|
if (success) {
|
||||||
|
message.success("核实成功");
|
||||||
|
props.history.goBack();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Page headerTitle="核实" isShowFooter={false}>
|
||||||
|
<HiddenInfo
|
||||||
|
|
||||||
|
onGetData={(data) => {
|
||||||
|
setData(data);
|
||||||
|
if (data.isRelated === 1)
|
||||||
|
getXgfProjectInfo(data.projectId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<ConfirmViev hiddenData={data} />
|
||||||
|
<Divider orientation="left">分公司安委会办公室副主任核实</Divider>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<FormBuilder
|
||||||
|
form={form}
|
||||||
|
loading={props.confirm.confirmLoading || uploadFileLoading}
|
||||||
|
showCancelButton={false}
|
||||||
|
submitButtonText="确认"
|
||||||
|
onFinish={onSubmit}
|
||||||
|
labelCol={{
|
||||||
|
span: 6,
|
||||||
|
}}
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
name: "status",
|
||||||
|
label: "核实结果",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
|
items: [{ bianma: 2, name: "打回" }, { bianma: 1, name: "核实通过" }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "deptId",
|
||||||
|
label: "隐患核定部门",
|
||||||
|
hidden: status === 2,
|
||||||
|
render: (
|
||||||
|
<DepartmentSelectTree
|
||||||
|
params={{ inType: [2] }}
|
||||||
|
searchType="inType"
|
||||||
|
onChange={() => {
|
||||||
|
form.setFieldValue("userId", "");
|
||||||
|
form.setFieldValue("userName", "");
|
||||||
|
}}
|
||||||
|
onGetLabel={(label) => {
|
||||||
|
form.setFieldValue("deptName", label);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "deptName", label: "隐患核实定门名称", onlyForLabel: true },
|
||||||
|
{
|
||||||
|
name: "userId",
|
||||||
|
label: "隐患核定人",
|
||||||
|
hidden: status === 2,
|
||||||
|
render: (
|
||||||
|
<PersonnelSelect
|
||||||
|
extraParams={{ noMain: 1 }}
|
||||||
|
params={{ departmentId: deptId }}
|
||||||
|
onGetLabel={label => form.setFieldValue("userName", label)}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "userName", label: "隐患核定人名称", onlyForLabel: true },
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "verifyTime",
|
||||||
|
label: "隐患核实时间",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.DATETIME,
|
||||||
|
hidden: status === 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "awhbgsjlFilse",
|
||||||
|
label: "安委会办公室会议记录",
|
||||||
|
hidden: status === 2,
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onRemove={() => {
|
||||||
|
form.setFieldValue("awhbgsjlFilse");
|
||||||
|
return false;
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
span: 24,
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "zgjyfaFilse",
|
||||||
|
label: "整改建议及方案",
|
||||||
|
span: 24,
|
||||||
|
hidden: status === 2,
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onRemove={() => {
|
||||||
|
form.setFieldValue("zgjyfaFilse");
|
||||||
|
return false;
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "repulseCause",
|
||||||
|
label: "打回原因",
|
||||||
|
span: 24,
|
||||||
|
hidden: status === 1,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Page>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN, NS_CONFIRM, NS_LEDGER], true)(Verify);
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Verify(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Verify;
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function MajorHidden(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MajorHidden;
|
||||||
|
|
@ -0,0 +1,487 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Checkbox, Form, message, Modal, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import { useEffect, useMemo, useRef, useState } from "react";
|
||||||
|
import { useReactToPrint } from "react-to-print";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import ExportIcon from "zy-react-library/components/Icon/ExportIcon";
|
||||||
|
import PrintIcon from "zy-react-library/components/Icon/PrintIcon";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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, getUnmatchedItems } from "zy-react-library/utils";
|
||||||
|
import { IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
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 { tableProps, getData } = useTable(props["ledgerList"], {
|
||||||
|
form,
|
||||||
|
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: formData.state ? [formData.state] : undefined,
|
||||||
|
hiddenLevels: ["hiddenLevel1001", "hiddenLevel1004", "hiddenLevel1002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: (
|
||||||
|
<HiddenLevelSelectTree isShowLarger={false} isShowMajor={false} />
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
{
|
||||||
|
name: "state",
|
||||||
|
label: "隐患状态",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: getUnmatchedItems({ list: HIDDEN_STATE_ENUM, value: ["98", "102"] }),
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "确认人" },
|
||||||
|
{ name: "rectificationUserName", label: "整改人" },
|
||||||
|
{ name: "rectificationDeptId", label: "整改部门", render: <DepartmentSelectTree /> },
|
||||||
|
{ name: "checkUserName", label: "验收人" },
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "isAi",
|
||||||
|
label: "是否使用AI",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: [{ bianma: "1", name: "是" }, { bianma: "0", name: "否" }],
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
form={form}
|
||||||
|
onFinish={getData}
|
||||||
|
/>
|
||||||
|
<Table
|
||||||
|
rowSelection={{
|
||||||
|
preserveSelectedRowKeys: true,
|
||||||
|
selectedRowKeys,
|
||||||
|
onChange: (selectedRowKeys) => {
|
||||||
|
setSelectedRowKeys(selectedRowKeys);
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
toolBarRender={() => (
|
||||||
|
<>
|
||||||
|
{props.permission("xgf-yhjl-dy") && (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
icon={<PrintIcon />}
|
||||||
|
ghost
|
||||||
|
onClick={() => {
|
||||||
|
if (selectedRowKeys.length === 0) {
|
||||||
|
message.error("请选中要打印的数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setPrintModalOpen(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
打印
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{props.permission("xgf-yhjl-aldc") && (
|
||||||
|
<Button
|
||||||
|
type="primary"
|
||||||
|
icon={<ExportIcon />}
|
||||||
|
ghost
|
||||||
|
onClick={() => {
|
||||||
|
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: "hiddenFindDeptName", width: 180 },
|
||||||
|
{ title: "隐患发现人", dataIndex: "createName", width: 130 },
|
||||||
|
{
|
||||||
|
title: "隐患发现时间",
|
||||||
|
dataIndex: "hiddenFindTime",
|
||||||
|
width: 180,
|
||||||
|
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: "rectifyUserName", width: 100 },
|
||||||
|
{
|
||||||
|
title: "整改时间",
|
||||||
|
dataIndex: "rectificationTime",
|
||||||
|
width: 180,
|
||||||
|
render: (_, record) => record.rectificationTime ? dayjs(record.rectificationTime).format("YYYY-MM-DD HH:mm:ss") : "",
|
||||||
|
},
|
||||||
|
{ title: "验收人", dataIndex: "hiddenYUserName", width: 100 },
|
||||||
|
{
|
||||||
|
title: "是否相关方",
|
||||||
|
dataIndex: "isRelated",
|
||||||
|
width: 150,
|
||||||
|
render: (_, record) => getLabelName({
|
||||||
|
list: IS_RELATED_ENUM,
|
||||||
|
status: record.isRelated,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "隐患状态",
|
||||||
|
dataIndex: "state",
|
||||||
|
render: (_, record) => getLabelName({ list: HIDDEN_STATE_ENUM, status: record.state }),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 180,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
|
||||||
|
{props.permission("xgf-yhjl-ck") && (
|
||||||
|
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{props.permission("xgf-yhjl-gcjl") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}&history=1`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
过程记录
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
{exportByColumnModalOpen && (
|
||||||
|
<ExportByColumnModal
|
||||||
|
hiddenFindTime={form.getFieldValue("hiddenFindTime")}
|
||||||
|
selectedRowKeys={selectedRowKeys}
|
||||||
|
onCancel={() => setExportByColumnModalOpen(false)}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
{printModalOpen && (
|
||||||
|
<PrintModal
|
||||||
|
selectedRowKeys={selectedRowKeys}
|
||||||
|
onCancel={() => setPrintModalOpen(false)}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ExportByColumnModalComponent = (props) => {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const exportFields = Form.useWatch("exportFields", form);
|
||||||
|
const { loading, downloadBlob } = useDownloadBlob();
|
||||||
|
const [items, setItems] = useState([]);
|
||||||
|
|
||||||
|
const indeterminate = useMemo(
|
||||||
|
() => {
|
||||||
|
if (!exportFields)
|
||||||
|
return false;
|
||||||
|
return exportFields.length > 0 && exportFields.length < items.length;
|
||||||
|
},
|
||||||
|
[exportFields],
|
||||||
|
);
|
||||||
|
|
||||||
|
const getExportColumn = async () => {
|
||||||
|
const { data } = await props["hiddenExportColumn"]();
|
||||||
|
setItems(data.map(item => ({ bianma: item, name: item })));
|
||||||
|
|
||||||
|
const defaultExportFields = data.filter(item => !item.includes("图片"));
|
||||||
|
form.setFieldsValue({ exportFields: [...defaultExportFields] });
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getExportColumn();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const onSubmit = async (values) => {
|
||||||
|
const hiddenFindTime = props.hiddenFindTime;
|
||||||
|
const selectedRowKeys = props.selectedRowKeys;
|
||||||
|
|
||||||
|
// 检查导出字段是否包含"图片"
|
||||||
|
const hasPictureField = values.exportFields && values.exportFields.some(field => field.includes("图片"));
|
||||||
|
|
||||||
|
if (hasPictureField) {
|
||||||
|
// 包含图片字段的验证逻辑
|
||||||
|
if (!selectedRowKeys || selectedRowKeys.length === 0) {
|
||||||
|
message.error("请选择要导出的数据");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedRowKeys.length > 10) {
|
||||||
|
message.error("选择的数据超过10条,请重新选择");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 执行导出
|
||||||
|
Modal.confirm({
|
||||||
|
title: "导出确认",
|
||||||
|
content: "确定要导出excel吗?",
|
||||||
|
onOk: async () => {
|
||||||
|
await downloadBlob("/hidden/hidden/exportHidden", {
|
||||||
|
params: { ids: props.selectedRowKeys.join(","), ...values },
|
||||||
|
});
|
||||||
|
message.success("导出成功");
|
||||||
|
props.onCancel();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 不包含图片字段的验证逻辑
|
||||||
|
if (!hiddenFindTime || hiddenFindTime.length === 0) {
|
||||||
|
message.error("请选择隐患发现时间");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 执行导出
|
||||||
|
Modal.confirm({
|
||||||
|
title: "导出确认",
|
||||||
|
content: "确定要导出excel吗?",
|
||||||
|
onOk: async () => {
|
||||||
|
await downloadBlob("/hidden/hidden/exportHidden", {
|
||||||
|
params: { hiddenFindTime: hiddenFindTime[0], hiddenFindTimeLe: hiddenFindTime[1], ...values },
|
||||||
|
});
|
||||||
|
message.success("导出成功");
|
||||||
|
props.onCancel();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
title="导出"
|
||||||
|
width={800}
|
||||||
|
open
|
||||||
|
maskClosable={false}
|
||||||
|
onCancel={props.onCancel}
|
||||||
|
onOk={form.submit}
|
||||||
|
confirmLoading={loading}
|
||||||
|
>
|
||||||
|
<FormBuilder
|
||||||
|
loading={loading}
|
||||||
|
form={form}
|
||||||
|
span={24}
|
||||||
|
labelCol={{ span: 6 }}
|
||||||
|
showActionButtons={false}
|
||||||
|
onFinish={onSubmit}
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
key: "indeterminate",
|
||||||
|
label: "",
|
||||||
|
render: (
|
||||||
|
<Checkbox
|
||||||
|
indeterminate={indeterminate}
|
||||||
|
onChange={(e) => {
|
||||||
|
const checked = e.target.checked;
|
||||||
|
if (checked) {
|
||||||
|
form.setFieldsValue({ exportFields: items.map(item => item.bianma) });
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
form.setFieldsValue({ exportFields: [] });
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
checked={items.length === (exportFields || []).length}
|
||||||
|
>
|
||||||
|
全选(为保障导出效率,导出带图片的excel最多10条)
|
||||||
|
</Checkbox>
|
||||||
|
),
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "exportFields",
|
||||||
|
label: "导出内容",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.CHECKBOX,
|
||||||
|
items,
|
||||||
|
checkboxCol: 6,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const PrintModalComponent = (props) => {
|
||||||
|
const [list, setList] = useState([]);
|
||||||
|
const contentRef = useRef(null);
|
||||||
|
const handlePrint = useReactToPrint({
|
||||||
|
contentRef,
|
||||||
|
pageStyle: `@page {
|
||||||
|
size: landscape;
|
||||||
|
margin: 3mm;
|
||||||
|
}
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
margin: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
documentTitle: "",
|
||||||
|
});
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const { data } = await props["hiddenPrintList"]({
|
||||||
|
ids: props.selectedRowKeys.join(","),
|
||||||
|
});
|
||||||
|
setList(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getData();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const getIsQualified = (isQualified) => {
|
||||||
|
if (isQualified === "1")
|
||||||
|
return "合格";
|
||||||
|
else if (isQualified === "0")
|
||||||
|
return "不合格";
|
||||||
|
return "";
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
title="打印"
|
||||||
|
width={1500}
|
||||||
|
okText="打印"
|
||||||
|
open
|
||||||
|
maskClosable={false}
|
||||||
|
onCancel={props.onCancel}
|
||||||
|
onOk={handlePrint}
|
||||||
|
>
|
||||||
|
<Table
|
||||||
|
options={false}
|
||||||
|
disabledResizer={false}
|
||||||
|
dataSource={list}
|
||||||
|
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: "rectificationDesc" },
|
||||||
|
{
|
||||||
|
title: "完成时限",
|
||||||
|
dataIndex: "rectificationDeadline",
|
||||||
|
render: (_, record) => record.rectificationDeadline && dayjs(record.rectificationDeadline).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
},
|
||||||
|
{ title: "整改责任人", dataIndex: "rectifyUserName" },
|
||||||
|
{
|
||||||
|
title: "验收人",
|
||||||
|
dataIndex: "hiddenYUserName",
|
||||||
|
render: (_, record) => record.state === 301 ? record.hiddenYUserName : "",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "验收时间",
|
||||||
|
dataIndex: "hiddenYTime",
|
||||||
|
render: (_, record) => record.hiddenYTime && dayjs(record.hiddenYTime).format("YYYY-MM-DD HH:mm:ss"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "验收结果",
|
||||||
|
dataIndex: "isQualified",
|
||||||
|
render: (_, record) => record.hiddenLevelName !== "忽略隐患" ? (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>
|
||||||
|
{list.map(item => (
|
||||||
|
<tr key={item.id}>
|
||||||
|
<td>{item.hiddenFindTime ? 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.rectificationDesc}</td>
|
||||||
|
<td>{item.rectificationDeadline ? dayjs(item.rectificationDeadline).format("YYYY-MM-DD HH:mm:ss") : ""}</td>
|
||||||
|
<td>{item.rectifyUserName}</td>
|
||||||
|
<td>{item.state === 301 ? item.hiddenYUserName : ""}</td>
|
||||||
|
<td>{item.hiddenYTime ? dayjs(item.hiddenYTime).format("YYYY-MM-DD HH:mm:ss") : ""}</td>
|
||||||
|
<td>{item.state === 301 ? getIsQualified(item.isQualified) : ""}</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const PrintModal = Connect([NS_LEDGER], true)(PrintModalComponent);
|
||||||
|
const ExportByColumnModal = Connect([NS_LEDGER], true)(ExportByColumnModalComponent);
|
||||||
|
export default Connect([NS_LEDGER], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
.print-table {
|
||||||
|
display: none;
|
||||||
|
border-collapse: collapse;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 14px;
|
||||||
|
|
||||||
|
td, th {
|
||||||
|
border: 1px solid #eaeaea;
|
||||||
|
padding: 8px;
|
||||||
|
line-height: 1.6;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
display: table;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function HiddenRecord(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenRecord;
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
import HiddenInfo from "zy-react-library/components/HiddenInfo/gwj";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
|
||||||
|
function HiddenView() {
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page headerTitle={query.history === "1" ? "过程记录" : "查看"} contentPadding="0 20px 20px 20px">
|
||||||
|
<HiddenInfo history={query.history === "1"} />
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenView;
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
import PageList from "~/pages/Container/BranchCompany/Average/Rectification/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<PageList
|
||||||
|
{...props}
|
||||||
|
ckButton="xgf-yqzg-ck"
|
||||||
|
zgButton="xgf-yqzg-zg"
|
||||||
|
lsaqcsButton="xgf-yqzg-lsaqcs"
|
||||||
|
sqyqButton="xgf-yqzg-sqyq"
|
||||||
|
type="Stakeholder"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
import PageView from "~/pages/Container/BranchCompany/Average/Rectification/Review";
|
||||||
|
|
||||||
|
function Review(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<PageView
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Review;
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Rectification(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Rectification;
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Stakeholder(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Stakeholder;
|
||||||
|
|
@ -36,6 +36,7 @@ function HiddenList(props) {
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
state: formData.state ? [formData.state] : undefined,
|
state: formData.state ? [formData.state] : undefined,
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
params: {
|
params: {
|
||||||
corpId: query.corpId,
|
corpId: query.corpId,
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,10 @@ function ListView(props) {
|
||||||
const { tableProps } = useTable(props["averageRepeatHiddenList"], {
|
const { tableProps } = useTable(props["averageRepeatHiddenList"], {
|
||||||
form,
|
form,
|
||||||
params: { corpId: query.id },
|
params: { corpId: query.id },
|
||||||
|
transform: () => ({
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
|
}),
|
||||||
|
|
||||||
onSuccess: async (data) => {
|
onSuccess: async (data) => {
|
||||||
for (let i = 0; i < data.list.length; i++) {
|
for (let i = 0; i < data.list.length; i++) {
|
||||||
const files = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["3"], eqForeignKey: data.list[i].hiddenId });
|
const files = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM["3"], eqForeignKey: data.list[i].hiddenId });
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ function HiddenList(props) {
|
||||||
transform: formData => ({
|
transform: formData => ({
|
||||||
hiddenFindTime: formData.hiddenFindTime?.[0],
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: ["hiddenLevel1004", "hiddenLevel1002"],
|
||||||
}),
|
}),
|
||||||
params: { corpId: query.corpId, entry: 1 },
|
params: { corpId: query.corpId, entry: 1 },
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Descriptions, Divider, Form, message, Modal } from "antd";
|
||||||
|
import { useRef, useState } from "react";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
|
||||||
|
import HiddenInfo from "~/components/HiddenInfo/gwj";
|
||||||
|
import { NS_LEDGER, NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
import ConfirmViev from "~/pages/Container/BranchCompany/MajorHidden/HiddenView/confirmViev";
|
||||||
|
|
||||||
|
function Rectification(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
const xgfProjectInfo = useRef({});
|
||||||
|
|
||||||
|
const status = Form.useWatch("status", form);
|
||||||
|
|
||||||
|
const getXgfProjectInfo = async (id) => {
|
||||||
|
const { data } = await props["xgfProjectInfo"]({ id });
|
||||||
|
xgfProjectInfo.current = data;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onSubmit = (values) => {
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "是否验收隐患?",
|
||||||
|
onOk: async () => {
|
||||||
|
const { success } = await props["majorCheck"]({
|
||||||
|
single: false,
|
||||||
|
rectificationType: 2,
|
||||||
|
...values,
|
||||||
|
id: data.id,
|
||||||
|
hiddenId: data.hiddenId,
|
||||||
|
});
|
||||||
|
if (success) {
|
||||||
|
message.success("验收成功");
|
||||||
|
props.history.goBack();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Page headerTitle="验收" isShowFooter={false}>
|
||||||
|
<HiddenInfo
|
||||||
|
|
||||||
|
onGetData={(data) => {
|
||||||
|
setData(data);
|
||||||
|
if (data.isRelated === 1)
|
||||||
|
getXgfProjectInfo(data.projectId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<ConfirmViev hiddenData={data} />
|
||||||
|
<Divider orientation="left">较大隐患验收</Divider>
|
||||||
|
<div>
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
style={{ marginBottom: 20 }}
|
||||||
|
size="middle"
|
||||||
|
items={[
|
||||||
|
{ label: "验收人", children: (data.hiddenAcceptUserCO && data.hiddenAcceptUserCO.length > 0) ? data.hiddenAcceptUserCO[0].userName : "-", span: 2 },
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<FormBuilder
|
||||||
|
form={form}
|
||||||
|
loading={props.majorHidden.hiddenMajorLoading}
|
||||||
|
showCancelButton={false}
|
||||||
|
submitButtonText="通过"
|
||||||
|
onFinish={onSubmit}
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
name: "status",
|
||||||
|
label: "验收结果",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
|
items: [{ bianma: 1, name: "验收通过" }, { bianma: 0, name: "验收打回" }],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "rectificationTime",
|
||||||
|
label: "验收时间",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.DATETIME,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "repulseCause",
|
||||||
|
label: "打回原因",
|
||||||
|
hidden: status === 1,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Page>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN, NS_LEDGER], true)(Rectification);
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 { HIDDEN_MAJOR_LEVEL, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: [300],
|
||||||
|
hiddenLevels: ["jdyh001", "hiddenLevel2002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "隐患确认人" },
|
||||||
|
{ name: "verifyUserName", label: "隐患核实人" },
|
||||||
|
{ name: "approveUserName", label: "隐患核定人" },
|
||||||
|
{ name: "rectificationUserName", label: "整改人" },
|
||||||
|
{ name: "checkUserName", label: "隐患验收人" },
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: 130 },
|
||||||
|
{ title: "核实人", dataIndex: "verifyUserName", width: 130 },
|
||||||
|
{ title: "核定人", dataIndex: "approveUserName", width: 130 },
|
||||||
|
{ title: "整改人", dataIndex: "rectifyUserName", width: 130 },
|
||||||
|
{ title: "验收人", dataIndex: "hiddenYUserName", width: 130 },
|
||||||
|
{ title: "隐患状态", dataIndex: "state", render: () => "待验收" },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{props.permission("gfd-yhys-info") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{props.permission("gfd-yhys-acceptance") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`./Acceptance?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
验收
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Acceptance(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Acceptance;
|
||||||
|
|
@ -0,0 +1,208 @@
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Descriptions, Divider, Form, message, Modal } from "antd";
|
||||||
|
import { useRef, useState } from "react";
|
||||||
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||||
|
import 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 useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
|
import HiddenInfo from "~/components/HiddenInfo/gwj";
|
||||||
|
import { HIDDEN_MAJOR_LEVEL } from "~/enumerate/constant";
|
||||||
|
import { NS_LEDGER, NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
import ConfirmViev from "~/pages/Container/BranchCompany/MajorHidden/HiddenView/confirmViev";
|
||||||
|
|
||||||
|
function Approval(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
|
||||||
|
const hiddenLevel = Form.useWatch("hiddenLevel", form);
|
||||||
|
const deptId = Form.useWatch("deptId", form);
|
||||||
|
|
||||||
|
const [data, setData] = useState({});
|
||||||
|
|
||||||
|
const xgfProjectInfo = useRef({});
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
const isMajorHidden = hiddenLevel === "hiddenLevel2002";
|
||||||
|
|
||||||
|
const getXgfProjectInfo = async (id) => {
|
||||||
|
const { data } = await props["xgfProjectInfo"]({ id });
|
||||||
|
xgfProjectInfo.current = data;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onSubmit = (values) => {
|
||||||
|
Modal.confirm({
|
||||||
|
title: "提示",
|
||||||
|
content: "是否核定隐患?",
|
||||||
|
onOk: async () => {
|
||||||
|
const { id } = await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.yhdcboFilse,
|
||||||
|
params: {
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[183],
|
||||||
|
foreignKey: data.hiddenId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.awhdwhjybgFulse,
|
||||||
|
params: {
|
||||||
|
type: UPLOAD_FILE_TYPE_ENUM[184],
|
||||||
|
foreignKey: id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { success } = await props["majorApprove"]({
|
||||||
|
status: "1",
|
||||||
|
rectificationType: 2,
|
||||||
|
...values,
|
||||||
|
id: data.id,
|
||||||
|
hiddenId: data.hiddenId,
|
||||||
|
});
|
||||||
|
if (success) {
|
||||||
|
message.success("核定成功");
|
||||||
|
props.history.goBack();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<Page headerTitle="核定" isShowFooter={false}>
|
||||||
|
<HiddenInfo
|
||||||
|
onGetData={(data) => {
|
||||||
|
setData(data);
|
||||||
|
if (data.isRelated === 1)
|
||||||
|
getXgfProjectInfo(data.projectId);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<ConfirmViev hiddenData={data} />
|
||||||
|
<Divider orientation="left">港股公司安委会办公室核定</Divider>
|
||||||
|
<div>
|
||||||
|
<Descriptions
|
||||||
|
bordered
|
||||||
|
column={2}
|
||||||
|
labelStyle={{ width: 200 }}
|
||||||
|
style={{ marginBottom: 20 }}
|
||||||
|
size="middle"
|
||||||
|
items={[
|
||||||
|
{ label: "隐患核定人", children: (data.hiddenApproveUserCO && data.hiddenApproveUserCO.length > 0) ? data.hiddenApproveUserCO[0].userName : "-", span: 2 },
|
||||||
|
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<FormBuilder
|
||||||
|
form={form}
|
||||||
|
loading={props.majorHidden.hiddenMajorLoading || uploadFileLoading}
|
||||||
|
showCancelButton={false}
|
||||||
|
submitButtonText="通过"
|
||||||
|
onFinish={onSubmit}
|
||||||
|
labelCol={{ span: 6 }}
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
componentProps: {
|
||||||
|
onChange: (value) => {
|
||||||
|
const findItem = HIDDEN_MAJOR_LEVEL.find(item => item.bianma === value);
|
||||||
|
form.setFieldValue("hiddenLevelName", findItem.name);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{ name: "hiddenLevelName", label: "隐患级别名称", onlyForLabel: true },
|
||||||
|
{
|
||||||
|
name: "approveTime",
|
||||||
|
label: "隐患核定时间",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.DATETIME,
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "deptId",
|
||||||
|
label: " 整改部门/整改单位",
|
||||||
|
render: (
|
||||||
|
<DepartmentSelectTree
|
||||||
|
isNeedCorpInfoId={true}
|
||||||
|
params={{ eqCorpinfoId: data.corpId }}
|
||||||
|
onChange={() => {
|
||||||
|
form.setFieldValue("userId", "");
|
||||||
|
form.setFieldValue("userName", "");
|
||||||
|
}}
|
||||||
|
onGetLabel={(label) => {
|
||||||
|
form.setFieldValue("deptName", label);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
hidden: isMajorHidden,
|
||||||
|
},
|
||||||
|
{ name: "deptName", label: "整改部门名称", onlyForLabel: true, hidden: isMajorHidden },
|
||||||
|
{
|
||||||
|
name: "userId",
|
||||||
|
label: "整改负责人",
|
||||||
|
render: (
|
||||||
|
<PersonnelSelect
|
||||||
|
extraParams={{ noMain: 1 }}
|
||||||
|
params={{ departmentId: deptId }}
|
||||||
|
onGetLabel={label => form.setFieldValue("userName", label)}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
hidden: isMajorHidden,
|
||||||
|
},
|
||||||
|
{ name: "userName", label: "整改人名称", onlyForLabel: true, hidden: isMajorHidden },
|
||||||
|
{ name: "hiddenLevelName", label: "隐患级别名称", onlyForLabel: true, hidden: isMajorHidden },
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "yhdcboFilse",
|
||||||
|
label: "隐患调查报告",
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onRemove={() => {
|
||||||
|
form.setFieldValue("yhdcboFilse");
|
||||||
|
return false;
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
span: 24,
|
||||||
|
hidden: isMajorHidden,
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "awhdwhjybgFulse",
|
||||||
|
label: "安委会或党委会决议记录",
|
||||||
|
span: 24,
|
||||||
|
render: (
|
||||||
|
<Upload
|
||||||
|
maxCount={1}
|
||||||
|
accept=".pdf"
|
||||||
|
fileType="document"
|
||||||
|
tipContent="默认上限1个,且只支持pdf格式"
|
||||||
|
onRemove={() => {
|
||||||
|
form.setFieldValue("awhdwhjybgFulse");
|
||||||
|
return false;
|
||||||
|
}}
|
||||||
|
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
hidden: isMajorHidden,
|
||||||
|
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</Page>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN, NS_LEDGER], true)(Approval);
|
||||||
|
|
@ -0,0 +1,121 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 { HIDDEN_MAJOR_LEVEL, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
state: [120],
|
||||||
|
hiddenLevels: ["jdyh001", "hiddenLevel2002"],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<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" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "隐患确认人" },
|
||||||
|
{ name: "verifyUserName", label: "隐患核实人" },
|
||||||
|
{ name: "approveUserName", label: "隐患核定人" },
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: 130 },
|
||||||
|
{ title: "核实人", dataIndex: "verifyUserName", width: 130 },
|
||||||
|
{ title: "核定人", dataIndex: "approveUserName", width: 130 },
|
||||||
|
{ title: "隐患状态", dataIndex: "state", render: () => "待核定" },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{props.permission("gfd-yhhd-info") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
{props.permission("gfd-yhhd-approval") && (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`./Approval?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
核定
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function Approval(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Approval;
|
||||||
|
|
@ -0,0 +1,121 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form, Space } from "antd";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
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 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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
|
import { getLabelName } from "zy-react-library/utils";
|
||||||
|
import { HIDDEN_MAJOR_LEVEL, HIDDEN_STATE_ENUM, IS_RELATED_ENUM } from "~/enumerate/constant";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function HiddenList(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
|
||||||
|
const { tableProps, getData } = useTable(props["majorListPage"], {
|
||||||
|
usePermission: false,
|
||||||
|
form,
|
||||||
|
transform: formData => ({
|
||||||
|
corpId: query.corpId,
|
||||||
|
hiddenFindTime: formData.hiddenFindTime?.[0],
|
||||||
|
hiddenFindTimeLe: formData.hiddenFindTime?.[1],
|
||||||
|
hiddenLevels: [query.type],
|
||||||
|
state: [400],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page headerTitle={query.type === "hiddenLevel2002" ? "重大隐患数" : "较大隐患数"} isShowFooter={false}>
|
||||||
|
<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 isNeedCorpInfoId={true} params={{ eqCorpinfoId: query.corpId }} /> },
|
||||||
|
{
|
||||||
|
name: "hiddenType",
|
||||||
|
label: "隐患类型",
|
||||||
|
render: <DictionarySelectTree dictValue="hiddenType" onlyLastLevel />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hiddenLevel",
|
||||||
|
label: "隐患级别",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: HIDDEN_MAJOR_LEVEL,
|
||||||
|
},
|
||||||
|
{ name: "creatorName", label: "隐患发现人" },
|
||||||
|
// { name: "confirmUserName", label: "确认人" },
|
||||||
|
{
|
||||||
|
name: "isRelated",
|
||||||
|
label: "是否相关方",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: IS_RELATED_ENUM,
|
||||||
|
},
|
||||||
|
{ name: "confirmUserName", label: "隐患确认人" },
|
||||||
|
{ name: "verifyUserName", label: "隐患核实人" },
|
||||||
|
{ name: "approveUserName", label: "隐患核定人" },
|
||||||
|
{ name: "rectificationUserName", label: "整改人", hidden: query.type === "hiddenLevel2002" },
|
||||||
|
{ name: "checkUserName", label: "隐患验收人", hidden: query.type === "hiddenLevel2002" },
|
||||||
|
]}
|
||||||
|
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: "hiddenLevelName", width: 100 },
|
||||||
|
|
||||||
|
{ 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: 130 },
|
||||||
|
{ title: "核实人", dataIndex: "verifyUserName", width: 130 },
|
||||||
|
{ title: "核定人", dataIndex: "approveUserName", width: 130 },
|
||||||
|
{ title: "整改人", dataIndex: "rectifyUserName", width: 130, hidden: query.type === "hiddenLevel2002" },
|
||||||
|
{ title: "验收人", dataIndex: "hiddenYUserName", width: 130, hidden: query.type === "hiddenLevel2002" },
|
||||||
|
{ title: "隐患状态", dataIndex: "state", render: (_, recode) => getLabelName({ list: HIDDEN_STATE_ENUM, status: recode.state }) },
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
width: 100,
|
||||||
|
fixed: "right",
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space>
|
||||||
|
{/* {props.permission("fgs-zd-yhqr-ck") && ( */}
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
props.history.push(`../HiddenView?id=${record.id}&hiddenId=${record.hiddenId}`);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
{/* )} */}
|
||||||
|
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(HiddenList));
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||||
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
import { Button, Form } from "antd";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import Search from "zy-react-library/components/Search";
|
||||||
|
import Table from "zy-react-library/components/Table";
|
||||||
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
|
import { NS_MAJOR_HIDDEN } from "~/enumerate/namespace";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
const { tableProps, getData } = useTable(props["majorHiddenStatistics"], {
|
||||||
|
form,
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page isShowAllAction={false}>
|
||||||
|
<Search
|
||||||
|
options={[
|
||||||
|
|
||||||
|
{ name: "corpinfoName", label: "企业名称" },
|
||||||
|
]}
|
||||||
|
form={form}
|
||||||
|
onFinish={getData}
|
||||||
|
/>
|
||||||
|
<Table
|
||||||
|
columns={[
|
||||||
|
|
||||||
|
{ title: "企业名称", dataIndex: "corpinfoName" },
|
||||||
|
{ title: "重大隐患数", dataIndex: "majorHiddenNum", render: (text, record) => (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
disabled={!props.permission("gfd-yhtj-zdyhs")}
|
||||||
|
onClick={() =>
|
||||||
|
props.history.push(`./HiddenList?corpId=${record.corpinfoId}&type=hiddenLevel2002`)}
|
||||||
|
>
|
||||||
|
{record.majorHiddenNum || 0}
|
||||||
|
</Button>
|
||||||
|
) },
|
||||||
|
{ title: "较大隐患数", dataIndex: "largerHiddenNum", render: (text, record) => (
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
disabled={!props.permission("gfd-yhtj-jdyhs")}
|
||||||
|
onClick={() =>
|
||||||
|
props.history.push(`./HiddenList?corpId=${record.corpinfoId}&type=jdyh001`)}
|
||||||
|
>
|
||||||
|
{record.largerHiddenNum || 0}
|
||||||
|
</Button>
|
||||||
|
) },
|
||||||
|
|
||||||
|
]}
|
||||||
|
{...tableProps}
|
||||||
|
/>
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Connect([NS_MAJOR_HIDDEN], true)(Permission(List));
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function HiddenRecord(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenRecord;
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
import { useState } from "react";
|
||||||
|
import Page from "zy-react-library/components/Page";
|
||||||
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
|
import HiddenInfo from "~/components/HiddenInfo/gwj";
|
||||||
|
import ConfirmViev from "~/pages/Container/BranchCompany/MajorHidden/HiddenView/confirmViev";
|
||||||
|
|
||||||
|
function HiddenView() {
|
||||||
|
const query = useGetUrlQuery();
|
||||||
|
const [hiddenData, setHiddenData] = useState({});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Page headerTitle="查看" contentPadding="0 20px 20px 20px">
|
||||||
|
<HiddenInfo history={query.history === "1"} onGetData={data => setHiddenData(data)} />
|
||||||
|
<ConfirmViev hiddenData={hiddenData} />
|
||||||
|
</Page>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HiddenView;
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
function MajorHidden(props) {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{props.children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MajorHidden;
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
export default function () {
|
export default function () {
|
||||||
|
console.log("KEY =", process.env.OPENAI_API_KEY);
|
||||||
return (
|
return (
|
||||||
<h1>
|
<h1>
|
||||||
底座微应用模板,技术文档:
|
底座微应用模板,技术文档:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue