需求修改

dev-tmp1
huwei 2026-08-18 19:56:07 +08:00
parent 31830f86ad
commit 94956d59b6
31 changed files with 1274 additions and 1517 deletions

View File

@ -0,0 +1,50 @@
-- =====================================================================================
-- 变更说明2026-08-18 装备信息管理:业务范围与设备类型对照关系冗余数据清理)
-- 需求:装备信息管理(/container/EnterpriseInfo/EquipInfo页面"业务范围-设备类型"对照关系
-- 冗余,参考《安全评价机构业务范围与设备参照表.docx》修正。
-- 对照关系来源:该页面设备类型下拉完全由后端数据库表 org_business_scope_device_ref 驱动
-- (前端按 industryCode 查询,无映射逻辑),故修正只需清理数据库冗余数据。
-- 现状分析:
-- 1) id 1-33env='prod')为 7 个标准业务范围(煤炭开采业/金属非金属矿及其他矿采选业/
-- 陆地石油和天然气开采业/陆上油气管道运输业/石油加工业化学原料化学品及医药制造业/
-- 烟花爆竹制造业/金属冶炼)对应的 A/B 类标准设备,与文档逐一核对完全一致,保留。
-- 2) id 34-145env IS NULL2026-07-15 批量追加)为冗余数据:
-- - id 34-1317 个标准业务范围 × 14 条 C/D 类"办公/通用"设备计算机C101、打印机C102、
-- 传真机C103、复印机C104、扫描仪C105、照相机C106、摄像机C107、投影仪C108、碎纸机C109、
-- 录音设备C110、对讲机D101、GPS定位仪D102、激光测距仪D103、个体防护用品D104文档中不存在
-- - id 132-145CIVIL_EXPLOSIVES民用爆炸物品行业× 同样 14 条,该业务范围不在文档、
-- 不在前端业务范围常量中(前端选不到)。
-- 影响评估:
-- - 前端设备类型下拉将只剩文档标准设备(符合预期),前端/后端均无代码改动。
-- - 装备表 org_equipment 保留不变4 条引用了 D 类设备的测试装备记录不受影响,
-- device_type_name 已存的记录仍正常展示;未存的详情显示为空)。
-- 执行策略(安全):
-- 1) 先建备份表 org_business_scope_device_ref_bak_20260818
-- 2) 校验待删条数(当前库应为 112 条,即 7*14 + 14
-- 3) 删除条件采用"env IS NULL 且设备类型编码为 C/D 开头"(而非硬编码 id
-- 以兼容其他环境 id 不一致的情况);标准数据 env='prod' 不受影响;
-- 4) 删除后再校验剩余条数(当前库应为 33 条)。
-- 注意脚本可重复执行重复执行时备份表会先重建DELETE 无匹配行不报错。
-- =====================================================================================
-- 1. 备份(先建备份表,保留可回滚依据)
DROP TABLE IF EXISTS `org_business_scope_device_ref_bak_20260818`;
CREATE TABLE `org_business_scope_device_ref_bak_20260818` AS
SELECT *
FROM `org_business_scope_device_ref`
WHERE `env` IS NULL
AND (`device_type_code` LIKE 'C%' OR `device_type_code` LIKE 'D%');
-- 2. 校验待删条数(当前库应为 112即 7 个业务范围 × 14 + CIVIL_EXPLOSIVES × 14
SELECT COUNT(*) AS `to_delete_count`
FROM `org_business_scope_device_ref`
WHERE `env` IS NULL
AND (`device_type_code` LIKE 'C%' OR `device_type_code` LIKE 'D%');
-- 3. 删除冗余对照数据
DELETE FROM `org_business_scope_device_ref`
WHERE `env` IS NULL
AND (`device_type_code` LIKE 'C%' OR `device_type_code` LIKE 'D%');
-- 4. 校验删除结果(当前库剩余应为 33 条文档标准数据)
SELECT COUNT(*) AS `remain_count` FROM `org_business_scope_device_ref`;

View File

@ -10,11 +10,13 @@ import org.qinan.safetyeval.app.ref.service.OrgBusinessScopeDeviceRefServiceI;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefAddCmd;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefUpdateCmd;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.client.ref.response.OrgBusinessScopeDeviceRefCo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.Serializable;
import java.util.List;
/**
*
@ -37,6 +39,14 @@ public class OrgBusinessScopeDeviceRefController implements Serializable {
return orgBusinessScopeDeviceRefServiceI.listOrgBusinessScopeDeviceRefPage(qry);
}
@GetMapping("/device-types")
@ApiOperation("v1.0.2_查询去重后的全量设备类型清单(不区分业务范围,供装备信息管理页直接选择)")
public SingleResponse<List<DeviceTypeOptionCo>> listDistinctDeviceTypeOptions() {
// 2026-08-18 返回 COLA SingleResponse 包装,与项目其他接口响应结构保持一致,
// 便于前端 declareRequest 以 res.data 取到数组(裸 List 会导致前端 res.data 为 undefined、下拉无法渲染
return SingleResponse.of(orgBusinessScopeDeviceRefServiceI.listDistinctDeviceTypeOptions());
}
@GetMapping("/{id}")
@ApiOperation("查询安全评价机构业务范围与设备参照详情页面")
public SingleResponse<OrgBusinessScopeDeviceRefCo> getInfo(@PathVariable("id") Long id) {

View File

@ -4,8 +4,11 @@ import com.alibaba.cola.dto.PageResponse;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefAddCmd;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefUpdateCmd;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.client.ref.response.OrgBusinessScopeDeviceRefCo;
import java.util.List;
/**
*
*
@ -21,6 +24,15 @@ public interface OrgBusinessScopeDeviceRefServiceI {
*/
PageResponse<OrgBusinessScopeDeviceRefCo> listOrgBusinessScopeDeviceRefPage(OrgBusinessScopeDeviceRefPageQry orgBusinessScopeDeviceRefPageQry);
/**
* device_type_code
*
* <p>2026-08-18 </p>
*
* @return
*/
List<DeviceTypeOptionCo> listDistinctDeviceTypeOptions();
/**
* ID
*

View File

@ -11,9 +11,13 @@ import org.qinan.safetyeval.app.ref.service.OrgBusinessScopeDeviceRefServiceI;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefAddCmd;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefUpdateCmd;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.client.ref.response.OrgBusinessScopeDeviceRefCo;
import org.qinan.safetyeval.infrastructure.persistence.queryservice.OrgBusinessScopeDeviceRefQueryService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
*
*
@ -29,12 +33,21 @@ public class OrgBusinessScopeDeviceRefServiceImpl implements OrgBusinessScopeDev
private final OrgBusinessScopeDeviceRefAddCmdExe orgBusinessScopeDeviceRefAddCommandExe;
private final OrgBusinessScopeDeviceRefDelCmdExe orgBusinessScopeDeviceRefDelCommandExe;
private final OrgBusinessScopeDeviceRefPageQueryExe orgBusinessScopeDeviceRefPageQueryExe;
/**
* 2026-08-18
*/
private final OrgBusinessScopeDeviceRefQueryService orgBusinessScopeDeviceRefQueryService;
@Override
public PageResponse<OrgBusinessScopeDeviceRefCo> listOrgBusinessScopeDeviceRefPage(OrgBusinessScopeDeviceRefPageQry orgBusinessScopeDeviceRefPageQry) {
return orgBusinessScopeDeviceRefPageQueryExe.execute(orgBusinessScopeDeviceRefPageQry);
}
@Override
public List<DeviceTypeOptionCo> listDistinctDeviceTypeOptions() {
return orgBusinessScopeDeviceRefQueryService.listDistinctDeviceTypeOptions();
}
@Override
public OrgBusinessScopeDeviceRefCo getOrgBusinessScopeDeviceRefById(Long id) {
return orgBusinessScopeDeviceRefListQueryExe.execute(id);

View File

@ -0,0 +1,32 @@
package org.qinan.safetyeval.client.ref.response;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* Co
*
* <p>2026-08-18
*
* Co(industryCode)</p>
*
* @author ltq
* @date 2026-08-18
*/
@Data
public class DeviceTypeOptionCo extends ClientObject {
private static final long serialVersionUID = 1L;
/**
* code
*/
@ApiModelProperty(value = "设备类型code")
private String deviceTypeCode;
/**
*
*/
@ApiModelProperty(value = "设备类型名称")
private String deviceTypeName;
}

View File

@ -83,7 +83,23 @@ public class OrgEquipmentGatewayImpl implements OrgEquipmentGateway {
wrapper.eq(OrgEquipmentDO::getEnableFlag, query.getEnableFlag());
}
if (StringUtils.hasText(query.getIndustryCode())) {
wrapper.eq(OrgEquipmentDO::getIndustryCode, query.getIndustryCode());
// 2026-08-18 需求变更装备业务范围改为多选industry_code 以逗号分隔存储多个业务范围。
// 查询参数可能也是逗号分隔的多个业务范围(前端多选拼接),需命中装备业务范围中包含的任意一个,
// 因此用 FIND_IN_SET 做包含匹配(各 code 之间 OR
String[] industryCodes = query.getIndustryCode().split(",");
wrapper.and(w -> {
for (int i = 0; i < industryCodes.length; i++) {
String code = industryCodes[i].trim();
if (!StringUtils.hasText(code)) {
continue;
}
if (i == 0) {
w.apply("FIND_IN_SET({0}, industry_code) > 0", code);
} else {
w.or().apply("FIND_IN_SET({0}, industry_code) > 0", code);
}
}
});
}
Page<OrgEquipmentDO> page = new Page<>(query.getPageNum(), query.getPageSize());

View File

@ -2,8 +2,13 @@ package org.qinan.safetyeval.infrastructure.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgBusinessScopeDeviceRefDO;
import java.util.List;
/**
* Mapper
*
@ -12,4 +17,20 @@ import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgBusinessS
*/
@Mapper
public interface OrgBusinessScopeDeviceRefMapper extends BaseMapper<OrgBusinessScopeDeviceRefDO> {
/**
* device_type_code
*
* <p>2026-08-18
* device_type_code
* </p>
*
* @return
*/
@Select("SELECT device_type_code AS deviceTypeCode, device_type_name AS deviceTypeName " +
"FROM org_business_scope_device_ref " +
"WHERE delete_enum = 'false' " +
"GROUP BY device_type_code, device_type_name " +
"ORDER BY device_type_code")
List<DeviceTypeOptionCo> selectDistinctDeviceTypeOptions();
}

View File

@ -2,9 +2,12 @@ package org.qinan.safetyeval.infrastructure.persistence.queryservice;
import com.alibaba.cola.dto.PageResponse;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.client.ref.response.OrgBusinessScopeDeviceRefCo;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgBusinessScopeDeviceRefDO;
import java.util.List;
/**
*
*
@ -36,4 +39,13 @@ public interface OrgBusinessScopeDeviceRefQueryService {
* @return
*/
PageResponse<OrgBusinessScopeDeviceRefCo> listOrgBusinessScopeDeviceRefPage(OrgBusinessScopeDeviceRefPageQry orgBusinessScopeDeviceRefPageQry);
/**
* device_type_code
*
* <p>2026-08-18 </p>
*
* @return
*/
List<DeviceTypeOptionCo> listDistinctDeviceTypeOptions();
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import lombok.AllArgsConstructor;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.client.ref.response.OrgBusinessScopeDeviceRefCo;
import org.qinan.safetyeval.infrastructure.convertor.OrgBusinessScopeDeviceRefDoConvertor;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgBusinessScopeDeviceRefDO;
@ -44,4 +45,9 @@ public class OrgBusinessScopeDeviceRefQueryServiceImpl implements OrgBusinessSco
return PageHelper.pageToResponse(orgBusinessScopeDeviceRefDoPage, orgBusinessScopeDeviceRefCoS);
}
@Override
public List<DeviceTypeOptionCo> listDistinctDeviceTypeOptions() {
return orgBusinessScopeDeviceRefRepository.listDistinctDeviceTypeOptions();
}
}

