使用油猴脚本,自动填写Jira任务

Jack_孟 / 2023-08-18 / 原文

公司使用Jira作为日常管理,所以Jira填写就比较频繁了,我做了一个示例,剩下的功能就各位自己添加吧!

// ==UserScript==
// @name         Jira填写
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  自动填充,每周填写的任务计划
// @author       Jack Meng
// @match        http://jira.cares.sh.cn/secure/CreateSubTaskIssue.*
// @match        http://jira.cares.sh.cn/browse/*
// @icon
// @run-at       document-end
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Your code here...


    Date.prototype.Format = function(fmt){
        var o = {
            "M+" : this.getMonth()+1,                 //月份
            "d+" : this.getDate(),                    //
            "h+" : this.getHours(),                   //小时
            "m+" : this.getMinutes(),                 //
            "s+" : this.getSeconds(),                 //
            "q+" : Math.floor((this.getMonth()+3)/3), //季度
            "S"  : this.getMilliseconds()             //毫秒
        };
        if(/(y+)/.test(fmt))
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
        for(var k in o)
            if(new RegExp("("+ k +")").test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        return fmt;
    }


    var loginfo=(msg)=>console.log(`%c【${new Date().Format("yyyy-MM-dd hh:mm:ss")}】%c ========> ${msg}`,"background:red; padding: 1px; border-radius: 3px;","background:transparent");

    var subTask = $("#stqc_show");
    if(subTask.length>0)
    {
        loginfo("已找到添加子任务按钮")
        subTask[0].onclick=()=>{
            loginfo("添加子任务onClick事件监听。");
            setTimeout(AddFun,1000);
        }
    }
    else
    {
        loginfo("未找到添加子任务按钮")
    }

    function AddFun()
    {
        var isAdd=false;
        var host = window.location.host;
        if(host=="jira.cares.sh.cn")
        {
            var par = document.getElementById("span_userinfo");
            loginfo("注入填充数据按钮");

            par = $(".form-footer")[0];//field-group
            if(par==undefined) return isAdd;
            var f = par.firstElementChild;

            //填充1周
            var a = document.createElement("a");
            a.id="aLink";
            a.href="#";
            a.style="vertical-align: middle;margin-right: 10px;";
            a.target="_blank"
            a.onclick = ()=>fillData(14);
            a.innerText="填充1周";
            par.insertBefore(a,f);

            //填充2周
            var a2 = document.createElement("a");
            a2.id="aLink2";
            a2.href="#";
            a2.style="vertical-align: middle;";
            a2.target="_blank"
            a2.onclick = ()=>fillData(21);
            a2.innerText="填充2周";
            par.insertBefore(a2,f);

            //填充2周--按钮
            var a3 = document.createElement("input");
            a3.id="btnFillData";
            a3.type="button";
            a3.className="aui-button aui-button-primary";
            a3.onclick = ()=>fillData(21);
            a3.value="填充2周";
            //par.insertBefore(a3,f);

            isAdd=true;
        }
        return isAdd;
    }

    var fillData = (dayCount)=>{
        loginfo(`给页面表单填充下${dayCount==14?"":"下"}周数据`);
        $("#summary")[0].value=$("#summary-val")[0].innerText+"子任务";
        var d = new Date();
        d.setDate(d.getDate()+ dayCount - d.getDay());
        $("#duedate")[0].value=d.toLocaleDateString('zh');
        $("#timetracking_originalestimate")[0].value='1w';
        $("#timetracking_remainingestimate")[0].value='1w';
        $("#assign-to-me-trigger")[0].click();

        return false;
    }



    // 创建一个定时器,每秒执行一次任务,如果任务完成或超过尝试次数时,停止执行
    /*     var taskCount=0;
    var intervalId = setInterval(function() {
        // 执行任务
        var taskIsFinished = AddFun();// 在这里执行你的任务,并返回执行结果
        taskCount++;
        // 如果任务完成或尝试指定次数时,停止定时器
        if (taskIsFinished || taskCount > 10) {
            clearInterval(intervalId);
        }
    }, 1000); */


})();
View Code