// ==UserScript== // @name minerva-online assistant // @namespace https://space.bilibili.com/17846288 // @version 2.0.0 // @description 此脚本能更方便使用minerva-online平台,可在代码开头处手动设置功能开关,请仔细阅读后根据需要启用/关闭功能 // @author inoki // @match https://www.minerva-online.com/* // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js // @noframes // @downloadURL none // ==/UserScript== /*jshint esversion: 6 */ (()=>{ 'use strict'; /*功能开关:开启设为1;关闭设为0*/ /*请根据需要手动修改开关值,保存(Ctrl+S)后生效*/ const 置顶置底=1; //置顶置底:在当前域名所有页面生效,右下角添加置顶置底按钮,滚动一次页面后显示,会根据页面滚动方向自动切换置顶和置底,按钮样式可修改 const 菜单遮罩=0; //菜单遮罩:在有顶端菜单栏的页面生效,让菜单栏需要点击一次后才可展开,防止鼠标经过时误触(默认关闭) const 附件下载=1; //附件下载:在问卷管理页面生效,在每份报告前添加↓按钮,点↓加载附件列表,点√一键下载全部附件,点附件名下载单个附件,鼠标悬停可预览图片,浏览器设为无须确认下载效果更佳 const 扣分标记=1; //扣分标记:在单店报告页面生效,将题目选项中勾选n/a的标橙,扣分的标红,选项更改后需保存报告才会刷新标记项,方便快速检查扣分题评论 var $=$||window.$; if(置顶置底)GOTOPBOTTOM(); if(菜单遮罩)COVERMENU(); if(附件下载)DOWNLOADFILE(); if(扣分标记)MARKQUESTION(); /*全局添加置顶置底功能*/ function GOTOPBOTTOM(){ let scrollBar=$(document).height()>(window.innerHeight+1||document.documentElement.clientHeight);//如有滚动条 if(scrollBar&&document.location.href.indexOf('alias=knowledgebase')===-1){//knowledgebase页面自带置顶按钮,不启用 let goTopBottomButton=document.createElement('div'); let toggleButton=document.createElement('img'); $(toggleButton).appendTo(goTopBottomButton); $(goTopBottomButton).appendTo($('body')[0]); $(goTopBottomButton).css({'position':'fixed','zIndex':10000}); $(toggleButton).css({'display':'block','cursor':'pointer'}).attr('src','/knowledgebase/images/arrow_back_to_top.svg');//按钮显示图片(向下箭头) //以下按钮参数可自定义修改 goTopBottomButton.style.bottom='50px';//按钮距离网页底部50px goTopBottomButton.style.right='30px';//按钮距离网页右边30px toggleButton.style.width='25px';//按钮图片宽25px toggleButton.style.height='25px';//按钮图片高25px toggleButton.style.opacity=0.5;//按钮不透明度,0.0(完全透明)到1.0(完全不透明) toggleButton.style.backgroundColor='grey';//按钮背景颜色,也可使用在excel等软件的自定义颜色界面的16进制代码 let clickScrollTime=500;//点击按钮时,网页滚动到顶部或底部需要的时间,单位是毫秒 //点击按钮时网页滚动到顶部或底部 let scrollDirection='down'; toggleButton.addEventListener('click',()=>{ if (scrollDirection==='up'){ $('html,body').animate({scrollTop:'0px'},clickScrollTime); } else{ $('html,body').animate({scrollTop:$(document).height()},clickScrollTime); } }); //页面滚动监听 let scrollAction=window.pageYOffset; $(window).scroll(()=>{ let diffY=scrollAction-window.pageYOffset; scrollAction=window.pageYOffset; scrollDirection= diffY<0? 'down' : 'up'; toggleButton.style.transform= diffY<0? 'rotate(0deg)' : 'rotate(180deg)'; if(getScrollTop()===0){ scrollDirection='down'; toggleButton.style.transform='rotate(0deg)'; } if(getScrollTop()+window.innerHeight+20>=$(document).height()){ scrollDirection='up'; toggleButton.style.transform='rotate(180deg)'; } }); } } //获取垂直方向滑动距离 function getScrollTop(){ let scrollTop=0; if(document.documentElement&&document.documentElement.scrollTop){ scrollTop=document.documentElement.scrollTop; } else if(document.body){ scrollTop=document.body.scrollTop; } return scrollTop; } /*全局添加置顶置底功能*/ /*全局防止菜单栏自动展开*/ function COVERMENU(){ let menu=$('div#menu'); if(menu.length){ //若存在menu则添加cover层 let cover = document.createElement('div'); cover.className = 'layout'; cover.style = 'top:57px;opacity:0.3;z-index:10000'; $(cover).appendTo($('body')[0]); //点击时将cover层下置 cover.addEventListener('click',()=>{ cover.style.zIndex = -1; }); //离开menu时cover层还原 menu[0].addEventListener('mouseleave',()=>{ cover.style.zIndex = 10000; }); //cover层位置跟随menu 来源【https://www.minerva-online.com/portal/menu/js/v2/menuRender.js?version=21-08 onScrollEventHandler : function()】 $(window).scroll(()=>{ let SM=unsafeWindow.SM; let ind = SM.ui.headerHeight - SM.ui.getScrollTop(); cover.style.top= ind>0? ind+'px' : '0px'; }); } } /*全局防止菜单栏自动展开*/ /*问卷管理界面添加附件下载功能*/ function DOWNLOADFILE(){ if (document.location.href.indexOf('alias=smngr.surveyexplorer')>=0){ $('tr.persist-header').each(function(){ $(this).children().first().after($(this).children().first().clone(true)); }); $('div.sticky-wrap').find(':checkbox').each(function(){//checkbox后添加下载按钮 let surveyid=$(this).val(); $(this).parent().after('
......');
$.get('/open/data.asp?post={"action":"exec","dataset":{"datasetname":"/Apps/SM/Survey/SurveyInstanceGetData"},"parameters":[{"name":"SurveyInstanceID","value":"'+surveyid+'"}]}',(data,status)=>{//调用API获取当前survey数据[SurveyInstanceGetData]
if (status==='success'){
let filedata=data.dataset.data[3];
let fileno=filedata.length;
$('p#'+surveyid+'.loading').after('\t#='+fileno+'');
if (fileno>0){
for(let i in filedata){
let filename=filedata[i].FileName+'.'+filedata[i].FileExtension;
let fileid=filedata[i].AttachmentID;
let fileurl='/mystservices/Attachments/getAttachment.asp?Attachment='+fileid+'&Password='+filedata[i].Password+'';
let filesize=Number(filedata[i].FileSizeInBytes)/1024;
filesize= (filesize>1024)? (filesize/1024).toFixed(2)+' MB' : filesize.toFixed(2)+' KB';
$('
').appendTo('ol#'+surveyid+'.filelist');
$(` '+filesize+' ').appendTo('tr#'+fileid);
}
$('a#'+surveyid+'.I,a#'+surveyid+'.V').mouseenter(function(){
FilePreview(1,$(this).attr('href'));
});
$('a#'+surveyid+'.I,a#'+surveyid+'.V').mouseleave(function(){
FilePreview(0);
});
$('ol#'+surveyid+'.filelist').prepend('