You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

283 lines
8.2 KiB
JavaScript

9 months ago

//访问的ccbpm服务器地址.
//var host = "http://101.43.55.81:8022"; //演示服务器. h5登陆地址: http://vue3.ccbpm.cn
var host = "http://localhost:2296"; //BPM服务器.
// 流程域名 , 默认为空. 比如:CRM, ERP, OA 等等。 该域名配置流程表单树的属性上, 如果要获取全部的就保留为空.
// 表示该目录下所有的流程都属于这个域里.
var domain = ""; //可以为空,则表示获取全部的, 也可认为是系统编号.
var plant = "CCFlow"; //For.net 请设置ccflow, forJava请设置JFlow.
//私钥. 这里明文定义到这里了, 为了安全需要写入到后台.
var PrivateKey = "DiGuaDiGua,IamCCBPM";
var UserNo = null; //当前用户名变量.
var ccbpmHostDevelopAPI = host + "/WF/API/"; //驰骋BPM流程服务器地址
function GetHrefUrl() {
return window.location.href;
//return GetHrefUrl();
}
/**
* 执行登录返回SID.
* 私约是本地服务器与BPM服务器双方约定的一个字符串.
* BPM服务配置在 java的jflow.properties .net 的Web.config
*
* 本地应用系统在登录成功后访问bpm服务器登录的时候传入 私约 + 用户编号让其登录并且返回一个 sid (与token概念一样)
* 您获得这个SID后记住它并且在访问的时候使用UserNo+SID来访问ccbpm的功能页面
* 为了安全期间您可以把这个获得sid的方法放入后台实现
*
* @param {私钥} privateKey
* @param {用户账号} userNo
*/
function LoginCCBPM(privateKey, userNo) {
//url 地址。
var url = ccbpmHostDevelopAPI + "Port_Login?privateKey=" + privateKey + "&userNo=" + userNo;
var str = RunUrlReturnString(url);
var json = JSON.parse(str);
var jsonStr = json.data;
localStorage.setItem('UserInfoJson', jsonStr);
UserNo = userNo;
var myjson = JSON.parse(jsonStr);
//debugger;
return myjson.Token;
}
function LoginByToken(token) {
//url 地址。
var url = ccbpmHostDevelopAPI + "Port_LoginByToken?privateKey=" + privateKey + "&userNo=" + userNo;
var str = RunUrlReturnString(url);
var json = JSON.parse(str);
localStorage.setItem('UserInfoJson', str);
UserNo = userNo;
return json.Token;
}
//获得当前登陆信息.
function GetWebUser() {
var str = localStorage.getItem('UserInfoJson');
if (str == null || str == undefined) {
alert('登陆信息丢失.');
window.location.href = '/Portal/Login.htm';
return;
}
return JSON.parse(str);
}
/**
* 退出登录
* */
function LoginOut() {
//url 地址。
var url = ccbpmHostDevelopAPI + "Port_LoginOut?Token=" + GetWebUser().Token;
var token = RunUrlReturnString(url);
//赋值给公共变量
UserNo = "";
localStorage.setItem('UserInfoJson', "");
}
/**
* 获得当前的用户.
* */
function GetUserNo() {
return GetWebUser().No;
}
/**
* 获得token.
* */
function GetToken() {
return GetWebUser().Token;
//return localStorage.Token;// GetWebUser().Token;
}
/**
* 打开工作处理器的方法可以被重写
* 1. 默认的工作处理器在一个新的页面打开
* 2. 可以在框架的 tab 页打开.
* @param {打开工作处理器的url} url
*/
function OpenMyFlow(url) {
window.open(url);
}
/**
* 执行URL转化为json对象.转化失败为null.
* @param {url} url
*/
function RunUrlReturnJSON(url) {
var str = RunUrlReturnString(url);
if (str == null) return null;
try {
return JSON.parse(str);
} catch (e) {
alert("json解析错误: " + str);
return null;
}
}
/**
* 执行URL返回string.
* @param {any} url
*/
function RunUrlReturnString(url) {
if (url == null || typeof url === "undefined") {
alert("err@url无效");
return;
}
var string;
$.ajax({
type: 'post',
async: false,
url: url,
dataType: 'html',
success: function (data) {
if (data.indexOf('err@url') != -1) {
string = data.replace('err@', ''); //这个错误是合法的.
return;
}
if (data.indexOf("err@") != -1) {
alert(data);
return;
}
string = data;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (confirm('系统异常:' + url + " 您想打开url查看吗") == true) {
window.open(url);
return;
}
}
});
return string;
}
/**
* 动态异步加载JS的方法
* @param {any} url 加载js的路径
* @param {any} callback 加载完成后的回调函数
*/
function loadScript(url, callback, scriptID) {
var script = document.createElement("script");
script.type = "text/javascript";
if (callback != null && typeof (callback) != "undefined") {
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
}
script.src = url;
if (scriptID != null && scriptID != undefined)
script.id = scriptID;
// document.head.appendChild(script);
var tmp = document.getElementsByTagName('script')[0];
tmp.parentNode.insertBefore(script, tmp);
}
/**
* 父页面监听子页面调用方法
*/
window.addEventListener('message', function (event) {
var data = event.data;
var info = event.data.info;
if (true) {
switch (data.action) {
case 'returnWorkWindowClose':
if (typeof returnWorkWindowClose != 'undefined' && returnWorkWindowClose instanceof Function)
returnWorkWindowClose(info);
break;
case 'WindowCloseReloadPage':
if (typeof WindowCloseReloadPage != 'undefined' && WindowCloseReloadPage instanceof Function)
WindowCloseReloadPage(info);
break;
default:
break;
}
}
}, false);
function GetPara(key, atparaStr) {
var atPara = atparaStr;
if (typeof atPara != "string" || typeof key == "undefined" || key == "") {
return undefined;
}
var reg = new RegExp("(^|@)" + key + "=([^@]*)(@|$)");
var results = atPara.match(reg);
if (results != null) {
return unescape(results[2]);
}
return undefined;
}
function basePath() {
//获取当前网址,如: http://localhost:80/jflow-web/index.jsp
var curPath = window.document.location.href;
//获取主机地址之后的目录 jflow-web/index.jsp
var pathName = window.document.location.pathname;
if (pathName == "/") { //说明不存在项目名
if ("undefined" != typeof ccbpmPath && ccbpmPath != null && ccbpmPath != "") {
if (ccbpmPath != curPath)
return ccbpmPath;
}
return curPath;
}
var pos = curPath.indexOf(pathName);
//获取主机地址 http://localhost:80  
var localhostPath = curPath.substring(0, pos);
//获取带"/"的项目名,如:/jflow-web
var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
if ("undefined" != typeof ccbpmPath && ccbpmPath != null && ccbpmPath != "") {
if (ccbpmPath != localhostPath)
return ccbpmPath;
}
return localhostPath;
}
var IsIELower10 = false;
var ver = IEVersion();
if (ver == 6 || ver == 7 || ver == 8 || ver == 9)
IsIELower10 = true;
function IEVersion() {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器
var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器
var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;
if (isIE) {
if (document.documentMode) return document.documentMode;
} else if (isEdge) {
return 'edge';//edge
} else if (isIE11) {
return 11; //IE11
} else {
return -1;//不是ie浏览器
}
}