登录
首页 >  文章 >  前端

多物质毒化分析报告生成方法解析

时间:2026-03-20 14:36:30 489浏览 收藏

本文详解了一种基于 Laravel 前端的轻量级、高可靠性多物质毒化分析报告动态生成方案:通过原生 JavaScript 实时监听复选框与文本域输入,精准绑定每种选中物质(如可卡因、快克)与其对应的活性成分含量、克重、单次剂量等参数,自动拼接出符合司法文书规范的结构化语句,并支持逐条追加、换行分隔;方案规避了常见空值报错与事件遗漏风险,兼容粘贴/自动填充等操作,无需额外依赖库,开箱即用且天然适配 Laravel 表单提交流程——让执法一线人员在填写毒品案件信息时,所见即所得地生成严谨、专业、可直接归档的法律文书。

如何动态生成多物质毒化分析报告(含复选框与实时文本域数据采集)

本文介绍在 Laravel 前端中,如何通过 JavaScript 实时监听复选框选择与多个

在构建执法或司法类表单系统(如毒品案件信息采集)时,常需将用户勾选的物质类型与对应检测参数(如 THC 含量、克重、单次剂量)实时组合为标准化法律文书语句。本教程提供一套轻量、可靠且可扩展的前端实现方案,无需依赖框架库,兼容原生 JS 与 Laravel 视图结构。

核心逻辑:分离数据采集与报告生成

原始代码中 collectSostanze() 已能正确获取已勾选物质,但存在两个关键问题:

  1. 未关联物质与文本域数据:每个物质应有独立的 psicoattivo/grammi/dosi 值,而非全局共用;
  2. 未实现多物质报告拼接:需为每个选中物质生成一条独立语句,并追加至目标

Ricostruzione del Fatto

// 1. 获取 DOM 元素
const form = document.drugReportForm;
const checkboxes = form.querySelectorAll('.sostanzeCheck');
const reportArea = form.report;

// 2. 监听所有 textarea 的实时输入(比 keyup 更准确,覆盖粘贴、剪切等)
form.addEventListener('input', function(e) {
  if (!['psicoattivo', 'grammi', 'dosi'].includes(e.target.name)) return;

  // 3. 获取当前选中的物质列表
  const selected = Array.from(checkboxes)
    .filter(cb => cb.checked)
    .map(cb => cb.value);

  // 4. 生成每条物质的报告语句(模板字符串 + 安全转义)
  const reports = selected.map(substance => {
    const psico = (form.psicoattivo?.value || '').trim();
    const grammi = (form.grammi?.value || '').trim();
    const dosi = (form.dosi?.value || '').trim();

    // 防空值:若任一字段为空,显示占位符(可按需调整)
    return `I successivi accertamenti tossico-chimici evidenziavano che si trattava di "${substance}" con una percentuale media di THC pari al "${psico || 'N/D'}%" e il "${psico || 'N/D'}%" per complessi "${grammi || 'N/D'}" grammi sequestrati da cui era possibile ricavare circa "${dosi || 'N/D'}" dosi medie singole.`;
  });

  // 5. 合并为完整报告(换行分隔)
  reportArea.value = reports.length 
    ? reports.join('\n\n') 
    : 'Seleziona almeno una sostanza e compila i campi analitici.';
});

// 6. (可选)初始化:首次加载时触发一次,确保初始状态同步
form.dispatchEvent(new Event('input', { bubbles: true }));

⚠️ 关键注意事项