JDbScript

提效gogogo!

Version au 23/11/2022. Voir la dernière version.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

You will need to install an extension such as Tampermonkey to install this script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         JDbScript
// @namespace    http://[email protected]/
// @version      0.1
// @description  提效gogogo!
// @author       JDb
// @compatible   chrome
// @compatible   firefox
// @match        *://*.shizhuang-inc.com/*
// @match        *://*.shizhuang-inc.net/*
// @match        *://open.feishu.cn/*
// @match        *://home.console.aliyun.com/*
// @include      *://signin.aliyun.com/poizon.onaliyun.com/*
// @license MIT
// @run-at       document-start
// @require      http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// ==/UserScript==
var 测试 = 80;//P
var 评测默认没问题 = 79;//O
// 键盘编码表  https://jingyan.baidu.com/article/fedf073780e16335ac8977a4.html
// console    document.querySelector("video").playbackRate=

//获取所有 class 同时包括 'red' 和 'test' 的元素.
//document.getElementsByClassName('red test');

//在id 为'main'的元素的子节点中,获取所有class为'test'的元素
//document.getElementById('main').getElementsByClassName('test');




//统一登录平台
var poizonLoginAliyunUrl="https://prism.shizhuang-inc.com/account/cloudy/account/my";
//阿里云控制台
var ailiyunConsoleUrl="https://home.console.aliyun.com/home/dashboard/ProductAndService";
//poizon登录 飞书扫码
var poizonLoginUrl="https://sso.shizhuang-inc.com/?returnUrl=https://prism.shizhuang-inc.com/account/cloudy/account/my";
//poizon登录 飞书授权
var poizonLoginUrl2="https://open.feishu.cn/open-apis/authen/v1/user_auth_page_beta?app_id=cli_9eca60ff3b28d102&redirect_uri=https://sso.shizhuang-inc.com&state=https://prism.shizhuang-inc.com/account/cloudy/account/my";

(function() {
    'use strict';
    window.onload = ()=>{
        doTask();
    }
})();
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

//页面加载后执行
async function doTask(){
    log("doTask document.domain:"+document.domain)
    log("doTask currentUrl:"+decodeURIComponent(location.href.split('#')[0]))
    await sleep(300);
    var ele
    var eleArr

    //自动登录
    log("1.尝试 自动登录阿里云")
    if(isUrlOrDomainMatch("signin.aliyun.com")||isUrlMatch(poizonLoginAliyunUrl)||isUrlMatch(ailiyunConsoleUrl)){
        log("是阿里云登录页面")
        autoLoginAliyun()
        return;
    }

    log("2.尝试 自动登录poizon")
    if(isUrlOrDomainMatch(poizonLoginUrl)||isUrlOrDomainMatch(poizonLoginUrl2)){
        log("是poizon登录页面")
        autoLoginPoizon()
        return;
    }


    log("x.未知页面")

//     clickTag('button','飞书登录',false)
//     clickTag('button','授 权',false)
//     clickTag('button','登录',false)
//     clickTag('button','审批通过',false)
//     clickTag('input','登录',false)
//     clickTag('div','授权',false)

    // await sleep(300)
    // clickTag('button','飞书扫码登录')
}

async function autoLoginAliyun(){
    //1.打开公司登录页面
    if(hasTag('button','使用企业账号登录') && "signin.aliyun.com"===document.domain ){
        log("autoLoginAliyun.1.打开公司登录页面")
        window.open("https://prism.shizhuang-inc.com/cloud/cloudy",'_blank');
        return
    }
    //2.点开控制台登录
    if("prism.shizhuang-inc.com"===document.domain){
        log("autoLoginAliyun.2.点开控制台登录")
        if(await clickTagPlus('button','控制台登陆',true,20)){
            log("点击控制台登陆成功")
            window.close()
        }else{
            error("点击控制台登陆失败")
        }
        return
    }

    sleep(1000)
    //3.关闭阿里云控制台
    if("home.console.aliyun.com"===document.domain){
        log("autoLoginAliyun.3.关闭阿里云控制台")
        window.close()
        return
    }
}

function autoLoginPoizon(){
    //1.飞书扫码登录
    if(isUrlOrDomainMatch(poizonLoginUrl)){
        log("autoLoginPoizon.1")
        clickTag('button','飞书扫码登录')
        return
    }
    //2.授权
        if(isUrlOrDomainMatch(poizonLoginUrl2)){
        log("autoLoginPoizon.1")
            clickTag('div','授权',false)
        return
    }

}


