JDbScript

提效gogogo!

目前為 2022-11-23 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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();
        }
    });
});