需求修改
parent
31830f86ad
commit
94956d59b6
|
|
@ -0,0 +1,50 @@
|
|||
-- =====================================================================================
|
||||
-- 变更说明(2026-08-18 装备信息管理:业务范围与设备类型对照关系冗余数据清理)
|
||||
-- 需求:装备信息管理(/container/EnterpriseInfo/EquipInfo)页面"业务范围-设备类型"对照关系
|
||||
-- 冗余,参考《安全评价机构业务范围与设备参照表.docx》修正。
|
||||
-- 对照关系来源:该页面设备类型下拉完全由后端数据库表 org_business_scope_device_ref 驱动
|
||||
-- (前端按 industryCode 查询,无映射逻辑),故修正只需清理数据库冗余数据。
|
||||
-- 现状分析:
|
||||
-- 1) id 1-33(env='prod')为 7 个标准业务范围(煤炭开采业/金属非金属矿及其他矿采选业/
|
||||
-- 陆地石油和天然气开采业/陆上油气管道运输业/石油加工业化学原料化学品及医药制造业/
|
||||
-- 烟花爆竹制造业/金属冶炼)对应的 A/B 类标准设备,与文档逐一核对完全一致,保留。
|
||||
-- 2) id 34-145(env IS NULL,2026-07-15 批量追加)为冗余数据:
|
||||
-- - id 34-131:7 个标准业务范围 × 14 条 C/D 类"办公/通用"设备(计算机C101、打印机C102、
|
||||
-- 传真机C103、复印机C104、扫描仪C105、照相机C106、摄像机C107、投影仪C108、碎纸机C109、
|
||||
-- 录音设备C110、对讲机D101、GPS定位仪D102、激光测距仪D103、个体防护用品D104),文档中不存在;
|
||||
-- - id 132-145:CIVIL_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`;
|
||||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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获取安全评价机构业务范围与设备参照详情
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
||||
/**
|
||||
* 新增安全评价机构业务范围与设备参照
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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 {
|
||||
|
|
@ -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
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
|
|
@ -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 it is too large
Load Diff
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
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
|
|
@ -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": {
|
||||
|
|
|
|||
Loading…
Reference in New Issue