function log(str){
    var d=new Date()
    var s=d.getMinutes()+":" + d.getSeconds() + "  "+ str;
    console.log('%c'+s,'color:green;fontpsize:35px;')
}
function error(str){
    var d=new Date()
    var s=d.getMinutes()+":" + d.getSeconds() + "  "+ str;
    console.error('%c'+s,'color:red;fontpsize:35px;')
}




//域名或完整地址匹配
function isUrlOrDomainMatch(urlOrDamin){
    // log("isUrlOrDomainMatch.urlOrDamin:"+isUrlOrDomainMatch.urlOrDamin)
    return isUrlMatch(urlOrDamin)||isDomainMatch(urlOrDamin)
}
//完整地址匹配
function isUrlMatch(url){
    if(decodeURIComponent(location.href.split('#')[0])===url){
        log("matchUrlSuccess:"+url)
        return true
    }
   error("matchUrlFail:"+url)
    return false
}
//域名匹配
function isDomainMatch(domain){
    if(domain===document.domain){
        log("domainMatchSuccess:"+domain)
        return true
    }
   error("domainMatchFail:"+domain)
    return false
}



//ark自动审批
async function autoCheckArk(){
    log("autoCheckArk()")
    log(window.location.href)

    var eleArr
    var rs
    if(window.location.href.indexOf("ark.shizhuang-inc.com/approveList?")!=-1
       ||
       window.location.href.indexOf("ark.shizhuang-inc.com/ark/approveList?")!=-1
      ){
        log("进入ark list")
        retry(()=>clickTag('a','详情',true))
        await sleep(1000)

        if(await retry(()=>clickTag('button','审批通过',true))){
            retry(()=>clickTag('button','返回',true))
        }
    }
}

//是否有当前指定标签
async function hasTag(tag,val){
    await sleep(500);
    var eleArr = document.getElementsByTagName(tag);
    var rs=false
    for( var i=0; i<eleArr.length; i++ ){
        // log("value="+eleArr[i].value+" innerText="+eleArr[i].innerText)
        if(val===eleArr[i].innerText||val===eleArr[i].value){
            rs= true
        }
    }
    return rs;
}

//带重试的点击行为
async function clickTagPlus(tag,val,onlyFirst,retries){
    for(var i=0;i<retries;i++){
        log("第"+(i+1)+"次点击:"+val)
        if(await clickTag(tag,val,onlyFirst)){
            return true;
        }
        await sleep(1000);
    }
    return false;
}

//点击行为
async function clickTag(tag,val,onlyFirst){
    await sleep(500);
    // log("clickTag(" + val + ")")
    var eleArr = document.getElementsByTagName(tag);
    var rs=false
    for( var i=0; i<eleArr.length; i++ ){
        // log("value="+eleArr[i].value+" innerText="+eleArr[i].innerText)
        if(tag==='button'){
            if(val===eleArr[i].innerText.trim()||val===eleArr[i].value.trim()){
                eleArr[i].click()
                // log("点击"+val)
                rs= true
            }
        }else{
            if(val==eleArr[i].innerText){
                eleArr[i].click()
                // log("点击"+val)
                rs= true
            }
        }
        if(onlyFirst && rs){
            return rs;
        }
    }
    return rs;
}

//重试
async function retry(asyncRequest) {
    var times=2
    log("尝试调用"+asyncRequest)
    while(!await asyncRequest()){
        log("等待500ms 再次尝试")
        await sleep(500)
    }
    return true;
}
//满意度评测默认没问题
function autoCheck(){
    var eleArr = document.getElementsByTagName('input');
    var rs=false
    for( var i=0; i<10; i++ ){
        eleArr[i].click()
    }
    clickTag('input','没问题',false)
}


$(document).ready(function() {
    //调用键盘编码,按了键盘回调keydown里的function(event)函数,event就是你按的那个按键的code码

    // var 测试 = 80;//P
    // var 评测默认没问题 = 79;//O
    $(document).keydown(function(event){
        switch(event.keyCode){
            case 测试:
                // autoCheckArk();
                doTask();
                break;
            case 评测默认没问题:
                // autoCheck();
        }
    });
});