Greasy Fork is available in English.

jira日志记录功能增强

可以把英文翻译成中文,并且增加下拉选项选择当前问题阶段的功能

// ==UserScript==
// @name         jira日志记录功能增强
// @namespace    armstrong@fanruan.com
// @version      2.1.13
// @description  可以把英文翻译成中文,并且增加下拉选项选择当前问题阶段的功能
// @author       Armstrong
// @match        https://work.fineres.com/browse/*
// @include     /^https?://work\.fineres\.com.*
// @grant        none
// ==/UserScript==
(function () {
    'use strict';
    // Your code here...
    if(window.location.href.indexOf("CUSTBUG")>=0||window.location.href.indexOf("SLA-")>=0||window.location.href.indexOf("filter=")>=0||window.location.href.indexOf("Dashboard.jspa")>=0){
     window.gradeChange = function (tx) {
            switch (tx){
                case "沟通问题":window.detail_array=["异常现象已了解","异常现象未了解"];break;
                case "沟通需求效果":window.detail_array=["需求已理解","需求未理解"];break;
                case "定位问题":window.detail_array=["尚未定位到原因","已定位到原因,提供解决方案","已定位到原因,尚未提供解决方案"];break;
                case "实现需求效果":window.detail_array=["设计方案中","给出方案并实现需求","给出方案但未实施","给出的方案无法满足需求"];break;
                case "三线协助中":window.detail_array=["协助排查","模块专家/测试/研发查看问题中"];break;
                case "二次开发":window.detail_array=["协助沟通二次开发需求","二开评估/开发中","二开完成,协助测试"];break;
                case "给出解决方案":window.detail_array=["给出方案,待测试","顺利解决问题","给出的方案未解决问题"];break;
                case "无实质进展":window.detail_array=["观察现象中","jar包待发布","客户无响应或暂且搁置问题"];break;
                default:window.detail_array=["其他"]
            }
            var y = document.getElementById("mySelect2");
            y.innerHTML = "";
             for(var k=0;k<y.childNodes.length;k++){
                y.removeChild(y.options[k]);
                y.remove(k);
                y.options[k] = null;
                 }
                 setTimeout(function(){for(let j=0;j<window.detail_array.length;j++){
                 var option2 = document.createElement("option");
                 option2.text = window.detail_array[j];
                 y.add(option2, y.options[null])
            }},300)//上面是为联动的下拉框添加选项的
                 setTimeout(function(){
                 var option_moren = document.createElement("option");
                 option_moren.text = "请选择详情";
                 option_moren.hidden=true;
                 option_moren.disabled=true;
                 option_moren.selected=true;
                 y.add(option_moren, y.options[null])
            },300)           
             if(["定位问题","实现需求效果","三线协助中","二次开发","给出解决方案"].indexOf(tx)>=0){
                switch (tx) {
                case "定位问题":window.last_period="沟通问题现象,获取必要信息";break;
                case "实现需求效果":window.last_period="沟通客户需求";break;
                case "三线协助中":window.last_period="沟通现象、获取必要信息、自己进行排查";break;
                case "二次开发":window.last_period="沟通客户原始需求";break;
                case "给出解决方案":window.last_period="沟通问题现象、获取必要信息、排查问题";break;
                dafault:window.last_period="当前";break;}}
                else
                {
                    window.last_period=$('#mySelect').val()
                }
                 if($('#last_period').length==0){
          $('[name="comment"]').eq(1).after("<div id='last_period'><label>提示:在"+window.last_period+"的过程中,主要进行的步骤有哪些,结果是什么,有无遇到障碍,是怎么解决的</label></div>")
          }
          else
          {
            $('#last_period label').text("提示:在"+window.last_period+"的过程中,主要进行的步骤有哪些,结果是什么,有无遇到障碍,是怎么解决的")
            
        }//这部分是产生提示
          if(document.getElementById("problem")!=undefined){
             var yy = document.getElementById("problem");
            yy.innerHTML = "";
             for(var kkk=0;kkk<yy.childNodes.length;kkk++){
                yy.removeChild(yy.options[kkk]);
                yy.remove(kkk);
                yy.options[kkk] = null;
                 }
          }//这部分是销毁可能已经出现的障碍点下拉框
          var fuck=document.createElement("option");
          fuck.hidden=true;
         fuck.disabled=true;
         fuck.selected=true;
         fuck.text="请选择详情";
         var fuckyou=document.getElementById("if_problem")
         fuckyou.add(fuck,fuckyou.options[null])
          //这部分是把“是否有障碍点”这个下拉框的值设置为空,必须重新选择
        }//第一个下拉框的事件
        window.gradeChange2=function(value)
        {           
            var origin = $('#wp-fg-comment').find("textarea").val();
            var choseable=["(沟通问题)-【异常现象已了解】","(沟通问题)-【异常现象未了解】","(沟通需求效果)-【需求已理解】","(沟通需求效果)-【需求未理解】",
            "(定位问题)-【尚未定位到原因】","(定位问题)-【已定位到原因,提供解决方案】","(定位问题)-【尚未提供解决方案】",
            "(实现需求效果)-【设计方案中】","(实现需求效果)-【给出方案并实现需求】","(实现需求效果)-【给出方案但未实施】","(实现需求效果)-【给出的方案无法满足需求】"
            ,"(三线协助中)-【协助排查】","(三线协助中)-【模块专家/测试/研发查看问题中】","(二次开发)-【协助沟通二次开发需求】","(二次开发)-【二开评估/开发中】","(二次开发)-【二开完成,协助测试】",
            "(给出解决方案)-【顺利解决问题】","(给出解决方案)-【给出方案,待测试】","(给出解决方案)-【给出的方案未解决问题】","(无实质进展)-【观察现象中】","(无实质进展)-【jar包待发布】","(无实质进展)-【客户无响应或暂且搁置问题】"]
            for(let i=0;i<=choseable.length;i++){
                if(origin.indexOf(choseable[i])>=0)
                {
                    origin=origin.replace(choseable[i],"")
                }
            }           
            $('#wp-fg-comment').find("textarea").val("(" + $('#mySelect').val() + ")-【"+value+"】\r\n"+origin )           
        }//第二个下拉框的事件,是把选项填到文本框中去
        //假如文本框中已经有内容,追加到内容之前,限制只能选择一个阶段,那直接replace吧
        window.change_problem=function(value)
        {
            if(value=="是"&&$('#problem_detail').length==0)
                {
                var state_now=$('#mySelect').val()
                if(["沟通问题","沟通需求效果","定位问题","实现需求效果","给出解决方案"].indexOf(state_now)>=0)
                {window.detail_option="<option>客户无网络</option><option>客户难沟通</option><option>客户网络环境复杂</option>"}
                else if(state_now=='三线协助中')
                    {window.detail_option="<option>涉及≥3个部门配合,统筹解决客户问题</option><option>CUSTBUG研发协助过程中,与研发测试进行多次确认或协助定位</option>"}
                else if(state_now=='二次开发')
                {
                    window.detail_option="<option>开发需求和逻辑复杂,承担了与客户和二开团队的辅助沟通</option><option>二次开发完成之后,本地测试是否可用</option>"
                }
                else 
                {
                    window.detail_option="<option>其他,详细说明</options>"
                }
                var problem_detail='<div id="problem"><br/><label>遇到的具体障碍点是...</label><select id="problem_detail" class="aui-field-select select" onchange="detail_choose(this.options[this.options.selectedIndex].text)">'+detail_option+'</select></div>'
                $('#if_problem').after(problem_detail)
                }//创建一个障碍点下拉列表
                if(value=="否"&&$('#problem_detail').length>0)
                {
                     $('#problem').remove();
                     var origin3 = $('#wp-fg-comment').find("textarea").val();
                     var zhangaidian=["客户无网络","客户难沟通","客户网络环境复杂","涉及≥3个部门配合,统筹解决客户问题","CUSTBUG研发协助过程中,与研发测试进行多次确认或协助定位","开发需求和逻辑复杂,承担了与客户和二开团队的辅助沟通","二次开发完成之后,本地测试是否可用"]
             for(let kk=0;kk<zhangaidian.length;kk++)
             {
                origin3=origin3.replace("当前障碍点:"+zhangaidian[kk],"")
             }
                     $('#wp-fg-comment').find("textarea").val("当前无障碍点"+origin3)
                }
        }//是否遇到障碍点,这个下拉框的事件
       window.detail_choose=function(value){
           var origin2 = $('#wp-fg-comment').find("textarea").val();
           var zhangaidian=["客户无网络","客户难沟通","客户网络环境复杂","涉及≥3个部门配合,统筹解决客户问题","CUSTBUG研发协助过程中,与研发测试进行多次确认或协助定位","开发需求和逻辑复杂,承担了与客户和二开团队的辅助沟通","二次开发完成之后,本地测试是否可用"]
             for(let kk=0;kk<zhangaidian.length;kk++)
             {
                origin2=origin2.replace("当前障碍点:"+zhangaidian[kk],"")
             }
             setTimeout(function(){$('#wp-fg-comment').find("textarea").val("当前障碍点:"+value+"\r\n"+origin2.replace("当前无障碍点",""))},200)            
           }
    window.strong=setInterval(function (){
        if($('#log-work-time-accumulated-so-far').length==1&&$('#mySelect').length==0)
            {console.log("我绑定了")            
                if (localStorage.getItem("DontTransfer")=="yes") {
                 console.log("不自动翻译")
                } else {
                $('label[for="log-work-issue-picker-field"]').text("任务")
                $('label[for="log-work-worklog-author-field"]').text("用户")
                $('label[for="log-work-period"]').text("阶段")
                $('label[for="log-work-time-logged"]').text("花费时间")
                $('label[for="log-work-date-logged"]').text("工时开始时间")
                $('label[for="comment"]').text("进展")
                $('#worklogpro-log-work-submit').val("确认记录工时")
                $('[class="aui-form example"]').eq(0).text("(例如 3d 12h 30m,单位需小写)")
                $('[class="wp-copy-to-issue-comments"]').text("复制到任务的评论中")
                $('#wp-fg-estimates label').eq(0).text("                        剩余工作时间")
                }               
                    //以上为翻译功能,根据Localstorage里面存储的DontTransfer值是否为yes来判断,设置语句为localStorage.setItem("DontTransfer", "yes");
                var list = '<div><label>请选择BUG当前所处阶段</label><select id="mySelect"  class="aui-field-select select" onchange="gradeChange(this.options[this.options.selectedIndex].text)" ><option selected>无</option></select><select id="mySelect2"  class="aui-field-select select" onchange="gradeChange2(this.options[this.options.selectedIndex].text)" ><option selected disabled hidden>请选择详情</option></select></div>'
                var problem='<div><br/><label>当前阶段是否遇到障碍?<label><select id="if_problem"  class="aui-field-select select" onchange="change_problem(this.options[this.options.selectedIndex].text)"><option selected>否</option><option>是</option></select></div>'
                var options_array = ["沟通问题", "沟通需求效果","定位问题","实现需求效果","三线协助中","二次开发","给出解决方案","无实质进展"]
if($('.group').length==1){$('.group').after(list+problem);}               
else {$('.group').eq(1).after(list+problem);}
                $('#mySelect').after("<span> </span>")
                var x = document.getElementById("mySelect");                
                for (let i = 0; i < options_array.length; i++) {
                    var option = document.createElement("option");                   
                    option.text = options_array[i];                   
                    x.add(option, x.options[null])                   
                }
 
       }
    }, 300)
 
}
})();