EKP前端/EKP-V16开发功能强化/快速切换用户 - 账号密码方式(public)

笔记最新地址:https://app.yinxiang.com/fx/d1542e89-6b82-41ba-b945-67b1c3e55237

 

1、下载浏览器插件:tampermonkey

该插件在Edge、Chrome、Firefox等均可下载安装

谷歌tampermonkey插件包:下载

2、添加自动脚本

1)打开tampermonkey管理面板

2)添加脚本

代码如下:

// ==UserScript==
// @name         XPOALogin
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       You
// @match        localhost:10086/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=tampermonkey.net
// @grant        none
// ==/UserScript==


(function () {
    'use strict';

    /************************************************************ 配置此处变量(注意:通过auto_switchUser触发的函数无法使用) *************************************************/
    const pws = '10086;10086;123456;123456789';// 统一密码(未知bug,需让第1第2个密码相同)
    const onlyOne = false;// true当搜索结果只有一个时,自动切换;false当搜索结果只有一个时还需输入序号或直接回车才可切换
    const domain = 'localhost:10086';// 域名+端口(例如localhost:10086,同时需将本文件的@match修改成localhost:10086/*)
    const url = window.location.href;// 当前页面url
    /*************************************************************************** 以下代码无需修改 **********************************************************************/
    let innerHtml =
        '<script>' +
        '   auto_login = ' + auto_login + ';' +
        '   onlyOne = ' + onlyOne + ';' +
        '   hideSwitch = ' + hideSwitch + ';' +
        '   auto_switchUser = ' + auto_switchUser + ';' +
        '   toPage = ' + toPage + ';' +
        '   auto_searchUser = ' + auto_searchUser + ';' +
        '   auto_backToLogin = ' + auto_backToLogin + ';' +
        '</script>' +
        "<button id='auto_btn_hideswitch' class='lui-component lui_widget_btn lui-praise-btn' style='height: auto;color: #494949;' onclick='hideSwitch()'>▼</button>" +
        "<button id='auto_btn_switchuser' class='lui-component lui_widget_btn lui-praise-btn' style='height: 20px;visibility: visible; cursor: pointer;font-size: 10px;font-weight:580;color: #919191;' onclick='auto_switchUser()'>1-用户</button>" +
        "<button id='auto_btn_toPage_0' class='lui-component lui_widget_btn lui-praise-btn' style='height: 20px;visibility: visible; cursor: pointer;font-size: 11px;font-weight:580;color: #919191;' onclick='toPage(1,false)' >2-流程</button>" +
        "<button id='auto_btn_toPage_1' class='lui-component lui_widget_btn lui-praise-btn' style='height: 20px;visibility: visible; cursor: pointer;font-size: 11px;font-weight:580;color: #919191;' onclick='toPage(0,true)' >3-模板</button>" +
        "<button id='auto_btn_toPage_2' class='lui-component lui_widget_btn lui-praise-btn' style='height: 20px;visibility: visible; cursor: pointer;font-size: 11px;font-weight:580;color: #919191;' onclick='toPage(2,true)' >4-组织</button>";
    if (typeof $ !== "undefined") {
        $("#top").append(innerHtml);
        // 页面快捷方式 alt
        $(document).bind('keydown', function(e) {
            // console.log({e})
            if (e.altKey) {
                switch (e.originalEvent.key) {
                    case "`": $("#auto_btn_hideswitch").click(); break
                    case "1": $("#auto_btn_switchuser").click(); break
                    case "2": $("#auto_btn_toPage_0").click(); break
                    case "3": $("#auto_btn_toPage_1").click(); break
                    case "4": $("#auto_btn_toPage_2").click(); break
                }
            }
        })
    }


    /**
     * 登录页自动登录
     */
    auto_login();
    function auto_login() {


        const current_user = localStorage.xp_oa_current_user;
        var tryCount = Number(localStorage.xp_oa_tryCount);
        sessionStorage.log += tryCount + ";"
        const pwArr = pws.split(';');
        if (url.indexOf('login.jsp') < 0 || current_user == 'undefined') return;
        // 仅登录页执行以下代码
        if (tryCount >= pwArr.length){// 避免密码错误时一直在尝试登录
            return;
        }
        const currentUser = JSON.parse(current_user);
        const loginName = currentUser.fd_login_name;
        if (loginName != undefined && loginName != null) {
            localStorage.xp_oa_tryCount = tryCount + 1;
            $('.lui_login_input_username').attr('value', loginName);;
            console.log('TryCount: ' + tryCount);
            console.log('TryPW: ' + pwArr[tryCount]);
            $('.lui_login_input_password').attr('value', pwArr[tryCount]);
            $('.lui_login_button_div_c').click();
        }
    }


    /**
     * 登录成功(转至非登录页)
     */
    auto_loginSuccess();
    function auto_loginSuccess() {


        if (url.indexOf('login.jsp') > -1) return;
        // 仅进入非登录页时执行以下代码
        sessionStorage.log = url;


        // 以下避免用户切换成功后在登录页自动执行登录,
        // 但可能存在bug(执行退出登录时不一定直接退到登录页,一旦退到了非登录页就会导致登录页无法自动登录)
        // localStorage.xp_oa_current_user = "{}";
        // localStorage.xp_oa_tryCount = pws.split(';').length - 1;
    }


    /**
     * 隐藏、显示切换按钮
     */
    function hideSwitch() {
        if (typeof $ === "undefined") return;


        const hideSwitch = $('#auto_btn_hideswitch')[0];
        if (!hideSwitch) return;
        var hideBtnText = hideSwitch.innerText;
        var selectors = ['#auto_btn_switchuser',
            '#auto_btn_toPage_0', '#auto_btn_toPage_1', '#auto_btn_toPage_2',
            '#luiPraiseBtn', '.com_gototop', '.lui-component.lui_widget_btn.com_qrcode']
        for (var i = 0; i < selectors.length; i++) {
            if (hideBtnText === '▼') {
                $(selectors[i]).hide(200);
                continue;
            }
            $(selectors[i]).show(200);
        }
        hideSwitch.innerText = hideBtnText === '▲' ? '▼' : '▲';
    }
    //hideSwitch();// 默认隐藏


    /**
     * [切换用户按钮]click触发函数
     */
    function auto_switchUser() {
        var usersArr = [];
        let searchValue = `${window.prompt('公司||部门||姓名||登录名(模糊、不区分大小写)',)}`;
        do{
            console.log({searchValue})
            if (searchValue == 'null' || searchValue == '') break;
            usersArr = auto_searchUser(searchValue);
            if (usersArr.length == 1 && onlyOne) break;// 只有一个查询结果直接选定执行切换
            let usersStr = '';
            for (let i = 0; i < usersArr.length; i++) {
                usersStr += '(' + i + ')' + usersArr[i].fd_name + '_' + usersArr[i].fd_login_name + '\n'
            }
            searchValue = `${window.prompt('数字序号以选择,回车默认第0个(非数字则重新搜索):\n\n' + usersStr + (usersStr==''?'\n查无结果,请重新输入!':''))}`;
        }while (isNaN(Number(searchValue)));


        const user = usersArr[Number(searchValue) || 0];
        if (searchValue == 'null' || user == null || user == undefined) return;


        localStorage.xp_oa_current_user = JSON.stringify(user);
        localStorage.xp_oa_tryCount = 0;
        auto_backToLogin();
    }


    /**
     * 跳转页面
     * @param which 哪个页面
     * @param newWin 新建标签页
     */
    function toPage(which, newWin) {
        console.log({which})
        let url = "";
        switch (which) {
            case 0 : url = "sys/profile/index.jsp#app/ekp/km/review";break;// 模板设置
            case 1 : url = "km/review/index.jsp?j_module=true#j_path=%2FlistCreate&mydoc=create";break;// 流程管理
            case 2 : url = "sys/profile/index.jsp#org/organizational";break;// 组织架构
        }
        if (newWin) {// 新建标签页
            window.open(Com_Parameter.ContextPath + url);
            return;
        }
        window.open(Com_Parameter.ContextPath + url, "_self");// 当前页面打开
    }


    /**
     * 搜索
     */
    function auto_searchUser(searchName) {
        const users = JSON.parse(localStorage.xp_oa_users).RECORDS;
        let usersArr = [];
        for (const obj of users) {
            const loginName = obj.fd_login_name;
            const name = obj.fd_name.toLowerCase() + loginName.toLowerCase();
            if (name.indexOf(searchName.toLowerCase()) > -1) {
                usersArr.push(obj);
            }
        }


        return usersArr
    }


    /**
     * 返回至登录界面
     */
    function auto_backToLogin() {
        // (特殊)后台管理页面
        // if (url.indexOf(domain + "/sys/profile/index.jsp#")){
        //     location.href='/logout.jsp';
        //     // console.log(window.__sys_logout)
        //     return;
        // }


        // (通用)触发退出登录按钮
        // __sys_logout();
        // let clickCount = 0;
        // const interval = setInterval(()=>{
        //     if (clickCount == 30) clearInterval(interval);
        //     $('.lui-component.lui_widget_btn.lui_toolbar_btn_def').click();
        //     console.log({clickCount});
        //     clickCount++;
        // },100);
        location.href='/logout.jsp';
    }


})();

