更新记录
1.0.0(2026-11-12)
首个版本:仪器证书逐测量日覆盖并与前后校准独立判定;多岗位多日按声能计算 LEX,8h、周 LEX,40h 和剂量;输出工序/同工种贡献与透明排序指数;未测工时、不完整周、完整标志冲突及同工种人数冲突停用结果,人数不重复汇总;整改关闭强制同岗位复测与证据,残余达到或超过 85 dBA 必须重开;单文件审计 CSV。Node 22 实跑 280 项断言全部通过,通用 preflight 10 个发布文件全部通过。HBuilderX launch --compile true 真编译通过,index.kt 1486 行并含核心符号;Android 真机未执行(ADB 无设备);H5 真实渲染截图 3 张已生成并检查。
平台兼容性
uni-app
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | × | × | √ | × | √ | × | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × | × |
噪声暴露与整改复测
给 EHS、职业卫生与车间整改负责人 的离线记录计算插件:输入带有仪器证书和测量前后校准记录的岗位分段 LAeq,计算日 LEX,8h、周 LEX,40h、剂量、主导工序与同工种贡献,并管理「责任人 → 期限 → 同岗位复测 → 允许关闭」的整改闭环。
核心不是把免费网页上的日/周公式再包装一次,而是保留仪器证据、分段测量、未测工时、整改责任与复测证据链。插件不采集麦克风、不申请录音权限、不充当声级计、不出具职业卫生合规证书。
功能边界
- 仪器证据:证书编号与有效期、测前/测后校准分别判定;证书必须覆盖 asOfDate 和每一个工作测量日,过期、未覆盖、缺记录或超过允差均标记证据无效。
- 多岗位多日:每个工作日可包含多个
{ task, laEq, hours }分段,按能量汇总,不做 dBA 算术平均。 - 日/周暴露:输出 LEX,8h、周 LEX,40h、日/周剂量以及 80/85 dBA 管理提示。
- 贡献与排序:按工序累计能量与占比,指出主导工序;按 workerGroup 汇总同工种。
priorityIndex=周剂量×接触人数仅用于排序,不是法规风险分。 - 数据门禁:未测工时、不完整周、非法日期、重复 ID、非法分段会标记 invalid/incomplete,相应日或周值不可用,绝不把缺测静默按 0。
- 整改闭环:每项整改有责任人、期限和 OPEN/DONE/CLOSED 状态。CLOSED 必须有同岗位、原测量日之后的复测值、复测日期和证据;复测达到或超过 85 dBA 时仍须继续整改。
- 审计 CSV:一个文件包含仪器证据、日暴露和整改复测三区,UTF-8 单 BOM,默认写 Android 应用外部私有目录。
计算公式
单段声能 Eᵢ = hoursᵢ × 10^(LAeqᵢ/10)
日能量 E = ΣEᵢ
LEX,8h = 10 × log10(E/8)
周 LEX,40h = 10 × log10(Σ工作日E/40)
日剂量(%) = E / (8 × 10^8.5) × 100
周剂量(%) = Σ工作日E / (40 × 10^8.5) × 100
剂量参考为 85 dBA × 8 h = 100%;周剂量用 40 小时作分母。示例:90 dBA 持续 8 小时,LEX,8h=90 dBA,日剂量=316.256%;4 h 的 94 dBA 加 4 h 的 90 dBA,LEX,8h=92.445 dBA,而不是算术平均 92 dBA。
offDuty=true 只表示明确的非工作日,能量为 0、LEX,8h 不可用;非工作日若仍带测量分段则判无效。工作日分段合计不足 8 小时判 incomplete;合计超过 24 小时判 invalid。同一岗位所有工作日的 weekComplete 必须一致:全部 true 且记录有效时才输出周值,全部 false 为 incomplete,true/false 混用(包括字段缺失后的 false)为 invalid;休息日不参与该一致性判断。只有休息日、没有工作日也不能形成完整暴露周。
80/85 dBA 是界面管理提示:BELOW_80、BETWEEN_80_85、OVER_85。它们不替代适用法规、测量规范或职业卫生专业判断。
快速接入
import { noisePlan, noiseExport, noiseVersion } from '@/uni_modules/szhzy-noise-exposure'
const options = {
asOfDate: '2026-11-11',
instrument: {
serial: 'SLM-2026-017', certificateNo: 'CAL-2026-0318',
validUntil: '2027-03-18', referenceDb: 94,
preCalDb: 93.8, postCalDb: 94.1, toleranceDb: 0.3
},
jobs: [{
jobId: 'JOB-PRESS', workerGroup: '冲压工', contactCount: 12,
daily: [{
dayId: 'D1', date: '2026-11-02', offDuty: false, weekComplete: true,
segments: [
{ task: '冲压主机', laEq: 94, hours: 4 },
{ task: '首件检验', laEq: 88, hours: 4 }
]
}]
}],
actions: [{
actionId: 'ACT-01', jobId: 'JOB-PRESS', measureDayId: 'D1',
owner: '设备主管', dueDate: '2026-11-20', status: 'CLOSED',
recheckDate: '2026-11-10', recheckLex8: 83.7,
evidence: '同岗位复测记录 RC-01'
}]
}
const result = noisePlan(options)
// result.jobs[0].daily[0].lex8 = 91.963
// result.actions[0].changeDb = -8.263,closureValid = true
const exported = noiseExport(options)
const version = noiseVersion()
周结果需要完整周记录;上面单日接入例只用于说明字段,实际周计算应提供该岗位完整周的日记录。Android 真机需使用包含本插件的自定义基座,标准基座不含三方 UTS 插件。
API
| 函数 | 返回 |
|---|---|
noisePlan(options) |
仪器证据、岗位日/周暴露、贡献、同工种、整改复测与问题清单 |
noiseExport(options) |
计算并导出 噪声暴露整改审计.csv,返回路径与字节数 |
noiseVersion() |
版本字符串,当前为 1.0.0 |
计算与导出统一返回 { ok, code, message, ... }。ok=true 表示输入已被处理,不等于证据有效或职业卫生合规;应同时检查 status、validForAssessment、evidence 和整改字段。基准日期非法或没有岗位时 ok=false。不可用的公开数值字段返回 null。
顶层与仪器字段
| 字段 | 约束 |
|---|---|
asOfDate |
必填,严格 YYYY-MM-DD;核心层不读设备时钟 |
instrument.serial / certificateNo |
必填,仪器和校准证书身份 |
instrument.validUntil |
必填,证书有效期;早于 asOfDate 为 EXPIRED,任一工作测量日晚于有效期为 EXPIRED_ON_MEASURE_DATE |
referenceDb |
校准参考值,0–200 dB |
preCalDb / postCalDb |
测量前后校准读数,0–200 dB |
toleranceDb |
允差,大于 0 且不超过 5 dB;前后读数分别与参考值比较 |
dir |
仅 noiseExport 使用;缺省为应用外部私有目录 |
岗位、日记录与分段
| 字段 | 约束 |
|---|---|
job.jobId |
岗位唯一 ID,不可重复 |
job.workerGroup |
同工种分组名称 |
job.contactCount |
接触人数,1–1000000 的整数;同一 workerGroup 各岗位必须填同一组总人数,汇总只计一次,冲突为 invalid |
job.daily |
每岗位 1–31 条日记录 |
daily.dayId |
岗位内唯一 ID |
daily.date |
严格 YYYY-MM-DD |
daily.offDuty |
true 为显式非工作日,此时 segments 必须为空 |
daily.weekComplete |
本周是否完整;同岗位所有工作日必须一致,全 false 为 incomplete,混用为 invalid,休息日忽略 |
segments.task |
工序名称,用于能量贡献和主导工序 |
segments.laEq |
分段等效声级,0–140 dBA |
segments.hours |
分段小时,大于 0;日合计 8–24 小时才可输出日值 |
整改字段与关闭规则
| 字段 | 约束 |
|---|---|
actionId |
全局唯一整改 ID |
jobId / measureDayId |
必须关联已提供岗位及其原测量日记录 |
owner / dueDate |
责任人和期限均必填 |
status |
OPEN / DONE / CLOSED |
recheckDate |
同岗位复测日期,不早于原测量日且不晚于 asOfDate |
recheckLex8 |
复测 LEX,8h,0–140 dBA |
evidence |
复测记录或附件引用;CLOSED 时必填 |
只有 CLOSED 且关联有效、复测有效、证据非空、复测值低于 85 dBA 时,closureValid=true。否则 effectiveStatus=REOPEN。输出 originalLex8、recheckLex8、changeDb=复测−原值、residualOver85、overdueDays 与 issueCode。无效关闭即使登记为 CLOSED,也继续计入待整改和逾期判断。
主要输出
evidence:certificateStatus、preCalStatus、postCalStatus、前后偏差、measurementDayCount、uncoveredDate、valid。jobs[].daily[]:能量、记录工时、LEX,8h、日剂量、状态、80/85 提示、主导工序。jobs[]:周能量、LEX,40h、周剂量、排序指数、周状态、工序贡献数组。groups[]:同工种人数、能量占比、LEX,40h、周剂量和排序指数。actions[]:整改执行状态、复测前后变化、残余超限、关闭有效性与逾期。issues[]:数据问题码、级别、对象与说明。
工程与隐私
core.uts是纯逻辑层:无平台 import、无异常语句、无正则、无可选链,不读时钟、文件或网络。- Android 公开层只负责 UTSJSONObject 与嵌套数组转换;文件层只负责 CSV 落盘。
- 无三方依赖,不申请系统权限,不采集麦克风,不采集、上传或记录业务数据。
- 演示工程 Android 走真实插件;H5 仅展示由同一核心层预计算的 JSON,明确标注「示例数据 / H5 预览」,不代表插件支持 Web。
验证状态
- Node 22 核心与公开 API 回归:280 项通过,0 项失败;含 94/93/90/80/85 手算、能量归一、跨日周、贡献、缺测/休息日、基准日有效但测量日过期、同工种人数冲突与不完整组汇总、重复 ID、非法日期、关闭门禁、残余超限与 CSV 转义。
- 通用发布前校验:10 个发布文件全部通过(清单、价格、编码、权限、零依赖与敏感信息)。
- UTS→Kotlin 真编译:已执行;
cli launch app-android --compile true编译成功,index.kt1486 行,含noiseOf/noiseAuditCsv与测量日证书门禁符号。 - Android 真机与设备端 CSV:未执行(ADB 无在线设备),不声称真机通过。
- 市场截图:3 张 H5 真实渲染图,分别呈现仪器证据、岗位暴露/贡献、整改复测;已检查内容差异与页面完整性,不代表插件支持 Web。
- 插件市场发布:本版本在门禁通过后提交,最终状态以公开页与交付发布清单为准。
购买前必读
仅支持 Android,最低 Android 6.0(minSdkVersion 23)。iOS、鸿蒙、小程序和 Web 均未实现。输入必须来自适用的测量仪器和真实记录;本插件不校验测量方案是否满足法规,不替代具备相应能力的职业卫生人员,不输出合规证书。请先用本厂仪器记录和整改流程完成验收。

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 13
赞赏 0
下载 12758856
赞赏 1959
赞赏
京公网安备:11010802035340号