隐患修改 12.4

master
LiuJiaNan 2025-12-04 15:15:30 +08:00
parent 16a5d2d9f3
commit 9af12d3be8
7 changed files with 347 additions and 144 deletions

View File

@ -31,7 +31,7 @@
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-to-print": "^3.2.0",
"zy-react-library": "^1.0.130"
"zy-react-library": "^1.0.137"
},
"devDependencies": {
"@antfu/eslint-config": "^5.4.1",

View File

@ -24,3 +24,7 @@ export const hiddenExportColumn = declareRequest(
"ledgerLoading",
`Get > /hidden/hidden/exportHiddenFields`,
);
export const hiddenAiRecognize = declareRequest(
"ledgerLoading",
`Post > @/hidden/hidden/aiHidden`,
);

View File

@ -5,7 +5,6 @@ import Search from "zy-react-library/components/Search";
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary";
import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj";
import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj";
import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { HIDDEN_RECTIFICATION_TYPE_ENUM, HIDDEN_SOURCE_ENUM } from "zy-react-library/enum/hidden/gwj";
@ -36,11 +35,6 @@ function List(props) {
label: "隐患类型",
render: <DictionarySelectTree dictValue="hiddenType" onlyLastLevel />,
},
{
name: "hiddenPart",
label: "隐患部位",
render: <HiddenPartSelectTree />,
},
{
name: "hiddenLevel",
label: "隐患级别",
@ -68,7 +62,6 @@ function List(props) {
{ title: "隐患描述", dataIndex: "hiddenDesc" },
{ title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 },
{ title: "隐患类型", dataIndex: "hiddenTypeName" },
{ title: "隐患部位", dataIndex: "hiddenPartName" },
{ title: "隐患发现部门", dataIndex: "hiddenFindDeptName" },
{ title: "隐患发现人", dataIndex: "createName", width: 130 },
{

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Input, message } from "antd";
import { Button, Form, Input, message, Modal } from "antd";
import { useEffect, useRef, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack";
@ -9,6 +9,7 @@ import DepartmentSelectTree from "zy-react-library/components/SelectTree/Departm
import DictionarySelectTree from "zy-react-library/components/SelectTree/Dictionary";
import HiddenLevelSelectTree from "zy-react-library/components/SelectTree/HiddenLevel/Gwj";
import HiddenPartSelectTree from "zy-react-library/components/SelectTree/HiddenPart/Gwj";
import Table from "zy-react-library/components/Table";
import Upload from "zy-react-library/components/Upload";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { HIDDEN_RECTIFICATION_TYPE_ENUM } from "zy-react-library/enum/hidden/gwj";
@ -18,7 +19,7 @@ import useGetFile from "zy-react-library/hooks/useGetFile";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useGetUserInfo from "zy-react-library/hooks/useGetUserInfo";
import useUploadFile from "zy-react-library/hooks/useUploadFile";
import { getFileUrl } from "zy-react-library/utils";
import { createGuid, getLabelName } from "zy-react-library/utils";
import ai_recognize from "~/assets/images/ai_recognize.png";
import { NS_CONFIRM_USER, NS_LEDGER, NS_PART } from "~/enumerate/namespace";
@ -29,16 +30,21 @@ function Add(props) {
const rectificationDeptId = Form.useWatch("rectificationDeptId", form);
const checkDeptId = Form.useWatch("checkDeptId", form);
const isAi = Form.useWatch("isAi", form);
const isRelated = Form.useWatch("isRelated", form);
const defaultValues = { isRelated: 2, rectificationType: 2 };
const [aiHiddenImageRecognizeLoading, setAIHiddenImageRecognizeLoading] = useState(false);
const aiHiddenImageRecognizeFilePath = useRef("");
const [aiHiddens, setAiHiddens] = useState([]);
const [aiHiddenModalOpen, setAiHiddenModalOpen] = useState(false);
const [selectHiddens, setSelectHiddens] = useState([]);
const [currentProcessHiddenIndex, setCurrentProcessHiddenIndex] = useState(-1);
const [hiddenPartType, setHiddenPartType] = useState("select");
const [confirmUserList, setConfirmUserList] = useState([]);
const [deleteHiddenImageFiles, setDeleteHiddenImageFiles] = useState([]);
const [deleteHiddenVideoFiles, setDeleteHiddenVideoFiles] = useState([]);
const [deleteAfterRectificationImageFiles, setDeleteAfterRectificationImageFiles] = useState([]);
const deleteHiddenImageFiles = useRef([]);
const deleteHiddenVideoFiles = useRef([]);
const deleteAfterRectificationImageFiles = useRef([]);
const { getUserInfo } = useGetUserInfo();
const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
@ -93,10 +99,55 @@ function Add(props) {
getConfirmUserList();
}, []);
const getAIHiddenImageRecognize = async () => {
const hiddenImageFiles = form.getFieldValue("hiddenImageFiles");
if (!hiddenImageFiles || hiddenImageFiles.length === 0) {
message.warning("请上传图片");
return;
}
if (hiddenImageFiles.length > 1) {
message.warning("只能上传一张图片");
return;
}
if (!aiHiddenImageRecognizeFilePath.current) {
// const { filePath } = await uploadFile({ files: hiddenImageFiles, params: { type: UPLOAD_FILE_TYPE_ENUM["3"] } });
// aiHiddenImageRecognizeFilePath.current = filePath;
aiHiddenImageRecognizeFilePath.current = "https://pic.rmb.bdstatic.com/bjh/news/0a68c2681805fcaea506d922f024420c.png";
}
const { data } = await props["hiddenAiRecognize"]({ hiddenUrl: "https://pic.rmb.bdstatic.com/bjh/news/0a68c2681805fcaea506d922f024420c.png" });
// const { data } = await props["hiddenAiRecognize"]({ hiddenUrl: getFileUrl() + aiHiddenImageRecognizeFilePath.current });
setAiHiddens(data.aiHiddens.map(item => ({ ...JSON.parse(item), id: createGuid() })));
setAiHiddenModalOpen(true);
// await deleteFile({ files: [{ filePath: aiHiddenImageRecognizeFilePath.current }] });
};
const onMergeHidden = (selectedRowKeys) => {
const toBeMerged = aiHiddens.filter(hidden => selectedRowKeys.includes(hidden.id));
const mergedHiddenDescr = toBeMerged.map(h => h.hiddenDescr).join("\n");
const mergedLegalBasis = toBeMerged.map(h => h.legalBasis).join("\n");
const mergedRectificationSuggestions = toBeMerged.map(h => h.rectificationSuggestions).join("\n");
const newMergedHidden = {
id: createGuid(),
hiddenDescr: mergedHiddenDescr,
legalBasis: mergedLegalBasis,
rectificationSuggestions: mergedRectificationSuggestions,
};
setAiHiddens([
...aiHiddens.filter(hidden => !selectedRowKeys.includes(hidden.id)),
newMergedHidden,
]);
};
const isExistNextOneHidden = () => {
if (currentProcessHiddenIndex !== -1)
return currentProcessHiddenIndex !== selectHiddens.length - 1;
return false;
};
const onSubmit = async (values) => {
await deleteFile({ single: false, files: deleteHiddenImageFiles });
await deleteFile({ single: false, files: deleteHiddenVideoFiles });
await deleteFile({ single: false, files: deleteAfterRectificationImageFiles });
await deleteFile({ single: false, files: deleteHiddenImageFiles.current });
await deleteFile({ single: false, files: deleteHiddenVideoFiles.current });
await deleteFile({ single: false, files: deleteAfterRectificationImageFiles.current });
const { id } = await uploadFile({
single: false,
files: values.hiddenImageFiles,
@ -123,43 +174,27 @@ function Add(props) {
});
if (success) {
message.success("操作成功");
props.history.goBack();
}
};
const getAIHiddenImageRecognize = async () => {
const hiddenImageFiles = form.getFieldValue("hiddenImageFiles");
if (!hiddenImageFiles || hiddenImageFiles.length === 0) {
message.warning("请上传图片");
return;
}
if (hiddenImageFiles.length > 1) {
message.warning("只能上传一张图片");
return;
}
setAIHiddenImageRecognizeLoading(true);
if (!aiHiddenImageRecognizeFilePath.current) {
const { filePath } = await uploadFile({ files: hiddenImageFiles, params: { type: UPLOAD_FILE_TYPE_ENUM["3"] } });
aiHiddenImageRecognizeFilePath.current = filePath;
}
try {
const response = await fetch("http://101.201.170.9:3000/ai-manager/ai/url/modelResult", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: getFileUrl() + aiHiddenImageRecognizeFilePath.current }),
});
const { data } = await response.json();
form.setFieldValue("isAi", 1);
form.setFieldValue("hiddenDesc", data.description);
form.setFieldValue("legalBasis", data.legalBasis);
form.setFieldValue("rectificationDescr", data.guidance);
aiHiddenImageRecognizeFilePath.current = "";
await deleteFile({ files: [{ filePath: aiHiddenImageRecognizeFilePath.current }] });
}
catch {
message.error("获取图片识别结果失败");
}
finally {
setAIHiddenImageRecognizeLoading(false);
if (isExistNextOneHidden()) {
setCurrentProcessHiddenIndex(currentProcessHiddenIndex + 1);
const currentValues = form.getFieldsValue();
const hiddenImageFiles = form.getFieldValue("hiddenImageFiles");
const resetValues = {};
Object.keys(currentValues).forEach((key) => {
resetValues[key] = undefined;
});
form.setFieldsValue({
...resetValues,
...defaultValues,
isAi: 1,
hiddenImageFiles,
hiddenDesc: selectHiddens[currentProcessHiddenIndex + 1].hiddenDescr,
legalBasis: selectHiddens[currentProcessHiddenIndex + 1].legalBasis,
rectificationDescr: selectHiddens[currentProcessHiddenIndex + 1].rectificationSuggestions,
});
}
else {
props.history.goBack();
}
}
};
@ -169,11 +204,9 @@ function Add(props) {
<div style={{ paddingBottom: 10 }}>
<FormBuilder
form={form}
loading={deleteFileLoading || uploadFileLoading || getFileLoading || aiHiddenImageRecognizeLoading || props.ledger.ledgerLoading}
values={{
isRelated: 2,
rectificationType: 2,
}}
loading={deleteFileLoading || uploadFileLoading || getFileLoading || props.ledger.ledgerLoading}
values={defaultValues}
submitButtonText={isExistNextOneHidden() ? "下一个" : "提交"}
onFinish={onSubmit}
options={[
{
@ -182,25 +215,34 @@ function Add(props) {
render: (
<Upload
maxCount={isAi === 1 ? 1 : 4}
disabled={currentProcessHiddenIndex > 0}
onRemove={() => {
if (isAi === 1) {
form.setFieldValue("isAi", "");
form.setFieldValue("hiddenDesc", "");
form.setFieldValue("legalBasis", "");
form.setFieldValue("rectificationDescr", "");
aiHiddenImageRecognizeFilePath.current = "";
setSelectHiddens([]);
setAiHiddens([]);
setCurrentProcessHiddenIndex(-1);
}
}}
onGetRemoveFile={(file) => {
setDeleteHiddenImageFiles([...deleteHiddenImageFiles, file]);
deleteHiddenImageFiles.current = [...deleteHiddenImageFiles.current, file];
}}
tipContent={(
<>
<img
src={ai_recognize}
alt="ai_recognize"
style={{ width: 150, height: 30, cursor: "pointer", marginBottom: 10 }}
onClick={getAIHiddenImageRecognize}
/>
{
(!query.id && currentProcessHiddenIndex <= 0) && (
<img
src={ai_recognize}
alt="ai_recognize"
style={{ width: 150, height: 30, cursor: "pointer", marginBottom: 10 }}
onClick={getAIHiddenImageRecognize}
/>
)
}
<div>
最多上传
{isAi === 1 ? 1 : 4}
@ -221,43 +263,7 @@ function Add(props) {
span: 24,
required: false,
hidden: !(isAi === 1),
componentProps: { readOnly: true },
},
{
name: "hiddenPart",
customizeRender: true,
render: (
<Form.Item label="隐患部位" required>
<div style={{ display: "flex", gap: 10 }}>
<Form.Item
name="hiddenPart"
noStyle
rules={[
{ required: true, message: "请选择隐患部位" },
...(hiddenPartType === "input" ? [{ max: 50, message: "最多输入50字符" }] : []),
]}
>
{
hiddenPartType === "select"
? <HiddenPartSelectTree />
: <Input maxLength={50} placeholder="请输入隐患部位" />
}
</Form.Item>
<Button
type="primary"
onClick={() => {
if (hiddenPartType === "select")
setHiddenPartType("input");
if (hiddenPartType === "input")
setHiddenPartType("select");
form.setFieldValue("hiddenPart", "");
}}
>
{hiddenPartType === "select" ? "输入" : "选择"}
</Button>
</div>
</Form.Item>
),
componentProps: { disabled: true },
},
{
name: "hiddenLevel",
@ -293,9 +299,76 @@ function Add(props) {
label: "是否相关方",
render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
componentProps: {
onChange: () => {
form.setFieldValue("projectName", "");
form.setFieldValue("rectificationDeptId", "");
form.setFieldValue("rectificationDeptName", "");
form.setFieldValue("rectificationUserId", "");
form.setFieldValue("rectificationUserName", "");
form.setFieldValue("checkDeptId", "");
form.setFieldValue("hiddenYDeptName", "");
form.setFieldValue("checkUserId", "");
form.setFieldValue("hiddenYUserName", "");
},
},
},
{
name: "projectId",
label: "相关方项目",
dependencies: ["isRelated"],
hidden: formValues => !(formValues.isRelated === 1),
render: FORM_ITEM_RENDER_ENUM.SELECT,
items: [{ bianma: 1, name: "相关方未做" }, { bianma: 2, name: "后期补全" }], // TODO
componentProps: {
onChange: (value) => {
form.setFieldValue("projectName", getLabelName({
list: [],
status: value,
}));
},
},
},
{ name: "projectName", label: "相关方项目名称", onlyForLabel: true },
{
name: "hiddenPart",
span: 24,
customizeRender: true,
render: (
<Form.Item label="隐患部位" required labelCol={{ span: 2 }} wrapperCol={{ span: 22 }}>
<div style={{ display: "flex", gap: 10 }}>
<Form.Item
name="hiddenPart"
noStyle
rules={[
{ required: true, message: "请选择隐患部位" },
...(hiddenPartType === "input" ? [{ max: 50, message: "最多输入50字符" }] : []),
]}
>
{
hiddenPartType === "select"
? <HiddenPartSelectTree />
: <Input maxLength={50} placeholder="请输入隐患部位" />
}
</Form.Item>
<Button
type="primary"
onClick={() => {
if (hiddenPartType === "select")
setHiddenPartType("input");
if (hiddenPartType === "input")
setHiddenPartType("select");
form.setFieldValue("hiddenPart", "");
}}
>
{hiddenPartType === "select" ? "输入" : "选择"}
</Button>
</div>
</Form.Item>
),
},
{ name: "map", customizeRender: true, render: <Map required={false} />, span: 24 },
{ name: "positionDesc", label: "隐患位置描述", required: false, span: 24 },
{ name: "map", customizeRender: true, render: <Map required={false} />, span: 24 },
{
name: "hiddenVideoFiles",
label: "隐患视频",
@ -303,7 +376,7 @@ function Add(props) {
<Upload
fileType="video"
onGetRemoveFile={(file) => {
setDeleteHiddenVideoFiles([...deleteHiddenVideoFiles, file]);
deleteHiddenVideoFiles.current = [...deleteHiddenVideoFiles, file];
}}
/>
),
@ -411,7 +484,7 @@ function Add(props) {
label: "整改后图片",
render: (
<Upload onGetRemoveFile={(file) => {
setDeleteAfterRectificationImageFiles([...deleteAfterRectificationImageFiles, file]);
deleteAfterRectificationImageFiles.current = [...deleteAfterRectificationImageFiles.current, file];
}}
/>
),
@ -421,19 +494,24 @@ function Add(props) {
},
{
name: "rectificationDeptId",
label: "整改部门",
label: isRelated === 2 ? "整改部门" : "整改单位",
required: false,
render: (
<DepartmentSelectTree
onChange={() => {
form.setFieldValue("rectificationUserId", "");
form.setFieldValue("rectificationUserName", "");
}}
onGetLabel={(label) => {
form.setFieldValue("rectificationDeptName", label);
}}
/>
isRelated === 2 && (
<DepartmentSelectTree
onChange={() => {
form.setFieldValue("rectificationUserId", "");
form.setFieldValue("rectificationUserName", "");
}}
onGetLabel={(label) => {
form.setFieldValue("rectificationDeptName", label);
}}
/>
)
),
componentProps: {
disabled: isRelated === 1,
},
},
{ name: "rectificationDeptName", label: "整改部门名称", onlyForLabel: true },
{
@ -441,28 +519,38 @@ function Add(props) {
label: "整改人",
required: false,
render: (
<PersonnelSelect
params={{ departmentId: rectificationDeptId }}
onGetLabel={label => form.setFieldValue("rectificationUserName", label)}
/>
isRelated === 2 && (
<PersonnelSelect
params={{ departmentId: rectificationDeptId }}
onGetLabel={label => form.setFieldValue("rectificationUserName", label)}
/>
)
),
componentProps: {
disabled: isRelated === 1,
},
},
{ name: "rectificationUserName", label: "整改人名称", onlyForLabel: true },
{
name: "checkDeptId",
label: "验收部门",
label: isRelated === 2 ? "验收部门" : "验收单位",
required: false,
render: (
<DepartmentSelectTree
onChange={() => {
form.setFieldValue("checkUserId", "");
form.setFieldValue("hiddenYUserName", "");
}}
onGetLabel={(label) => {
form.setFieldValue("hiddenYDeptName", label);
}}
/>
isRelated === 2 && (
<DepartmentSelectTree
onChange={() => {
form.setFieldValue("checkUserId", "");
form.setFieldValue("hiddenYUserName", "");
}}
onGetLabel={(label) => {
form.setFieldValue("hiddenYDeptName", label);
}}
/>
)
),
componentProps: {
disabled: isRelated === 1,
},
dependencies: ["rectificationType"],
hidden: formValues => !(formValues.rectificationType === 1),
},
@ -472,11 +560,16 @@ function Add(props) {
label: "验收人",
required: false,
render: (
<PersonnelSelect
params={{ departmentId: checkDeptId }}
onGetLabel={label => form.setFieldValue("hiddenYUserName", label)}
/>
isRelated === 2 && (
<PersonnelSelect
params={{ departmentId: checkDeptId }}
onGetLabel={label => form.setFieldValue("hiddenYUserName", label)}
/>
)
),
componentProps: {
disabled: isRelated === 1,
},
dependencies: ["rectificationType"],
hidden: formValues => !(formValues.rectificationType === 1),
},
@ -484,8 +577,97 @@ function Add(props) {
]}
/>
</div>
{
aiHiddenModalOpen && (
<AiHiddenModal
aiHiddens={aiHiddens}
onCancel={() => {
setAiHiddenModalOpen(false);
}}
onConfirm={(selectedRows) => {
setSelectHiddens(selectedRows);
setCurrentProcessHiddenIndex(0);
form.setFieldValue("isAi", 1);
form.setFieldValue("hiddenDesc", selectedRows[0].hiddenDescr);
form.setFieldValue("legalBasis", selectedRows[0].legalBasis);
form.setFieldValue("rectificationDescr", selectedRows[0].rectificationSuggestions);
}}
onMergeHidden={onMergeHidden}
/>
)
}
</div>
);
}
const AiHiddenModal = (props) => {
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [selectedRows, setSelectedRows] = useState([]);
return (
<Modal
title="AI识别隐患"
open
onCancel={props.onCancel}
maskClosable={false}
width={1000}
footer={[
<Button
key="merge"
type="primary"
onClick={() => {
if (selectedRowKeys.length < 2) {
message.warning("至少选择两个隐患才能进行合并");
return;
}
Modal.confirm({
title: "合并隐患",
content: "确定要合并所选的隐患吗?",
onOk: () => {
props.onConfirm(selectedRowKeys);
},
});
}}
>
合并隐患
</Button>,
<Button
key="process"
type="primary"
onClick={() => {
if (selectedRows.length === 0) {
message.error("请选择要处理的隐患");
return;
}
props.onConfirm(selectedRows);
props.onCancel();
}}
>
处理隐患
</Button>,
<Button key="cancel" onClick={props.onCancel}>取消</Button>,
]}
>
<Table
rowSelection={{
preserveSelectedRowKeys: true,
selectedRowKeys,
onChange: (selectedRowKeys, selectedRows) => {
setSelectedRowKeys(selectedRowKeys);
setSelectedRows(selectedRows);
},
}}
dataSource={props.aiHiddens}
pagination={false}
options={false}
disabledResizer={true}
columns={[
{ title: "隐患描述", dataIndex: "hiddenDescr" },
{ title: "法律依据", dataIndex: "legalBasis" },
{ title: "整改描述", dataIndex: "rectificationSuggestions" },
]}
/>
</Modal>
);
};
export default Connect([NS_LEDGER, NS_CONFIRM_USER, NS_PART], true)(Add);

View File

@ -186,11 +186,12 @@ function List(props) {
{ title: "隐患级别", dataIndex: "hiddenLevelName", width: 100 },
{ title: "隐患类型", dataIndex: "hiddenTypeName" },
{ title: "隐患部位", dataIndex: "hiddenPartName" },
{ title: "隐患发现部门", dataIndex: "hiddenFindDeptName" },
{ 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") : "",
},
{
@ -206,6 +207,15 @@ function List(props) {
{ title: "整改人", dataIndex: "rectificationUserName", width: 100 },
{ title: "整改时间", dataIndex: "rectificationTime" },
{ title: "验收人", dataIndex: "hiddenYUserName", width: 100 },
{
title: "是否相关方",
dataIndex: "isRelated",
width: 150,
render: (_, record) => getLabelName({
list: [{ bianma: 1, name: "是" }, { bianma: 2, name: "否" }],
status: record.isRelated,
}),
},
{
title: "隐患状态",
dataIndex: "state",
@ -237,7 +247,7 @@ function List(props) {
</Button>
)
}
<Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>
{record.state === 100 && <Button type="link" danger onClick={() => onDelete(record.id)}>删除</Button>}
</Space>
),
},
@ -326,7 +336,7 @@ const PrintModal = (props) => {
contentRef,
pageStyle: `@page {
size: landscape;
margin: 0mm;
margin: 3mm;
}
@media print {
body {
@ -360,13 +370,21 @@ const PrintModal = (props) => {
dataSource={props.data}
pagination={false}
columns={[
{ title: "排查时间", dataIndex: "hiddenFindTime", render: (_, record) => dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss") },
{
title: "排查时间",
dataIndex: "hiddenFindTime",
render: (_, record) => dayjs(record.hiddenFindTime).format("YYYY-MM-DD hh:mm:ss"),
},
{ title: "检查人", dataIndex: "createName" },
{ title: "责任部门", dataIndex: "hiddenFindDeptName" },
{ title: "事故隐患", dataIndex: "hiddenDesc" },
{ title: "隐患等级", dataIndex: "hiddenLevelName" },
{ title: "治理措施", dataIndex: "tempSafeMeasure" },
{ title: "完成时限", dataIndex: "rectificationDeadline" },
{
title: "完成时限",
dataIndex: "rectificationDeadline",
render: (_, record) => record.rectificationDeadline && dayjs(record.rectificationDeadline).format("YYYY-MM-DD hh:mm:ss"),
},
{ title: "整改责任人", dataIndex: "rectificationUserName" },
{
title: "验收人员",
@ -407,7 +425,7 @@ const PrintModal = (props) => {
<td>{item.hiddenDesc}</td>
<td>{item.hiddenLevelName}</td>
<td>{item.RECTIFYDESCR}</td>
<td>{item.RECTIFICATIONDEADLINE}</td>
<td>{dayjs(item.rectificationDeadline).format("YYYY-MM-DD hh:mm:ss")}</td>
<td>{item.rectificationUserName}</td>
<td>{item.state === 301 ? item.hiddenYUserName : ""}</td>
<td>{item.hiddenYTime}</td>

View File

@ -116,7 +116,7 @@ function Part(props) {
)}
columns={[
{
title: "区域/设备名称",
title: "区域名称",
dataIndex: "hiddenregion",
render: (_, record) => (
<Button
@ -215,8 +215,8 @@ const AddModalComponent = (props) => {
showActionButtons={false}
onFinish={onSubmit}
options={[
{ name: "parentName", label: "上级区域/设备名称", required: false, render: <Tag color="blue">{props.parentName || "无"}</Tag> },
{ name: "hiddenregion", label: "区域/设备名称" },
{ name: "parentName", label: "上级区域名称", required: false, render: <Tag color="blue">{props.parentName || "无"}</Tag> },
{ name: "hiddenregion", label: "区域名称" },
{
name: "responsibleDeptId",
label: "负责部门",

View File

@ -10,6 +10,7 @@ import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useIsExistenceDuplicateSelection from "zy-react-library/hooks/useIsExistenceDuplicateSelection";
import useTable from "zy-react-library/hooks/useTable";
import { getLabelName } from "zy-react-library/utils";
import { NS_EVALUATION_TEAM_CONFIG } from "~/enumerate/namespace";
const STATE_ENUM = [
@ -325,7 +326,12 @@ const AddModalComponent = (props) => {
itemsField: { valueKey: "id", labelKey: "corpName" },
componentProps: {
onChange: (value) => {
form.setFieldValue("corpinfoName", corpInfoList.find(item => item.id === value)?.corpName);
form.setFieldValue("corpinfoName", getLabelName({
list: corpInfoList,
status: value,
idKey: "id",
nameKey: "corpName",
}));
},
},
},