View File

@ -3,8 +3,11 @@ package org.qinan.safetyeval.infrastructure.persistence.repository;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgBusinessScopeDeviceRefDO;
import java.util.List;
/**
*
*
@ -37,6 +40,15 @@ public interface OrgBusinessScopeDeviceRefRepository extends BaseRepository<OrgB
*/
IPage<OrgBusinessScopeDeviceRefDO> listOrgBusinessScopeDeviceRefPage(IPage iPage, OrgBusinessScopeDeviceRefPageQry orgBusinessScopeDeviceRefPageQry);
/**
* device_type_code
*
* <p>2026-08-18 </p>
*
* @return
*/
List<DeviceTypeOptionCo> listDistinctDeviceTypeOptions();
/**
*
*

View File

@ -7,6 +7,7 @@ import com.jjb.saas.framework.enums.enums.BooleanEnum;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import lombok.AllArgsConstructor;
import org.qinan.safetyeval.client.ref.request.OrgBusinessScopeDeviceRefPageQry;
import org.qinan.safetyeval.client.ref.response.DeviceTypeOptionCo;
import org.qinan.safetyeval.domain.constant.BooleanQAEnum;
import org.qinan.safetyeval.infrastructure.persistence.domainobject.OrgBusinessScopeDeviceRefDO;
import org.qinan.safetyeval.infrastructure.persistence.mapper.OrgBusinessScopeDeviceRefMapper;
@ -14,6 +15,7 @@ import org.qinan.safetyeval.infrastructure.persistence.repository.OrgBusinessSco
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
*
@ -62,6 +64,19 @@ public class OrgBusinessScopeDeviceRefRepositoryImpl extends BaseRepositoryImpl<
return orgBusinessScopeDeviceRefMapper.selectPage(iPage, orgBusinessScopeDeviceRefDoQueryWrapper);
}
/**
* device_type_code
*
* <p>2026-08-18
* </p>
*
* @return
*/
@Override
public List<DeviceTypeOptionCo> listDistinctDeviceTypeOptions() {
return orgBusinessScopeDeviceRefMapper.selectDistinctDeviceTypeOptions();
}
@Override
public Boolean addOrgBusinessScopeDeviceRef(OrgBusinessScopeDeviceRefDO orgBusinessScopeDeviceRefDO) {
return super.save(orgBusinessScopeDeviceRefDO);

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/8/13 13:33:47] App_Identifier[safetyEval-h5]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>注册</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/8/18 09:14:42] App_Identifier[safetyEval-h5]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>重庆安全评价</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -126,4 +126,4 @@
}
mergeParams();
})();
})();</script><script defer="defer" src="/safetyEval-h5/static/js/33.826ba7bce17f692b.js"></script><script defer="defer" src="/safetyEval-h5/static/js/509.37fefdea880bd79c.js"></script><script defer="defer" src="/safetyEval-h5/static/js/554.dce5d48939bcb600.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.2eba06f91e1a124e.js"></script><link href="/safetyEval-h5/static/css/main.aeb5d93e210e3449.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/8/13 13:33:47] App_Identifier[safetyEval-h5] Frontend_Branch[dev-tmp1] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html>
})();</script><script defer="defer" src="/safetyEval-h5/static/js/755.12ee02fc6bb450b5.js"></script><script defer="defer" src="/safetyEval-h5/static/js/509.37fefdea880bd79c.js"></script><script defer="defer" src="/safetyEval-h5/static/js/366.50ec0bd2b368acf9.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.15b9ed3bc2c264eb.js"></script><link href="/safetyEval-h5/static/css/main.1ef5965302affadf.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/8/18 09:14:42] App_Identifier[safetyEval-h5] Frontend_Branch[dev-tmp1] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html>

