Greasy Fork

来自缓存

Greasy Fork is available in English.

东南大学快速评教工具

创建悬浮面板用于快速评教

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         东南大学快速评教工具
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  创建悬浮面板用于快速评教
// @author       You
// @match        http*://pjxt.seu.edu.cn/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 你的ping函数
    function ping(point=10, comment='好') {
        // 确保只点击页面上原有的元素,不包括我们创建的悬浮面板中的元素
        document.querySelectorAll(`[data-x-fz="${point}"]:not(#quickEvalPanel *)`).forEach(a => a.click());
        document.querySelector('textarea:not(#quickEvalPanel textarea)').value = comment;
        document.querySelector('.bh-btn-success:not(#quickEvalPanel .bh-btn-success)').click();
        document.querySelector('.bh-dialog-btn:not(#quickEvalPanel .bh-dialog-btn)').click();
    }

    // 创建悬浮面板
    function createQuickEvalPanel() {
        // 创建面板容器
        const panel = document.createElement('div');
        panel.id = 'quickEvalPanel';
        panel.style.position = 'fixed';
        panel.style.bottom = '20px';
        panel.style.right = '20px';
        panel.style.zIndex = '9999';
        panel.style.backgroundColor = '#fff';
        panel.style.border = '1px solid #ddd';
        panel.style.borderRadius = '5px';
        panel.style.padding = '15px';
        panel.style.boxShadow = '0 2px 10px rgba(0,0,0,0.1)';
        panel.style.width = '250px';
        panel.style.height = 'fit-content';

        // 创建标题
        const title = document.createElement('h3');
        title.textContent = '快速评教';
        title.style.marginTop = '0';
        title.style.marginBottom = '15px';
        title.style.fontSize = '16px';
        title.style.color = '#333';
        panel.appendChild(title);

        // 创建分数选择
        const scoreLabel = document.createElement('label');
        scoreLabel.textContent = '评分: ';
        scoreLabel.style.marginRight = '10px';
        panel.appendChild(scoreLabel);

        const scoreSelect = document.createElement('select');
        scoreSelect.id = 'evalScore';
        scoreSelect.style.marginBottom = '10px';
        scoreSelect.style.padding = '5px';
        scoreSelect.style.borderRadius = '3px';
        scoreSelect.style.border = '1px solid #ccc';

        // 添加分数选项(1-10分)
        for (let i = 1; i <= 10; i++) {
            const option = document.createElement('option');
            option.value = i;
            option.textContent = i + '分';
            if (i === 10) option.selected = true; // 默认10分
            scoreSelect.appendChild(option);
        }
        panel.appendChild(scoreSelect);

        // 创建评语输入
        const commentLabel = document.createElement('label');
        commentLabel.textContent = '评语: ';
        commentLabel.style.display = 'block';
        commentLabel.style.marginBottom = '5px';
        panel.appendChild(commentLabel);

        const commentInput = document.createElement('textarea');
        commentInput.id = 'evalComment';
        commentInput.value = '好';
        commentInput.style.width = '100%';
        commentInput.style.height = '60px';
        commentInput.style.marginBottom = '10px';
        commentInput.style.padding = '5px';
        commentInput.style.borderRadius = '3px';
        commentInput.style.border = '1px solid #ccc';
        commentInput.style.resize = 'vertical';
        panel.appendChild(commentInput);

        // 创建提交按钮
        const submitBtn = document.createElement('button');
        submitBtn.textContent = '提交评教';
        submitBtn.style.backgroundColor = '#4CAF50';
        submitBtn.style.color = 'white';
        submitBtn.style.border = 'none';
        submitBtn.style.padding = '8px 15px';
        submitBtn.style.borderRadius = '3px';
        submitBtn.style.cursor = 'pointer';
        submitBtn.style.width = '100%';

        submitBtn.addEventListener('click', function() {
            const score = document.getElementById('evalScore').value;
            const comment = document.getElementById('evalComment').value;
            ping(parseInt(score), comment);
        });

        panel.appendChild(submitBtn);

        // 添加到页面
        document.body.appendChild(panel);

        // 使面板可拖动
        makeDraggable(panel, title);
    }

    // 使元素可拖动
    function makeDraggable(element, handle) {
        let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;

        handle.onmousedown = dragMouseDown;

        function dragMouseDown(e) {
            e = e || window.event;
            e.preventDefault();
            pos3 = e.clientX;
            pos4 = e.clientY;
            document.onmouseup = closeDragElement;
            document.onmousemove = elementDrag;
        }

        function elementDrag(e) {
            e = e || window.event;
            e.preventDefault();
            pos1 = pos3 - e.clientX;
            pos2 = pos4 - e.clientY;
            pos3 = e.clientX;
            pos4 = e.clientY;
            element.style.top = (element.offsetTop - pos2) + "px";
            element.style.left = (element.offsetLeft - pos1) + "px";
        }

        function closeDragElement() {
            document.onmouseup = null;
            document.onmousemove = null;
        }
    }

    createQuickEvalPanel();
})();