XX工程检测系统批量获取检测数据

1、用 Edge 打开检测系统,进「校核报告」列表页;
2、按 F12 → 切到 Console(控制台);
3、首次粘贴若提示 “Allow pasting”,先在控制台输入 allow pasting 回车(浏览器安全限制,非系统问题);
4、打开 校核报告_数据提取脚本.js 全选复制 → 粘进控制台 → 回车。
页面会自动下载 校核报告数据_日期.csv,Excel 双击即可打开,中文不乱码。

脚本干了什么(原理)
从列表帧取 dwList → 拿到每份报告的报告号 + 主键;
用系统自带的 top.DataWindow,按主键逐份拉三张原始记录表:
TL01 拉伸(屈服/破坏荷载、标距、断裂后距离、伸长率)
TL03 重量偏差(实测总重量、5 根长度、总长、偏差)
TL21 反向弯曲(人工时效 6 项:环境温度/时间/开始时间/烘箱温度/加热结束/冷却结束)
汇总成 29 列 CSV 并自动下载。
只读、不改任何数据,可放心反复运行。想加字段(如抗拉强度、强屈比)在脚本里照抄一列即可,手册第四节有写法。

小提醒:若某栏空白,是那份报告对应参数还没录入,属正常,不是脚本问题。

附校核报告_数据提取脚本.js
`function () {
var FRAME_ID = 'tab_reportcheck5_iframe';
var fr = document.getElementById(FRAME_ID);
if (!fr) { console.warn('未找到报告列表 iframe,请确认当前在「校核报告」列表页。'); return; }
var recs = (fr.contentWindow.dwList && fr.contentWindow.dwList.d && fr.contentWindow.dwList.d.records) || [];
if (!recs.length) { console.warn('列表为空,未取到报告。'); return; }

if (!document.getElementById('rptProbeForm')) {
var f = document.createElement('form'); f.id = 'rptProbeForm'; f.style.display = 'none'; document.body.appendChild(f);
var d = document.createElement('div'); d.id = 'rptProbeHost'; d.style.display = 'none'; document.body.appendChild(d);
}

function fetchRow(tbl, key) {
try {
var dw = new top.DataWindow({ instanceName: 'rpt_' + tbl + '_' + key, dataobject: 'rptProbeForm', retrieveArgument: ['sysprimarykey'], primarykey: 'sysprimarykey', tableName: tbl, datawindowstyle: 'form', resultDivId: 'rptProbeHost', tableId: 'rptProbeHost', reportCode: 'testDataInputList', codeTableName: tbl, readOnly: true, WD: document });
dw.retrieve(key);
return (dw.primaryBuffer && dw.primaryBuffer[0]) ? dw.primaryBuffer[0] : {};
} catch (e) { console.warn(tbl + ' 取数失败:', e); return {}; }
}
var g = function (o, k) { return (o && o[k] != null) ? o[k] : ''; };

var headers = ['序号', '报告编号', '样品编号', '委托编号', '规格',
'屈服荷载1(kN)', '屈服荷载2(kN)', '破坏荷载1(kN)', '破坏荷载2(kN)',
'试验前同标记间距离1(mm)', '试验前同标记间距离2(mm)', '断裂后距离1(mm)', '断裂后距离2(mm)',
'断后伸长率1(%)', '断后伸长率2(%)',
'时效-环境温度(℃)', '时效-时间(min)', '时效-开始时间', '时效-烘箱温度(℃)', '时效-加热结束', '时效-冷却结束',
'实测总重量(g)', '试样长度1(mm)', '试样长度2(mm)', '试样长度3(mm)', '试样长度4(mm)', '试样长度5(mm)',
'试样总长度(mm)', '重量偏差(%)'];

var rows = [];
for (var i = 0; i < recs.length; i++) {
var r = recs[i], key = r.sysprimarykey;
var T = fetchRow('TL022701', key);
var W = fetchRow('TL022703', key);
var B = fetchRow('TLGJCC21', key);
rows.push([i + 1, g(r, 'reportnum'), g(r, 'samplenum'), g(r, 'entrustnum'), g(r, 'sizes'),
g(T, 'qfyl1'), g(T, 'qfyl2'), g(T, 'jxyl1'), g(T, 'jxyl2'),
g(T, 'lo1'), g(T, 'lo2'), g(T, 'lm1'), g(T, 'lm2'), g(T, 'agt1'), g(T, 'agt2'),
g(B, 'sxwd'), g(B, 'sxsj'), g(B, 't0'), g(B, 'hxwd'), g(B, 't1'), g(B, 't2'),
g(W, 'zgjsg'), g(W, 'gjsycd1'), g(W, 'gjsycd2'), g(W, 'gjsycd3'), g(W, 'gjsycd4'), g(W, 'gjsycd5'),
g(W, 'zjgcd'), g(W, 'gjzlpc')]);
}

function cell(v) { v = (v == null ? '' : String(v)); return /[",\n]/.test(v) ? '"' + v.replace(/"/g, '""') + '"' : v; }
var lines = [headers.map(cell).join(',')];
for (var j = 0; j < rows.length; j++) lines.push(rows[j].map(cell).join(','));
var csv = '\ufeff' + lines.join('\r\n');

try {
var objs = rows.map(function (a) { var o = {}; headers.forEach(function (h, k) { o[h] = a[k]; }); return o; });
console.table(objs);
} catch (e) { }

try {
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8' });
var a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = '校核报告数据_' + new Date().toISOString().slice(0, 10) + '.csv';
document.body.appendChild(a); a.click(); document.body.removeChild(a);
console.log('已导出 ' + rows.length + ' 份报告,CSV 已下载。');
} catch (e) {
console.log('自动下载被拦截,请手动复制下方内容:\n' + csv);
}
window.__rptCsv = csv;
return csv;
})();
`

posted @ 2026-10-29 13:58  九煜  阅读(1)  评论(0)    收藏  举报