3、添加用户信息

获取切换用户所需JSON数据(将返回字符串F12执行)

import com.landray.kmss.sys.organization.model.SysOrgElement;

import com.landray.kmss.sys.organization.model.SysOrgPerson;            

List userlist = $OrgUtil.获取全部用户$($部门$);

String rtnStr = "{'RECORDS':[";

for (int i = 0; i < userlist.size(); i++) {

      if (userlist.get(i) == null) {

            continue;

      }

      SysOrgElement orgElm = (SysOrgElement) userlist.get(i);

      String name = orgElm.getFdName();

      String loginName = "";

      if (orgElm instanceof SysOrgPerson) {

            loginName = ((SysOrgPerson) orgElm).getFdLoginName();

      }

      String fullPath = $组织架构.获取组织架构对象全路径$(orgElm);

      rtnStr += "{'fd_name':'"  + fullPath + "_" + name +  "','fd_login_name':'" + loginName +"'},";

}

rtnStr = rtnStr.substring(0, rtnStr.length() - 1);

rtnStr += "]}";

rtnStr = "var users = " + rtnStr + ";localStorage.xp_oa_users = JSON.stringify(users);";

return rtnStr;

无$OrgUtil.获取全部用户$($部门$)时使用以下代码:

​
import com.landray.kmss.sys.organization.model.SysOrgElement;

