feat(hjgl): 完善图纸识别与材料管段信息管理

扩展图纸识别结果模型和保存流程,按管线及页码替换识别明细,
避免重复导入造成数据累积;同时自动补充材料编码库数据,
新增材料总览、管段长度总览及 PDF 焊口标记功能,提升识别数据
的查询、复核和后续使用效率。
This commit is contained in:
2026-07-17 14:36:32 +08:00
parent 040de31eb1
commit 7fb6b255d2
36 changed files with 2313 additions and 354 deletions
@@ -15,12 +15,14 @@
<link rel="stylesheet" crossorigin="" href="./assets/main-DSskaVYi.css">--%>
<script type="module" crossorigin src="./assets/main-BUyRx63y.js"></script>
<script type="module" crossorigin src="./assets/main-mwM84Mwh.js"></script>
<link rel="modulepreload" crossorigin href="./assets/pdf-lib-AfLQbX6n.js">
<link rel="modulepreload" crossorigin href="./assets/pdfjs-DXqArq6h.js">
<link rel="modulepreload" crossorigin href="./assets/styles-BZJ2tAi6.js">
<link rel="stylesheet" crossorigin href="./assets/styles-DNToM_5G.css">
<link rel="stylesheet" crossorigin href="./assets/main-C8AfvBIm.css">
<link rel="modulepreload" crossorigin href="./assets/styles-YQqUhjjA.js">
<link rel="stylesheet" crossorigin href="./assets/styles-DYHYQLTQ.css">
<link rel="stylesheet" crossorigin href="./assets/main-xlut82Hd.css">
<style type="text/css">
.f-grid-row.red {
@@ -36,8 +38,9 @@
<body>
<form id="form1" runat="server">
<input id="hdpdfurl" type="hidden" value="<%=URL %>"/>
<input id="hdjoinInfo" type="hidden" runat="server"/>
<input id="hdjoinInfo" type="hidden" runat="server"/>
<input id="hdworkRecord" type="hidden" runat="server"/>
<input id="annotionData" type="hidden" runat="server"/>
<input id="imgurl1" type="hidden" value="">
<input id="imgurl2"type="hidden" value="">
@@ -77,7 +77,10 @@ namespace FineUIPro.Web.HJGL.JoinMarking
ISO_ID = Request.Params["ISO_ID"];
FileId = Request.Params["FileId"];
URL = Funs.SGGLUrl + Request.Params["pdfurl"];
this.IsPDMS = "0";
//hdjoinInfo.Value = "{\r\n \"version\": \"1.0\",\r\n \"exportDate\": \"2026-07-14T08:14:00.657Z\",\r\n \"sourceFile\": \"12026071310111.pdf\",\r\n \"globalSettings\": {\r\n \"startNumber\": 1,\r\n \"increment\": 1,\r\n \"prefix\": \"\",\r\n \"suffix\": \"\",\r\n \"fontSize\": 10,\r\n \"borderStyle\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n \"annotations\": {\r\n \"1\": [\r\n {\r\n \"x\": 383.8159484863281,\r\n \"y\": 306.50694274902344,\r\n \"x2\": 333.8159484863281,\r\n \"y2\": 356.50694274902344,\r\n \"displayValue\": 1,\r\n \"label\": \"1\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n {\r\n \"x\": 424.8159484863281,\r\n \"y\": 324.50694274902344,\r\n \"x2\": 374.8159484863281,\r\n \"y2\": 374.50694274902344,\r\n \"displayValue\": 2,\r\n \"label\": \"2\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n {\r\n \"x\": 483.8159484863281,\r\n \"y\": 358.50694274902344,\r\n \"x2\": 433.8159484863281,\r\n \"y2\": 408.50694274902344,\r\n \"displayValue\": 3,\r\n \"label\": \"3\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n }\r\n ]\r\n }\r\n}";
//hdworkRecord.Value = "{\r\n \"version\": \"1.0\",\r\n \"exportDate\": \"2026-07-14T08:14:00.657Z\",\r\n \"sourceFile\": \"12026071310111.pdf\",\r\n \"globalSettings\": {\r\n \"startNumber\": 1,\r\n \"increment\": 1,\r\n \"prefix\": \"\",\r\n \"suffix\": \"\",\r\n \"fontSize\": 10,\r\n \"borderStyle\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n \"annotations\": {\r\n \"1\": [\r\n {\r\n \"x\": 383.8159484863281,\r\n \"y\": 306.50694274902344,\r\n \"x2\": 333.8159484863281,\r\n \"y2\": 356.50694274902344,\r\n \"displayValue\": 1,\r\n \"label\": \"1\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n {\r\n \"x\": 424.8159484863281,\r\n \"y\": 324.50694274902344,\r\n \"x2\": 374.8159484863281,\r\n \"y2\": 374.50694274902344,\r\n \"displayValue\": 2,\r\n \"label\": \"2\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n {\r\n \"x\": 483.8159484863281,\r\n \"y\": 358.50694274902344,\r\n \"x2\": 433.8159484863281,\r\n \"y2\": 408.50694274902344,\r\n \"displayValue\": 3,\r\n \"label\": \"3\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n }\r\n ]\r\n }\r\n}";
//annotionData.Value = "{\r\n \"version\": \"1.0\",\r\n \"exportDate\": \"2026-07-14T08:14:00.657Z\",\r\n \"sourceFile\": \"12026071310111.pdf\",\r\n \"globalSettings\": {\r\n \"startNumber\": 1,\r\n \"increment\": 1,\r\n \"prefix\": \"\",\r\n \"suffix\": \"\",\r\n \"fontSize\": 10,\r\n \"borderStyle\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n \"annotations\": {\r\n \"1\": [\r\n {\r\n \"x\": 383.8159484863281,\r\n \"y\": 306.50694274902344,\r\n \"x2\": 333.8159484863281,\r\n \"y2\": 356.50694274902344,\r\n \"displayValue\": 1,\r\n \"label\": \"1\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n {\r\n \"x\": 424.8159484863281,\r\n \"y\": 324.50694274902344,\r\n \"x2\": 374.8159484863281,\r\n \"y2\": 374.50694274902344,\r\n \"displayValue\": 2,\r\n \"label\": \"2\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n },\r\n {\r\n \"x\": 483.8159484863281,\r\n \"y\": 358.50694274902344,\r\n \"x2\": 433.8159484863281,\r\n \"y2\": 408.50694274902344,\r\n \"displayValue\": 3,\r\n \"label\": \"3\",\r\n \"style\": \"none\",\r\n \"annotationStyle\": \"circle-outline\"\r\n }\r\n ]\r\n }\r\n}";
this.IsPDMS = "0";
if (!WeldJointlist.ContainsKey(CurrUser.PersonId))
{
WeldJointlist.Add(CurrUser.PersonId, new List<Model.HJGL_WeldJoint>());
@@ -41,6 +41,15 @@ namespace FineUIPro.Web.HJGL.JoinMarking
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlInputHidden hdworkRecord;
/// <summary>
/// annotionData 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlInputHidden annotionData;
/// <summary>
/// PageManager1 控件。
/// </summary>
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
.menu-item[data-v-af288edf]:hover{background-color:#f3f4f6!important}.annotation-detail-panel[data-v-af288edf]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:16px;overflow:hidden}.panel-header[data-v-af288edf]{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#334155;color:#fff}.close-btn[data-v-af288edf]{background:transparent;border:none;color:#fff;font-size:18px;cursor:pointer;padding:0 4px;line-height:1}.close-btn[data-v-af288edf]:hover{color:#fca5a5}.detail-content[data-v-af288edf]{padding:12px}.detail-row[data-v-af288edf]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.detail-row label[data-v-af288edf]{min-width:70px;font-size:12px;color:#64748b}.detail-row.readonly[data-v-af288edf]{color:#94a3b8;font-size:12px}.detail-row.readonly span[data-v-af288edf]{color:#475569}.label-preview[data-v-af288edf]{flex:1;padding:6px 10px;background:#1e293b;color:#f1f5f9;border-radius:4px;font-family:monospace;font-size:13px;text-align:center}.detail-input[data-v-af288edf]{flex:1;padding:6px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:12px}.detail-input[data-v-af288edf]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.detail-textarea[data-v-af288edf]{flex:1;padding:6px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:12px;min-height:60px;resize:vertical;font-family:inherit}.detail-textarea[data-v-af288edf]:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.detail-divider[data-v-af288edf]{height:1px;background:#e2e8f0;margin:12px 0}.detail-actions[data-v-af288edf]{display:flex;gap:8px;margin-top:12px}.detail-actions .btn-primary[data-v-af288edf]{flex:1;padding:8px;background:#3b82f6;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px}.detail-actions .btn-primary[data-v-af288edf]:hover{background:#2563eb}.detail-actions .btn-danger[data-v-af288edf]{padding:8px 12px;background:#fee2e2;color:#dc2626;border:1px solid #fecaca;border-radius:4px;cursor:pointer;font-size:12px}.detail-actions .btn-danger[data-v-af288edf]:hover{background:#fecaca}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,229 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vue PDF Viewer</title>
<script type="module" crossorigin src="/assets/main-mwM84Mwh.js"></script>
<link rel="modulepreload" crossorigin href="/assets/pdf-lib-AfLQbX6n.js">
<link rel="modulepreload" crossorigin href="/assets/pdfjs-DXqArq6h.js">
<link rel="modulepreload" crossorigin href="/assets/styles-YQqUhjjA.js">
<link rel="stylesheet" crossorigin href="/assets/styles-DYHYQLTQ.css">
<link rel="stylesheet" crossorigin href="/assets/main-xlut82Hd.css">
</head>
<body>
<div id="app"></div>
<!-- <input id="hdpdfurl" value="https://equipmentcheck.oss-cn-beijing.aliyuncs.com/03DR-003A-12-C1R_Sht_1.PDF">
<input id="imgurl1" value="https://equipmentcheck.oss-cn-beijing.aliyuncs.com/Screenshots/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202026-01-12%20110935.png">
<input id="imgurl2" value="https://equipmentcheck.oss-cn-beijing.aliyuncs.com/Screenshots/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202026-02-08%20132814.png"> -->
<!--
<input id="annotionData" value='{
"version": "1.0",
"exportDate": "2026-07-14T09:15:11.489Z",
"sourceFile": "03DR-003A-12-C1R_Sht_1.pdf",
"globalSettings": {
"startNumber": 1,
"increment": 1,
"prefix": "",
"suffix": "",
"fontSize": 10,
"borderStyle": "none",
"annotationStyle": "circle-outline"
},
"annotations": {
"1": [
{
"x": 202,
"y": 115,
"x2": 152,
"y2": 165,
"displayValue": 1,
"label": "1",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 215,
"y": 339,
"x2": 165,
"y2": 389,
"displayValue": 2,
"label": "2",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 361,
"y": 231,
"x2": 311,
"y2": 281,
"displayValue": 3,
"label": "3",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 190,
"y": 254,
"x2": 140,
"y2": 304,
"displayValue": 4,
"label": "4",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 327,
"y": 357,
"x2": 277,
"y2": 407,
"displayValue": 5,
"label": "5",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 451,
"y": 291,
"x2": 401,
"y2": 341,
"displayValue": 6,
"label": "6",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 370,
"y": 176,
"x2": 320,
"y2": 226,
"displayValue": 7,
"label": "7",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 380,
"y": 119,
"x2": 330,
"y2": 169,
"displayValue": 8,
"label": "8",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 307,
"y": 237,
"x2": 257,
"y2": 287,
"displayValue": 9,
"label": "9",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 327,
"y": 298,
"x2": 277,
"y2": 348,
"displayValue": 10,
"label": "10",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 323,
"y": 167,
"x2": 273,
"y2": 217,
"displayValue": 11,
"label": "11",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 358,
"y": 55,
"x2": 308,
"y2": 105,
"displayValue": 12,
"label": "12",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 299,
"y": 111,
"x2": 249,
"y2": 161,
"displayValue": 13,
"label": "13",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 293,
"y": 71,
"x2": 243,
"y2": 121,
"displayValue": 14,
"label": "14",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 275,
"y": 180,
"x2": 225,
"y2": 230,
"displayValue": 15,
"label": "15",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 179,
"y": 157,
"x2": 129,
"y2": 207,
"displayValue": 16,
"label": "16",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 189,
"y": 59,
"x2": 139,
"y2": 109,
"displayValue": 17,
"label": "17",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 293,
"y": 39,
"x2": 243,
"y2": 89,
"displayValue": 18,
"label": "18",
"style": "none",
"annotationStyle": "circle-outline"
},
{
"x": 209,
"y": 72,
"x2": 159,
"y2": 122,
"displayValue": 19,
"label": "19",
"style": "none",
"annotationStyle": "circle-outline"
}
]
}
}'> -->
</body>
@@ -0,0 +1,23 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>PDF 预览</title>
<script type="module" crossorigin src="/assets/viewer-DS99NKTs.js"></script>
<link rel="modulepreload" crossorigin href="/assets/pdf-lib-AfLQbX6n.js">
<link rel="modulepreload" crossorigin href="/assets/pdfjs-DXqArq6h.js">
<link rel="modulepreload" crossorigin href="/assets/styles-YQqUhjjA.js">
<link rel="stylesheet" crossorigin href="/assets/styles-DYHYQLTQ.css">
<link rel="stylesheet" crossorigin href="/assets/viewer-BilNgxa5.css">
</head>
<body>
<div id="app"></div>
<input id="hdpdfurl" value="https://equipmentcheck.oss-cn-beijing.aliyuncs.com/03DR-003A-12-C1R_Sht_1.PDF">
<input id="imgurl1" value="https://equipmentcheck.oss-cn-beijing.aliyuncs.com/Screenshots/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202026-01-12%20110935.png">
<input id="imgurl2" value="https://equipmentcheck.oss-cn-beijing.aliyuncs.com/Screenshots/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202026-02-08%20132814.png">
<input id="orgname" value="中石化十六有限公司">
<input id="annotionData" value='[{"JOT_ID":"a1b2c3d4-1111-4000-a000-000000000001","JOT_JointNo":"GB1XX","WED_Code":"W001","JOT_Location":"1G","JOT_WeldDate":"2026-02-01","DetectionTypeCode":"RT","IsRepair":"否","IsHotProcess":"否","x":"50","y":"159.67","x2":"235","y2":"134.67","JOT_JointStatus":"正常"},{"JOT_ID":"a1b2c3d4-2222-4000-a000-000000000002","JOT_JointNo":"GB2XX","WED_Code":"W001","JOT_Location":"2G","JOT_WeldDate":"2026-02-02","DetectionTypeCode":"UT","IsRepair":"否","IsHotProcess":"是","x":"78","y":"203.67","x2":"248","y2":"159.67","JOT_JointStatus":"正常"},{"JOT_ID":"a1b2c3d4-3333-4000-a000-000000000003","JOT_JointNo":"GB3XX","WED_Code":"W002","JOT_Location":"5G","JOT_WeldDate":"2026-02-03","DetectionTypeCode":"RT","IsRepair":"是","IsHotProcess":"否","x":"67","y":"273.67","x2":"290","y2":"203.67","JOT_JointStatus":"返修"},{"JOT_ID":"a1b2c3d4-4444-4000-a000-000000000004","JOT_JointNo":"GB4XX","WED_Code":"W002","JOT_Location":"6G","JOT_WeldDate":"2026-02-03","DetectionTypeCode":"MT","IsRepair":"否","IsHotProcess":"是","x":"91","y":"346.67","x2":"302","y2":"246.67","JOT_JointStatus":"正常"},{"JOT_ID":"a1b2c3d4-5555-4000-a000-000000000005","JOT_JointNo":"GB5XX","WED_Code":"W003","JOT_Location":"1G","JOT_WeldDate":"2026-02-04","DetectionTypeCode":"RT","IsRepair":"是","IsHotProcess":"否","x":"86","y":"411.67","x2":"303","y2":"321.67","JOT_JointStatus":"返修"},{"JOT_ID":"a1b2c3d4-6666-4000-a000-000000000006","JOT_JointNo":"GB6XX","WED_Code":"W003","JOT_Location":"2G","JOT_WeldDate":"2026-02-05","DetectionTypeCode":"UT","IsRepair":"否","IsHotProcess":"否","x":"98","y":"492.67","x2":"302","y2":"405.67","JOT_JointStatus":"正常"},{"JOT_ID":"a1b2c3d4-7777-4000-a000-000000000007","JOT_JointNo":"GB7XX","WED_Code":"W004","JOT_Location":"5G","JOT_WeldDate":"2026-02-06","DetectionTypeCode":"PT","IsRepair":"是","IsHotProcess":"是","x":"139","y":"563.67","x2":"399","y2":"415.67","JOT_JointStatus":"返修"},{"JOT_ID":"a1b2c3d4-8888-4000-a000-000000000008","JOT_JointNo":"GB8XX","WED_Code":"W004","JOT_Location":"6G","JOT_WeldDate":"2026-02-07","DetectionTypeCode":"RT","IsRepair":"否","IsHotProcess":"否","x":"195","y":"599.67","x2":"439","y2":"459.67","JOT_JointStatus":"正常"}]' >
</body>