Greasy Fork

Greasy Fork is available in English.

sztu自动评教

深圳技术大学自动评教——2024-2025-1

目前为 2024-12-23 提交的版本。查看 最新版本

// ==UserScript==
// @name         sztu自动评教
// @namespace    http://tampermonkey.net/
// @version      0.1.2
// @description  深圳技术大学自动评教——2024-2025-1
// @author       xiaowhang
// @match        https://jwxt.sztu.edu.cn/jsxsd/framework/xsMain.htmlx#*
// @match        https://jwxt.sztu.edu.cn/jsxsd/xspj/xspj_list.do*
// @match        https://jwxt.sztu.edu.cn/jsxsd/xspj/xspj_edit.do*
// @match        https://jwxt.sztu.edu.cn/jsxsd/xspj/xspj_find.do
// @grant        none
// @license MIT
// ==/UserScript==

const URLS = {
  MAIN: 'https://jwxt.sztu.edu.cn/jsxsd/framework/xsMain.htmlx#',
  FIND: 'https://jwxt.sztu.edu.cn/jsxsd/xspj/xspj_find.do',
  LIST: 'https://jwxt.sztu.edu.cn/jsxsd/xspj/xspj_list.do',
  EDIT: 'https://jwxt.sztu.edu.cn/jsxsd/xspj/xspj_edit.do',
};

const sleep = time => new Promise(resolve => setTimeout(resolve, time));

async function handleFindPage() {
  const evaluate = document.querySelector('a');
  if (evaluate) {
    window.open(evaluate.getAttribute('href'));
  }
}

async function handleListPage() {
  const urlList = [];

  const trList = document.querySelectorAll('tr');

  for (let i = 1; i < trList.length; i++) {
    const isDone = trList[i].children[5].children[0].value;
    if (isDone === '否') urlList.push(trList[i].children[7].children[0].getAttribute('href'));
    console.log(trList[i].children[2].textContent, trList[i].children[3].textContent);
  }

  if (urlList.length !== 0) {
    urlList.forEach(url => window.open(url));
  } else {
    alert('已完成所有评教,请点赞老师后及时提交!!!');
  }
}

async function handleEditPage() {
  const tdList = document.querySelectorAll('[name="zbtd"]');
  console.info(tdList);
  for (const td of tdList) {
    td.children[0].click();
  }
  tdList[tdList.length - 2].children[2].click();

  const submit = document.getElementById('bc');
  submit.click();

  window.close();
}

async function main() {
  await sleep(500);

  const currentUrl = location.pathname;

  if (URLS.FIND.includes(currentUrl)) {
    await handleFindPage();
  } else if (URLS.LIST.includes(currentUrl)) {
    await handleListPage();
  } else if (URLS.EDIT.includes(currentUrl)) {
    await handleEditPage();
  }
}

main().catch(err => console.error('脚本执行出错:', err));