Merge remote-tracking branch 'origin/dev' into dev
|
|
@ -62,6 +62,7 @@ safety-eval:
|
||||||
- /swagger-ui
|
- /swagger-ui
|
||||||
- /swagger-resources
|
- /swagger-resources
|
||||||
- /webjars
|
- /webjars
|
||||||
|
- /safetyEval-h5
|
||||||
- /public/org-personnel
|
- /public/org-personnel
|
||||||
- /test
|
- /test
|
||||||
- /tmp
|
- /tmp
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package org.qinan.safetyeval.adapter.config;
|
package org.qinan.safetyeval.adapter.config;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
|
||||||
import org.qinan.safetyeval.domain.exception.BizException;
|
import org.qinan.safetyeval.domain.exception.BizException;
|
||||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||||
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
|
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.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.util.AntPathMatcher;
|
|
||||||
import org.springframework.web.method.HandlerMethod;
|
import org.springframework.web.method.HandlerMethod;
|
||||||
import org.springframework.web.servlet.HandlerInterceptor;
|
import org.springframework.web.servlet.HandlerInterceptor;
|
||||||
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
||||||
|
|
@ -30,13 +28,14 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
|
||||||
@Autowired
|
@Autowired
|
||||||
private AccountMapper accountMapper;
|
private AccountMapper accountMapper;
|
||||||
|
|
||||||
private final AntPathMatcher pathMatcher = new AntPathMatcher();
|
private static final String[] EXCLUDE_PATHS = {
|
||||||
|
"/**/safetyEval-h5/**",
|
||||||
private final String[] anonymousUrl = {
|
"/safetyEval-h5/**",
|
||||||
"/**/images/**",
|
"/**/images/**",
|
||||||
"/**/file/**",
|
"/**/file/**",
|
||||||
"/**/tree/**"
|
"/**/tree/**"
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInterceptors(InterceptorRegistry registry) {
|
public void addInterceptors(InterceptorRegistry registry) {
|
||||||
registry.addInterceptor(new HandlerInterceptor() {
|
registry.addInterceptor(new HandlerInterceptor() {
|
||||||
|
|
@ -46,9 +45,6 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
log.info("url: {}", request.getRequestURI());
|
log.info("url: {}", request.getRequestURI());
|
||||||
if (isWhiteUrl(request.getRequestURI())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
AuthUserInfo currentUser = AuthUserContextAdapter.getCurrentUser();
|
AuthUserInfo currentUser = AuthUserContextAdapter.getCurrentUser();
|
||||||
if (currentUser == null || currentUser.getUserId() == null) {
|
if (currentUser == null || currentUser.getUserId() == null) {
|
||||||
throw new BizException(ErrorCode.GBS_USER_ERROR);
|
throw new BizException(ErrorCode.GBS_USER_ERROR);
|
||||||
|
|
@ -75,25 +71,8 @@ public class GbsUserSyncInterceptor implements WebMvcConfigurer {
|
||||||
Object handler, Exception exception) {
|
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.setAccount(result.getAccount());
|
||||||
userAddCmd.setTenantId(result.getTenantId());
|
userAddCmd.setTenantId(result.getTenantId());
|
||||||
userAddCmd.setName(result.getUserName());
|
userAddCmd.setName(result.getUserName());
|
||||||
|
// userAddCmd.setMobile(result.getPhone());
|
||||||
String pas = defPassword;
|
String pas = defPassword;
|
||||||
if (StringUtils.isNotBlank(result.getPassword())) {
|
if (StringUtils.isNotBlank(result.getPassword())) {
|
||||||
pas = result.getPassword();
|
pas = result.getPassword();
|
||||||
|
|
@ -134,7 +135,8 @@ public class AccountExecutor implements AccountApi {
|
||||||
// 回滚数据, 清除account表示数据,orgInfo数据
|
// 回滚数据, 清除account表示数据,orgInfo数据
|
||||||
orgInfoMapper.delete(new LambdaQueryWrapper<OrgInfoDO>()
|
orgInfoMapper.delete(new LambdaQueryWrapper<OrgInfoDO>()
|
||||||
.eq(OrgInfoDO::getCreateId, result.getId()));
|
.eq(OrgInfoDO::getCreateId, result.getId()));
|
||||||
|
accountDomainService.delete(result.getId());
|
||||||
|
log.error("同步用户失败: {}", e.getMessage());
|
||||||
throw new BizException(ErrorCode.GBS_USER_SYNC_ERROR);
|
throw new BizException(ErrorCode.GBS_USER_SYNC_ERROR);
|
||||||
}
|
}
|
||||||
return SingleResponse.success(toCO(result));
|
return SingleResponse.success(toCO(result));
|
||||||
|
|
|
||||||
|
|
@ -58,14 +58,27 @@ public class OrgDepartmentExecutor implements OrgDepartmentApi {
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<OrgDepartmentCO> modify(OrgDepartmentModifyCmd cmd) {
|
public SingleResponse<OrgDepartmentCO> modify(OrgDepartmentModifyCmd cmd) {
|
||||||
OrgDepartmentEntity entity = new OrgDepartmentEntity();
|
OrgDepartmentEntity entity = new OrgDepartmentEntity();
|
||||||
entity.setId(cmd.getId() != null ? Long.parseLong(cmd.getId()) : null);
|
if (cmd.getId() != null) {
|
||||||
entity.setParentId(cmd.getParentId() != null ? Long.parseLong(cmd.getParentId()) : null);
|
entity.setId(Long.parseLong(cmd.getId()));
|
||||||
entity.setDeptName(cmd.getDeptName());
|
}
|
||||||
entity.setManagerName(cmd.getManagerName());
|
if (entity.getParentId() != null) {
|
||||||
entity.setManagerAccount(cmd.getManagerAccount());
|
entity.setParentId(Long.parseLong(cmd.getParentId()));
|
||||||
entity.setDeptLevelCode(cmd.getDeptLevelCode());
|
}
|
||||||
entity.setDeptLevelName(cmd.getDeptLevelName());
|
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);
|
OrgDepartmentEntity result = orgDepartmentDomainService.modify(entity);
|
||||||
return SingleResponse.success(toCO(result));
|
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.dataobject.QualFilingChangeCountDO;
|
||||||
import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeMapper;
|
import org.qinan.safetyeval.infrastructure.mapper.QualFilingChangeMapper;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
@ -85,6 +86,8 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private QualFilingChangeDetailGateway qualFilingChangeDetailGateway;
|
private QualFilingChangeDetailGateway qualFilingChangeDetailGateway;
|
||||||
|
@Value("${def.reviewEnable:false}")
|
||||||
|
private Boolean reviewEnable;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<QualFilingChangeCO> add(QualFilingChangeAddCmd cmd) {
|
public SingleResponse<QualFilingChangeCO> add(QualFilingChangeAddCmd cmd) {
|
||||||
|
|
@ -306,14 +309,16 @@ public class QualFilingChangeExecutor implements QualFilingChangeApi {
|
||||||
, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities);
|
, equipmentEntities, materialEntities, personnelEntities, personnelCertEntities);
|
||||||
|
|
||||||
// 合规性校验:只要有一项未通过则抛出异常
|
// 合规性校验:只要有一项未通过则抛出异常
|
||||||
List<QualFilingChangeComplianceCheckResultCO> complianceResults = qualFilingOrchestrator.complianceCheckChange(id);
|
if (reviewEnable) {
|
||||||
List<String> failedItems = complianceResults.stream()
|
List<QualFilingChangeComplianceCheckResultCO> complianceResults = qualFilingOrchestrator.complianceCheckChange(id);
|
||||||
.filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus()))
|
List<String> failedItems = complianceResults.stream()
|
||||||
.map(QualFilingChangeComplianceCheckResultCO::getTitle)
|
.filter(r -> QualFilingComplianceCheckEnum.STATUS_FAIL.equals(r.getStatus()))
|
||||||
.collect(Collectors.toList());
|
.map(QualFilingChangeComplianceCheckResultCO::getTitle)
|
||||||
if (!failedItems.isEmpty()) {
|
.collect(Collectors.toList());
|
||||||
throw new BizException(ErrorCode.QUAL_FILING_COMPLIANCE_CHECK_FAIL,
|
if (!failedItems.isEmpty()) {
|
||||||
"合规性校验未通过:" + String.join("、", failedItems));
|
throw new BizException(ErrorCode.QUAL_FILING_COMPLIANCE_CHECK_FAIL,
|
||||||
|
"合规性校验未通过:" + String.join("、", failedItems));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QualFilingChangeCO co = new QualFilingChangeCO();
|
QualFilingChangeCO co = new QualFilingChangeCO();
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import org.qinan.safetyeval.infrastructure.dataobject.*;
|
||||||
import org.qinan.safetyeval.infrastructure.mapper.*;
|
import org.qinan.safetyeval.infrastructure.mapper.*;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ public class OrgDepartmentGatewayImpl implements OrgDepartmentGateway {
|
||||||
private OrgDepartmentDO toDO(OrgDepartmentEntity entity) {
|
private OrgDepartmentDO toDO(OrgDepartmentEntity entity) {
|
||||||
OrgDepartmentDO dataObject = new OrgDepartmentDO();
|
OrgDepartmentDO dataObject = new OrgDepartmentDO();
|
||||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||||
dataObject.setParentId(entity.getParentId() != null ? entity.getParentId() : 0L);
|
dataObject.setParentId(entity.getParentId());
|
||||||
dataObject.setDeptName(entity.getDeptName());
|
dataObject.setDeptName(entity.getDeptName());
|
||||||
dataObject.setManagerName(entity.getManagerName());
|
dataObject.setManagerName(entity.getManagerName());
|
||||||
dataObject.setManagerAccount(entity.getManagerAccount());
|
dataObject.setManagerAccount(entity.getManagerAccount());
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ public final class InsertFieldDefaults {
|
||||||
}
|
}
|
||||||
Long tenantId = AuthUserContextAdapter.getCurrentTenantId();
|
Long tenantId = AuthUserContextAdapter.getCurrentTenantId();
|
||||||
if (tenantId == null) {
|
if (tenantId == null) {
|
||||||
tenantId = 2069596397920849920L;
|
tenantId = 2067161116369793024L;
|
||||||
}
|
}
|
||||||
setIfNull(dataObject, "createId", userId);
|
setIfNull(dataObject, "createId", userId);
|
||||||
setIfNull(dataObject, "updateId", userId);
|
setIfNull(dataObject, "updateId", userId);
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,7 @@ safety-eval:
|
||||||
- /swagger-ui
|
- /swagger-ui
|
||||||
- /swagger-resources
|
- /swagger-resources
|
||||||
- /webjars
|
- /webjars
|
||||||
|
- /safetyEval-h5
|
||||||
- /images
|
- /images
|
||||||
- /public/org-personnel
|
- /public/org-personnel
|
||||||
- /test
|
- /test
|
||||||
|
|
@ -165,3 +166,7 @@ safety-eval:
|
||||||
attachment:
|
attachment:
|
||||||
default-url: https://s1.aigei.com/prevfiles/6f2754563be2491bad7c957904cd7d2a.jpg?e=2051020800&token=P7S2Xpzfz11vAkASLTkfHN7Fw-oOZBecqeJaxypL:CR60zg7VKDp-jUWyYls_rdvyQMM=
|
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
|
app-key: cbbfef15159e4578928dad804eb46dad
|
||||||
client:
|
client:
|
||||||
gateway:
|
gateway:
|
||||||
|
ignore-urls:
|
||||||
|
- /safetyEval-h5/**
|
||||||
|
- /safetyEval-h5/Container/**
|
||||||
url: ${common.gateway.network.http.external}
|
url: ${common.gateway.network.http.external}
|
||||||
route:
|
route:
|
||||||
- client:
|
- client:
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@ sdk:
|
||||||
app-key: cbbfef15159e4578928dad804eb46dad
|
app-key: cbbfef15159e4578928dad804eb46dad
|
||||||
client:
|
client:
|
||||||
gateway:
|
gateway:
|
||||||
|
ignore-urls:
|
||||||
|
- /safetyEval-h5/**
|
||||||
|
- /safetyEval-h5/Container/**
|
||||||
url: ${common.gateway.network.http.external}
|
url: ${common.gateway.network.http.external}
|
||||||
route:
|
route:
|
||||||
- client:
|
- 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 = {
|
const APP_ENV = {
|
||||||
antd: {
|
antd: {
|
||||||
'ant-prefix': 'micro-temp',
|
'ant-prefix': 'micro-temp',
|
||||||
|
|
@ -10,7 +10,14 @@
|
||||||
basename: 'safetyEval-h5',
|
basename: 'safetyEval-h5',
|
||||||
API_HOST: 'https://gbs-gateway.qhdsafety.com'
|
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 = {
|
window.process = {
|
||||||
env: { app: APP_ENV },
|
env: { app: APP_ENV },
|
||||||
NODE_ENV: 'production'
|
NODE_ENV: 'production'
|
||||||
|
|
@ -34,10 +41,27 @@
|
||||||
}, 500);
|
}, 500);
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 全局接口错误:success === false 时自动返回基座 */
|
/** 全局 HTTP 拦截器 */
|
||||||
window.jjbCommonGlobalConfig = {
|
window.jjbCommonGlobalConfig = {
|
||||||
httpInterceptor: {
|
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) {
|
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));
|
var data = res && (res.data || (res.response && res.response.data));
|
||||||
if (data && data.success === false) {
|
if (data && data.success === false) {
|
||||||
window.backToBase();
|
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 {
|
.driver-container .driver-container-content {
|
||||||
height: 100%;
|
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 {
|
.map_content_bottom_utils_container .bottom_utils {
|
||||||
width: 1000px;
|
width: 1000px;
|
||||||
|
|
@ -4277,6 +4298,176 @@
|
||||||
pointer-events: auto;
|
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 {
|
.supervision-dashboard-page {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
background: #f4f4f4;
|
background: #f4f4f4;
|
||||||
|
|
@ -6246,6 +6437,22 @@
|
||||||
width: 540px;
|
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 */
|
/* stylelint-disable */
|
||||||
html,
|
html,
|
||||||
body {
|
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"
|
||||||
|
}
|
||||||
|
}
|
||||||