/** 显示日志 */ var psShowLog = false; /** 正在执行请求 */ var psRequesting = false; /** * 用户签名通用请求函数 * @param {any} url 请求地址 * @param {any} data 请求数据 * @param {any} cbFunc 回调函数 * @param {any} cbParam 回调函数参数 * @param {any} errorMessage 错误信息 */ function psRequest(url, data, cbFunc, cbParam, errorMessage) { //if (psRequesting === true) { // alert("上一任务正在执行, 请等待完成后再发送请求."); // return; //} //psRequesting = true; var sUserAgent = navigator.userAgent; var isWin10 = sUserAgent.indexOf("Windows NT 10") > -1 || sUserAgent.indexOf("Windows 10") > -1; if (isWin10) { psRequestJsonp(url, data, cbFunc, cbParam, errorMessage); } else { psRequestCors(url, data, cbFunc, cbParam, errorMessage); } } /** * 用户签名通用请求函数 * @param {any} url 请求地址 * @param {any} data 请求数据 * @param {any} cbFunc 回调函数 * @param {any} cbParam 回调函数参数 * @param {any} errorMessage 错误信息 */ function psRequestJsonp(url, data, cbFunc, cbParam, errorMessage) { /* $.jsonp({ type: "get", async: false, url: url + "&" + data, dataType: "jsonp", success: function (result) { psRequesting = false; // 显示返回数据 if (psShowLog) { console.log("------------返回数据------------"); console.log(JSON.stringify(result)); } cbFunc(result.success, result.message, result.data, cbParam); }, error: function (jqXHR, textStatus, errorThrown) { psRequesting = false; var message = errorMessage + textStatus; cbFunc(false, message, null, cbParam); } }); */ $.ajax({ type: "get", async: false, url: url + "&" + data, dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) success: function (result) { psRequesting = false; // 显示返回数据 if (psShowLog) { console.log("------------返回数据------------"); console.log(JSON.stringify(result)); } cbFunc(result.success, result.message, result.data, cbParam); }, error: function (jqXHR, textStatus, errorThrown) { psRequesting = false; var message = errorMessage + textStatus; cbFunc(false, message, null, cbParam); } }); } /** * 用户签名通用请求函数 * @param {any} url 请求地址 * @param {any} data 请求数据 * @param {any} cbFunc 回调函数 * @param {any} cbParam 回调函数参数 * @param {any} errorMessage 错误信息 */ function psRequestCors(url, data, cbFunc, cbParam, errorMessage) { var request; var requestType = ""; if (window.XDomainRequest) { // code for IE8, IE9, IE10 request = new XDomainRequest(); requestType = "XDomainRequest"; } else if (window.XMLHttpRequest) { // code for IE11+, Firefox, Chrome, Opera, Safari request = new XMLHttpRequest(); requestType = "XMLHttpRequest"; } else { // code for IE5, IE6, IE7 request = new ActiveXObject("Microsoft.XMLHTTP"); requestType = "Microsoft.XMLHTTP"; } try { if (requestType === "XDomainRequest") { request.onload = function () { // 处理完成 psRequesting = false; // 成功返回数据 var responseText = request.responseText; // 控制台显示返回数据 if (psShowLog) { console.log("------------返回数据------------"); console.log(responseText); } var result = JSON.parse(responseText); cbFunc(result.success, result.message, result.data, cbParam); }; } else { request.onreadystatechange = function () { // 处理完成 psRequesting = false; // 成功返回数据 if (request.readyState === 4 && request.status === 200) { var responseText = request.responseText; // 控制台显示返回数据 if (psShowLog) { console.log("------------返回数据------------"); console.log(responseText); } var result = JSON.parse(responseText); cbFunc(result.success, result.message, result.data, cbParam); } }; } if (requestType !== "Microsoft.XMLHTTP") { request.ontimeout = function () { // 处理完成 psRequesting = false; // 请求超时 var message = errorMessage + "请求超时"; cbFunc(false, message, null, cbParam); }; request.onerror = function (e, b) { // 处理完成 psRequesting = false; // 请求出错 var message = errorMessage + "请求出错"; cbFunc(false, message, null, cbParam); }; } // 发送请求 if (requestType !== "XDomainRequest") { request.open("POST", url, false); request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); } else { request.open("POST", url); } request.send(data); } catch (err) { // 处理完成 psRequesting = false; // 请求出错 var message = errorMessage + err.message; cbFunc(false, message, null, cbParam); } } /** * 用户签名本地请求函数 * @param {any} action 请求动作 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psRequestLocal(action, cbFunc, data, cbParam) { var jsonData = JSON.stringify(data); // 显示请求数据 if (psShowLog) { console.log("------------请求数据------------"); console.log(JSON.stringify(jsonData)); } var url = "http://127.0.0.1:56961?action=" + action; data = "data=" + Base64.encode(jsonData); var errorMessage = "请求本地服务失败, 请确认已安装客户端并打开.\n如有疑问, 请联系系统管理员.\n错误信息:"; psRequest(url, data, cbFunc, cbParam, errorMessage); } /** * 用户签名服务器请求函数 * @param {any} action 请求动作 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psRequestServer(action, cbFunc, data, cbParam) { // 判断请求地址 var url = data.serverAddress; if ((url === null) || (url === undefined) || (url === "")) { alert("服务器地址不能为空!"); return; } var jsonData = JSON.stringify(data); // 显示请求数据 if (psShowLog) { console.log("------------请求数据------------"); console.log(JSON.stringify(jsonData)); } url = url + action + "?"; data = "data=" + Base64.encode(jsonData); var errorMessage = "请求服务器失败, 请确认网络连接是否正常.\n如有疑问, 请联系系统管理员.\n错误信息:"; psRequestCors(url, data, cbFunc, cbParam, errorMessage); } /** * 用户签名服务器请求函数 * @param {any} serverAddress 请求动作 * @param {any} action 请求动作 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psRequestServer1(serverAddress, action, cbFunc, data, cbParam) { // 判断请求地址 var url = serverAddress; if ((url === null) || (url === undefined) || (url === "")) { alert("服务器地址不能为空!"); return; } // 显示请求数据 if (psShowLog) { console.log("------------请求数据------------"); console.log(data); } url = url + action + "?"; // data = "data=" + Base64.encode(jsonData); var errorMessage = "请求服务器失败, 请确认网络连接是否正常.\n如有疑问, 请联系系统管理员.\n错误信息:"; psRequest(url, data, cbFunc, cbParam, errorMessage); } /** * 用户签名通用回调函数, 回调函数必须包含四个参数, 且顺序不可改变 * @param {any} success 是否成功 * @param {any} message 返回消息 * @param {any} data 返回数据 * @param {any} cbParam 回调参数, 请求时传入 */ function psCBFunc(success, message, data, cbParam) { if (success) { //成功处理 alert("处理成功!"); if (data !== null) { alert(data); } } else { alert(message); } } /** * 签订用户文书(传递显示数据) * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psSignSignerNotifyWithShowData(cbFunc, data, cbParam) { psRequestLocal("SignSignerNotifyWithShowData", cbFunc, data, cbParam); } /** * 签订用户文书(选择模板) * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psSignPatientNotify(cbFunc, data, cbParam) { psRequestLocal("SignPatientNotify", cbFunc, data, cbParam); } /** * 签订用户授权书 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psSignPatientEmpower(cbFunc, data, cbParam) { psRequestLocal("SignPatientEmpower", cbFunc, data, cbParam); } /** * 创建待办用户文书(传递显示数据)-前期命名错误, 为兼容性保留, 已更名为psCreateTodoPatientNotifyWithShowData * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psCreateTodoSignPatientNotifyWithShowData(cbFunc, data, cbParam) { psRequestLocal("CreateTodoPatientNotifyWithShowData", cbFunc, data, cbParam); } /** * 创建待办用户文书(传递显示数据) * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psCreateTodoPatientNotifyWithShowData(cbFunc, data, cbParam) { psRequestLocal("CreateTodoPatientNotifyWithShowData", cbFunc, data, cbParam); } /** * 创建待办用户文书(传递显示数据) * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psCreateTodoPatientNotify(cbFunc, data, cbParam) { psRequestLocal("CreateTodoPatientNotify", cbFunc, data, cbParam); } /** * 创建待办授权书(选择模板) * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psCreateTodoPatientEmpower(cbFunc, data, cbParam) { psRequestLocal("CreateTodoPatientEmpower", cbFunc, data, cbParam); } /** * 创建待办授权书(传递显示数据) * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psCreateTodoPatientEmpowerWithShowData(cbFunc, data, cbParam) { psRequestLocal("CreateTodoPatientEmpowerWithShowData", cbFunc, data, cbParam); } /** * 通过请求编码获取用户文书数据 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psGetPatientNotifyByIncode(cbFunc, data, cbParam) { psRequestServer("/api/notify/select", cbFunc, data, cbParam); } /** * 查询用户文书数据 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psSelectPatientNotify(cbFunc, data, cbParam) { psRequestServer("/api/notify/select", cbFunc, data, cbParam); } /** * 查询用户授权书数据 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psSelectPatientEmpower(cbFunc, data, cbParam) { psRequestServer("/api/empower/select", cbFunc, data, cbParam); } /** * 获取文书文件 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psGetSingerNotifyFile(cbFunc, data, cbParam) { var sendData = "pk=" + data.pk + "&type=" + data.type; psRequestServer1(data.serverAddress, "/api/notify/getFile", cbFunc, sendData, cbParam); } /** * 获取授权书文件 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psGetPatientEmpowerFile(cbFunc, data, cbParam) { var sendData = "pk=" + data.pk + "&type=" + data.type; psRequestServer1(data.serverAddress, "/api/empower/getFile", cbFunc, sendData, cbParam); } /** * 采集用户信息 * @param {any} cbFunc 回调函数 * @param {any} data 请求数据 * @param {any} cbParam 回调函数参数 */ function psCollectPatientInfo(cbFunc, data, cbParam) { psRequestLocal("CollectPatientInfo", cbFunc, data, cbParam); } /** * 验证用户信息 * @param {any} cbFunc 回调函数 * @param {any} data 回调函数 * @param {any} cbParam 回调函数 */ function psVerifyPatientInfo(cbFunc, data, cbParam) { psRequestLocal("VerifyPatientInfo", cbFunc, data, cbParam); } /** * * @param {*} cbFunc 回调函数 * @param {*} data 回调函数 * @param {*} cbParam 回调函数 */ function signPdfOfBase64(cbFunc, data, cbParam) { psRequestLocal("signPdfOfBase64", cbFunc, data, cbParam); }