您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
解析粘贴信息并填充到页面对应的表单字段中
// ==UserScript== // @name Auto Parse and Fill Form for Quick Quotation // @namespace http://tampermonkey.net/ // @version 0.9 // @description 解析粘贴信息并填充到页面对应的表单字段中 // @author You // @match https://issue.cpic.com.cn/ecar/view/portal/page/quotation_merge/quick_quotation.html // @grant none // @license MIT // ==/UserScript== (function() { 'use strict'; // 动态创建文本框和按钮 let inputDiv = document.createElement('div'); inputDiv.style.position = 'fixed'; inputDiv.style.top = '20px'; inputDiv.style.right = '20px'; inputDiv.style.zIndex = '9999'; inputDiv.style.backgroundColor = 'white'; inputDiv.style.padding = '20px'; inputDiv.style.border = '1px solid #ccc'; inputDiv.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0.2)'; // 创建粘贴信息的文本框 let pasteInput = document.createElement('textarea'); pasteInput.style.width = '300px'; pasteInput.style.height = '200px'; pasteInput.style.marginBottom = '10px'; pasteInput.placeholder = '粘贴信息(每行一个字段)'; inputDiv.appendChild(pasteInput); // 创建解析按钮 let parseButton = document.createElement('button'); parseButton.textContent = '解析'; parseButton.style.marginTop = '10px'; inputDiv.appendChild(parseButton); // 将文本框和按钮插入到页面 document.body.appendChild(inputDiv); // 解析按钮的点击事件 parseButton.addEventListener('click', function() { let pasteText = pasteInput.value.trim(); if (pasteText === '') { alert('请粘贴信息后再点击解析'); return; } let lines = pasteText.split('\n').map(line => line.trim()); // 确保粘贴的行数符合预期(11行) if (lines.length !== 11) { alert('粘贴的信息行数不正确,请确保是11行'); return; } // 解析各个字段 let plateNo = lines[0]; // 车牌号 let modelType, carVIN, engineNo, stRegisterDate; let seatCount, tonnage, emptyWeight; // 判断车型字段的特殊情况 if (lines[1] && lines[2] && !lines[1].match(/\d/)) { // 如果第2行是中文且第3行是字母数字混合的字符串(表示车型被拆分为两部分) modelType = `${lines[1]} ${lines[2]}`; // 合并为一个车型 } else { // 正常情况下,车型是单一字段 modelType = lines[1]; // 车型 } carVIN = lines[3]; // VIN engineNo = lines[4]; // 发动机号 stRegisterDate = lines[5]; // 注册日期 // 第6行特殊处理:解析 “2 8800 40000” [seatCount, tonnage, emptyWeight] = lines[6].split(/\s+/).map(Number); // 使用正则分割空格数量不定的情况 emptyWeight = emptyWeight / 1000; // 除以1000 // 后续字段处理 let name = lines[7]; // 公司名称 let detail = lines[8]; // 地址 let certificateCode = lines[9]; // 统一社会信用代码 // 填充到页面表单 try { document.getElementById('plateNo').value = plateNo; // 填充车牌号 document.getElementById('modelType').value = modelType; // 填充车型 document.getElementById('carVIN').value = carVIN; // 填充VIN document.getElementById('engineNo').value = engineNo; // 填充发动机号 document.getElementById('stRegisterDate').value = stRegisterDate; // 填充注册日期 document.getElementsByName('name')[0].value = name; // 填充公司名称 document.getElementsByName('certificateCode')[0].value = certificateCode; // 填充统一社会信用代码 document.getElementsByName('detail')[0].value = detail; // 填充地址 // 填充 seatCount, emptyWeight, tonnage 到页面 document.getElementsByName('seatCount')[0].value = seatCount; document.getElementsByName('emptyWeight')[0].value = emptyWeight; document.getElementsByName('tonnage')[0].value = tonnage; // 自动选择固定值的 select 控件 let plateTypeSelect = document.getElementById('plateType'); if (plateTypeSelect) { plateTypeSelect.value = "01"; // 自动选择 plateType 为 "01" // 主动触发一次 change 事件 let event = new Event('change'); plateTypeSelect.dispatchEvent(event); } let usageSelect = document.getElementById('usage'); if (usageSelect) usageSelect.value = "601"; // 自动选择 usage 为 "601" let holderCertificateTypeSelect = document.getElementById('holderCertificateType'); if (holderCertificateTypeSelect) holderCertificateTypeSelect.value = "18"; // 自动选择 holderCertificateType 为 "18" // 监听 plateType 选择变化 plateTypeSelect.addEventListener('change', function() { if (this.value === "01") { // 触发 vehicleType 的数据加载请求 loadVehicleTypeOptions(tonnage); // 调用数据加载并根据 tonnage 设置 vehicleType } }); // 触发 vehicleType 数据加载 if (plateTypeSelect && plateTypeSelect.value === "01") { loadVehicleTypeOptions(tonnage); } alert('信息解析并填充成功!'); } catch (error) { alert('解析过程中出现错误,请检查粘贴信息的格式'); console.error('解析错误:', error); } }); // 加载 vehicleType 选项并根据 tonnage 设置其值 function loadVehicleTypeOptions(tonnage) { // 模拟获取 vehicleType 数据(实际中可以是通过 AJAX 请求获取) setTimeout(() => { let vehicleTypeElement = document.getElementById('vehicleType'); if (tonnage < 2) { vehicleTypeElement.value = "02"; // tonnage < 2 } else if (tonnage >= 2 && tonnage < 5) { vehicleTypeElement.value = "07"; // 2 <= tonnage < 5 } else if (tonnage >= 5 && tonnage < 10) { vehicleTypeElement.value = "08"; // 5 <= tonnage < 10 } else { vehicleTypeElement.value = "09"; // tonnage >= 10 } }, 500); // 模拟延时 } })();