Merge remote-tracking branch 'origin/dev' into dev
|
|
@ -62,6 +62,7 @@ safety-eval:
|
|||
- /swagger-ui
|
||||
- /swagger-resources
|
||||
- /webjars
|
||||
- /safetyEval-h5
|
||||
- /public/org-personnel
|
||||
- /test
|
||||
- /tmp
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package org.qinan.safetyeval.adapter.config;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.qinan.safetyeval.domain.exception.BizException;
|
||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
|
||||
|
|
@ -11,7 +10,6 @@ import org.qinan.safetyeval.infrastructure.mapper.AccountMapper;
|
|||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.util.AntPathMatcher;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||
|
|
@ -30,13 +28,14 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
|
|||
@Autowired
|
||||
private AccountMapper accountMapper;
|
||||
|
||||
private final AntPathMatcher pathMatcher = new AntPathMatcher();
|
||||
|
||||
private final String[] anonymousUrl = {
|
||||
private static final String[] EXCLUDE_PATHS = {
|
||||
"/**/safetyEval-h5/**",
|
||||
"/safetyEval-h5/**",
|
||||
"/**/images/**",
|
||||
"/**/file/**",
|
||||
"/**/tree/**"
|
||||
};
|
||||
|
||||
@Override
|
||||
public void addInterceptors(InterceptorRegistry registry) {
|
||||
registry.addInterceptor(new HandlerInterceptor() {
|
||||
|
|
@ -46,9 +45,6 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
|
|||
return true;
|
||||
}
|
||||
log.info("url: {}", request.getRequestURI());
|
||||
if (isWhiteUrl(request.getRequestURI())) {
|
||||
return true;
|
||||
}
|
||||
AuthUserInfo currentUser = AuthUserContextAdapter.getCurrentUser();
|
||||
if (currentUser == null || currentUser.getUserId() == null) {
|
||||
throw new BizException(ErrorCode.GBS_USER_ERROR);
|
||||
|
|
@ -75,25 +71,8 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
|
|||
Object handler, Exception exception) {
|
||||
|
||||
}
|
||||
}).addPathPatterns("/**").order(2);
|
||||
}).addPathPatterns("/**").excludePathPatterns(EXCLUDE_PATHS).order(2);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 放行白名单
|
||||
* @param url
|
||||
* @return
|
||||
*/
|
||||
private boolean isWhiteUrl(String url) {
|
||||
if (StringUtils.isBlank(url)) {
|
||||
return false;
|
||||
}
|
||||
for (String s : anonymousUrl) {
|
||||
if (pathMatcher.match(s, url)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ public class AccountExecutor implements AccountApi {
|
|||
userAddCmd.setAccount(result.getAccount());
|
||||
userAddCmd.setTenantId(result.getTenantId());
|
||||
userAddCmd.setName(result.getUserName());
|
||||
// userAddCmd.setMobile(result.getPhone());
|
||||
String pas = defPassword;
|
||||
if (StringUtils.isNotBlank(result.getPassword())) {
|
||||
pas = result.getPassword();
|
||||
|
|
@ -134,7 +135,8 @@ public class AccountExecutor implements AccountApi {
|
|||
// 回滚数据, 清除account表示数据,orgInfo数据
|
||||
orgInfoMapper.delete(new LambdaQueryWrapper<OrgInfoDO>()
|
||||
.eq(OrgInfoDO::getCreateId, result.getId()));
|
||||
|
||||
accountDomainService.delete(result.getId());
|
||||
log.error("同步用户失败: {}", e.getMessage());
|
||||
throw new BizException(ErrorCode.GBS_USER_SYNC_ERROR);
|
||||
}
|
||||
return SingleResponse.success(toCO(result));
|
||||
|
|
|
|||
|
|
@ -58,14 +58,27 @@ public class OrgDepartmentExecutor implements OrgDepartmentApi {
|
|||
@Override
|
||||
public SingleResponse<OrgDepartmentCO> modify(OrgDepartmentModifyCmd cmd) {
|
||||
OrgDepartmentEntity entity = new OrgDepartmentEntity();
|
||||
entity.setId(cmd.getId() != null ? Long.parseLong(cmd.getId()) : null);
|
||||
entity.setParentId(cmd.getParentId() != null ? Long.parseLong(cmd.getParentId()) : null);
|
||||
if (cmd.getId() != null) {
|
||||
entity.setId(Long.parseLong(cmd.getId()));
|
||||
}
|
||||
if (entity.getParentId() != null) {
|
||||
entity.setParentId(Long.parseLong(cmd.getParentId()));
|
||||
}
|
||||
if(cmd.getDeptName() != null) {
|
||||
entity.setDeptName(cmd.getDeptName());
|
||||
}
|
||||
if (cmd.getManagerName() != null) {
|
||||
entity.setManagerName(cmd.getManagerName());
|
||||
}
|
||||
if (cmd.getManagerAccount() != null) {
|
||||
entity.setManagerAccount(cmd.getManagerAccount());
|
||||
}
|
||||
if (cmd.getDeptLevelCode() != null) {
|
||||
entity.setDeptLevelCode(cmd.getDeptLevelCode());
|
||||
}
|
||||
if (cmd.getDeptLevelName() != null) {
|
||||
entity.setDeptLevelName(cmd.getDeptLevelName());
|
||||
|
||||
}
|
||||
OrgDepartmentEntity result = orgDepartmentDomainService.modify(entity);
|
||||
return SingleResponse.success(toCO(result));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
|
|||
import org.qinan.safetyeval.infrastructure.dataobject.QualFilingChangeCountDO;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -85,6 +86,8 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
|
|||
|
||||
@Resource
|
||||
private QualFilingChangeDetailGateway qualFilingChangeDetailGateway;
|
||||
@Value("${def.reviewEnable:false}")
|
||||
private Boolean reviewEnable;
|
||||
|
||||
@Override
|
||||
public SingleResponse<QualFilingChangeCO> add(QualFilingChangeAddCmd cmd) {
|
||||
|
|
@ -306,6 +309,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
|
|||
, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities);
|
||||
|
||||
// 合规性校验:只要有一项未通过则抛出异常
|
||||
if (reviewEnable) {
|
||||
List<QualFilingChangeComplianceCheckResultCO> complianceResults = qualFilingOrchestrator.complianceCheckChange(id);
|
||||
List<String> failedItems = complianceResults.stream()
|
||||
.filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus()))
|
||||
|
|
@ -315,6 +319,7 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
|
|||
throw new BizException(ErrorCode.QUAL_FILING_COMPLIANCE_CHECK_FAIL,
|
||||
"合规性校验未通过:" + String.join("、", failedItems));
|
||||
}
|
||||
}
|
||||
|
||||
QualFilingChangeCO co = new QualFilingChangeCO();
|
||||
co.setId(id);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import org.qinan.safetyeval.infrastructure.dataobject.*;
|
|||
import org.qinan.safetyeval.infrastructure.mapper.*;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ public class OrgDepartmentGatewayImpl implements OrgDepartmentGateway {
|
|||
private OrgDepartmentDO toDO(OrgDepartmentEntity entity) {
|
||||
OrgDepartmentDO dataObject = new OrgDepartmentDO();
|
||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||
dataObject.setParentId(entity.getParentId() != null ? entity.getParentId() : 0L);
|
||||
dataObject.setParentId(entity.getParentId());
|
||||
dataObject.setDeptName(entity.getDeptName());
|
||||
dataObject.setManagerName(entity.getManagerName());
|
||||
dataObject.setManagerAccount(entity.getManagerAccount());
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ public final class InsertFieldDefaults {
|
|||
}
|
||||
Long tenantId = AuthUserContextAdapter.getCurrentTenantId();
|
||||
if (tenantId == null) {
|
||||
tenantId = 2069596397920849920L;
|
||||
tenantId = 2067161116369793024L;
|
||||
}
|
||||
setIfNull(dataObject, "createId", userId);
|
||||
setIfNull(dataObject, "updateId", userId);
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ safety-eval:
|
|||
- /swagger-ui
|
||||
- /swagger-resources
|
||||
- /webjars
|
||||
- /safetyEval-h5
|
||||
- /images
|
||||
- /public/org-personnel
|
||||
- /test
|
||||
|
|
@ -165,3 +166,7 @@ safety-eval:
|
|||
attachment:
|
||||
default-url: https://s1.aigei.com/prevfiles/6f2754563be2491bad7c957904cd7d2a.jpg?e=2051020800&token=P7S2Xpzfz11vAkASLTkfHN7Fw-oOZBecqeJaxypL:CR60zg7VKDp-jUWyYls_rdvyQMM=
|
||||
|
||||
def:
|
||||
password: a123456
|
||||
publicKey: 0402df2195296d4062ac85ad766994d73e871b887e18efb9a9a06b4cebc72372869b7da6c347c129dee2b46a0f279ff066b01c76208c2a052af75977c722a2ccee
|
||||
reviewEnable: false
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
app-key: cbbfef15159e4578928dad804eb46dad
|
||||
client:
|
||||
gateway:
|
||||
ignore-urls:
|
||||
- /safetyEval-h5/**
|
||||
- /safetyEval-h5/Container/**
|
||||
url: ${common.gateway.network.http.external}
|
||||
route:
|
||||
- client:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ sdk:
|
|||
app-key: cbbfef15159e4578928dad804eb46dad
|
||||
client:
|
||||
gateway:
|
||||
ignore-urls:
|
||||
- /safetyEval-h5/**
|
||||
- /safetyEval-h5/Container/**
|
||||
url: ${common.gateway.network.http.external}
|
||||
route:
|
||||
- client:
|
||||
|
|
|
|||
|
|
@ -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/7/8 21:07:56] 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/7/9 10:30:55] 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',
|
||||
|
|
@ -10,7 +10,14 @@
|
|||
basename: 'safetyEval-h5',
|
||||
API_HOST: 'https://gbs-gateway.qhdsafety.com'
|
||||
};
|
||||
APP_ENV.API_HOST = sessionStorage.API_HOST || APP_ENV.API_HOST || window.location.origin;
|
||||
APP_ENV.API_HOST = 'https://gbs-gateway.qhdsafety.com';
|
||||
const injectedApiHost = APP_ENV.API_HOST;
|
||||
const isDev = 'production' === 'development';
|
||||
if (isDev && injectedApiHost && injectedApiHost.indexOf('http') === 0) {
|
||||
APP_ENV.API_HOST = injectedApiHost;
|
||||
} else {
|
||||
APP_ENV.API_HOST = sessionStorage.API_HOST || injectedApiHost || window.location.origin;
|
||||
}
|
||||
window.process = {
|
||||
env: { app: APP_ENV },
|
||||
NODE_ENV: 'production'
|
||||
|
|
@ -34,10 +41,27 @@
|
|||
}, 500);
|
||||
};
|
||||
|
||||
/** 全局接口错误:success === false 时自动返回基座 */
|
||||
/** 全局 HTTP 拦截器 */
|
||||
window.jjbCommonGlobalConfig = {
|
||||
httpInterceptor: {
|
||||
request: function (url, method, params, headers) {
|
||||
if (sessionStorage.getItem('orgInfoId')) {
|
||||
headers.orgInfoId = sessionStorage.getItem('orgInfoId');
|
||||
}
|
||||
return Promise.resolve([url, method, params, headers]);
|
||||
},
|
||||
response: function (res) {
|
||||
var url = (res && res.config && res.config.url)
|
||||
|| (res.response && res.response.config && res.response.config.url)
|
||||
|| '';
|
||||
// 注册/填报开放接口、终端类型检测、文件上传失败时不自动返回基座
|
||||
if (
|
||||
url.indexOf('checkTerminalType') !== -1
|
||||
|| url.indexOf('/safetyEval/images/') !== -1
|
||||
|| url.indexOf('/safetyEval/file/upload') !== -1
|
||||
) {
|
||||
return Promise.resolve(res);
|
||||
}
|
||||
var data = res && (res.data || (res.response && res.response.data));
|
||||
if (data && data.success === false) {
|
||||
window.backToBase();
|
||||
|
|
@ -46,4 +70,60 @@
|
|||
}
|
||||
}
|
||||
};
|
||||
})();</script><script defer="defer" src="/safetyEval-h5/static/js/612.e6ed01a8a90b740f.js"></script><script defer="defer" src="/safetyEval-h5/static/js/923.1ecdc96702c3dc37.js"></script><script defer="defer" src="/safetyEval-h5/static/js/338.f3a903b2f40406b3.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.37cb43c4733de10c.js"></script><link href="/safetyEval-h5/static/css/main.dc38da3713049724.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/7/8 21:07:56] App_Identifier[safetyEval-h5] Frontend_Branch[master] 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>
|
||||
|
||||
/** Driver 鉴权参数提前解析,避免首屏请求时 sessionStorage 尚未写入 */
|
||||
(function bootstrapDriverAuthParams() {
|
||||
var AUTH_KEYS = ['token', 'accessTicket', 'clientId', 'orgId', 'code'];
|
||||
function parseQuery(search) {
|
||||
var params = {};
|
||||
if (!search) return params;
|
||||
try {
|
||||
var normalized = search.charAt(0) === '?' ? search : '?' + search;
|
||||
var urlParams = new URLSearchParams(normalized);
|
||||
urlParams.forEach(function (value, key) {
|
||||
if (value) params[key] = value;
|
||||
});
|
||||
} catch (e) { /* ignore */ }
|
||||
return params;
|
||||
}
|
||||
function parseUrl(url) {
|
||||
if (!url) return {};
|
||||
try {
|
||||
return parseQuery(new URL(url, window.location.origin).search);
|
||||
} catch (e) {
|
||||
var idx = url.indexOf('?');
|
||||
return idx === -1 ? {} : parseQuery(url.slice(idx));
|
||||
}
|
||||
}
|
||||
function parseHash() {
|
||||
var hash = window.location.hash || '';
|
||||
var idx = hash.indexOf('?');
|
||||
return idx === -1 ? {} : parseQuery(hash.slice(idx));
|
||||
}
|
||||
function mergeParams() {
|
||||
var sources = [
|
||||
parseQuery(window.location.search),
|
||||
parseHash(),
|
||||
parseUrl(window.location.href),
|
||||
parseUrl(document.referrer)
|
||||
];
|
||||
var result = {};
|
||||
sources.forEach(function (source) {
|
||||
AUTH_KEYS.forEach(function (key) {
|
||||
if (!result[key] && source[key]) result[key] = source[key];
|
||||
});
|
||||
});
|
||||
AUTH_KEYS.forEach(function (key) {
|
||||
if (!result[key]) {
|
||||
var stored = sessionStorage.getItem(key);
|
||||
if (stored) result[key] = stored;
|
||||
}
|
||||
});
|
||||
AUTH_KEYS.forEach(function (key) {
|
||||
if (result[key]) sessionStorage.setItem(key, result[key]);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
mergeParams();
|
||||
})();
|
||||
})();</script><script defer="defer" src="/safetyEval-h5/static/js/548.ac3036a0ff72bbda.js"></script><script defer="defer" src="/safetyEval-h5/static/js/551.40cd16b83ccef834.js"></script><script defer="defer" src="/safetyEval-h5/static/js/485.cc16547839dceff2.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.eb0b4da88d14f66c.js"></script><link href="/safetyEval-h5/static/css/main.d529a13088ceae37.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/7/9 10:30:55] App_Identifier[safetyEval-h5] Frontend_Branch[dev] 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>
|
||||
|
|
@ -844,6 +844,27 @@
|
|||
.driver-container .driver-container-content {
|
||||
height: 100%;
|
||||
}
|
||||
.driver-container .driver-container-empty {
|
||||
padding: 48px 0;
|
||||
}
|
||||
.driver-error-panel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
min-height: 320px;
|
||||
background: #fff;
|
||||
}
|
||||
.driver-error-panel__header {
|
||||
flex-shrink: 0;
|
||||
padding: 12px 16px;
|
||||
}
|
||||
.driver-error-panel__body {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 24px 16px 48px;
|
||||
}
|
||||
|
||||
.map_content_bottom_utils_container .bottom_utils {
|
||||
width: 1000px;
|
||||
|
|
@ -4277,6 +4298,176 @@
|
|||
pointer-events: auto;
|
||||
}
|
||||
|
||||
.register-page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 8px;
|
||||
background: linear-gradient(135deg, #1a5fb4 0%, #0d3a7a 100%);
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 24px;
|
||||
}
|
||||
.register-page .register-top-bar {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
.register-page .register-top-bar .register-top-logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.register-page .register-top-bar .register-top-logo .register-top-icon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
.register-page .register-top-bar .register-top-logo .register-top-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
.register-page .register-top-bar .register-top-logo .register-top-subtitle {
|
||||
font-size: 13px;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
margin-left: 4px;
|
||||
padding-left: 10px;
|
||||
border-left: 1px solid rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
.register-page .register-card {
|
||||
display: flex;
|
||||
width: 900px;
|
||||
min-height: 520px;
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
.register-page .register-left {
|
||||
width: 460px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: linear-gradient(180deg, #e8f4ff 0%, #d0e8ff 100%);
|
||||
}
|
||||
.register-page .register-left .register-left-icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.register-page .register-left .register-logo-icon {
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
.register-page .register-left .register-left-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
color: #1677ff;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.register-page .register-left .register-left-subtitle {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
.register-page .register-right {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
padding: 48px;
|
||||
}
|
||||
.register-page .register-right .register-header {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.register-page .register-right .register-header .register-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.register-page .register-right .register-header .register-subtitle {
|
||||
font-size: 13px;
|
||||
color: #999;
|
||||
}
|
||||
.register-page .register-right .register-form .ant-form-item {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.register-page .register-right .register-form .ant-input-affix-wrapper {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.register-page .register-right .register-form .ant-input {
|
||||
border-radius: 4px;
|
||||
}
|
||||
.register-page .register-right .register-form .register-verify-row {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
}
|
||||
.register-page .register-right .register-form .register-verify-row .register-verify-input {
|
||||
flex: 1;
|
||||
}
|
||||
.register-page .register-right .register-form .register-verify-row .register-verify-btn {
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.register-page .register-right .register-form .register-submit-btn {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
border-radius: 4px;
|
||||
font-size: 15px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.register-more {
|
||||
position: relative;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.register-more .audit-look {
|
||||
background-repeat: no-repeat;
|
||||
height: 175px;
|
||||
width: 171px;
|
||||
position: relative;
|
||||
}
|
||||
.register-more .audit-look-img {
|
||||
position: absolute;
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
top: 50%;
|
||||
left: 63%;
|
||||
margin-top: -22.5px;
|
||||
margin-left: -22.5px;
|
||||
animation: orbit-clockwise 2s linear infinite;
|
||||
}
|
||||
@keyframes orbit-clockwise {
|
||||
from {
|
||||
transform: rotate(0deg) translateX(8px) rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg) translateX(8px) rotate(-360deg);
|
||||
}
|
||||
}
|
||||
.register-more .register-more-header {
|
||||
height: 250px;
|
||||
position: relative;
|
||||
}
|
||||
.register-more .register-more-header .register-more-header-content {
|
||||
width: 1200px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
.register-more .register-more-header .register-more-header-title {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.register-more .register-more-content {
|
||||
width: 1200px;
|
||||
margin: 30px auto 20px;
|
||||
}
|
||||
|
||||
.supervision-dashboard-page {
|
||||
min-height: 100%;
|
||||
background: #f4f4f4;
|
||||
|
|
@ -6246,6 +6437,22 @@
|
|||
width: 540px;
|
||||
}
|
||||
|
||||
.micro-temp-modal-body {
|
||||
max-height: 630px;
|
||||
overflow-y: auto;
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
.micro-temp-layout-container .micro-temp-lay-container-bottom {
|
||||
padding: 10px 24px !important;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* stylelint-disable */
|
||||
html,
|
||||
body {
|
||||
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 849 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
|
@ -1 +1 @@
|
|||
module.exports={compact:!1,plugins:[["@babel/plugin-proposal-decorators",{legacy:!0}]],presets:[["@babel/preset-env",{targets:{browsers:["ie >= 10"]}}],["@babel/preset-react",{runtime:"automatic"}]]};
|
||||
const lifecycle=process.env.npm_lifecycle_event||"";("serve"===lifecycle||lifecycle.startsWith("serve:"))&&"production"===process.env.NODE_ENV&&(process.env.BABEL_ENV="development"),module.exports={compact:!1,plugins:[["@babel/plugin-proposal-decorators",{legacy:!0}]],presets:[["@babel/preset-env",{targets:{browsers:["ie >= 10"]}}],["@babel/preset-react",{runtime:"automatic"}]]};
|
||||
|
|
@ -1 +1 @@
|
|||
module.exports={javaGit:"<git-url>",javaGitName:"<git-name>",environment:{development:{javaGitBranch:"<branch-name>",API_HOST:"http://127.0.0.1"},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}}};
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/9 09:55:06] 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',
|
||||
fontFamily: 'PingFangSC-Regular',
|
||||
colorPrimary: '#1677ff',
|
||||
borderRadius: parseInt('2')
|
||||
},
|
||||
appKey: '',
|
||||
basename: 'safetyEval',
|
||||
API_HOST: ''
|
||||
};
|
||||
const injectedApiHost = APP_ENV.API_HOST;
|
||||
const isDev = 'production' === 'development';
|
||||
// 开发环境优先 jjb.config 注入的 API_HOST,避免 sessionStorage 残留网关地址导致 Network Error
|
||||
if (isDev && injectedApiHost && injectedApiHost.indexOf('http') === 0) {
|
||||
APP_ENV.API_HOST = injectedApiHost;
|
||||
} else {
|
||||
APP_ENV.API_HOST = sessionStorage.API_HOST || injectedApiHost || window.location.origin;
|
||||
}
|
||||
window.process = {
|
||||
env: { app: APP_ENV },
|
||||
NODE_ENV: 'production'
|
||||
};
|
||||
window.__JJB_ENVIRONMENT__ = {
|
||||
API_HOST: APP_ENV.API_HOST,
|
||||
redirect: '',
|
||||
FRAMEWORK: APP_ENV.antd
|
||||
};
|
||||
})();
|
||||
|
||||
// 抑制 ResizeObserver 在页面/标签切换时的无害告警,避免 dev overlay 误报
|
||||
(function () {
|
||||
if (typeof window.ResizeObserver !== 'undefined') {
|
||||
var NativeResizeObserver = window.ResizeObserver;
|
||||
window.ResizeObserver = class extends NativeResizeObserver {
|
||||
constructor(callback) {
|
||||
super(function (entries, observer) {
|
||||
window.requestAnimationFrame(function () {
|
||||
callback(entries, observer);
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function isResizeObserverLoopError(message) {
|
||||
return typeof message === 'string' && message.indexOf('ResizeObserver loop') !== -1;
|
||||
}
|
||||
|
||||
function isAxiosNetworkError(reason) {
|
||||
if (!reason) return false;
|
||||
var msg = typeof reason === 'string' ? reason : (reason.message || '');
|
||||
return msg === 'Network Error' || (reason.isAxiosError && msg === 'Network Error');
|
||||
}
|
||||
|
||||
window.addEventListener('error', function (event) {
|
||||
if (isResizeObserverLoopError(event.message)) {
|
||||
event.stopImmediatePropagation();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener('unhandledrejection', function (event) {
|
||||
if (isAxiosNetworkError(event.reason)) {
|
||||
console.warn('[dev] API unreachable:', event.reason?.config?.url || event.reason?.message);
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
})();
|
||||
window.jjbCommonGlobalConfig = {
|
||||
// http拦截器
|
||||
httpInterceptor: {
|
||||
// 请求拦截
|
||||
request: (url, method, params, headers) => {
|
||||
// 处理你的请求拦截
|
||||
|
||||
// 给请求头添加一个租户ID
|
||||
if(sessionStorage.getItem('orgInfoId')){
|
||||
headers.orgInfoId = sessionStorage.getItem('orgInfoId');
|
||||
}
|
||||
|
||||
return Promise.resolve([
|
||||
url,
|
||||
method,
|
||||
params,
|
||||
headers
|
||||
])
|
||||
},
|
||||
|
||||
}
|
||||
}</script><script defer="defer" src="/safetyEval/static/js/934.ada55f776be86394.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.f12da2fe2f6ad2ae.js"></script><script defer="defer" src="/safetyEval/static/js/main.65b9b76832cb72ed.js"></script><link href="/safetyEval/static/css/main.cb6068c6562f0d94.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.1 Frontend_Env[production] Build_Date[2026/7/9 09:55:06] App_Identifier[safetyEval] Frontend_Branch[dev] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
|
||||
|
|
@ -0,0 +1 @@
|
|||
module.exports={compact:!1,plugins:[["@babel/plugin-proposal-decorators",{legacy:!0}]],presets:[["@babel/preset-env",{targets:{browsers:["ie >= 10"]}}],["@babel/preset-react",{runtime:"automatic"}]]};
|
||||
|
|
@ -0,0 +1 @@
|
|||
module.exports={javaGit:"http://47.92.113.182:3000/cq_anquan/safety-eval-service.git",javaGitName:"safety-eval-service",environment:{development:{javaGitBranch:"dev",API_HOST:"http://192.168.0.152"},production:{javaGitBranch:"dev",API_HOST:""}},appIdentifier:"safetyEval",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"192.168.0.187",open:!1},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};
|
||||
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"name": "micro-app",
|
||||
"version": "2.0.0",
|
||||
"description": "建教帮微应用模板",
|
||||
"author": "JJB",
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"serve": "node node_modules/@cqsjjb/scripts/rspack.dev.server.js",
|
||||
"build": "node node_modules/@cqsjjb/scripts/rspack.build.js",
|
||||
"push": "jjb-cmd push java production",
|
||||
"clean-cache": "rimraf node_modules/.cache/webpack",
|
||||
"serve:development": "cross-env NODE_ENV=development npm run serve",
|
||||
"serve:production": "cross-env NODE_ENV=production npm run serve",
|
||||
"build:development": "cross-env NODE_ENV=development npm run build",
|
||||
"build:production": "cross-env NODE_ENV=production npm run build",
|
||||
"code-optimization": "node node_modules/@cqsjjb/scripts/code-optimization.js",
|
||||
"lint": "eslint --ext .js,.jsx,.tsx --fix src",
|
||||
"test:enterprise-info": "node docs/test-reports/测试用例/test-enterprise-info-api.mjs",
|
||||
"test:enterprise-info:granular": "node docs/test-reports/测试用例/test-enterprise-info-granular.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons": "^5.0.0",
|
||||
"@ant-design/pro-components": "^2.8.10",
|
||||
"@cqsjjb/jjb-common-decorator": "latest",
|
||||
"@cqsjjb/jjb-common-lib": "latest",
|
||||
"@cqsjjb/jjb-dva-runtime": "latest",
|
||||
"@cqsjjb/jjb-react-admin-component": "latest",
|
||||
"@rc-component/motion": "^1.0.0",
|
||||
"@rc-component/util": "^1.11.1",
|
||||
"ahooks": "^3.9.5",
|
||||
"antd": "^5.29.2",
|
||||
"dayjs": "^1.11.7",
|
||||
"echarts": "^6.1.0",
|
||||
"lodash-es": "^4.17.21",
|
||||
"qrcode.react": "^4.2.0",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"zy-react-library": "^1.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@antfu/eslint-config": "^5.4.1",
|
||||
"@babel/plugin-proposal-decorators": "^7.19.3",
|
||||
"@babel/preset-env": "^7.29.7",
|
||||
"@babel/preset-react": "^7.29.7",
|
||||
"@cqsjjb/scripts": "latest",
|
||||
"@eslint-react/eslint-plugin": "^2.2.2",
|
||||
"ajv": "^8.20.0",
|
||||
"babel-loader": "^9.1.3",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^6.8.1",
|
||||
"eslint": "^9.37.0",
|
||||
"eslint-plugin-format": "^1.0.2",
|
||||
"eslint-plugin-react-hooks": "^7.0.0",
|
||||
"eslint-plugin-react-refresh": "^0.4.23",
|
||||
"file-loader": "^6.2.0",
|
||||
"less-loader": "^11.1.3",
|
||||
"react-refresh": "^0.14.2",
|
||||
"style-loader": "^3.3.3",
|
||||
"typescript": "^5.9.3"
|
||||
},
|
||||
"resolutions": {
|
||||
"history": "^4.10.1",
|
||||
"path-to-regexp": "^1.9.0",
|
||||
"react": "$react",
|
||||
"react-dom": "$react-dom"
|
||||
}
|
||||
}
|
||||