风险预警中心

v0.0.1-final^2
huwei 2026-07-17 14:18:53 +08:00
parent fa06453072
commit 1042adfc6f
13 changed files with 1422 additions and 130 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,168 @@
# 安全评价系统二期数据库设计文档
| 日期 | 版本 | 说明 |
|------|------|------|
| 2026.07.17 | v1.0.0 | 二期建表设计 |
脚本:`docs/db/phase2/init-phase2.sql`
节点引擎专项:`docs/db/phase2/节点引擎设计与使用说明.md`
---
## 一、设计约定
| 项 | 约定 |
|----|------|
| 字符集 | utf8mb4 / utf8mb4_0900_ai_ci |
| 命名 | 库表字段小写 + 下划线,表名 ≤32 字符 |
| 外键 | 禁止物理外键;逻辑关联由业务层维护 |
| 标识字段 | `xxx_flag`tinyint1=是2=否) |
| 字典字段 | `xxx_code` + `xxx_name` |
| 金额 | 单位:分,类型 bigint |
| 文件 | 仅存 URL / 文件服务地址 |
| 逻辑删除 | `delete_enum``true` / `false` |
| 业务主表公共字段 | delete_enum、remarks、create_name、update_name、tenant_id、org_id、version、create_time、update_time、create_id、update_id、env |
| 站内消息 | 复用 GBS `jjb-saas-message`(站内信 / 待办 / 催办 / 短信),本库不建消息表 |
本脚本仅新增二期表,不改建一期已有表与业务代码。
---
## 二、一期复用表
| 表 | 用途 |
|----|------|
| org_info | 机构主数据 |
| org_qualification | 资质证照 |
| org_department / org_position | 部门岗位 |
| org_personnel / org_personnel_cert | 人员与证书 |
| org_equipment | 装备 |
| org_personnel_change / org_resign_apply | 人员变更、离职 |
| qual_filing 及材料/承诺/人员/装备/变更子表 | 资质申请、备案、变更 |
| qual_filing_expert | 专家库 |
| account | 账号 |
---
## 三、二期新建表30
| 序号 | 表名 | 域 | 作用 |
|------|------|----|------|
| 1 | qual_review_task | 资质审核 | 多阶段审核任务 |
| 2 | qual_review_action | 资质审核 | 审核/确认/反馈动作流水 |
| 3 | qual_review_expert_assign | 资质审核 | 专家指派与核验 |
| 4 | qual_site_review_notice | 资质审核 | 现场审查通知(含机构确认与反馈) |
| 5 | qual_publicity | 资质审核 | 备案公示 |
| 6 | biz_rule | 规则 | 资质保持 / 风险预警规则domain_code 区分) |
| 7 | qual_keep_check | 资质保持 | 机构维度校验结果头 |
| 8 | qual_keep_check_item | 资质保持 | 分项结论与来源快照 |
| 9 | risk_warning | 风险预警 | 预警主单 |
| 10 | risk_warning_action | 风险预警 | 处置流水 |
| 11 | eval_customer | 安评业务 | 安评客户 |
| 12 | eval_project | 安评业务 | 安评项目主表 |
| 13 | eval_project_member | 安评业务 | 项目成员 |
| 14 | eval_project_doc | 安评业务 | 项目资料协同 |
| 15 | eval_project_doc_ver | 安评业务 | 资料版本 |
| 16 | eval_node_def | 节点引擎 | 节点定义(可配置增删) |
| 17 | eval_node_inst | 节点引擎 | 项目节点实例 |
| 18 | eval_node_form | 节点引擎 | 通用节点表单 |
| 19 | eval_node_form_item | 节点引擎 | 表单分项 / 参与人 |
| 20 | eval_node_file | 节点引擎 | 节点附件 |
| 21 | eval_survey | 踏勘专表 | 现场踏勘主单 |
| 22 | eval_survey_checkin | 踏勘专表 | 现场打卡(含 APP 任务状态) |
| 23 | eval_report_draft | 报告专表 | 报告编制稿 |
| 24 | eval_sign_task | 签字 | 签字任务 |
| 25 | eval_sign_record | 签字 | 签字记录 |
| 26 | eval_report | 报告库 | 报告主表 |
| 27 | eval_report_spotcheck | 报告库 | 抽查与整改复核 |
| 28 | org_profile_score | 画像 | 机构画像得分(含 metric_json |
| 29 | insp_notice | 监督检查 | 告知主单(含检查结果) |
| 30 | insp_notice_material | 监督检查 | 材料清单与反馈 |
---
## 四、逻辑关联
```
org_info
├── qual_filing ── qual_review_task ──┬── qual_review_action
│ ├── qual_review_expert_assign
│ ├── qual_site_review_notice
│ └── qual_publicity
├── biz_rule(KEEP) ── qual_keep_check ── qual_keep_check_item
├── biz_rule(WARNING) ── risk_warning ── risk_warning_action
├── eval_customer ── eval_project ──┬── eval_project_member
│ ├── eval_project_doc ── eval_project_doc_ver
│ ├── eval_node_inst ← eval_node_def
│ │ ├── eval_node_form ── item / file
│ │ ├── eval_survey ── eval_survey_checkin
│ │ ├── eval_report_draft
│ │ └── eval_sign_task ── eval_sign_record
│ └── eval_report ── eval_report_spotcheck
├── org_profile_score
└── insp_notice ── insp_notice_material
```
| 逻辑字段 | 指向 |
|----------|------|
| org_id | org_info.id |
| filing_id | qual_filing.id |
| expert_id | qual_filing_expert.id |
| customer_id | eval_customer.id |
| project_id | eval_project.id |
| node_def_id / node_code | eval_node_def |
| node_inst_id | eval_node_inst.id |
| form_id | eval_node_form.id |
| survey_id | eval_survey.id |
| warning_id / source_warning_id | risk_warning.id |
| sign_task_id | eval_sign_task.id |
| report_id | eval_report.id |
| rule_id | biz_rule.id |
| personnel_id | org_personnel.id |
| account_id | account.id |
---
## 五、业务数据流
### 5.1 资质审核与保持预警
机构填报 `qual_filing` → 生成 `qual_review_task` → 审核动作 / 专家核验 / 现场审查通知 → 公示 `qual_publicity` → 按 `biz_rule(KEEP)` 校验写入 `qual_keep_check*` → 异常生成 `risk_warning``risk_warning_action` 闭环。
### 5.2 安评项目
维护 `eval_customer` → 创建 `eval_project` 及成员、资料 → 按 `eval_node_def` 生成 `eval_node_inst` → 通用节点办理表单;踏勘 / 报告编辑 / 签字走专表 → 归档生成 `eval_report` → 抽查与画像计分。
### 5.3 监督检查
创建 `insp_notice`(可关联预警或项目)→ 机构确认与材料反馈 → 结果回写告知主表。
### 5.4 消息通知
业务状态变更后调用 GBS `MessageFacade` 发送站内信 / 待办 / 短信;本库不落消息实体。
---
## 六、状态字典
| 对象 | 字段 | 取值 |
|------|------|------|
| 审核任务 | stage_code | 1初审 2专家核验 3现场审查 4会审 5许可审批 6已办结 |
| 审核任务 | result_code | 1通过 2打回 3进行中 |
| 预警 | category_code | 1人员 2机构资质 3项目风险 4资质临期 |
| 预警 | handle_stage_code | 1未处理 2已发机构 3待复核 4已闭环 |
| 项目 | status_code | 1草稿 2进行中 3已归档 4已作废 |
| 节点实例 | node_status_code | 1未开始 2进行中 3已完成 4退回 |
| 监督检查 | status_code | 1已下发 2已确认 3已反馈 4已办结 |
默认项目节点编码见《节点引擎设计与使用说明》。
---
## 七、执行说明
```bash
mysql -u<user> -p <database> < docs/db/phase2/init-phase2.sql
```
在测试库验证后再用于正式环境;勿对一期生产表做破坏性变更。

View File

@ -3,6 +3,7 @@ package org.qinan.safetyeval.adapter.web;
import com.alibaba.fastjson2.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@ -22,31 +23,31 @@ import java.util.HashMap;
public class H5OpenController {
@ApiOperation("wps回调预览")
@GetMapping("/v3/3rd/files/{file_id}")
public JSONObject getWpsInfoByFileId(@PathVariable("file_id") String fileId) {
@GetMapping(value = "/v3/3rd/files/{file_id}", produces = MediaType.APPLICATION_JSON_VALUE)
public String getWpsInfoByFileId(@PathVariable("file_id") String fileId) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", 0);
jsonObject.put("data", new HashMap<String, Object>() {{
put("create_time", 1670218748L);
put("creator_id", "404");
put("id", "9");
put("id", fileId);
put("modifier_id", "404");
put("modify_time", 1670328304L);
put("name", "统计月报.xlsx");
put("size", 18961);
put("version", 180);
}});
return jsonObject;
return jsonObject.toJSONString();
}
@ApiOperation("wps回调下载")
@GetMapping("/v3/3rd/files/{file_id}/download")
public JSONObject getWpsDownloadByFileId(@PathVariable("file_id") String fileId) {
@GetMapping(value = "/v3/3rd/files/{file_id}/download", produces = MediaType.APPLICATION_JSON_VALUE)
public String getWpsDownloadByFileId(@PathVariable("file_id") String fileId) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", 0);
jsonObject.put("data", new HashMap<String, Object>() {{
put("url", "https://jjb-cloud.oss-cn-hangzhou.aliyuncs.com/2.docx");
}});
return jsonObject;
return jsonObject.toJSONString();
}
}

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/16 10:30:23] 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/17 11:02:52] 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/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.f98503f3c068bbb9.js"></script><link href="/safetyEval-h5/static/css/main.82ee4667fd2973b4.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/16 10:30:23] 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>
})();</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.f98503f3c068bbb9.js"></script><link href="/safetyEval-h5/static/css/main.82ee4667fd2973b4.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/17 11:02:52] App_Identifier[safetyEval-h5] Frontend_Branch[dev_1.0.1] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/16 10:30:20] 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.2 Frontend_Env[production] Build_Date[2026/7/17 11:48:56] 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/323.fd0657fd2fffbe7a.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.ab5c99a14babc2d4.js"></script><script defer="defer" src="/safetyEval/static/js/main.88ffaea5f7476e6c.js"></script><link href="/safetyEval/static/css/main.d4bcd75c2815b66b.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/16 10:30:20] 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>
}</script><script defer="defer" src="/safetyEval/static/js/323.82ddd87cde984d87.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/647.ef28d2f331caf857.js"></script><script defer="defer" src="/safetyEval/static/js/main.947340ae241ce8fb.js"></script><link href="/safetyEval/static/css/main.afb99f19e98f2011.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/17 11:48:56] App_Identifier[safetyEval] Frontend_Branch[dev_1.0.1] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -1546,92 +1546,6 @@
z-index: 10000 !important;
}
.qual-confirm-form .summary-card {
background: #fff;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 0.75rem;
}
.qual-confirm-form .summary-card-title {
font-size: 0.85rem;
font-weight: 600;
margin-bottom: 0.5rem;
}
.qual-confirm-form .summary-card-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
gap: 0.5rem;
}
.qual-confirm-form .summary-label {
font-size: 0.72rem;
color: rgba(0, 0, 0, 0.45);
}
.qual-confirm-form .summary-value {
font-size: 0.88rem;
font-weight: 500;
margin-top: 0.15rem;
}
.qual-confirm-form .analysis-card {
background: #f8fafc;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 0.75rem;
}
.qual-confirm-form .analysis-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 0.5rem;
}
.qual-confirm-form .analysis-item {
background: #fff;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.5rem;
text-align: center;
}
.qual-confirm-form .analysis-number {
font-size: 1.1rem;
font-weight: 700;
margin: 0.15rem 0;
}
.qual-confirm-form .analysis-number.green {
color: #52c41a;
}
.qual-confirm-form .analysis-warning {
margin-top: 0.5rem;
padding: 0.4rem 0.6rem;
background: #fffbeb;
border: 1px solid #fde68a;
border-radius: 6px;
font-size: 0.78rem;
color: rgba(0, 0, 0, 0.45);
}
.qual-confirm-form .opinion-card {
background: #fff;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 0.75rem;
}
.qual-confirm-form .opinion-grid {
display: grid;
gap: 0.5rem;
}
.qual-confirm-form .opinion-label {
font-size: 0.8rem;
margin-bottom: 4px;
}
.qual-confirm-form .footer-bar {
display: flex;
justify-content: flex-end;
align-items: center;
padding-top: 0.75rem;
border-top: 1px solid #d9d9d9;
gap: 0.5rem;
}
.qual-monitor .page-desc {
font-size: 0.82rem;
color: #64748b;
@ -1763,6 +1677,191 @@
font-weight: 500;
}
.risk-center .stat-grid.cols-4 {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
margin-bottom: 10px;
}
.risk-center .stat-card {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 12px;
display: flex;
justify-content: space-between;
}
.risk-center .stat-card .stat-info .stat-label {
font-size: 0.82rem;
color: #64748b;
}
.risk-center .stat-card .stat-info .stat-value {
font-size: 1.75rem;
font-weight: 700;
line-height: 1.15;
margin-top: 6px;
}
.risk-center .stat-card .stat-info .stat-value--high {
color: #dc2626;
}
.risk-center .stat-card .stat-info .stat-value--mid {
color: #d97706;
}
.risk-center .stat-card .stat-info .stat-value--ok {
color: #059669;
}
.risk-center .stat-card .stat-info .stat-hint {
font-size: 0.75rem;
color: #64748b;
margin-top: 4px;
}
.risk-center .stat-card .stat-icon {
width: 38px;
height: 38px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
flex-shrink: 0;
}
.risk-center .source-note {
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 8px 14px;
font-size: 0.82rem;
color: #64748b;
margin-bottom: 10px;
display: flex;
align-items: center;
gap: 6px;
flex-wrap: wrap;
}
.risk-center .source-note strong {
color: #1e293b;
}
.risk-center .source-pill {
display: inline-flex;
align-items: center;
gap: 2px;
padding: 2px 7px;
border-radius: 999px;
background: #f1f5f9;
color: #475569;
font-size: 0.68rem;
white-space: nowrap;
}
.risk-center .risk-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.risk-center .risk-toolbar .risk-toolbar-left .risk-toolbar-desc {
font-size: 0.85rem;
color: #64748b;
}
.risk-center .risk-toolbar .risk-toolbar-right {
display: flex;
gap: 8px;
}
.risk-center .btn-ghost {
background: transparent;
color: #64748b;
border: 1px solid #e2e8f0;
}
.risk-center .btn-ghost:hover {
background: #f1f5f9;
color: #1e293b;
}
.qual-confirm-form .summary-card {
background: #fff;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 0.75rem;
}
.qual-confirm-form .summary-card-title {
font-size: 0.85rem;
font-weight: 600;
margin-bottom: 0.5rem;
}
.qual-confirm-form .summary-card-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
gap: 0.5rem;
}
.qual-confirm-form .summary-label {
font-size: 0.72rem;
color: rgba(0, 0, 0, 0.45);
}
.qual-confirm-form .summary-value {
font-size: 0.88rem;
font-weight: 500;
margin-top: 0.15rem;
}
.qual-confirm-form .analysis-card {
background: #f8fafc;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 0.75rem;
}
.qual-confirm-form .analysis-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 0.5rem;
}
.qual-confirm-form .analysis-item {
background: #fff;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.5rem;
text-align: center;
}
.qual-confirm-form .analysis-number {
font-size: 1.1rem;
font-weight: 700;
margin: 0.15rem 0;
}
.qual-confirm-form .analysis-number.green {
color: #52c41a;
}
.qual-confirm-form .analysis-warning {
margin-top: 0.5rem;
padding: 0.4rem 0.6rem;
background: #fffbeb;
border: 1px solid #fde68a;
border-radius: 6px;
font-size: 0.78rem;
color: rgba(0, 0, 0, 0.45);
}
.qual-confirm-form .opinion-card {
background: #fff;
border: 1px solid #d9d9d9;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 0.75rem;
}
.qual-confirm-form .opinion-grid {
display: grid;
gap: 0.5rem;
}
.qual-confirm-form .opinion-label {
font-size: 0.8rem;
margin-bottom: 4px;
}
.qual-confirm-form .footer-bar {
display: flex;
justify-content: flex-end;
align-items: center;
padding-top: 0.75rem;
border-top: 1px solid #d9d9d9;
gap: 0.5rem;
}
.qual-review-form .legal-check-bar {
background: #f8fafc;
border: 1px solid #d9d9d9;
@ -1823,3 +1922,8 @@ body {
padding: 8px;
}
.pick-word-container {
height: 100%;
width: 200px;
}

View File

@ -1 +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:"https://gbs-gateway.qhdsafety.com"},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}}};
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.150"},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},resolve:{fallback:{stream:!1}}}};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -21,19 +21,17 @@
},
"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",
"@eigenpal/docx-editor-react": "^1.9.0",
"@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"
@ -45,7 +43,6 @@
"@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",