Greasy Fork

Greasy Fork is available in English.

快速查包

快速跳转至指定包或指定分支

当前为 2024-01-19 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         快速查包
// @namespace    fsh
// @version      4.6
// @description  快速跳转至指定包或指定分支
// @author       xxtest
// @match        *://ci.meitu.city/*
// @match        *://ios.meitu-int.com/ipa/*
// @match        *://jira.meitu.com/*
// @match        *://cf.meitu.com/*
// @grant        GM_xmlhttpRequest
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @require      https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js
// @homepage     http://greasyfork.icu/zh-CN/scripts/454567-%E5%BF%AB%E9%80%9F%E6%9F%A5%E5%8C%85
// @license MIT
// @note 4.6 支持cf中一键复制Android、iOS进版需求
// @note 4.5 支持创建bug dialog,自动填写build号
// @note 4.4 最近版本日期格式变化,进行适配。屏蔽starii创建djalog无效ui
// @note 4.3 优化跳转至指定build的逻辑
// @note 4.2 添加homepage地址
// @note 4.1 获取分支功能支持Starii
// @note 4.0 一键选择平台、日期功能支持Starii
// @note 3.9 搜索分支功能,支持starii项目
// @note 3.8 starii域名变更,重新适配
// @note 3.7 支持Android跳转starii
// @note 3.6 优化获取未发布版本的方式,避免获取不到新版本
// @note 3.5 更新创建bug Dialog获取分支按钮添加的判断条件
// @note 3.4 支持在备注输入框获取上次分支
// @note 3.3 支持在备注输入框获取分支
// @note 3.2 优化填入分支流程,支持搜索框回车代替点击
// @note 3.1 修复跳转分支时,bug平台获取错误的问题
// @note 3.0 修复跳转分支时,bug平台获取错误的问题
// @note 2.9 获取分支新增异常判断
// @note 2.8 整合代码
// @note 2.7 测试脚本自动升级
// @note 2.6 完善jira页面跳转按钮逻辑
// @note 2.5 修复img节点高度被限制的问题
// @note 2.4 granary支持全项目
// @note 2.3 Bug模版支持一键切换web,删除UpdateUrl和DownloadUrl
// @note 2.2 Cicity支持全项目搜索和跳转
// @note 2.1 添加UpdateUrl和DownloadUrl配置
// @note 2.0 修复无法正确获取版本的问题(参数类型由str转int),填写完毕后主动失去焦点
// ==/UserScript==