import com.landray.kmss.sys.organization.model.SysOrgPerson;    

public List getAllUsers(SysOrgElement sysOrgElement) {

            List rtnList = new ArrayList();

            List childs = sysOrgElement.getFdChildren();

            for (int i = 0; i < childs.size(); i++) {

                  SysOrgElement child = (SysOrgElement) childs.get(i);

                  int childType = child.getFdOrgType();

                  if (childType == 8) {// 人员对象

                        rtnList.add(child);

                  }

                  else if (childType == 1 || childType == 2){// 1机构或2部门

                        rtnList.addAll(getAllUsers(child));

                  }

            }

           
            return rtnList;
    
}

        

List userlist = getAllUsers($部门$);

String rtnStr = "{'RECORDS':[";

for (int i = 0; i < userlist.size(); i++) {

      if (userlist.get(i) == null) {

            continue;

      }

      SysOrgElement orgElm = (SysOrgElement) userlist.get(i);

      String name = orgElm.getFdName();

      String loginName = "";

      if (orgElm instanceof SysOrgPerson) {

            loginName = ((SysOrgPerson) orgElm).getFdLoginName();

      }

      String fullPath = $组织架构.获取组织架构对象全路径$(orgElm);

      rtnStr += "{'fd_name':'"  + fullPath + "_" + name +  "','fd_login_name':'" + loginName +"'},";

}

rtnStr = rtnStr.substring(0, rtnStr.length() - 1);

rtnStr += "]}";

rtnStr = "var users = " + rtnStr + ";localStorage.xp_oa_users = JSON.stringify(users);";

return rtnStr;

​

视频:用户切换效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liquid-Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值