// ==UserScript== // @name 北京市全员培训自动填写问卷调查【好医生】 已修复20250708 状态正常! // @namespace http://tampermonkey.net/ // @version 2.21 // @description 自动填写问卷调查,选择单选和多选选项,并填写建议内容,内容根据自己需求调整 // @author VX:hapens1986 bug反馈请注明来源! // @match https://bjsqypx.haoyisheng.com/qypx/bj/dcwj.jsp?course_id=* // @match https://bjsqypx.haoyisheng.com/qypx/bj/* // @ICON https://cdn-icons-png.flaticon.com/128/4594/4594681.png // @grant none // @run-at document-idle // ==/UserScript== (function() { 'use strict'; // 配置参数 const config = { suggestionText: "感谢提供学习机会,我从中受益很多,很多知识点很实用!" }; // 主函数 function main() { if (!isTargetPage()) return; // 使用MutationObserver确保DOM完全加载 const observer = new MutationObserver(function(mutations, obs) { if (document.querySelector('input[type="radio"]')) { obs.disconnect(); executeAutoFill(); } }); observer.observe(document, { childList: true, subtree: true }); // 立即尝试执行一次 if (document.querySelector('input[type="radio"]')) { executeAutoFill(); } } // 判断是否是目标页面 function isTargetPage() { return document.title.includes("北京市全员必修课培训") && document.querySelector('form.feedbackform'); } // 执行自动填写 function executeAutoFill() { console.log("[自动填写] 开始执行自动填写..."); fillAllRadioQuestions(); fillAllCheckboxQuestions(); fillSuggestion(); console.log("[自动填写] 自动填写完成!请检查后提交。"); showCompletionNotice(); } // 填写所有单选题(选择第一个选项) function fillAllRadioQuestions() { const radioGroups = {}; // 分组收集所有单选按钮 document.querySelectorAll('input[type="radio"]').forEach(radio => { const name = radio.name; if (!radioGroups[name]) { radioGroups[name] = []; } radioGroups[name].push(radio); }); // 为每组选择第一个选项 Object.values(radioGroups).forEach(group => { if (group.length > 0) { group[0].checked = true; } }); console.log("[自动填写] 已选择所有单选题的第一个选项"); } // 填写所有多选题(选择前两个选项) function fillAllCheckboxQuestions() { const checkboxGroups = {}; // 分组收集所有多选按钮 document.querySelectorAll('input[type="checkbox"]').forEach(checkbox => { const name = checkbox.name; if (!checkboxGroups[name]) { checkboxGroups[name] = []; } checkboxGroups[name].push(checkbox); }); // 为每组选择前两个选项 Object.values(checkboxGroups).forEach(group => { if (group.length >= 2) { group[0].checked = true; group[1].checked = true; } else if (group.length === 1) { group[0].checked = true; } }); console.log("[自动填写] 已选择所有多选题的前两个选项"); } // 填写建议内容 function fillSuggestion() { const q15Input = document.getElementById('q15_1'); if (q15Input) { q15Input.value = config.suggestionText; console.log(`[自动填写] 已填写建议内容: ${config.suggestionText}`); } else { console.log("[自动填写] 未找到建议输入框"); } } // 显示完成通知 function showCompletionNotice() { const notice = document.createElement('div'); notice.style = ` position: fixed; top: 20px; right: 20px; padding: 15px; background: #4CAF50; color: white; border-radius: 5px; z-index: 9999; box-shadow: 0 2px 10px rgba(0,0,0,0.2); font-family: Arial, sans-serif; `; notice.innerHTML = ` 自动填写完成!
请检查后提交问卷 `; document.body.appendChild(notice); // 5秒后自动消失 setTimeout(() => { notice.style.opacity = '0'; setTimeout(() => notice.remove(), 500); }, 5000); } // 启动脚本 main(); })();