(function() {
    'use strict';
    // 设置刷新时间
    const refreshTime = 1000;
    // 添加CSS
    $('head').append($(`
  <style>
  .search{
    position: relative;
    width: 220px;
  }
  .search input{
    height: 42px;
    width: 220px;
    border-radius: 42px;
    border: 2px solid #324B4E;
    background: #F9F0DA;
    transition: .3s linear;
    float: left;
    text-indent: 10px;
  }

  .search input:focus::placeholder{
    opacity: 0;
  }
  .search button{
    height: 42px;
    border-radius: 42px;
    border-right: 1px solid #324B4E;
    border-left: 0px;
    background: #F9F0DA;
    right: 0;
    position: absolute;
  }

  .btn_find_build{
    width: 42px;
    text-align: center;
  }

  .search_span{
    /*border: 1px dashed #000;*/
    cursor: pointer;
    height: 16px;
    margin: 0px 10px;
    padding: 3px;
    border-radius: 25px;
  }

  .to_new_build{
    height: 30px;
    width: 120px;
    border-radius: 42px;
    border: 1px solid #324B4E;
    background: #fff;
    transition: .3s linear;
    color: #544d4d;
    margin: 0px 10px;
    font-size:14px;
  }

  .myimg{
    height:16px;
  }

  </style>`));
    // 当是ci域名时,才触发后续的操作,如果不是则不触发
    // CI
    // CI
    // CI
    if (location.href.indexOf('ci.meitu.city') > 0) {
        clearInterval(refreshTime);
        setInterval(function () {
            let input_find_build = document.getElementById('input_find_build');
            let to_new_build = document.getElementById('to_new_build');
            
            
            // 不存在输入框和跳转按钮则添加
            if (!input_find_build) {
                addFindButtonCicity();

                // 当用户按下键盘上的某个键时触发
                document.addEventListener("keyup", function(event) {
                    // 如果按下的是回车键
                    if (event.keyCode === 13) {
                        // 触发按钮的点击事件
                        $('#btn_find_build').click();
                    }
                });

                // 跳转按钮点击
                $('#btn_find_build').unbind("click").click(function () {
                    // 获取当前url, 用正则表达式获取项目名
                    let localUrl = window.location.href
                    let project = ''
                    let reg = /(?<=build\/)\w*/
                    project = localUrl.match(reg)[0]

                    if(project != null){
                        let baseUrl = 'https://ci.meitu.city/build/' + project + '/'
                        // 获取用户输入
                        let input_build_content = document.getElementById("input_find_build").value.trim()
                        if(input_build_content===""){
                            return false;
                        }
                        let targetUrl = ""
                        // 如果输入的是纯数字,视为build id
                        if(/^\d+$/.test(input_build_content)){
                            targetUrl = baseUrl + 'number/' + input_build_content
                        }else{// 否则按输入的是分支处理
                            input_build_content = input_build_content.replaceAll("/","%2F")
                            targetUrl = baseUrl + 'branch/' + input_build_content
                        }
                        // 跳转到指定页面
                        window.location.href=targetUrl
                    }
                    else{
                        input_find_build.value = "未能正确获取项目名称"
                    }
                });
        
            }
            
            // 不存在跳转至最新按钮则添加
            if(!to_new_build){
                addToNewCicity();
                $('.to_new_build').unbind("click").click(function(){
                    // 判断当前所处的页面, 用正则表达式获取项目名
                    let localUrl = window.location.href
                    let project = ''
                    let reg = /(?<=build\/)\w*/
                    project = localUrl.match(reg)[0]
                    // 获取所要跳转的分支名
                    let full_build_name = this.parentNode.children[0].innerText.trim()
                    let targetUrl = ""
                    let baseUrl = 'https://ci.meitu.city/build/' + project + '/branch/'
                    full_build_name = full_build_name.replaceAll("/","%2F")
                    targetUrl = baseUrl + full_build_name
                    // 跳转到指定页面
                    window.location.href=targetUrl
                });
            }
        }, refreshTime);
    }

    var project_android = {"美图秀秀":"Meitu","美颜相机":"BeautyCam",
                                "美拍":"Meipai","美妆相机":"MakeupPlus",
                                "潮自拍":"SelfieCity","设计室":"HaiBaoPai",
                                "wink":"WINK","BeautyPlus":"BeautyPlus",
                                "AirBrush":"AirBrush","eve":"eve",
                                "chic":"chic","美图宜肤V":"eveking",
                                "EveNetAssist":"evenetassist","VChat":"vchatbeauty",
                                "vcut":"vcut","Vmake":"beautyplusvideo",
                                "PixEngine":"pixengine","智肤APP":"skinar",
                                "美图秀秀Starii":"starii"
                            }
        
    var project_ios = {"美图秀秀":"mtxx","美颜相机":"myxj",
                            "BeautyPlus":"beautyplus","wink":"wink",
                            "潮自拍":"czp","设计室":"hbp",
                            "wink":"WINK","BeautyPlus":"BeautyPlus",
                            "美图秀秀Starii":"starii"
                        }

    // CI页面,添加输入框和跳转按钮
    function addFindButtonCicity() {
        let span = $('<span class="search"></span>')
        let input_find_build = $('<input type="text" class="text" id="input_find_build" placeholder="  输入Build id或分支名">');
        let btn_find_build = $('<button type="submit" class="btn_find_build" id="btn_find_build">🔍</button>');

        span.append(input_find_build);
        span.append(btn_find_build);
        $(".project-label__name").after(span);
    }

    // CI页面,在分支名后方添加跳转至最新按钮
    function addToNewCicity(){
        let to_new_build = $('<button type="submit" class="to_new_build" id="to_new_build">跳转至最新➔</button>');
        $(".message-card__subtitle").after(to_new_build);
    }

    // 当是granary域名时,才触发后续的操作,如果不是则不触发
    // Granary
    // Granary
    // Granary
    if (location.href.indexOf('ios.meitu-int.com') > 0) {
        clearInterval(refreshTime);
        setInterval(function () {
            let input_find_build = document.getElementById('input_find_build');
            let to_new_build = document.getElementById('to_new_build');

            // 项目名
            var project = ''
            var reg = /(?<=ipa\/)\w*/
            // 当前页面Url, 用正则表达式获取项目名
            var localUrl = window.location.href
            project = localUrl.match(reg)[0]

            // 不存在输入框和跳转按钮则添加
            if (!input_find_build) {
                addFindButtonGranary();

                // 当用户按下键盘上的某个键时触发
                document.addEventListener("keyup", function(event) {
                    // 如果按下的是回车键
                    if (event.keyCode === 13) {
                        // 触发按钮的点击事件
                        $('#btn_find_build').click();
                    }
                });

                // 按钮绑定点击事件
                $('#btn_find_build').unbind("click").click(function () {
                    if(project != null){
                        // 获取用户输入
                        let input_build_content = document.getElementById("input_find_build").value.trim()
                        if(input_build_content===""){
                            return false;
                        }
                        let targetUrl = ""
                        // 如果输入的是纯数字,视为build id
                        if(/^\d+$/.test(input_build_content)){
                            let baseUrl = 'http://ios.meitu-int.com/ipa/'+ project + '/build/'
                            targetUrl = baseUrl + input_build_content
                        }else{// 否则按分支处理
                            let baseUrl = 'http://ios.meitu-int.com/ipa/'+ project + '/'
                            input_build_content = input_build_content.replaceAll("/","%2F")
                            targetUrl = baseUrl + input_build_content
                        }
                        // 跳转到指定页面
                        window.location.href=targetUrl
                    }
                    else{
                        input_build_content.value = "未能正确获取项目名称"
                    }
                });
            }

            //不存在跳转至最新按钮则添加
            if(!to_new_build){
                addToNewGranary();
                // 跳转按钮点击
                $('.to_new_build').unbind("click").click(function(event){
                    // 分支名,去掉首尾的字符串,“/”转为“%2F”
                    let parentNode = event.target.parentNode;
                    let branchName = parentNode.querySelector("span.branch-name").innerText.trim()
                    branchName = branchName.substring(1, branchName.length - 1).replaceAll("/","%2F");
                    
                    // 跳转链接
                    let baseUrl = 'http://ios.meitu-int.com/ipa/'+ project + '/'
                    let targetUrl = baseUrl + branchName

                    // 跳转
                    window.location.href=targetUrl
                });
            }
            
        }, refreshTime);
    }

    // granary页面,添加输入框和跳转按钮
    function addFindButtonGranary() {
        let span = $('<span class="search"></span>')
        let input_find_build = $('<input type="text" class="text" id="input_find_build" placeholder=" 输入Build id或分支名">');
        let btn_find_build = $('<button type="submit" class="btn_find_build" id="btn_find_build">🔍</button>');

        span.append(input_find_build);
        span.append(btn_find_build);
        $("#myTab").append(span);
    }

    // granary页面,在分支名后方添加跳转至最新按钮
    function addToNewGranary(){
        let to_new_build = $('<button type="submit" class="to_new_build" id="to_new_build">跳转至最新➔</button>');
        $("div#list-home span.branch-name").after(to_new_build);
    }

    // 当是jira域名时,才触发后续的操作,如果不是则不触发
    // Jira
    // Jira
    // Jira
    if (location.href.indexOf('jira.meitu.com') > 0) {
        clearInterval(refreshTime);
        var counter = 0;
        // 定时器循环操作:页面元素添加等
        setInterval(function () {
            var search_span = document.getElementById('search_span_create');
            // 因为切至iOS按钮和切至Android按钮一般都会成对出现,所以这里只获取iOS按钮,用于判断按钮是否已存在
            var change_side_button = document.getElementById('change_side_ios');
            var create_input = document.getElementById('customfield_10303');
            var create_issue_dialog = document.getElementById('create-issue-dialog');
            var close_bug_dialog = document.getElementById('workflow-transition-21-dialog');
            var reopen_bug_dialog = document.getElementById('workflow-transition-31-dialog');
            var comment_bug_toolbar = document.getElementById('wiki-edit-wikiEdit0');
        
            // 如果不存在bug跳转按钮则添加一个,需要判断url是bug页面而不是bug列表页,否则会报错
            if (!search_span) {
                addButtonJira();
                // 存储bug平台
                GM_setValue('platform', $('#customfield_10301-val').text().trim())
            }

            // 在创建问题dialog添加获取分支按钮组
            if (create_issue_dialog){
                // 加个计时避免按钮显示不出来
                // Bug模版按钮
                if(change_side_button == undefined || change_side_button.length == 0){
                    addChangeSideButton();
                }
                // 获取分支按钮
                if(create_input !== undefined || create_input.length !== 0){
                    var branch_span = $('<label for="customfield_10304"></label>');
                    $("#customfield_10303").after(branch_span)
                    add_get_branch_btn($(branch_span));
                }
                // 隐藏starii项目不必要的UI
                hideUI();
                // 自动填充build号
                fillBuildIdAuto(counter);
                counter++;
            }

            // 自动往指定的input组件中填build号
            function fillBuildIdAuto(counter){
                // 获取输入框内容
                var inputContent = $("#customfield_10303").val();
                // 使用正则表达式检查当前文本内容是否是纯数字
                var isCurrentNumber = /^\d+$/.test(inputContent);
                if (isCurrentNumber) {
                     // 如果当前文本内容是纯数字
                    if (counter % 5 === 0) {
                        // 往输入框内填写
                        set_branch('get_branch_btn','create-issue-dialog')
                        
                    }
                }
            }

            // 在关闭问题dialog 或 重新打开dialog 添加获取分支按钮组
            if (close_bug_dialog || reopen_bug_dialog) {
                var pre_text_button = $('<input class="aui-button" id="close-text" type="button" value="上次填写"></input>');
                var pre_text_btn = document.getElementById('close-text');
                var branch_span_close = $('<span id="close_text">输入id:</span>');
                var input_text_close = $('<input type="text" class="text medium-field" id="build_id_close">');
                setTimeout(function () {
                    if (!pre_text_btn) {
                        $(".jira-dialog-content .form-footer").append(branch_span_close).append(input_text_close);// buildid输入框
                        add_get_branch_btn($(".jira-dialog-content").find(".form-footer"));//获取分支按钮
                        $(".jira-dialog-content .form-footer").append(pre_text_button);//上次填写按钮
                    }
                }, 500);
            }

            // 在备注窗口添加获取分支按钮组
            if (comment_bug_toolbar) {
                var pre_text_span = $('<span id="pre_text">输入id:</span>');
                var pre_text_span_element = document.getElementById('pre_text');
                var input_text = $('<input type="text" class="text medium-field" id="input_text">');
                setTimeout(function () {
                    if (!pre_text_span_element && !close_bug_dialog) {
                        var branch_span = $('<span></span>');
                        branch_span.append(pre_text_span).append(input_text);
                        add_get_branch_btn($(branch_span));
                        $(".security-level .current-level").after(branch_span);
                    }
                }, 500);
            }


            // 获取分支按钮点击事件
            $('#get_branch_btn, #last_branch_btn').unbind("click").click(function(event) {
                setTimeout(function () {
                    // 当前节点的父节点
                    var parentNode = event.target.parentNode;

                    // 如果父节点没有Id属性,则往上遍历
                    while (parentNode != null) {
                        if (parentNode.hasAttribute("id")) {
                            // 找到第一个有id属性的父节点
                            var parentWithId = parentNode;
                            break;
                        }
                        parentNode = parentNode.parentNode;
                    }
                    //  第一个拥有Id的父节点的id
                    let parentId = parentWithId.getAttribute("id");

                    // 获取当前节点id
                    var selfId = event.target.id

                    // 往网页中填入分支名
                    set_branch(selfId, parentId);
                },500);
            });


            function hideUI(){
                // 获取具有id为project-options的div元素
                var projectOptionsDiv = document.getElementById('project-options');
                if(projectOptionsDiv){
                    // 获取data-suggestions属性的值
                    var dataSuggestionsValue = projectOptionsDiv.getAttribute('data-suggestions');
                    var jsonObject = JSON.parse(dataSuggestionsValue);
                    // 项目名
                    var project = jsonObject[0]['items'][0].label.trim();
                    var project_name = project.replace(/\s*\([^)]*\)\s*/, '').trim();
                }else{
                    var project_name = $('#project-name-val').text().trim(); // 项目名
                }
                if(project_name === "美图秀秀Starii"){
                    hideParentNodeById("customfield_10422");
                    hideParentNodeById("customfield_10202");
                    hideParentNodeById("customfield_10305");
                    hideParentNodeById("customfield_11100");
                    hideParentNodeById("customfield_11101");
                    hideParentNodeById("customfield_11102");
                    hideParentNodeById("customfield_10304");
                    hideParentNodeById("fixVersions");
                    hideParentNodeById("reporter");
                    hideParentNodeById("customfield_13601");
                }
            }
            
            // 隐藏指定ID节点的父节点
            function hideParentNodeById(childNodeId){
                // 隐藏bug优先级
                var element = document.getElementById(childNodeId);
                // 检查是否找到了元素
                if (element) {
                    // 获取父节点并将其样式的display属性设置为"none"
                    element.parentNode.style.display = "none";
                }
            }

            // 往网页中填入分支名称
            function set_branch(selfId, parentId) {
                if (selfId === "get_branch_btn") {
                    switch (parentId) {
                        // 创建Bug窗口填写分支
                        case "create-issue-dialog":
                            // bug平台节点和buildId节点
                            var $platform = $('input:radio[name="customfield_10301"]:checked');
                            var $buildId = $('#customfield_10303');

                            // 通过buildId节点(input)定位到bug平台节点(label)
                            var id = $platform.attr("id")
                            var label = document.querySelector("label[for='" + id + "']");
                            
                            // bug平台和buildId
                            try {
                                var platform = label.textContent;
                            } catch (error) {
                                GM_setValue('branch_value', "#请先选择Bug平台");
                                fillInBranch('#customfield_10303');
                                return;
                            }
                            var buildId = $buildId.val();
                            if (buildId === undefined || buildId === ''||buildId === null) {
                                GM_setValue('branch_value', "#请先填写Build号");
                                fillInBranch('#customfield_10303');
                                return;
                            }
                            console.log(platform)
                            // 获取分支名
                            get_branch(platform, buildId);
                            // 填入分支
                            fillInBranch('#customfield_10303');
                            break;

                        // 关闭||重新打开窗口填写分支
                        case "issue-workflow-transition":
                            var $platform = $('#customfield_10301-val');
                            var $buildId = $('#build_id_close');
                        
                            // bug平台和buildId
                            var platform = $platform.text().trim();
                            var buildId = $buildId.val();
                        
                            // 获取分支名
                            get_branch(platform, buildId);
                        
                            // 填入分支
                            fillInBranchTextarea('div#comment-wiki-edit textarea#comment');

                            // 聚焦到输入框
                            sleep(500).then(() => {
                                $('#comment-wiki-edit textarea').focus();
                            })
                            break;
                        // 备注
                        case "issue-comment-add":
                            var $platform = $('#customfield_10301-val');
                            var $buildId = $('#input_text');
                        
                            // bug平台和buildId
                            var platform = $platform.text().trim();
                            var buildId = $buildId.val();
                        
                            // 获取分支名
                            get_branch(platform, buildId);
                        
                            // 填入分支
                            fillInBranchTextarea('div#comment-wiki-edit textarea#comment');

                            // 聚焦到输入框
                            sleep(500).then(() => {
                                $('#comment-wiki-edit textarea').focus();
                            })
                            break;
                        
                        default:
                            
                    }
                  } else if (selfId === "last_branch_btn") {
                    switch (parentId) {
                        case "create-issue-dialog":
                            // 填入分支
                            fillInBranch('#customfield_10303');
                            break;
                    
                        case "issue-workflow-transition":
                            // 填入分支
                            fillInBranchTextarea('div#comment-wiki-edit textarea#comment');
                            break;
                            // 备注 
                        case "issue-comment-add":
                            fillInBranchTextarea('div#comment-wiki-edit textarea#comment');
                            break;
                        default:
                            
                    }
                  }
            }

            // 跳转到创建分支
            $('#search_span_create').unbind("click").click(function () {
                var build_id = getBuildId("customfield_10303-val");
                // 存储bug平台
                GM_setValue('platform', $('#customfield_10301-val').text().trim())
                sleep(500).then(() => {
                    var targetUrl = getBaseUrl() + build_id;
                    window.open(targetUrl);
                })
                
            });

            // 跳转到解决分支
            $('#search_span_solved').unbind("click").click(function () {
                var build_id = getBuildId("customfield_10304-val");
                // 存储bug平台
                GM_setValue('platform', $('#customfield_10301-val').text().trim())
                sleep(500).then(() => {
                    var targetUrl = getBaseUrl() + build_id;
                    window.open(targetUrl);
                })
            });

            // 切换到iOS bug模版
            $('.ios').unbind("click").click(function () {
                changeBugPlatform('iOS')
            });

            // 切换到Androidbug模版
            $('.android').unbind("click").click(function () {
                changeBugPlatform('Android')
            });

            // 切换到Webbug模版
            $('.web').unbind("click").click(function () {
                changeBugPlatform('Web')
            });

            // 点击关闭问题按钮,记录下填写的内容
            var text_area = $('.jira-dialog-content').find('#comment')
            $('#issue-workflow-transition-submit').unbind("click").click(function(){
                if($('#issue-workflow-transition-submit').val().trim()=="关闭问题"){
                    // 存储bug平台
                    GM_setValue('closeText',text_area.val().trim())
                }
            })

            // 点击上次填写按钮,填充上次填写的内容
            $('#close-text').unbind("click").click(function(){
                text_area.val(GM_getValue('closeText'))
                text_area.focus()
            })

            // TODO:点击「创建」按钮时记录下所有的bug信息
            const $createBtn = $('#create-issue-submit');
            const $summary = $('#summary');
            const $business = $('input:radio[name="customfield_12903"]:checked');
            const $platform = $('input:radio[name="customfield_10301"]:checked');
            const $path0 = $("#selectCFLevel0 option:selected");
            const $path1 = $("#selectCFLevel1 option:selected");
            const $assignee = $("#assignee-field");
            const $severity = $("#customfield_10406 option:selected");
            const $version = $("#versions-multi-select .value-text");
            const $find = $("#customfield_10202 option:selected");
            const $frequency = $("#customfield_10204 option:selected");
            const $branch = $("#customfield_10303");
            const $step = $("#customfield_10203");
            const $tips = $("#labels-multi-select .representation .value-text");

            $createBtn.unbind('click').click(function() {
                const bugDict = {
                    'summary': $summary.val(),
                    'business': $business.attr("id"),
                    'platform': $platform.attr("id"),
                    'path0': $path0.text(),
                    'path1': $path1.text(),
                    'assignee': $assignee.val(),
                    'severity': $severity.text(),
                    'version': $version.text(),
                    'find': $find.attr("value"),
                    'frequency': $frequency.attr("value"),
                    'branch': $branch.val(),
                    'step': $step.val(),
                    'tips': $tips.text()
                };
                GM_setValue('bugDict', bugDict);
            });

            // 点击再提一个
            // 已知问题:1. 路径2无法填写
            $('#once-again').unbind('click').click(function() {
                const bugDict = GM_getValue('bugDict');
              
                function setValue(selector, value) {
                  $(selector).val(value);
                }
                function setChecked(selector, value) {
                  $(selector).attr("checked", value);
                }
                function setSelected(selector, value) {
                  $(selector).find(`option[value='${value}']`).attr("selected", true);
                }
              
                console.log(bugDict);
                setValue("#summary", bugDict.summary);
                setChecked(`input[id=${bugDict.business}]`, true);
                setChecked(`input[id=${bugDict.platform}]`, true);
                setValue("#selectCFLevel0", bugDict.path0);
                setValue("#selectCFLevel1", bugDict.path1);
                setValue("#assignee-field", bugDict.assignee);
                // $('#assignee').append($('<option>', {
                //     value: '[email protected]',
                //     text: '丘文坚',
                //     title: "undefined",
                //     selected: "selected",
                //     style: "background-image: url(\"https://jira.meitu.com/secure/useravatar?size=xsmall&ownerId=qwj%40meitu.com&avatarId=13404\");"
                // }));
                setSelected("#customfield_10406", bugDict.severity);
                setValue("#versions-textarea", bugDict.version);
                setSelected("#customfield_10202", bugDict.find);
                //setSelected("#customfield_10204", bugDict.frequency);
                setValue("#customfield_10303", bugDict.branch);
                setValue("#customfield_10203", bugDict.step);
                //setValue("#labels-textarea",bugDict.tips)
            });
              
        }, refreshTime);
        
        
    }

    // 在输入框中填入分支
    // 这里必须加上500ms的延时,否则get_branch尚未填写完成时就会调用该方法,导致填写之前存储的内容
    function fillInBranch(inputSelector) {
        setTimeout(function() {
            var inputElement = $(inputSelector);
            inputElement.val("").val(GM_getValue('branch_value'));
        }, 500);
    }
    
    // 在文本区域中填入分支
    function fillInBranchTextarea(textareaSelector) {
        setTimeout(function() {
            var textareaElement = $(textareaSelector);
            textareaElement.val("").val(GM_getValue('branch_value'));
        }, 500);
    }

    // 在指定节点后添加获取分支按钮
    function add_get_branch_btn(targetElement) {
        var branch_btn = $('<input type="button" class="aui-button" value="获取分支" id="get_branch_btn">');
        var last_branch_btn = $('<input type="button" class="aui-button" value="上次分支" id="last_branch_btn">');
        targetElement.append(branch_btn).append(last_branch_btn)
    }

    // 根据build号,请求接口获取分支
    function get_branch(platform, build_id) {
        //console.log(platform+ "接收到的" + build_id)
        var url = '';
        var branch = '';
        var result = '';
        
        // 获取具有id为project-options的div元素
        var projectOptionsDiv = document.getElementById('project-options');
        if(projectOptionsDiv){
            // 获取data-suggestions属性的值
            var dataSuggestionsValue = projectOptionsDiv.getAttribute('data-suggestions');
            var jsonObject = JSON.parse(dataSuggestionsValue);
            // 项目名
            var project = jsonObject[0]['items'][0].label.trim();
            var project_name = project.replace(/\s*\([^)]*\)\s*/, '').trim();
        }else{
            var project_name = $('#project-name-val').text().trim(); // 项目名
        }

        if (platform === 'iOS') {
            url = 'http://ios.meitu-int.com/ipa/'+ project_ios[project_name] +'/build/' + build_id;
        }else if (platform === 'Android') {
            url = 'https://api-ci-data.meitu.city/ci/api/v2/build?project='+ project_android[project_name]+ '&build=' + build_id;
        }else {
            url = 'https://api-ci-data.meitu.city/ci/api/v2/build?project='+ project_android[project_name]+ '&build=' + build_id;
        }
        GM_xmlhttpRequest({
            url: url,
            method: 'GET',
            onload: function(res) {
                if (res.status === 200) {
                    var r = '';
                    if (platform === 'iOS') {
                        r = '<span class="branch-name">(.*?)</span>';
                    } else if (platform === 'Android') {
                        r = '"branch":"(.*?)"';
                    } else{
                        r = '"branch":"(.*?)"';
                    }
                    
                    branch = res.responseText.match(r)[1];
                } else {
                    branch = ''
                }
                // branch的值存在$符时,设置为空
                // branch的值为空时,设置返回结果为提示语
                branch = branch.indexOf('$') != -1 ? '' : branch;
                result = branch == '' ? "未找到该包的分支" : branch + '#' + build_id;
                GM_setValue('branch_value', result);
            },
            onerror: function(err) {
                result = '接口请求失败,建议重新关闭开启脚本再试试';
                GM_setValue('branch_value', result);
            }
            
        });
    }

    //在jira页面添加跳转到分支按钮
    function addButtonJira(){
        // 创建分支按钮添加
        var span_create = $('<span class="search_span" id="search_span_create" style=""></span>')
        // 添加图片
        var search_image = "data:image/png;base64,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"
        var img = document.createElement('img');
        img.className = "myimg"
        img.src = search_image;
        span_create.append(img);
        $("#customfield_10303-val").after(span_create);
        // 解决分支按钮添加
        var span_solved = $('<span class="search_span" id="search_span_solved"></span>')
        var img2 = document.createElement('img');
        img2.className = "myimg"
        img2.src = search_image;
        span_solved.append(img2);
        $("#customfield_10304-val").after(span_solved);
    }

    // 正则表达式获取build号
    function getBuildId(elementId) {
        var create_build_content = document.getElementById(elementId).textContent.trim();
        var reg = /#?(\d{1,5})$/;
        var build_id_array = create_build_content.match(reg);
        var build_id = '';
        if (build_id_array == null || build_id_array.length == 0) {
            console.log("未识别到build号");
        } else {
            build_id = build_id_array[0];
            var reg_num = /#?(\d{1,5})$/;
            build_id = build_id.match(reg_num)[0].replace('#', '');
        }
        return build_id;
    }
                        
    // 根据不同的项目,Bug平台拼接url
    function getBaseUrl() {
        var baseUrl = '';
        var project_name = $('#project-name-val').text().trim(); // 项目名
        var platform = $('#customfield_10301-val').text().trim(); //平台
        // TODO:兼容不同的项目
        switch (platform) {
            case 'iOS':
                baseUrl = 'http://ios.meitu-int.com/ipa/'+ project_ios[project_name] +'/build/';
                break;
            case 'Android':
                baseUrl = 'https://ci.meitu.city/build/'+ project_android[project_name] +'/number/';
                break;
            default:
                baseUrl = 'https://ci.meitu.city/build/Meitu/number/';
        }
        return baseUrl;
    }

    // 在创建Bug页面添加Bug模版(iOS、Android、Web)按钮
    function addChangeSideButton(){
        // 创建分支按钮添加
        var btn_ios = $('<button class="ios aui-button" id="change_side_ios" type="button" style="">iOS</button>')
        var btn_android = $('<button class="android aui-button" id="change_side_android" type="button" style="">Android</button>')
        var btn_web = $('<button class="web aui-button" id="change_side_web" type="button" style="">Web</button>')
        var btn_once_again = $('<button class="once-again aui-button" id="once-again" type="button" style="">再提一个</button>')
        $(".jira-dialog-content").find(".form-footer").append(btn_ios).append(btn_android).append(btn_web).append(btn_once_again)
    }

    // 点击按钮更换Bug模版,如:iOS、Android、Web
    function changeBugPlatform(platform){
        var project_name = $('#project-name-val').text().trim(); // 项目名
        switch(project_name){
            case "美图秀秀":
                if(platform == "iOS"){
                    document.getElementById('customfield_12903-1').checked = true
                    document.getElementById('customfield_10301-2').checked = true
                }else if(platform == "Android"){
                    document.getElementById('customfield_12903-1').checked = true
                    document.getElementById('customfield_10301-1').checked = true
                }else if(platform == "Web"){
                    document.getElementById('customfield_12903-1').checked = true
                    document.getElementById('customfield_10301-3').checked = true
                }
                break;
            case "美图秀秀Starii":
                if(platform == "iOS"){
                    document.getElementById('customfield_10301-2').checked = true
                }else if(platform == "Android"){
                    document.getElementById('customfield_10301-1').checked = true
                }else if(platform == "Web"){
                    document.getElementById('customfield_10301-3').checked = true
                }
                break;
            default:
                if(platform == "iOS"){
                    document.getElementById('customfield_10301-2').checked = true
                }else if(platform == "Android"){
                    document.getElementById('customfield_10301-1').checked = true
                }else if(platform == "Web"){
                    document.getElementById('customfield_10301-3').checked = true
                }
        }


        // 获取当前的月份和日期
        const date = new Date()
        const today = date.getDate()
        const curmonth = date.getMonth()+1
        // 获取大于且最接近当前日期的版本
        let minNum = 99
        let similarDate = ""

        // 获取 <optgroup> 元素
        let optgroup = $('.aui-field-versionspicker').find('.multi-select-select').find('[label="未发布版本"]')[0]
        // 获取 <option> 元素集合
        let options = optgroup.getElementsByTagName("option");  
        for(let i = 0; i < options.length; i++){
            let option = options[i];
            let text = option.textContent.trim();
            if(text.toLowerCase().indexOf(platform.toLowerCase())<0){
                continue;
            }else{
                //console.log(text);//打印获取到的版本号
                let startNum = text.lastIndexOf("(") !== -1 ? text.lastIndexOf("(") : text.lastIndexOf("(");
                let endNum = text.lastIndexOf(")") !== -1 ? text.lastIndexOf(")") : text.lastIndexOf(")");
                // theDateStr是形似「1109」的日期形式,下面拆分出月份和日期; theMonth形如「02」,theDate形如「18」
                // theDateStr还有可能是「11.9」的形式,需要对有无小数点进行判断
                let theDateStr = text.slice(startNum + 1, endNum)
                let theMonth = ""
                let theDate = ""
                if (theDateStr.includes('.')) {
                    // 使用 split 方法分割小数点前后的数字
                    let parts = theDateStr.split(".");
                    // 获取小数点前面的数字
                    theMonth = parts[0];
                    // 获取小数点后面的数字
                    theDate = parts[1];

                } else {
                    theMonth = parseInt(theDateStr.slice(4,6))// 2022-12-11调整,theDateStr变为20221109的形式,所以调整slice的区间;原本为(0,2)(2)
                    theDate = parseInt(theDateStr.slice(6))
                }

                if(theMonth<curmonth){
                    continue;
                }else if (theMonth==curmonth){
                    if(theDate-today>=0 && theDate-today<minNum){
                        similarDate = theDateStr
                        minNum = theDate-today
                    }
                }else if (theMonth==curmonth+1){
                    let monthDuration = getDuration()
                    let daysToEnd = monthDuration-today
                    if((theDate + daysToEnd) < minNum){
                        similarDate = theDateStr
                        minNum = theDate+daysToEnd
                    }
                }
            }
            
        }

        // console.log(similarDate)
        // 删掉「影响版本」文本框中的内容
        let div = document.getElementsByClassName('representation')[0]
        let emarr = div.getElementsByTagName('em')
        for(let i=0;i<emarr.length;i++){
            // 这里全部都点击的emmarr[0],是因为第一个节点被删除掉之后,后面的素材会顶上来成为新的第0位节点,加个200ms延时,避免点击不到
            sleep(200).then(() => {
                emarr[0].click()
            })
        }

        // 在「影响版本」文本框填入内容
        for(let i=0;i<options.length;i++){
            let option = options[i];
            let text = option.textContent.trim();
            // 如果a节点当中,存在目标日期字段,且平台与点击的一致,就把a节点的text填入到文本框中
            if(text.indexOf(similarDate)>0 && text.toLowerCase().indexOf(platform.toLowerCase())>0){
                $("#versions-textarea").val(text)
                // 获取控件焦点
                $("#versions-textarea").focus()
                // 主动失去当前控件的焦点
                $("#versions-textarea").blur()
            }
        }
    }

    // 获取当前月份有多少天
    function getDuration () {
        let dt = new Date()
        var month = dt.getMonth()
        dt.setMonth(dt.getMonth() + 1)
        dt.setDate(0)
        return dt.getDate()
    }

    // sleep方法,用于延迟一些操作
    function sleep (time) {
        return new Promise((resolve) => setTimeout(resolve, time));
    }

    // 当是CF域名时,才触发后续的操作,如果不是则不触发
    // CF
    // CF
    // CF
    if (location.href.indexOf('cf.meitu.com') > 0) {
        // 获取ul元素
        var menuBars = document.getElementsByClassName("ajs-menu-bar");
        var menuBar = menuBars[0];

        // 创建两个li元素
        var li1 = document.createElement("li");
        var li2 = document.createElement("li");
        li1.className = "ajs-button normal"
        li2.className = "ajs-button normal"

        // 创建两个button元素
        var button1 = document.createElement("button");
        var button2 = document.createElement("button");

        // 设置按钮文本
        button1.textContent = "复制Android需求";
        button2.textContent = "复制iOS需求";

        // 设置按钮ID
        button1.id = "Android"
        button2.id = "iOS"

        // 设置按钮Class
        button1.className = "aui-button aui-button-subtle edit"
        button2.className = "aui-button aui-button-subtle edit"

        // 将button元素添加到li元素中
        li1.appendChild(button1);
        li2.appendChild(button2);

        // 将li元素添加到ul元素中
        menuBar.appendChild(li1);
        menuBar.appendChild(li2);

        // 将li元素放在menuBar的最前
        menuBar.insertBefore(li2, menuBar.firstChild);
        menuBar.insertBefore(li1, menuBar.firstChild);

        getRequirementArray("Android");
        getRequirementArray("iOS");
    }


    function getRequirementArray(platform){
        // 获取相应的按钮
        var platformButton = document.getElementById(platform);
        // 添加点击事件处理程序
        platformButton.addEventListener("click", function(event) {
            // 创建一个空数组,用于存储每个需求名称
            var androidArray = [];
            var iosArray = [];
            // 记录每个需求所处的列数,用于获取打勾状态
            var androidTd = '3';
            var iosTd = '4';
            var cppTd = '5';
            // 获取具有aria-live属性为"polite"的tbody元素
            var politeTbodies = document.querySelectorAll('tbody[aria-live="polite"]');
            politeTbodies.forEach(function(tbody) {
                // 获取tbody下的所有tr元素
                var rows = tbody.querySelectorAll('tr');
                // 遍历tr
                rows.forEach(function(row) {
                    // 第二个td中的文本内容 ---> 对应需求名称
                    var secondTdText = row.querySelector('td:nth-child(2) a').textContent.trim();
                    // Android有打勾的项目放入Android数组
                    getArrayByCheckedLi(row,androidTd,secondTdText,androidArray)
                    // iOS有打勾的项目放入iOS数组
                    getArrayByCheckedLi(row,iosTd,secondTdText,iosArray)
                    // 中间架构有打勾的项目放入双端数组
                    let blackWord = '底层先行';
                    // 不含底层先行的可放入
                    if (secondTdText.indexOf(blackWord) === -1){
                        let platformAndroid = "Android";
                        let platformiOS = "iOS"
                        if (secondTdText.indexOf(platformAndroid) === -1 && secondTdText.indexOf(platformiOS) !== -1){
                            getArrayByCheckedLi(row,cppTd,secondTdText,iosArray);
                        }else if(secondTdText.indexOf(platformAndroid) !== -1 && secondTdText.indexOf(platformiOS) === -1){
                            getArrayByCheckedLi(row,cppTd,secondTdText,androidArray);
                        }else{
                            getArrayByCheckedLi(row,cppTd,secondTdText,androidArray);
                            getArrayByCheckedLi(row,cppTd,secondTdText,iosArray);
                        }
                    }
                    
                });
            });
            var buttonPlatform = event.target.id;
            if(buttonPlatform === "Android"){
                copyArrayToClipboard(androidArray);
            }else if(buttonPlatform==="iOS"){
                copyArrayToClipboard(iosArray);
            }
        });
    }


    // 获取tr元素中的第N个td元素,并检查其中的li元素是否为选中状态,选中的话则添加需求名字段到数组
    function getArrayByCheckedLi(row,tdNum,requirementName,array){
        var tdElement = row.querySelector('td:nth-child(' + tdNum + ')');
        var liElement = tdElement.querySelector('li.checked');
        if(liElement) {
            addToUniqueArray(array,requirementName)
        }
    }


    // 往数组内添加不重复的元素
    function addToUniqueArray(arr, element) {
        if (arr.indexOf(element) === -1) {
            arr.push(element);
        }
    }


    // 将数组转化为字符串进行拷贝
    function copyArrayToClipboard(arr) {
        // 将数组转换为字符串
        var arrayString = arr.join('\n');  // 使用逗号和空格分隔数组元素
    
        // 创建一个新的textarea元素
        var textarea = document.createElement('textarea');
        
        // 设置textarea的值为数组转换后的字符串
        textarea.value = arrayString;
    
        // 将textarea元素添加到DOM中
        document.body.appendChild(textarea);
    
        // 选中textarea中的文本
        textarea.select();
    
        try {
            // 尝试执行复制操作
            document.execCommand('copy');
            console.log('数组已复制到剪贴板');
        } catch (err) {
            console.error('复制到剪贴板失败: ', err);
        } finally {
            // 移除textarea元素
            document.body.removeChild(textarea);
            // js提示复制成功
            showCopySuccessMessage()
        }
    }

    /**
     * 复制成功提示
     */
    function showCopySuccessMessage() {
        // 创建一个提示框
        var messageBox = document.createElement('div');
        messageBox.textContent = '复制成功!';
        messageBox.style.position = 'fixed';
        messageBox.style.top = '50%';
        messageBox.style.left = '50%';
        messageBox.style.transform = 'translate(-50%, -50%)';
        messageBox.style.padding = '10px';
        messageBox.style.background = '#4CAF50';
        messageBox.style.color = 'white';
        messageBox.style.borderRadius = '5px';
        messageBox.style.zIndex = '9999';
    
        // 将提示框添加到DOM中
        document.body.appendChild(messageBox);
    
        // 2秒后移除提示框
        setTimeout(function() {
            document.body.removeChild(messageBox);
        }, 2000);
    }

    // Your code here...
    
      
})();