您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
导出问题
// ==UserScript== // @name EQ // @namespace http://tampermonkey.net/ // @version 2.3 // @description 导出问题 // @author XB // @match http://10.110.75.46/* // @match http://10.110.75.47/* // @match http://100.19.5.34/* // @grant none // @license MIT // ==/UserScript== const first = document; let wait=[]; let timer=null; let firstframe=null; let startid=1; let number=100; let solvelist=[]; let solveindex=-1; let step = 0; let table=[]; function sleep(time){ var timeStamp = new Date().getTime(); var endTime = timeStamp + time; while(true){ if (new Date().getTime() > endTime){ return; } } } function select_option_checked(doc,selectId, checkValue){ let select = doc.getElementById(selectId); for (let i = 0; i < select.options.length; i++){ if (select.options[i].value === checkValue){ select.options[i].selected = true; return true; } } return false; } function get_url_extension( url ) { return url.split(/[#?]/)[0].split('.').pop().trim(); } function get_url_name( url ) { const index = url.lastIndexOf('?'); if(index===-1){ return url.substring(url.lastIndexOf('/') + 1, url.length ); }else{ return url.substring(url.lastIndexOf('/') + 1, index ); } } function downloadTXT(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function download(href,name=null){ let link = document.createElement('a'); link.style.display="none"; link.target="_blank"; link.href=href; if(name) link.download=name; document.body.appendChild(link); link.click(); document.body.removeChild(link); } function getBlob(href){ return new Promise(resolve =>{ const xhr = new XMLHttpRequest(); xhr.open('POST',href,true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.responseType='blob'; xhr.onload=()=>{ if(xhr.status === 200){ resolve(xhr.response); } }; xhr.send(); }); } function saveAs(blob,name){ let link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); link.download = name; link.click(); } function downloadFile(href,name){ getBlob(href).then( blob =>{ saveAs(blob,name); } ); } function refreshsolvelist(){ const tmp = first.getElementsByTagName('iframe'); const tabs = first.getElementsByClassName('tabs-inner'); if(tmp.length>2&&solveindex>=0){ const frame = tmp[solveindex+2]; let input="#questionDescribeInput"; try{ if(frame.contentWindow.$("#questionDescribeInput").text()===''){ if(frame.contentWindow.$("#questionDetail").text()===''){ return; } input="#questionDetail"; } if(step===1){ frame.contentWindow.$("#developerConfirmInput").val('周青-研发三处,'); frame.contentWindow.$("#developerConfirmInputId").val('zhouqing01'); frame.contentWindow.developerConfirmSuggestion_Editor.setContent("add"); frame.contentWindow.$("#developerConfirmSubmitBtn").click(); //frame.contentWindow.$("#developerConfirmInput").val('陈相晨-产品研发三处'); //frame.contentWindow.$("#developerConfirmInputId").val('chenxiangchen'); //frame.contentWindow.$("input[name='developerConfirmNextStep']").val("others"); //frame.contentWindow.developerConfirmSuggestion_Editor.setContent("BMC使用命令模拟BIOS传输正常,确认未BIOS未正确传递信息"); }else if(step===2){ frame.contentWindow.$("#firstReason").val(3047); frame.contentWindow.$("#secondReason").val(3051); frame.contentWindow.$("#introducePhase").val(2176); frame.contentWindow.$("#questionLiabler_0_Input").val('周青-研发三处,'); frame.contentWindow.$("#questionLiabler_0_InputId").val("zhouqing01"); const str = '<p style="white-space: normal;">---------------------------------------------------------------------</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;"><span style="font-weight: 700;">根本原因描述</span>:</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">功能未完善</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">---------------------------------------------------------------------</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;"><span style="font-weight: 700;">解决方案--所做改动</span>:</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">功能已完善</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;"><span style="font-weight: 700;">解决方案--改动影响</span>(若无其他影响,可写无):</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">无</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">---------------------------------------------------------------------</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;"><span style="font-weight: 700;">回归验证目标版本</span>:</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">'+ '1.04'+ '</p><p style="font-variant-numeric: normal; font-variant-east-asian: normal; white-space: normal;">---------------------------------------------------------------------</p><p><br style="white-space: normal;"/></p><p><br/></p>'; frame.contentWindow.UM.getEditor("questionLiabler_0_Editor").setContent(str); frame.contentWindow.questionLiabler_0_SubmitBtn.click(); //modal bootstrap-dialog type-primary fade size-small in }else if(step===3){ } }catch (e){ return; } if(solveindex===0){ clearInterval(timer); if(step===3){ step=0; } } tabs[solveindex+1].click(); solveindex--; } } function refreshlist(){ const tmp = first.getElementsByTagName('iframe'); if(tmp.length>2){ const frame = tmp[length-1]; let inputDetail="#questionDescribeInput"; try{ if(frame.contentWindow.$("#questionDescribeInput").text()===''){ if(frame.contentWindow.$("#questionDetail").text()===''){ return; } inputDetail="#questionDetail"; } const id=tmp.length-3+startid; table.push({ i:id, id:frame.contentWindow.$("#questionId").val(), t:frame.contentWindow.$("#questionTitle").val(), de:frame.contentWindow.$(inputDetail)[0].innerText.replaceAll(",",",").replaceAll("\t"," ").replaceAll("\n","<br>"), blank1:"", blank2:"", blank3:"", blank4:"", blank5:"", blank6:"", blank7:"", type:"待定位", certify:"", solution:"", lc:"", s:frame.contentWindow.$("#severityInput option:selected").text(), p:frame.contentWindow.$("#priorityInput option:selected").text(), o:frame.contentWindow.$("#occurFrequencyInput option:selected").text(), di:frame.contentWindow.$("#discoverStageInput option:selected").text(), status:"Assigned", first:frame.contentWindow.$("#firstGradeCategory option:selected").text(), second:frame.contentWindow.$("#secondGradeCategory option:selected").text(), u:frame.contentWindow.$("#submitUserName").val() }); const imgs=frame.contentWindow.$(inputDetail).find('img'); const files=frame.contentWindow.$("#fileList").find('a'); console.log(imgs); console.log(files); let i=1; for(let img of imgs){ download(img.src,id+'.'+i+'.'+get_url_extension(img.src)); ++i; } for(let file of files){ let url = file.getAttribute('onclick'); const fileid = url.match(/downloadFile\(\'(.*)\',(.*)\)/)[1]; const link= "/ibms/file.do/downloadFile?fileId="+fileid; download(link) //downloadFile(link,id+'.'+i+'.'+file.innerText); if(url!==null){ const tabs = first.getElementsByClassName('tabs-inner'); //wait.push(id+" "+tabs[tmp.length-1].innerText); wait.push(id+'.'+i+'.'+file.innerText); } ++i; } }catch (e){ return; } $("#tabs").tabs('close',tmp.length-1); if(first.getElementsByTagName('iframe').length<=2){ clearInterval(timer); alert(JSON.stringify(wait)); wait.length=0; console.log(table); let text="<html><head><title>潮动力BUG</title></head><body><table>"; for(const tri in table){ text+="<tr>"; const tr = table[table.length-tri-1]; for(const td in tr){ text+="<td>"+tr[td]+"</td>"; } text+="</tr>"; } text+="</table></body></html>"; downloadTXT("BUGLIST "+(new Date()).toLocaleDateString()+".html",text); table.length=0; } } } function refresh(){ const tmp = first.getElementsByTagName('iframe'); let toolbar = null; if(tmp.length>1){ firstframe=tmp[1]; try{ toolbar = firstframe.contentDocument.getElementsByClassName('toolbar')[0]; firstframe.contentDocument.getElementById('checkFlowStepBtn').style="width:50px;margin-right:0px"; firstframe.contentDocument.getElementById('selectBugBtn').style="width:50px;margin-right:0px"; firstframe.contentDocument.getElementById('resetBtn').style="width:50px;margin-right:0px"; const redistributeBtn = firstframe.contentDocument.getElementById('redistributeBtn'); if(redistributeBtn!==null){ redistributeBtn.style="width:90px;margin-right:0px"; } firstframe.contentDocument.getElementById('exportQuestionBtn').style="width:90px;margin-right:0px"; let obbtn = firstframe.contentDocument.createElement('button'); obbtn.className="btn btn-success"; obbtn.id="eqBtn"; obbtn.style="width:60px;margin-right:0px"; let obi=firstframe.contentDocument.createElement('i'); obi.className="fa fa-download"; obi.style="padding-right:3px;"; let obs=firstframe.contentDocument.createElement('span'); //obs.setAttribute("data-locale","button_download_excel"); obs.innerText="附件"; obbtn.appendChild(obi); obbtn.appendChild(obs); obbtn.onclick=function(){eq()}; let input=firstframe.contentDocument.createElement('input'); input.type="text"; input.placeholder="起始编号"; input.id="startid"; input.className="bootstrap-table-head-params header-input"; input.style="width: 60px;"; let input1=firstframe.contentDocument.createElement('input'); input1.type="text"; input1.placeholder="个数"; input1.id="number"; input1.className="bootstrap-table-head-params header-input"; input1.style="width: 50px;"; let input2=firstframe.contentDocument.createElement('input'); input2.type="text"; input2.placeholder="解bug序列"; input2.id="solvestr"; input2.className="bootstrap-table-head-params header-input"; input2.style="width: 60px;"; let solvebtn = firstframe.contentDocument.createElement('button'); solvebtn.className="btn btn-success"; solvebtn.id="solveBtn"; solvebtn.style="width:40px;margin-right:0px"; let solvebtni=firstframe.contentDocument.createElement('i'); solvebtni.className="fa fa-check-circle"; solvebtni.style="padding-right:3px;"; let solvebtns=firstframe.contentDocument.createElement('span'); solvebtns.innerText="①"; solvebtn.appendChild(solvebtni); solvebtn.appendChild(solvebtns); solvebtn.onclick=function(){solve(1)}; let solvebtn2 = firstframe.contentDocument.createElement('button'); solvebtn2.className="btn btn-success"; solvebtn2.id="solveBtn"; solvebtn2.style="width:40px;margin-right:0px"; let solvebtni2=firstframe.contentDocument.createElement('i'); solvebtni2.className="fa fa-check-circle"; solvebtni2.style="padding-right:3px;"; let solvebtns2=firstframe.contentDocument.createElement('span'); solvebtns2.innerText="②"; solvebtn2.appendChild(solvebtni2); solvebtn2.appendChild(solvebtns2); solvebtn2.onclick=function(){solve(2)}; let solvebtn3 = firstframe.contentDocument.createElement('button'); solvebtn3.className="btn btn-success"; solvebtn3.id="solveBtn"; solvebtn3.style="width:40px;margin-right:0px"; let solvebtni3=firstframe.contentDocument.createElement('i'); solvebtni3.className="fa fa-check-circle"; solvebtni3.style="padding-right:3px;"; let solvebtns3=firstframe.contentDocument.createElement('span'); solvebtns3.innerText="③"; solvebtn3.appendChild(solvebtni3); solvebtn3.appendChild(solvebtns3); solvebtn3.onclick=function(){solve(3)}; toolbar.appendChild(input); toolbar.appendChild(input1); toolbar.appendChild(obbtn); toolbar.appendChild(input2); toolbar.appendChild(solvebtn); toolbar.appendChild(solvebtn2); toolbar.appendChild(solvebtn3); }catch (e){ return; } clearInterval(timer); }else{ return; } } function eq(){ const list = firstframe.contentDocument.getElementsByClassName('href-pointer'); startid=(firstframe.contentWindow.$('#startid').val())*1; number=(firstframe.contentWindow.$('#number').val())*1; for(let i=0;i<list.length&&i<number*3;i+=3){ const questionId = list[i].getAttribute('onclick').match(/questionDetail\(\'(.*)\',\'(.*)\',\'(.*)\'\)/)[1]; //const url = "bugManage/bugQuestionDetail2.html?questionId="+questionId; //parent.addTab(questionId,url); firstframe.contentWindow.questionDetail(questionId,questionId,'assign') //const tmp = first.getElementsByTagName('iframe'); //let secondframe = tmp[2+i/2]; //secondframe.setAttribute('tab',2+i/2); //secondframe.id="i"+(2+i/2); //$(secondframe).ready(function(){ //console.log(secondframe); //const imgs=secondframe.contentWindow.$('#questionDetail').find('img'); //secondframe.contentWindow.$("#tabs").tabs('close',2); //}); } clearInterval(timer); timer=setInterval(() => { refreshlist(); }, 1000); } function solve(stepi){ //const list = firstframe.contentDocument.getElementsByClassName('href-pointer'); const solvestr=(firstframe.contentWindow.$('#solvestr').val()); solvelist = solvestr.split("ISU").map(el => el.trim()).filter(item => item.trim() != ''); solveindex = solvelist.length-1; //alert(JSON.stringify(list)); for(let i=0;i<solvelist.length;++i){ firstframe.contentWindow.questionDetail("ISU"+solvelist[i],"ISU"+solvelist[i],'assign'); } step=stepi; clearInterval(timer); timer=setInterval(() => { refreshsolvelist(); }, 1000); } (function() { 'use strict'; clearInterval(timer); timer=setInterval(() => { refresh(); }, 1000); //toolbar.appendChild(); // Your code here... })();