信阳学院自动评教

自动完成所有评教,全选优秀但随机一个选良好,自动跳转到下一个老师

// ==UserScript==
// @name         信阳学院自动评教
// @namespace    http://tampermonkey.net/
// @version      1.1
// @license MIT
// @description  自动完成所有评教,全选优秀但随机一个选良好,自动跳转到下一个老师
// @author       AI助手
// @match        https://jw.xyu.edu.cn/eams/homeExt.action*
// @match        https://jw.xyu.edu.cn/eams/quality/stdEvaluate*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // 等待页面加载完成
    window.addEventListener('load', function() {
        console.log('页面加载完成,检查页面类型...');

        // 检查是否在评教列表页面
        if (document.querySelector('.gridtable') && !document.querySelector('#question-list')) {
            console.log('当前在评教列表页面');
            addAutoEvaluateAllButton();

            // 如果URL中包含自动评教参数,自动点击下一个评教链接
            if (window.location.href.includes('autoEvaluate=true')) {
                console.log('检测到自动评教参数,准备点击下一个评教链接');
                setTimeout(clickNextEvaluationLink, 1000);
            }
        }

        // 检查是否在评教问卷页面
        else if (document.querySelector('#question-list')) {
            console.log('当前在评教问卷页面,开始自动评教...');
            setTimeout(function() {
                autoEvaluate();

                // 如果URL中包含自动评教参数,自动提交
                if (window.location.href.includes('autoEvaluate=true')) {
                    console.log('检测到自动评教参数,3秒后自动提交');
                    setTimeout(function() {
                        document.querySelector('#sub').click();
                    }, 3000);
                }
            }, 1000);
        }
    });

    // 添加"自动评教全部"按钮
    function addAutoEvaluateAllButton() {
        const gridDiv = document.querySelector('.grid');
        if (!gridDiv) return;

        const autoEvalAllBtn = document.createElement('button');
        autoEvalAllBtn.textContent = '自动评教全部';
        autoEvalAllBtn.style.backgroundColor = '#4CAF50';
        autoEvalAllBtn.style.color = 'white';
        autoEvalAllBtn.style.padding = '10px 15px';
        autoEvalAllBtn.style.margin = '10px 0';
        autoEvalAllBtn.style.border = 'none';
        autoEvalAllBtn.style.borderRadius = '4px';
        autoEvalAllBtn.style.cursor = 'pointer';
        autoEvalAllBtn.style.fontSize = '16px';

        autoEvalAllBtn.onclick = function() {
            if (confirm('确定要自动完成所有评教吗?将会自动选择所有选项为"优秀",但每个问卷随机一个选项为"良好"。')) {
                clickNextEvaluationLink();
            }
        };

        // 将按钮添加到表格前面
        gridDiv.parentNode.insertBefore(autoEvalAllBtn, gridDiv);

        // 添加状态显示区域
        const statusDiv = document.createElement('div');
        statusDiv.id = 'autoEvalStatus';
        statusDiv.style.margin = '10px 0';
        statusDiv.style.padding = '10px';
        statusDiv.style.backgroundColor = '#f8f8f8';
        statusDiv.style.border = '1px solid #ddd';
        statusDiv.style.borderRadius = '4px';
        statusDiv.innerHTML = '<b>自动评教状态:</b>就绪,点击上方按钮开始自动评教';

        gridDiv.parentNode.insertBefore(statusDiv, gridDiv);
    }

    // 点击下一个评教链接
    function clickNextEvaluationLink() {
        const evalLinks = document.querySelectorAll('a[href*="stdEvaluate!answer.action"]');

        if (evalLinks.length > 0) {
            // 更新状态
            const statusDiv = document.getElementById('autoEvalStatus');
            if (statusDiv) {
                statusDiv.innerHTML = `<b>自动评教状态:</b>正在处理,剩余 ${evalLinks.length} 个评教任务...`;
            }

            console.log(`找到 ${evalLinks.length} 个未完成的评教链接,点击第一个`);

            // 修改链接,添加自动评教参数
            let nextLink = evalLinks[0].href;
            if (nextLink.includes('?')) {
                nextLink += '&autoEvaluate=true';
            } else {
                nextLink += '?autoEvaluate=true';
            }

            // 点击链接
            window.location.href = nextLink;
        } else {
            console.log('没有找到未完成的评教链接,评教已全部完成');

            // 更新状态
            const statusDiv = document.getElementById('autoEvalStatus');
            if (statusDiv) {
                statusDiv.innerHTML = '<b>自动评教状态:</b>所有评教任务已完成!';
                statusDiv.style.backgroundColor = '#e6ffe6';
                statusDiv.style.border = '1px solid #4CAF50';
            }

            alert('所有评教任务已完成!');
        }
    }

    // 自动填写评教问卷
    function autoEvaluate() {
        // 获取所有问题
        const questions = document.querySelectorAll('.qBox.objective.required');
        if (questions.length === 0) {
            console.log('未找到评教问题,请检查页面结构');
            return;
        }

        console.log(`找到 ${questions.length} 个评教问题`);

        // 随机选择一个问题设为"良好"
        const randomIndex = Math.floor(Math.random() * questions.length);
        console.log(`随机选择第 ${randomIndex + 1} 个问题设为"良好"`);

        // 遍历所有问题
        questions.forEach((question, index) => {
            const questionId = question.id.replace('question_', '');

            // 如果是随机选中的问题,选择"良好"
            if (index === randomIndex) {
                const goodOption = document.querySelector(`#option_${questionId}_1`);
                if (goodOption) {
                    goodOption.click();
                    console.log(`问题 ${questionId} 已选择"良好"`);
                }
            }
            // 其他问题选择"优秀"
            else {
                const excellentOption = document.querySelector(`#option_${questionId}_0`);
                if (excellentOption) {
                    excellentOption.click();
                    console.log(`问题 ${questionId} 已选择"优秀"`);
                }
            }
        });

        // 添加一个自动提交按钮
        const autoSubmitBtn = document.createElement('button');
        autoSubmitBtn.textContent = '自动提交评教';
        autoSubmitBtn.style.backgroundColor = '#4CAF50';
        autoSubmitBtn.style.color = 'white';
        autoSubmitBtn.style.padding = '10px 15px';
        autoSubmitBtn.style.margin = '10px';
        autoSubmitBtn.style.border = 'none';
        autoSubmitBtn.style.borderRadius = '4px';
        autoSubmitBtn.style.cursor = 'pointer';

        autoSubmitBtn.onclick = function() {
            document.querySelector('#sub').click();
        };

        // 将按钮添加到页面
        const submitArea = document.querySelector('#sub').parentNode;
        submitArea.insertBefore(autoSubmitBtn, submitArea.firstChild);

        // 显示评教信息
        const teacherInfo = document.querySelector('#base-info p');
        if (teacherInfo) {
            console.log('当前评教信息: ' + teacherInfo.textContent);

            // 添加评教信息显示
            const infoDiv = document.createElement('div');
            infoDiv.style.margin = '10px';
            infoDiv.style.padding = '10px';
            infoDiv.style.backgroundColor = '#f0f8ff';
            infoDiv.style.border = '1px solid #add8e6';
            infoDiv.style.borderRadius = '4px';
            infoDiv.innerHTML = `
                <p><b>自动评教进行中</b></p>
                <p>当前评教: ${teacherInfo.textContent}</p>
                <p>已随机选择第 ${randomIndex + 1} 个问题为"良好",其余为"优秀"</p>
                <p>自动模式下将在3秒后提交</p>
            `;

            const headDiv = document.querySelector('#head');
            if (headDiv) {
                headDiv.parentNode.insertBefore(infoDiv, headDiv.nextSibling);
            }
        }

        console.log('自动评教完成,请检查并提交');
    }
})();