NEUQ 教学质量评价自动填写脚本

自动勾选 value=0 的评分项,填写评语并提交表单

// ==UserScript==
// @name         NEUQ 教学质量评价自动填写脚本
// @namespace    https://neuq.edu.cn/
// @version      1.2
// @description  自动勾选 value=0 的评分项,填写评语并提交表单
// @author       one NEUQer
// @match        https://jwxt.neuq.edu.cn/eams/quality/stdEvaluate.action/*
// @grant        none
// @run-at       document-idle
// @license      MIT License
// ==/UserScript==

(function () {
    'use strict';

    // 等待 DOM 加载完成后再执行
    function waitForElement(selector, callback, timeout = 5000) {
        const startTime = Date.now();
        const interval = setInterval(() => {
            const element = document.querySelector(selector);
            if (element) {
                clearInterval(interval);
                callback(element);
            } else if (Date.now() - startTime > timeout) {
                clearInterval(interval);
                console.warn(`未找到元素: ${selector}`);
            }
        }, 100);
    }

    // 勾选所有 value == "0" 的 input(通常是评分项)
    function autoCheckInputs() {
        let inputs = document.querySelectorAll("input");
        for (let i = 0; i < inputs.length; i++) {
            if (inputs[i].type === 'radio' && inputs[i].value === "0") {
                inputs[i].checked = true;
            }
        }
    }

    // 设置 textarea 的值为“无”
    function fillTextarea() {
        let textarea = document.querySelector("textarea");
        if (textarea && !textarea.value.trim()) {
            textarea.value = "无";
        }
    }

    // 点击提交按钮 #sub
    function submitForm() {
        let submitBtn = document.querySelector("#sub");
        if (submitBtn) {
            submitBtn.click();
            console.log("✅ 表单已自动提交!");
        }
    }

    // 主函数:逐步执行任务
    function main() {
        autoCheckInputs();
        fillTextarea();
        waitForElement("#sub", submitForm);
    }

    // 延迟执行,确保页面内容加载完毕
    setTimeout(main, 1000);
})();