JDbScript

提效gogogo!

当前为 2022-11-23 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==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();
        }
    });
});