{"version":3,"file":"Scripts/Common.js","sources":["Scripts/Common.js"],"sourcesContent":["\r\n//V9 公共函数整理优化,移除非必要函数,BY Todd 20200428\r\n\r\n//同步调用\r\nfunction ajaxSync(d, fnOk, fnError, thiso) {\r\n return callInterface(false, d, fnOk, fnError, thiso)\r\n}\r\n\r\n//异步调用,返回Promise\r\nfunction ajaxAsync(d, fnOk, fnError, thiso) {\r\n return callInterface(true, d, fnOk, fnError, thiso);\r\n}\r\n\r\n//异步调用,并处理msgid、msg\r\nfunction ajaxMsg(d, fnOk, fnError, thiso) {\r\n return ajaxAsync(d, function (result) {\r\n if (fnOk) fnOk = fnOk.bind(thiso, result);\r\n if (fnError) fnError = fnError.bind(thiso, result);\r\n showMsg(result, '', fnOk, fnError)\r\n }, fnError)\r\n}\r\n\r\n//封装异步调用函数,返回Promise\r\nfunction callInterface(async, d, fnOk, fnError, thiso) {\r\n fnOk = fnOk || function (r) { return r; };\r\n fnError = fnError || function (errMsg) {\r\n if (!errMsg || errMsg == \"error\") {\r\n errMsg = kygMsg(320774, '抱歉,系统出现异常,请联系管理员!');\r\n }\r\n if (errMsg && errMsg.msg) errMsg = errMsg.msg;\r\n KYError(errMsg, kygMsg(320773, '系统异常'));\r\n };\r\n var ret;\r\n var pro = new Promise(function (res, rej) {\r\n callInterface0(async, d, function (r) {\r\n ret = fnOk.call(thiso, r) //同步时有意义\r\n if (async) res(r); //异步时有意义\r\n }, function (err) {\r\n fnError.call(thiso, err);\r\n rej(err)\r\n })\r\n });\r\n return async ? pro : ret;\r\n}\r\n\r\nfunction callInterface0(async, d, onOk, onErr) {\r\n var url = $x.appRoot() + 'Tools/Others/AjaxJSONProcess.aspx', func = d.FuncName, noLoading = d._noLoading;\r\n if (/^api\\//.test(func)) { //MVC\r\n url = $x.appRoot() + func\r\n delete d.FuncName\r\n }\r\n if (d.ky_queryStr) {\r\n url += d.ky_queryStr\r\n delete d.ky_queryStr\r\n }\r\n if (noLoading) delete d._noLoading\r\n\r\n var data = kyEncPar(d ? toMyJson(d) : \"\");\r\n var p = {\r\n url: url,\r\n type: 'post',\r\n async: async,\r\n data: data,\r\n timeout: d && d.ky_timeout || 60 * 1000 * 10,\r\n contentType: 'text/html',\r\n beforeSend: function (req) {\r\n req.setRequestHeader(\"KYTK\", encode64([$x.top()._KYTK, Math.random(), +new Date()].join('_')));\r\n if (!noLoading) openMask();\r\n },\r\n success: function (msg) {\r\n if (!noLoading) closeMask();\r\n var o;\r\n if (msg.substring(0, 5) == \"~$T$|\") {\r\n o = { r: 0, data: msg.substring(5) };\r\n }\r\n else {\r\n o = JSON.parse(msg);\r\n }\r\n switch (o.r) {\r\n case 0:\r\n onOk(o.data); break;\r\n case 1:\r\n onErr(o.data); break;\r\n case 2:\r\n //微软登出\r\n if (o.url.indexOf('MicroSamlLogout') > -1) {\r\n o.url += localStorage.getItem('account');\r\n }\r\n SessionUtil.Expire(o.url, o.msg);\r\n break;\r\n case 3:\r\n loadScript($x.appRoot() + 'Scripts/GetReqToken.aspx').then(function () {\r\n if (!d) d = {}\r\n if (!d._isRetryByTk) {\r\n d._isRetryByTk = 1; //避免死循环\r\n callInterface(async, d, onOk, onErr);\r\n }\r\n });\r\n break;\r\n case 4:\r\n $x.top().location = o.data;\r\n break;\r\n }\r\n },\r\n error: function (xhr, textStatus, error) {\r\n if (!noLoading) closeMask();\r\n onErr(textStatus);\r\n }\r\n };\r\n\r\n $.ajax(p);\r\n\r\n function toMyJson(d) {\r\n var idata = d.JPack, r;\r\n if (idata !== undefined) {\r\n delete d.JPack;\r\n r = $.toJSON(d) + \"{:ky->f\" + idata;\r\n d.JPack = idata;\r\n }\r\n idata = d.Ctx;\r\n if (idata !== undefined) {\r\n delete d.Ctx;\r\n r = $.toJSON(d) + \"{:ky->w\" + idata;\r\n d.Ctx = idata;\r\n }\r\n return r || $.toJSON(d);\r\n }\r\n}\r\n\r\nfunction kyEncPar(s) {\r\n return s.replace(/_kLT@/g, ' ').replace(/';\r\n dlg = $(wrap).appendTo(document.body);\r\n }\r\n else {\r\n dlg.css('overflow', 'auto').removeClass('window-body').height(1);\r\n }\r\n if (options.autoWidth) dlg.width(1) //使可以不需要传入width\r\n dlg.html(ihtml);\r\n $(\".i-check-list\").before(\"\" + kygMsg(1042046) + \"\");\r\n\r\n //自动获取html内容高宽\r\n var w = dlg.prop('scrollWidth') + 2; \r\n w = Math.max(w, 50);\r\n w = Math.min($(window).width() - 24, w);\r\n\r\n var h = dlg.width(w).prop('scrollHeight');\r\n h = Math.min($(window).height() - 64, h) + 41 + 3;// 标题栏高度46+border2\r\n\r\n if (options.width) w = options.width;\r\n if (options.height) h = options.height;\r\n\r\n var frmWinTitle = options.title || dlg.find('div:first').attr(\"rel\") || ' ';\r\n //$('html').css('overflow', 'hidden');\r\n dlg.dialog($.extend({ maximizable: true }, options, {\r\n right: 0,\r\n modal: true, title: frmWinTitle || \" \", resizable: true, shadow: false,\r\n width: w, height: h,\r\n onBeforeOpen: function () {\r\n resolveExDialog(dialogId);\r\n },\r\n onOpen: function () {\r\n options.maskClose && maskToClick(dialogId);\r\n },\r\n onClose: function () {\r\n try {\r\n $(document.body).click();\r\n var r = window.returnValue;\r\n $('#' + dialogId).dialog('destroy');\r\n if (options.fnOk && r != null) options.fnOk.call(openerWin || window, r);\r\n if (options.fnClose) options.fnClose.call(openerWin || window, r);\r\n }\r\n finally { window.returnValue = null; $('html').css('overflow', ''); }\r\n },\r\n onMove: function (l, t) { if (t < 0) { $('#' + dialogId).dialog({ top: 0, left: l }); } }\r\n }));\r\n}\r\n\r\n//弹出页面对话框,BY Todd 20200428\r\nfunction openDlgWin(targetURL, width, height, options, openerWin, iargs, iTemplateHTML) {\r\n $x.top().openIFrDlg(targetURL, width, height, options, openerWin, iargs, iTemplateHTML);\r\n}\r\n\r\nfunction openIFrDlg(targetURL, width, height, options, openerWin, iargs, iTemplateHTML) {\r\n targetURL = urlAddVer(targetURL)\r\n\r\n width = Math.min($(window).width() - 40, width), height = Math.min($(window).height() - 40, height + 40);\r\n var iDialogId = getCurrentWind(true);\r\n if (!$x(iDialogId)) {\r\n $('
').appendTo(document.body);\r\n }\r\n options = typeof options == \"function\" ? { fnOk: options } : (options || {}), iargs = iargs || window;\r\n targetURL = $x.toAbsUrl(targetURL, $x.appRoot());\r\n var dlgObj = $('#' + iDialogId);\r\n var siframe = '';\r\n if (!iTemplateHTML) { dlgObj.html(siframe); }\r\n else {\r\n dlgObj.html(iTemplateHTML.replace('{IFRAME}', siframe).replace(/\\{WID\\}/g, iDialogId));\r\n }\r\n $('html').css('overflow', 'hidden');\r\n dlgObj.dialog($.extend({ maximizable: true }, options, {\r\n width: width, height: height, closable: !options.noClose,\r\n modal: true, title: options.title || \" \", resizable: true, shadow: false,\r\n onOpen: function () {\r\n var df = $x(\"_\" + iDialogId);\r\n if (df.src == \"about:blank\") {\r\n df.src = targetURL; options.maskClose && maskToClick(iDialogId);\r\n resolveExDialog(iDialogId);\r\n }\r\n },\r\n onClose: function () {\r\n var r = null;\r\n try {\r\n var ifrm = $x('_' + iDialogId).contentWindow;\r\n if (ifrm != null && ifrm.thisIframe_unload) { ifrm.thisIframe_unload(); }\r\n r = ifrm.returnValue;\r\n }\r\n finally { $('#' + iDialogId).dialog('destroy'); $('html').css('overflow', ''); }\r\n if (options.fnOk && r != null) options.fnOk.call(openerWin || window, r);\r\n if (options.fnClose) options.fnClose.call(openerWin || window, r);\r\n },\r\n onMove: function (l, t) { if (t < 0) { $('#' + iDialogId).dialog({ top: 0, left: l }); } }\r\n }));\r\n $('#_' + iDialogId).on('load', function () {\r\n var ifrm = this.contentWindow;\r\n if (!ifrm || ifrm.closed) { return; }\r\n ifrm.dialogArguments = iargs;\r\n if (!options.title) { $('#' + iDialogId).prev().find('.panel-title').html(ifrm.document.title || \" \"); }\r\n $('#' + iDialogId).prev().find('.panel-title').attr('onmouseover', 'this.title=this.innerText')\r\n ifrm.k_dlgFromWin = window;\r\n ifrm.closeIfr = new ifrm.Function(\"try { parent.$('#\" + iDialogId + \"').dialog('close');}catch(e){};\"); /*在弹出窗口中调用closeIfr()*/\r\n if (options.fnLoad) { options.fnLoad.call(ifrm, iargs); } /* fnLoad,在调用页面中的处理 */\r\n if (ifrm.onPopKFrameLoad) { ifrm.onPopKFrameLoad(iargs); } /* onPopKFrameLoad,在弹出页面中的处理 */\r\n\r\n var winContainer = $(this).parent();\r\n if (!$(winContainer).hasClass('panel-body') && !$(winContainer).attr('buttons')) {\r\n $(winContainer).css({ \"height\": \"100%\" });\r\n }\r\n ifrm = null;\r\n });\r\n dlgObj = null;\r\n}\r\n\r\n//弹出框包含模板的对话框,BY Todd 20200428\r\nfunction dialogWindow(targetURL, options, fnClose, openerWin, iargs) {\r\n var opts = $.extend({ fnClose: fnClose }, options);\r\n var wHeight = $.trim(opts.height);\r\n if (!wHeight) {\r\n wHeight = 500;\r\n }\r\n var itemplateHTML = opts.button\r\n ? '