View File

@ -1,5 +1,5 @@
.driver-back {
display: inline-flex;
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
@ -21,6 +21,7 @@
/* ============ 机构端首页 — 1:1 还原原型 dashboard-classic ============ */
.institution-dashboard {
padding: 0 18px;
min-height: 100%;
background: #f8fafc;
color: #1e293b;
@ -28,7 +29,7 @@
}
/* 顶部工具栏 */
.institution-dashboard__toolbar {
padding: 0 0 8px;
padding: 6px;
}
/* ============ dashboard-classic 布局 ============ */
.dashboard-classic {
@ -1064,6 +1065,17 @@
}
.driver-container--cockpit {
padding: 0;
overflow: hidden;
}
.driver-container--cockpit .cockpit-page {
height: 100%;
min-height: 0;
overflow: hidden;
}
.driver-container--cockpit .cockpit-stage {
height: 100%;
min-height: 0;
aspect-ratio: auto;
}
.driver-container .driver-container-content {
height: 100%;
@ -4718,165 +4730,11 @@
font-size: 22px;
color: #1f2937;
}
.register-more .register-more-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px 60px;
}
.register-more .register-more-field {
display: grid;
grid-template-columns: 150px 1fr;
align-items: center;
}
.register-more .register-more-field label {
text-align: right;
padding-right: 14px;
font-size: 14px;
color: #1f2937;
}
.register-more .register-more-field.required label::before {
content: "*";
color: #ef4444;
margin-right: 4px;
}
.register-more .register-more-field input,
.register-more .register-more-field textarea {
width: 100%;
height: 36px;
border: 1px solid #d3d8e1;
border-radius: 3px;
padding: 8px 11px;
font: 14px inherit;
color: #1f2937;
background: #fff;
outline: none;
transition: border-color 0.15s;
}
.register-more .register-more-field input::placeholder,
.register-more .register-more-field textarea::placeholder {
color: #9ca3af;
}
.register-more .register-more-field input:focus,
.register-more .register-more-field textarea:focus {
border-color: #1677ed;
}
.register-more .register-more-field input:disabled,
.register-more .register-more-field textarea:disabled {
background: #f5f7fa;
color: #9ca3af;
cursor: not-allowed;
}
.register-more .register-more-field textarea {
height: 68px;
resize: vertical;
}
.register-more .register-more-field.align-start {
align-items: start;
}
.register-more .register-more-field.align-start label {
padding-top: 10px;
}
.register-more .register-more-large-textarea {
height: 150px !important;
line-height: 1.7;
}
.register-more .register-more-control {
display: flex;
flex-direction: column;
gap: 4px;
}
.register-more .register-more-control input[type="number"] {
-moz-appearance: textfield;
appearance: textfield;
}
.register-more .register-more-control input[type="number"]::-webkit-outer-spin-button,
.register-more .register-more-control input[type="number"]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.register-more .register-more-error {
color: #ef4444;
font-size: 12px;
line-height: 1.4;
margin-top: 2px;
}
.register-more .is-disabled {
opacity: 0.6;
pointer-events: none;
}
.register-more .register-more-license {
display: flex;
flex-direction: column;
align-items: stretch;
gap: 6px;
}
.register-more .register-more-file-btn {
position: relative;
display: inline-flex;
align-items: center;
height: 36px;
padding: 0 11px;
border: 1px solid #d3d8e1;
border-radius: 3px;
color: #1f2937;
background: #fff;
font-size: 14px;
cursor: pointer;
white-space: nowrap;
flex: 0 0 auto;
transition: border-color 0.15s;
}
.register-more .register-more-file-btn:hover {
border-color: #1677ed;
}
.register-more .register-more-file-btn input[type="file"] {
position: absolute;
inset: 0;
opacity: 0;
cursor: pointer;
}
.register-more .register-more-file-text {
color: #475569;
}
.register-more .register-more-scope {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px 18px;
padding: 14px;
border: 1px solid #d3d8e1;
border-radius: 3px;
background: #fbfcfe;
}
.register-more .register-more-scope label {
display: flex;
align-items: flex-start;
text-align: left;
padding: 0;
font-size: 14px;
line-height: 1.5;
cursor: pointer;
color: #1f2937;
}
.register-more .register-more-scope input[type="checkbox"] {
width: 16px;
height: 16px;
margin: 3px 8px 0 0;
flex: 0 0 auto;
}
.register-more .register-more-optional-note {
display: block;
color: #8b95a5;
font-size: 12px;
margin-top: 6px;
}
.register-more .register-more-tip {
margin: 20px 0 0 150px;
margin: 20px 0;
color: #8b95a5;
font-size: 12px;
}
.register-more .register-more-wide {
grid-column: 1 / -1;
}
.register-more .register-more-actions {
display: flex;
justify-content: center;
@ -4885,62 +4743,6 @@
margin-top: 28px;
padding-top: 24px;
}
.register-more .register-more-btn {
height: 40px;
padding: 0 25px;
border: 0;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
transition: opacity 0.15s;
}
.register-more .register-more-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.register-more .register-more-btn.primary {
background: #1677ed;
color: #fff;
}
.register-more .register-more-btn.primary:hover:not(:disabled) {
background: #0958d9;
}
.register-more .register-more-btn.secondary {
background: #f1f4f8;
color: #475569;
}
.register-more .register-more-btn.secondary:hover:not(:disabled) {
background: #e5eaf1;
}
.register-more .register-more-license-list {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 8px;
}
.register-more .register-more-license-list .license-item {
display: inline-flex;
align-items: center;
gap: 6px;
border: 1px solid #d3d8e1;
border-radius: 3px;
background: #fbfcfe;
padding: 4px 8px;
font-size: 12px;
color: #1f2937;
}
.register-more .register-more-license-list .license-item a {
color: #1677ed;
text-decoration: none;
}
.register-more .register-more-license-list .license-item .license-remove {
border: 0;
background: none;
color: #ef4444;
cursor: pointer;
font-size: 14px;
line-height: 1;
}
.register-more .audit-look {
background-repeat: no-repeat;
height: 175px;
@ -4993,19 +4795,6 @@
.register-more .register-more-card h2 {
font-size: 18px;
}
.register-more .register-more-grid {
grid-template-columns: 1fr;
gap: 14px;
}
.register-more .register-more-wide {
grid-column: auto;
}
.register-more .register-more-field {
grid-template-columns: 125px 1fr;
}
.register-more .register-more-scope {
grid-template-columns: 1fr;
}
.register-more .register-more-step:not(:last-child)::after {
width: 28px;
margin: 0 7px;
@ -5013,9 +4802,6 @@
.register-more .register-more-step {
font-size: 12px;
}
.register-more .register-more-tip {
margin-left: 125px;
}
}
.supervision-dashboard-page {

View File

@ -1 +1 @@
module.exports={javaGit:"<git-url>",javaGitName:"<git-name>",environment:{development:{javaGitBranch:"<branch-name>",API_HOST:"http://192.168.0.103"},production:{javaGitBranch:"<branch-name>",API_HOST:"https://gbs-gateway.qhdsafety.com"}},appIdentifier:"safetyEval-h5",contextInject:{appKey:"",fileUrl:"https://jpfz.qhdsafety.com/gbsFileTest/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8080",host:"127.0.0.1",open:!0},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0},resolve:{symlinks:!0}}};
module.exports={javaGit:"<git-url>",javaGitName:"<git-name>",environment:{development:{javaGitBranch:"<branch-name>",API_HOST:"https://gbs-gateway.qhdsafety.com"},production:{javaGitBranch:"<branch-name>",API_HOST:"https://gbs-gateway.qhdsafety.com"}},appIdentifier:"safetyEval-h5",contextInject:{appKey:"",fileUrl:"https://jpfz.qhdsafety.com/gbsFileTest/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8080",host:"127.0.0.1",open:!0},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0},resolve:{symlinks:!0}}};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.3 Frontend_Env[production] Build_Date[2026/8/13 13:32:42] App_Identifier[safetyEval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.3 Frontend_Env[production] Build_Date[2026/8/18 09:17:27] App_Identifier[safetyEval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -89,4 +89,4 @@
},
}
}</script><script defer="defer" src="/safetyEval/static/js/659.d6636bcc2c582a88.js"></script><script defer="defer" src="/safetyEval/static/js/408.f4e5f5bfd46083e5.js"></script><script defer="defer" src="/safetyEval/static/js/419.9f92da006b7be853.js"></script><script defer="defer" src="/safetyEval/static/js/622.829cb8e556e7671f.js"></script><script defer="defer" src="/safetyEval/static/js/main.5da90dcf653df948.js"></script><link href="/safetyEval/static/css/main.75184bbafe746885.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.3 Frontend_Env[production] Build_Date[2026/8/13 13:32:42] App_Identifier[safetyEval] Frontend_Branch[dev-tmp1] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
}</script><script defer="defer" src="/safetyEval/static/js/782.2eca9ef952b411c0.js"></script><script defer="defer" src="/safetyEval/static/js/430.9a05bef6292e9978.js"></script><script defer="defer" src="/safetyEval/static/js/419.9f92da006b7be853.js"></script><script defer="defer" src="/safetyEval/static/js/372.ee65c5e00402adaa.js"></script><script defer="defer" src="/safetyEval/static/js/main.c0b6a4e5afa4a2d5.js"></script><link href="/safetyEval/static/css/main.5fe328f004a54f8f.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.3 Frontend_Env[production] Build_Date[2026/8/18 09:17:27] App_Identifier[safetyEval] Frontend_Branch[dev-tmp1] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -25,21 +25,20 @@
"@cqsjjb/jjb-common-lib": "latest",
"@cqsjjb/jjb-dva-runtime": "latest",
"@cqsjjb/jjb-react-admin-component": "latest",
"@eigenpal/docx-editor-react": "^1.9.0",
"@rc-component/motion": "^1.0.0",
"@rc-component/util": "^1.11.1",
"pizzip": "latest",
"docxtemplater": "latest",
"antd": "^5.29.2",
"china-division": "^2.7.0",
"dayjs": "^1.11.7",
"docxtemplater": "latest",
"echarts": "^6.1.0",
"history": "^4.10.1",
"html2canvas": "^1.4.1",
"jspdf": "^2.5.2",
"lodash-es": "^4.17.21",
"pizzip": "latest",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"xlsx": "^0.18.5",
"zy-react-library": "^1.2.3"
},
"devDependencies": {