// ==UserScript== // @name XAUAT 自动评教脚本 // @namespace http://tampermonkey.net/ // @version 1.1 // @description XAUAT 自动评教 // @author huang // @match https://swjw.xauat.edu.cn/evaluation-student-frontend/* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/536990/XAUAT%20%E8%87%AA%E5%8A%A8%E8%AF%84%E6%95%99%E8%84%9A%E6%9C%AC.user.js // @updateURL https://update.greasyfork.icu/scripts/536990/XAUAT%20%E8%87%AA%E5%8A%A8%E8%AF%84%E6%95%99%E8%84%9A%E6%9C%AC.meta.js // ==/UserScript== (function () { 'use strict'; console.log('xauat自动评教脚本-1.1'); // 延迟函数 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } // 等待元素加载 function waitForElement(selector) { return new Promise(resolve => { const observer = new MutationObserver(() => { const element = document.querySelector(selector); if (element) { observer.disconnect(); resolve(element); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } // 自动答题函数 async function autoEvaluate() { try { await waitForElement('.item'); console.log('开始自动评教'); const items = document.querySelectorAll('.item'); for (let item of items) { let option_count = 0; const options = item.querySelectorAll('label.el-checkbox'); for (let option of options) { const checkbox = option.querySelector('input.el-checkbox__original'); if (checkbox && !checkbox.checked) { checkbox.click(); console.log(`选项 ${checkbox.value} 已选中`); } await sleep(1); if (++option_count >= 3) break; } } const textarea = document.querySelector('textarea.el-textarea__inner'); if (textarea) { textarea.value = '这个老师真棒!'; textarea.dispatchEvent(new Event('input', { bubbles: true })); console.log('已填写评教内容'); } const submitBtn = document.querySelector('.el-button.el-button--primary.el-button--small'); if (submitBtn) { submitBtn.click(); console.log('提交按钮点击成功'); } console.log('评教完成并提交'); } catch (e) { console.error('autoEvaluate 出错:', e); } } // 自动进入评教页面函数 async function autoEntry() { try { const btnSelector = 'button.el-button.el-button--primary.el-button--mini.is-plain.is-round.borderhalf'; await waitForElement(btnSelector); const btn = document.querySelector(btnSelector); if (btn) { btn.click(); console.log('已点击评教按钮'); } } catch (e) { console.error('autoEntry 出错:', e); } } // 路由监听 function setupRouteHook() { try { const appVue = document.querySelector("#app").__vue__; if (!appVue || !appVue.$router || !appVue.$router.afterHooks) { console.warn('Vue Router 未正确初始化'); return; } appVue.$router.afterHooks.push((to, from) => { if (to.path.startsWith("/timelySurvey/")) { autoEvaluate(); } else if (to.path.startsWith("/timely-evaluation/myparticipate")) { autoEntry(); } }); } catch (e) { console.error('路由监听设置失败:', e); } } // 初始化 (async () => { setupRouteHook(); })(); })();