From 2720d55d3b005b1afeb18a17e8d96b1f6fc50b13 Mon Sep 17 00:00:00 2001 From: huwei <3313749341@qq.com> Date: Tue, 18 Aug 2026 19:59:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .temp/backend_compile.log | Bin 0 -> 15874 bytes .temp/backend_compile2.log | Bin 0 -> 17824 bytes .temp/安全评价机构业务范围与设备参照表.md | 42 ++++++++ jjb.config.js | 4 +- src/api/equipInfo/index.js | 5 +- .../EnterpriseInfo/EquipInfo/index.js | 97 +++++++++++++----- 6 files changed, 119 insertions(+), 29 deletions(-) create mode 100644 .temp/backend_compile.log create mode 100644 .temp/backend_compile2.log create mode 100644 .temp/安全评价机构业务范围与设备参照表.md diff --git a/.temp/backend_compile.log b/.temp/backend_compile.log new file mode 100644 index 0000000000000000000000000000000000000000..55ab454cc824ac2932220c7db6e44da8e8d63b5d GIT binary patch literal 15874 zcmeI3Yi}Ay6o%(>rT&MlR4IvCh_AVzs7>P7X__Xnd}%8|KM>zS0+<3$YE}K~ZQo}O z)DG zL+iKhZ}nr>8fUHlsNX|<#=*Gb=d*pNxFxNRPu@O%FUad!NzLQD=Q*$@%G5n>ZQl;1 zY6H5|&gc?al9Wo$TRV5&i$<5u9bF#qFW5uxwx{)qxcRQ54O%s|8!b=kCAa#;@H3~q zq4NR1mqi862InYlWxw{_JMnCIn&x8U%`i_|&+-tz!kO;{EpqT}at_WDa|8_XM$UOU zEphXCdQs=#u0CHTR|gGO*Lg<+pdXD+4RJL(jNdf>PDctG>^a|}$tRJ;@a_FM-=4#_ z$lqi4mvmHf&co6d7g+?ew;0S8UhZOXoqD@#Mbh_UN#OJ>b6GsO zEMA_#GA{A}pLwqe|0I$=ZpdeQBmOwmKRg%nQp^X$_rdG!OU~i7HYDx%hZe`5%JZS& zHoPaiH+ooapmWCz=2_uG1%DYouP!eQZ@Qs-dYgZBs^1fhN_yMnLSLY0#T$YG4Cb?S z8y-Eix4mU{s9E}cCUC|Z#)<~Vv^5RQT7m)1@J-u-fCmE{d}n6q2~Nk`Hu#xI%tJ(j z9@s*_!s@no05pf%**Hhhx~x4JJt;}oU#BaJ;g;tBA~?1uk3|cMqC|>YbVUL4%(El2 zEu+OsBGL3?URA%>Ek&J1$8cY(XYb*NkBOVXt`02haWEw2K|BVTbv-eJc8B5^Vmp2P za;D-lJZ+pOp&?#RX9m=pe3$DwZ(wQhuxZn57~Xj_%$}Xme(ETuqp00 z>XR&n*_KgZjmsx#2|XJwNzYjn*&l@`vVE%ZcK~9lJi~p4* z=dm33)fOUP$>f;dpD$m{F99+hUMyivx+5Qnbs&GU)=aj= z>>G>C5U(H_LInUgn+9ONDr%)I`5cK2hUDH)G#`0@Y_D5d%|m@g(fZ`cxw2U9YJ9MP zZ@696A8e@KJ)g70!?jgJKp0cD3uQ%Zdy!it~$>1Ay-YQszSMx+qXbVvg;$4=*H;#O#(O6jNdKb&w zQ&)0+ZAfvyv<24_{5{PR;t(~DQ<{h7>&;RioJf-}9qpw>*X=waITm#u(@*oxV!Fq4 z&f!b(phY>2^UOv|&%`N?BomstIEA4C$GDw37vw21%wXdYBj9vqX_0L)>RkLiu0NKJ zN6p3`OV2rNe{A`Z{#X*bPt_kwO7kLKx;ovLr0`t#W%uV((tXLjL_>b=x^Eim&F=Ws z=)UAyiqGMiJOOHG$-`l{Vf&)Bu(HgmMDLm1MI6*Lcd*eyF4F3Bv6m0rH#r(_O&WH1 z?20V#1;I|*PD#5l=+Rl&cu88-v~u)06zR*-mpit57UaY&P-@|ZOR}J@;{J1S& z!M)}^x=mFQ|DxE|j(%UM#u-aF^onF>Mb~~E*ktDI1irC6vH6x}_OT-UGFG~+>s{5U5F z2=sa4p1U7&=u6C$5n$BKc|Lvq7!~4m;^};xvlwoPmR21PHF*Pqx@Wwy?!Y^?_973R z$VU8TKyhxVlCx7;Y(|~M-oBXpn|1EGHC^kv+t#|t9z~L)#4{G;Lm^Mc$yg`7+elC@ zdlg}LN03*A-_qC^CS~(;yC#3i8w6HgW0}Uhj;$WSqyii z$FP)$hY+guDora=P;KgLaKkW{U%<}VUN?Y=}D;ZIcjSamMg-a3@gP`;O$d#{M4Qv4bBTEE06AZZJ{O>e-|2<-w`TN zll%(?JLwyr%7k&Ml-3^K_?52V1MX5md!GFJy0NA8NuA^!8J z{=bmj^{XtJm;Ro&l8?_Mp`G(}$w0OKDsEqu?L NvBhsPC*>xv{|6~Gnb!aS literal 0 HcmV?d00001 diff --git a/.temp/backend_compile2.log b/.temp/backend_compile2.log new file mode 100644 index 0000000000000000000000000000000000000000..9041278e60045eda28fa7d3d21fc0c5b1d95306d GIT binary patch literal 17824 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 Ra?k%%l>e{DFg?mx{{xQM&no}` literal 0 HcmV?d00001 diff --git a/.temp/安全评价机构业务范围与设备参照表.md b/.temp/安全评价机构业务范围与设备参照表.md new file mode 100644 index 0000000..b15b1b1 --- /dev/null +++ b/.temp/安全评价机构业务范围与设备参照表.md @@ -0,0 +1,42 @@ +附件6 + +安全评价机构业务范围与设备参照表 + +__业务范围__ + +__设备类型__ + +__煤炭开采业__ + +岩土工程分析软件,矿井测风表(高、中、微速)或三合一电子风表,光学瓦检仪,多功能气体测定仪,便携式有毒有害、可燃气体检测报警仪,具有测量露天矿台阶坡面角功能的智能测距仪,地质罗盘,防爆数码照相机。 + +__金属、非金属矿__ + +__及其他矿采选业__ + +岩土工程分析软件,坡度规,地质罗盘,风表,风压表。 + +__陆地石油和__ + +__天然气开采业__ + +火灾、爆炸、扩散定量风险计算分析软件,测温仪,测厚仪,便携式有毒有害、可燃气体检测报警仪。 + +__陆上油气__ + +__管道运输业__ + +火灾、爆炸、扩散定量风险计算分析软件,便携式有毒有害、可燃气体检测报警仪,测温仪,测厚仪。 + +__石油加工业,化学原料、化学品及医药制造业__ + +火灾、爆炸、扩散定量风险计算分析软件,测温仪,测厚仪,便携式有毒有害、可燃气体检测报警仪。 + +__烟花爆竹制造业__ + +火灾、爆炸、扩散定量风险计算分析软件,高精度温、湿度仪,手持式静电测试仪。 + +__金属冶炼__ + +多功能可燃气体检测报警仪,有毒气体检测报警仪,温、湿度仪,热辐射监测仪,经纬仪。 + diff --git a/jjb.config.js b/jjb.config.js index 26af587..d480d5c 100644 --- a/jjb.config.js +++ b/jjb.config.js @@ -14,8 +14,8 @@ module.exports = { // API_HOST: "http://192.168.0.134", // API_HOST: "http://192.168.0.150", //太浅 - API_HOST: "https://gbs-gateway.qhdsafety.com", - //API_HOST: "http://192.168.0.103", //huwei + // API_HOST: "https://gbs-gateway.qhdsafety.com", + API_HOST: "http://192.168.0.103", //huwei }, production: { // 应用后端分支名称,部署上线需要 diff --git a/src/api/equipInfo/index.js b/src/api/equipInfo/index.js index 58936b1..125afd2 100644 --- a/src/api/equipInfo/index.js +++ b/src/api/equipInfo/index.js @@ -37,8 +37,11 @@ export const equipInfoToggleStatus = declareRequest( "Post > @/safetyEval/org-equipment/modify", ); +// 2026-08-18 需求变更:装备信息管理页「设备类型」不再与「业务范围」联动。 +// 前端无需先选择业务范围,直接获取后端「按 device_type_code 去重后的全量设备类型清单」即可选择。 +// 后端接口:GET /safetyEval/org-business-scope-device-ref/device-types export const queryDeviceTypeOptions = declareRequest( "equipInfoLoading", - "Get > /safetyEval/org-business-scope-device-ref", + "Get > /safetyEval/org-business-scope-device-ref/device-types", "deviceTypeOptions: [] | res.data || []", ); \ No newline at end of file diff --git a/src/pages/Container/EnterpriseInfo/EquipInfo/index.js b/src/pages/Container/EnterpriseInfo/EquipInfo/index.js index 648cd47..d897e87 100644 --- a/src/pages/Container/EnterpriseInfo/EquipInfo/index.js +++ b/src/pages/Container/EnterpriseInfo/EquipInfo/index.js @@ -30,6 +30,16 @@ import { QUALIFICATION_INDUSTRY_OPTIONS } from "~/enumerate/enterpriseOptions"; const { router } = tools; const DUAL_CHANNEL_MAP = { 1: "是", 2: "否" }; +// 2026-08-18 需求变更:装备业务范围改为多选。搜索/筛选时把多选数组 industryCode 拼接为逗号分隔字符串, +// 便于后端以 String 接收并进行包含匹配过滤;其余字段原样透传。 +function toEquipQueryParams(value = {}) { + const next = { ...value }; + if (Array.isArray(next.industryCode)) { + next.industryCode = next.industryCode.join(","); + } + return next; +} + function EquipInfoPage(props) { const [formModalOpen, setFormModalOpen] = useState(false); const [viewModalOpen, setViewModalOpen] = useState(false); @@ -47,7 +57,12 @@ function EquipInfoPage(props) { }; useEffect(() => { - searchForm.setFieldsValue(router.query); + // 2026-08-18 需求变更:业务范围多选。首次从 URL 恢复搜索条件时,把逗号串拆为数组回显到多选控件 + const query = toEquipQueryParams(router.query); + if (query.industryCode) { + query.industryCode = String(query.industryCode).split(",").filter(Boolean); + } + searchForm.setFieldsValue(query); handleSearch(); }, []); @@ -120,21 +135,24 @@ function EquipInfoPage(props) { /> , + {/* 2026-08-18 需求变更:装备业务范围改为可多选。搜索区多选后以逗号拼接提交给后端进行包含匹配过滤 */} , ]} onReset={(value) => { - router.query = { ...value, current: 1, size: 10 }; + router.query = { ...toEquipQueryParams(value), current: 1, size: 10 }; handleSearch(); }} onFinish={(value) => { - router.query = { ...value, current: 1, size: 10 }; + router.query = { ...toEquipQueryParams(value), current: 1, size: 10 }; handleSearch(); }} /> @@ -149,12 +167,20 @@ function EquipInfoPage(props) { }, { title: "设备型号", dataIndex: "deviceModel", ellipsis: true }, { + // 2026-08-18 需求变更:装备业务范围改为多选,后端 industry_code 以逗号分隔存储。 + // 此处将逗号串拆分为多个标签展示,兼容单值与多值。 title: "业务范围", dataIndex: "industryCode", - render: (v) => - QUALIFICATION_INDUSTRY_OPTIONS.find((o) => o.value === v) - ?.label ?? - (v || "-"), + render: (v) => { + if (!v) return "-"; + const codes = String(v).split(",").filter(Boolean); + const labels = codes.map( + (c) => + QUALIFICATION_INDUSTRY_OPTIONS.find((o) => o.value === c) + ?.label ?? c, + ); + return labels.length > 1 ? labels.join("、") : labels[0] || "-"; + }, }, { title: "设备类型", dataIndex: "deviceTypeName" }, { @@ -284,25 +310,21 @@ function EquipFormModal({ const [detailLoading, setDetailLoading] = useState(false); const [deviceTypeOptions, setDeviceTypeOptions] = useState([]); const [deviceTypeLoading, setDeviceTypeLoading] = useState(false); - const industryCode = Form.useWatch("industryCode", form); + // 2026-08-18 需求变更:设备类型与业务范围解耦,不再监听 industryCode。 + // 设备类型清单在弹窗打开时一次性加载(去重后的全量数据),无需先选业务范围。 useEffect(() => { - if (!industryCode) { - setDeviceTypeOptions([]); - form.resetFields(["deviceTypeCode"]); - return; - } + // 仅在弹窗打开时加载一次设备类型全量清单,避免重复请求 + if (!open) return; let cancelled = false; setDeviceTypeLoading(true); - queryDeviceTypeOptions({ industryCode, pageSize: 999 }) + // 调用后端去重接口 GET /safetyEval/org-business-scope-device-ref/device-types + queryDeviceTypeOptions({}) .then((res) => { if (cancelled) return; const list = res?.data || []; - const unique = Array.from( - new Map(list.map((item) => [item.deviceTypeCode, item])).values(), - ); setDeviceTypeOptions( - unique.map((item) => ({ + list.map((item) => ({ label: item.deviceTypeName, value: item.deviceTypeCode, })), @@ -314,7 +336,7 @@ function EquipFormModal({ return () => { cancelled = true; }; - }, [industryCode]); + }, [open]); useEffect(() => { if (!open) return; @@ -328,6 +350,12 @@ function EquipFormModal({ .then((res) => { if (cancelled) return; const data = res?.data || {}; + // 2026-08-18 需求变更:业务范围改为多选。回显时把后端的逗号分隔串拆分为数组,适配 multiple Select + if (data.industryCode) { + data.industryCode = String(data.industryCode).split(",").filter(Boolean); + } else { + data.industryCode = []; + } form.setFieldsValue(data); }) .finally(() => { @@ -343,10 +371,17 @@ function EquipFormModal({ onCancel(); }; + // 2026-08-18 需求变更:装备业务范围改为多选。提交时多选数组以逗号拼接为字符串传给后端(后端字段仍为 String) const handleSubmit = async (values) => { try { setSubmitting(true); if (currentId) values.id = currentId; + // 多选数组 -> 逗号分隔字符串;为空时置空字符串,避免后端存 null + if (Array.isArray(values.industryCode)) { + values.industryCode = values.industryCode.join(","); + } else if (values.industryCode === undefined || values.industryCode === null) { + values.industryCode = ""; + } const res = await (currentId ? equipInfoEdit(values) : equipInfoAdd(values)); @@ -393,13 +428,16 @@ function EquipFormModal({ + {/* 2026-08-18 需求变更:装备业务范围改为可多选。提交前将多选数组以逗号拼接为字符串入库,回显时拆分。 */} { @@ -566,10 +603,18 @@ export function EquipViewModal({ open, currentId, equipInfoGet, onCancel }) { {info.deviceModel} - {QUALIFICATION_INDUSTRY_OPTIONS.find( - (o) => o.value === info.industryCode, - )?.label ?? - (info.industryCode || "-")} + {/* 2026-08-18 需求变更:业务范围改为多选,展示时拆分逗号串 */} + {info.industryCode + ? String(info.industryCode) + .split(",") + .filter(Boolean) + .map( + (c) => + QUALIFICATION_INDUSTRY_OPTIONS.find((o) => o.value === c) + ?.label ?? c, + ) + .join("、") + : "-"} {info.deviceTypeName || "-"}