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.

277 lines
8.1 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//访问的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);
localStorage.setItem('UserInfoJson', str);
UserNo = userNo;
return json.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 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浏览器
}
}