{"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 ? '
{IFRAME}
' + kygMsg(120026) + '
'\r\n : '
{IFRAME}
';\r\n $x.top().wc.Popup = true;\r\n openIFrDlg(targetURL, opts.width, opts.height, opts, openerWin, iargs, itemplateHTML);\r\n}\r\n\r\nfunction openImage(imgSrc, title, minWidth) {\r\n minWidth = minWidth ? ('min-width:' + minWidth) : '';\r\n var photoHTML = '
';\r\n popFixDlgHTML(photoHTML, { title: title, fnClose: function () { $('#dialog1').dialog('destroy'); } });\r\n}\r\n\r\nfunction maskToClick(winid) {\r\n $('#' + winid).parent().nextAll('.window-mask:first').click(function () { closePop(winid); });\r\n}\r\n\r\nfunction closeDlgWin() {\r\n var appWinmode = $x.queryString(\"appwinmode\");\r\n if (appWinmode === \"1\") {\r\n window.close();\r\n return;\r\n }\r\n $x.top().closePop()\r\n}\r\n\r\nfunction resolveExDialog(id) {\r\n var $pDialog = $(\"#\" + id).closest(\".window\");\r\n $pDialog.addClass(\"exWindow\");\r\n $pDialog.find(\".panel-tool-close\").bind(\"mousedown\", function () {\r\n this.focus();\r\n return false;\r\n });\r\n}\r\n\r\nfunction closePop(winid) {\r\n winid = winid || ($x('dialog') ? 'dialog' : getCurrentWind(false));\r\n if (winid == 'KFrame') { return;; }\r\n $('#' + winid).dialog('close');\r\n if ($x(winid)) {\r\n $('#' + winid).dialog('destroy');\r\n }\r\n}\r\n\r\n\r\nfunction popEDetail(eid, o) {\r\n $x.ajax(\"wf.EmpInfo.GetEDetail\", { EID: eid }, function (result) {\r\n if (result) {\r\n popSpecifiedDlg(result, $(o).text(), 600, 380);\r\n }\r\n });\r\n}\r\n\r\nfunction getCurrentWind(isnew) {\r\n return getCurrentFrameID(isnew, true);\r\n}\r\n\r\nfunction getCurrentFrameID(isnew, isDIVContainer) {\r\n\r\n var cuwid = 'KFrame';\r\n var winid = (isDIVContainer ? '' : '_') + 'ifr_win';\r\n var t = true;\r\n while (t) {\r\n if ((!isDIVContainer && getIFrameWindow(winid)) || $x(winid)) {\r\n cuwid = winid;\r\n winid = winid + '1';\r\n }\r\n else\r\n t = false;\r\n }\r\n if (isnew)\r\n return winid;\r\n else {\r\n if (isDIVContainer && cuwid == 'KFrame' && $x('dialog')) {\r\n return 'dialog';\r\n }\r\n return cuwid;\r\n }\r\n}\r\n\r\nfunction getIFrameWindow(id) {\r\n var o = $x(id);\r\n if (o && o.parentNode) {\r\n return o.contentWindow;\r\n }\r\n else {\r\n\r\n var tempWind = $x.top().$('#' + id);\r\n if ($(tempWind).length >= 1) {\r\n return tempWind[0].contentWindow;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nfunction getCtxWin() {\r\n var winid = $x.top().getCurrentFrameID(false);\r\n return $x.top().getIFrameWindow(winid);\r\n}\r\n\r\nfunction registerEvent(funcName) {\r\n if (ValidateForm($('#dialog')[0]) == false) return;\r\n var bar = $x.top().$('.dlg-buttons').find('.is-submit');\r\n $(bar).attr('style', 'color: #bbbbbb !important;border-color: #dadada;background: #efefef;');\r\n var ps = [].slice.call(arguments, 1);\r\n var w = getCtxWin();\r\n var fn = w && w[funcName]\r\n if (!fn && /\\W/.test(funcName)) fn = new Function('return ' + funcName)();\r\n if (!fn) console.error(funcName + ' not exist');\r\n else var ret = fn.apply(w, ps);\r\n if (ret && ret.then) { //异步Promise\r\n return ret.then(onEnd)\r\n } else {\r\n onEnd(ret)\r\n return solved()\r\n }\r\n function onEnd(ret1) {\r\n if (!ret1) $('#dialog').dialog('close');//返回true不关闭\r\n $(bar).removeAttr('style');\r\n }\r\n}\r\n\r\nfunction closeTopWind() {\r\n var topWind = $x.top();\r\n var targetObj = topWind.$('.panel-tool-close:last');\r\n if ($(targetObj).length == 0) {\r\n targetObj = $('.panel-tool-close:last');\r\n $(targetObj).trigger('click');\r\n } else {\r\n topWind.$(targetObj).trigger('click');\r\n }\r\n}\r\n\r\nfunction downLoadFile(fileId, hrid) {\r\n if (fileId) {\r\n var url = $x.appRoot() + 'Tools/Others/AttachDownload.aspx?attachid=' + fileId;\r\n if (hrid)\r\n url += \"&hrid=\" + hrid;\r\n if (!$x('attachDownload')) {\r\n attachUtil.create();\r\n }\r\n setTimeout(function () {\r\n $x.top().closeMask();\r\n }, 5000);\r\n setTimeout(function () {\r\n $x.top().openMask();\r\n if ($x('attachDownload') == undefined) {\r\n $x('fsAttachUpload').src = url;\r\n } else {\r\n $x('attachDownload').src = url;\r\n }\r\n }, 200);\r\n }\r\n else {\r\n KYError(kygMsg(1042076));\r\n }\r\n}\r\n\r\nfunction cancelBubble(event) {\r\n var event = event || window.event;\r\n if (event.stopPropagation) {\r\n event.stopPropagation();\r\n } else {\r\n event.cancaleBubble == true;\r\n }\r\n}\r\n\r\n//日期格式化\r\nfunction formatDate(date0, fmt) {\r\n if (!date0) return ''\r\n if (typeof date0 === 'string') {\r\n date0 = date0.replace(/(:\\d+)\\.\\d+$/, '$1'); // IE 不能转换2017-12-28 10:43:02.0\r\n date0 = date0.toUpperCase();\r\n }\r\n var date = new Date(date0);\r\n if (isNaN(date.getDay())) date = new Date(+date0) // 字符转数字\r\n if (isNaN(date.getDay())) return date0 || ''\r\n if (!fmt) fmt = 'yyyy-MM-dd HH:mm:ss';\r\n if (/(y+)/.test(fmt)) {\r\n fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));\r\n }\r\n var o = {\r\n 'M+': date.getMonth() + 1,\r\n 'd+': date.getDate(),\r\n 'h+': date.getHours(),\r\n 'm+': date.getMinutes(),\r\n 's+': date.getSeconds(),\r\n 'W': [kygMsg(900132, '一'), kygMsg(900133, '二'), kygMsg(900134, '三'), kygMsg(900135, '四'), kygMsg(900136, '五'), kygMsg(900137, '六'), kygMsg(900131, '日')][date.getDay() - 1]\r\n };\r\n o['H+'] = o['h+'];\r\n for (var k in o) {\r\n if (new RegExp('(' + k + ')').test(fmt)) {\r\n var data = o[k] + '';\r\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? data : padLeft(data));\r\n }\r\n }\r\n return fmt;\r\n}\r\n\r\nfunction padLeft(data, length, pad) {\r\n var pad = Array.apply(0, Array(length || 2)).map(function () { return pad || '0' }).join('')\r\n return (pad + data).substr(data.length)\r\n}\r\n\r\n//获取顶层窗口宽度,BY Todd 20200418\r\nfunction getTopWindWidth() {\r\n var topWin = $x.top();\r\n var winWidth = $(topWin).width() - ($(topWin).find('#imenus-left').width() || 160);\r\n if (winWidth < 1024) winWidth = 1024;\r\n return winWidth;\r\n}\r\n\r\n//获取顶层窗口高度,BY Todd 20200418\r\nfunction getTopWindHeight() {\r\n var topWin = $x.top();\r\n var winHeight = $(topWin).height() - 100;\r\n if (winHeight < 600) winHeight = 600;\r\n return winHeight;\r\n}\r\n\r\nfunction getMaxWinWdith() {\r\n var topWin = $x.top();\r\n var winWidth = $(topWin).width();\r\n if (winWidth < 1024) winWidth = 1024;\r\n return winWidth;\r\n}\r\n\r\nfunction getMaxWinHeigth() {\r\n var topWin = $x.top();\r\n var winHeight = $(topWin).height();\r\n if (winHeight < 800) winHeight = 800;\r\n return winHeight;\r\n}\r\n\r\n//V9 前后端交互函数,BY Todd 20200528\r\nfunction showMsg(result, title, fnOk, fnFail) {\r\n if (!result) return;\r\n var iTitle = $.trim(title);\r\n var status = result.msgid;\r\n var msg = $.trim(result.msg);\r\n if (status == -97 || status == -99) {\r\n illegalAccess(result);\r\n } else {\r\n if (!msg) {\r\n var callback = status == 0 ? fnOk : fnFail\r\n if (callback) callback()\r\n return;\r\n }\r\n //0: KYMsg-- 成功的提示\r\n //1: KYWarn-- 警告提示,非致命报错\r\n //其他: KYError-- 报错\r\n if (status == 0) {\r\n KYMsg(msg, iTitle, fnOk);\r\n } else if (status == 1) {\r\n KYWarn(msg, iTitle, fnFail);\r\n } else {\r\n KYError(msg, iTitle, fnFail);\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\nfunction gotoHref(src) {\r\n $x.top().location.href = src\r\n}\r\n\r\nfunction illegalAccess(result) {\r\n if (result.sid) {\r\n var url = $x.top().location.href, urlNew = url.replace(/sid=\\w+/, \"sid=\" + result.sid)\r\n if (url != urlNew) {\r\n return $x.top().gotoHref(urlNew); //Win.aspx需要支持登录后刷新使用\r\n }\r\n }\r\n $x.top().location.href = $x.appRoot() + \"Tools/Others/SysError.aspx?msg=\" + encodeURIComponent(result.msg);\r\n}\r\n\r\nvar _winmode = 0;\r\nif (/DingTalk/i.test(navigator.userAgent)) _winmode = 2; //钉钉pc端不能弹窗口\r\n\r\n//通过 BI Icon 部件打开窗口\r\nfunction biIconClick(path, fmKey, sid, pars) {\r\n if (!path) return;\r\n if (path.indexOf('https://') > -1 || path.indexOf('http://') > -1) {\r\n window.open(path);\r\n return;\r\n }\r\n var winURL = $x.appRoot() + \"Window/Win.aspx?ddtab=true&path=\" + path + \"&fmkey=\" + $.trim(fmKey) + \"&pars=\" + $.trim(pars) + \"&sid=\" + sid;\r\n var winName = 'tab_' + path + '_' + fmKey;\r\n if (_winmode == 1) {\r\n openIModePage(winURL, winName);\r\n }\r\n else {\r\n window.open(winURL, winName);\r\n }\r\n}\r\n\r\n//模态方式打开窗口\r\nfunction openIModePage(targetURL, winName) {\r\n var iWidth = getTopWindWidth();\r\n var iHeight = getTopWindHeight();\r\n var data = new Array();\r\n data.push('top=0');\r\n data.push('left=0');\r\n data.push('width=' + iWidth);\r\n data.push('height=' + iHeight);\r\n data.push('directories=no,status=no,toolbar=no,location=no');\r\n data.push('menubar=no');\r\n data.push('scrollbars=yes');\r\n data.push('resizable=yes');\r\n window.open(targetURL, winName, data.join(','));\r\n}\r\n\r\n//BI Portal 在浏览器新标签页打开标准窗口\r\nfunction openWindow(targetURL, title, fmKey, pars) {\r\n if (!targetURL) return;\r\n var winURL = targetURL + \"&title=\" + encodeURIComponent($.trim(title)) + \"&fmkey=\" + fmKey + \"&pars=\" + encodeURIComponent($.trim(pars)) + '&ddtab=true';\r\n var path = $x.queryString('path', targetURL);\r\n var tabName = 'new-win-tab_' + path + '_' + fmKey;\r\n $x.top().open(winURL, tabName);\r\n}\r\n\r\n\r\n//BI Portal当前页面弹出窗口,BY Todd 20201026\r\nfunction openPopWindow(targetURL, title, fmKey, pars) {\r\n var path = $x.queryString('path', targetURL);\r\n var sid = $x.queryString('sid', targetURL);\r\n if (path && sid) $x.top().moveToPath(path, pars, title, true, fmKey, sid, afterClosePopWind)\r\n}\r\n\r\n\r\nfunction afterClosePopWind() {\r\n var iFrameObj = $x.top().$('#KFrame');\r\n if ($(iFrameObj).length >= 1) {\r\n var doc = $(iFrameObj)[0].contentWindow.document;\r\n var treeNode = $('.tree-node-selected', doc);\r\n if ($(treeNode).length == 1) {\r\n $(treeNode).trigger('click');\r\n } else {\r\n var targetObj = $(\"#form-tree-container .selected\", doc);\r\n var itemEvent = $(targetObj).attr(\"onclick\");\r\n if (itemEvent && itemEvent.indexOf('popParam208') > -1) {\r\n var fmKey = $(targetObj).attr('key');\r\n $x.top().wc.Path = $x.queryString('path');\r\n $x.top().wc.CurrentForm = fmKey;\r\n $('.form_excel_' + fmKey, doc)[0].contentWindow.location.reload()\r\n }\r\n else {\r\n if ($(targetObj).length == 1) {\r\n $(targetObj)[0].click();\r\n } else {\r\n forceRefreshParts();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n//日历窗体保存\r\nfunction saveFormCalendar(obj) {\r\n var dlgObj = $(obj).parent();\r\n var calenderEvent = $x.top().$('#calendarEditor')[0].contentWindow.kingEditor.html();\r\n var data = {};\r\n $x.top().wc.CurrentForm = $(dlgObj).attr('fmkey');\r\n data.Ctx = $.toJSON($x.top().wc);\r\n data.opcmd = \"UPDATE\";\r\n data.sid = $(dlgObj).attr('sid');\r\n data.path = $(dlgObj).attr('path');\r\n data.paras = $(dlgObj).attr('paras');\r\n data.calenderEvent = encode64(calenderEvent);\r\n data.FuncName = \"fm.FormExProcess.ComponentService\";\r\n ajaxSync(data, function (result) {\r\n var iTitle = kygMsg(320775, '日历编辑');\r\n if (result.msgid == 0) {\r\n KYMsg(result.msg, iTitle, function () {\r\n var calendarWind = $('#FormCalendar', $x.top().$('#KFrame')[0].contentWindow.document)[0].contentWindow;\r\n calendarWind.saveFormCalendarDate = $(obj).parents('.panel').find('.calendar_event').attr('data')\r\n calendarWind.initUserCalendear();\r\n closeDlgWin();\r\n });\r\n } else {\r\n showMsg(result, iTitle);\r\n }\r\n });\r\n}\r\n\r\nfunction svgToDataUrl(svgXml) {\r\n if (!svgXml.match(/xmlns=\\\"/mi)) {\r\n svgXml = svgXml.replace('').append($svg.clone()).html()\r\n img.onerror = function () {\r\n $(img).remove()\r\n var canvasElement = document.createElement('canvas');\r\n $svg.parent().append(canvasElement);\r\n canvg(canvasElement, xml);\r\n $svg.remove()\r\n resolve()\r\n }\r\n img.src = svgToDataUrl(xml)\r\n $svg.parent().append(img);\r\n }));\r\n });\r\n Promise.all(promises).finally(onAllLoaded)\r\n\r\n function onAllLoaded() {\r\n openMask();\r\n\r\n html2canvas(element[0], {\r\n width: element.width() * scale,\r\n height: element.height() * scale,\r\n background: \"#fff\",\r\n allowTaint: true,\r\n ignoreAnimation: true\r\n }).then(function (canvas) {\r\n var doc = canvasToPdf(canvas, null, opt)\r\n doc.save(fileName);\r\n if (opt.onOk) opt.onOk();\r\n }).finally(function () {\r\n element.css({ transform: '' });\r\n closeMask();\r\n });\r\n\r\n element.hide();\r\n }\r\n }\r\n}\r\nfunction htmlToPDF(element, fileName, opt) {\r\n if (!opt) opt = {}\r\n element = $(element)\r\n if (!element[0]) return console.error('No element')\r\n loadScriptIf('htmlToImage', $x.appRoot() + \"Scripts/html-to-image.js\").then(function () {\r\n loadScriptIf('jsPDF', $x.appRoot() + \"Scripts/Export.js\").then(delay)\r\n });\r\n function delay() {\r\n openMask();\r\n setTimeout(onDo, 0)\r\n }\r\n function onDo() {\r\n var scale = 3, width = element[0].scrollWidth, height = element[0].scrollHeight\r\n var oldStl = element.parent().attr('style') || ''\r\n element.css({\r\n transform: 'scale(' + scale + ')', //放大提高精度\r\n transformOrigin: '0 0'\r\n }).parent().css({ left: 9999, position: 'absolute' });//避免显示\r\n\r\n //Chrome最大允许的宽或高为32,767像素。超出会自动缩小导致模糊\r\n htmlToImage.toCanvas(element[0], {\r\n backgroundColor: '#fff',\r\n width: width * scale,\r\n height: height * scale\r\n }).then(function (canvas) {\r\n var doc = canvasToPdf(canvas, null, opt)\r\n doc.save(fileName);\r\n if (opt.onOk) setTimeout(opt.onOk, 10);\r\n }).finally(function () {\r\n element.css({ transform: '' }).parent().attr('style', oldStl);\r\n closeMask();\r\n });\r\n }\r\n}\r\n//doc: 传入非null,表示在原doc附加页面\r\nfunction canvasToPdf(canvas, doc, opt) {\r\n // 分页纸张大小。A4 = 592.28 * 841.89\r\n var paperWidth = opt.pageWidth || 592.28\r\n var paperHeight = opt.pageHeight || 841.89 / 592.28 * paperWidth;\r\n var landscape = opt.landscape\r\n if (landscape === undefined) landscape = canvas.height < canvas.width\r\n if (landscape) {\r\n var t = paperHeight;\r\n paperHeight = paperWidth\r\n paperWidth = t\r\n }\r\n var hMargin = opt.hMargin || (landscape ? 30 : 20); //水平边距\r\n var vMargin = opt.vMargin || (landscape ? 20 : 30); //垂直边距\r\n var cntWidth = paperWidth - hMargin * 2;\r\n var cntHeight = paperHeight - vMargin * 2;\r\n dividePages(canvas, opt, function (imgData, pageIndex, width, height) {\r\n var realHeight = height * cntWidth / width\r\n if (!doc) doc = new jsPDF(landscape ? 'L' : 'p', 'pt', [paperWidth, paperHeight]);\r\n else doc.addPage();\r\n doc.addImage(imgData, 'JPEG', hMargin, vMargin, cntWidth, realHeight);\r\n doc.setFontSize(10);\r\n doc.setTextColor(99, 99, 99);\r\n doc.text(pageIndex + 1 + '', paperWidth / 2 - 5, paperHeight - 8)\r\n })\r\n return doc;\r\n\r\n\r\n function dividePages(canvas, opt, onPageGot) {\r\n var width = canvas.width, height = canvas.height; //canvas大小\r\n var rate = width / cntWidth; //缩放比例。canvas按宽度缩放\r\n if (opt.noDivide) { //不分页\r\n onPageGot(canvas.toDataURL('image/jpeg'), 0, width, height);\r\n return\r\n }\r\n var contentHeight = cntHeight * rate\r\n var scanHeight = opt.scanHeight * rate || Math.round(contentHeight / 20); //从预计分页点往回扫描的1/20高度\r\n var ctx = canvas.getContext(\"2d\");\r\n\r\n var pageStart = 0; //当前页起始位置\r\n var lineCt = 4 * width; //每行数据数,即像素数*4\r\n var pageIndex = 0\r\n while (height - pageStart >= 1) {\r\n var pageEnd = getDevidePosY(pageStart, ctx);\r\n var data = ctx.getImageData(0, pageStart, width, pageEnd - pageStart)\r\n var pageImage = dataToImage(data)\r\n onPageGot(pageImage.toDataURL('image/jpeg'), pageIndex, pageImage.width, pageImage.height);\r\n pageStart = pageEnd;\r\n pageIndex++;\r\n if (pageIndex > 11) break;\r\n }\r\n function dataToImage(data) {\r\n var c0 = document.createElement('canvas')\r\n c0.width = width\r\n c0.height = cntHeight * rate\r\n var ctx0 = c0.getContext(\"2d\");\r\n ctx0.fillStyle = \"#fff\";\r\n ctx0.fillRect(0, 0, c0.width, c0.height);\r\n ctx0.putImageData(data, 0, 0);\r\n return c0\r\n }\r\n //获取分页拆分点y座标。从预计的分页点,往回逐行扫码每一行的颜色种类,用颜色种类最少的一行作为分页点\r\n function getDevidePosY(pageStart, ctx) {\r\n if (pageStart + contentHeight > height) return height; //最后一页\r\n var scanStart = pageStart + contentHeight - scanHeight; //扫描起始位置\r\n if (scanStart < pageStart) scanStart = pageStart + 1\r\n var pageData = ctx.getImageData(0, scanStart, width, scanHeight).data\r\n var minColorLine = 0, minColorCt;\r\n for (var i = scanHeight - 1; i >= 0; i--) {\r\n var line = pageData.slice(i * lineCt, i * lineCt + lineCt); //一行的数据\r\n var colors = {};//这一行有多少种颜色\r\n for (var n = 0; n < line.length; n += 4) {\r\n var key = line.slice(n, n + 4).join(',');\r\n colors[key] = i\r\n }\r\n var colorCt = Object.keys(colors).length\r\n if (colorCt < minColorCt || !minColorCt) {\r\n minColorLine = i + 1\r\n minColorCt = colorCt\r\n if (colorCt <= 2) break;\r\n }\r\n }\r\n return scanStart + minColorLine\r\n }\r\n }\r\n}\r\n//转换html中的多语\r\nfunction parseMsg(el) {\r\n $('[msgid]', el).each(function (i, e) {\r\n e = $(e);\r\n var msgids = e.attr('msgid').split(',');\r\n for (var i = 0; i < msgids.length; i++) {\r\n var attrId = msgids[i].replace(/ /g, '').split('=');\r\n if (attrId.length == 1) e.text(kygMsg(attrId[0]));\r\n else e.attr(attrId[0], kygMsg(attrId[1]));\r\n }\r\n });\r\n}\r\n\r\n//20235YP:页面元素多语,页面需要存在_lgid\r\nfunction _tranPage() {\r\n //用户选择语言\r\n var lgid = _lgid;\r\n if (!lgid || lgid == 0) lgid = 2052;\r\n\r\n //页面默认语言\r\n var msglgid = _msglgid;\r\n if (!msglgid || msglgid == 0) msglgid = 2052;\r\n\r\n //console.log(lgid, msglgid);\r\n\r\n if (!(lgid in _msglgids)) return; //如果没有这种语言则使用页面语言\r\n\r\n if (lgid == msglgid) return; //如果是用户选择语言就是页面语言,则不需要翻译\r\n //if (lgid == 2052) return; //如果是页面现有语言信息,则不需要翻译\r\n\r\n $(\"[msg]\").each(function () {\r\n var msgid = $(this).attr(\"msg\");\r\n var oitem = _msgapps[msgid];\r\n if (oitem) {\r\n for (var att in oitem) {\r\n var msgs = oitem[att];\r\n var msg = msgs[lgid];\r\n switch (att) {\r\n case \"text\":\r\n $(this).text(msg);\r\n break;\r\n case \"value\":\r\n $(this).val(msg);\r\n break;\r\n case \"placeholder\":\r\n $(this).attr(\"placeholder\", msg);\r\n break;\r\n case \"title\":\r\n $(this).attr(\"title\", msg);\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n}\r\n\r\n//20235YP:页面提示多语,页面需要存在_lgid\r\nfunction _getMessage(msgid, arg0, arg1, arg2) {\r\n var ret = msgid;\r\n var oitem = _msgrems[msgid];\r\n\r\n if (oitem) {\r\n //var lgid = _lgid;\r\n //if (!lgid || lgid == 0) lgid = 2052;\r\n\r\n //用户选择语言\r\n var lgid = _lgid;\r\n if (!lgid || lgid == 0) lgid = 2052;\r\n\r\n //页面默认语言\r\n var msglgid = _msglgid;\r\n if (!msglgid || msglgid == 0) msglgid = 2052;\r\n\r\n if (!(lgid in _msglgids)) //return 1; //如果没有这种语言则使用页面语言\r\n lgid = msglgid;\r\n\r\n //跟元素翻译不一样,这里总是返回\r\n //if (lgid == msglgid) return 2; //如果是用户选择语言就是页面语言,则不需要翻译\r\n\r\n var title = oitem[lgid];\r\n if (arg0) title = title.replace(\"{0}\", arg0);\r\n if (arg1) title = title.replace(\"{1}\", arg1);\r\n if (arg2) title = title.replace(\"{2}\", arg2);\r\n ret = title;\r\n\r\n }\r\n return ret;\r\n}\r\n\r\n//2023YP:从页面获取所有元素的原语(2052)信息,附加1033空信息\r\n//重复msg需要手工删除\r\nfunction _getPageMessages() {\r\n var msgs = \"\";\r\n $(\"[msg]\").each(function () {\r\n var tag = $(this).prop(\"tagName\");\r\n var msgid = $(this).attr(\"msg\");\r\n var msg = msgid + ':{';\r\n var text = $(this).text();\r\n var html = $(this).html();\r\n var val = $(this).val();\r\n var hasmsg = false\r\n if (tag != 'INPUT') val = '';\r\n\r\n if (text && html == text) {\r\n msg = msg + 'text:{2052:\"' + text + '\",1033:\"\"}';\r\n hasmsg = true;\r\n }\r\n if (val) {\r\n msg = msg + 'value:{2052:\"' + val + '\",1033:\"\"}';\r\n hasmsg = true;\r\n }\r\n\r\n if ($(this).is(\"[title]\")) {\r\n if (hasmsg)\r\n msg = msg + ',title:{2052:\"' + $(this).attr(\"title\") + '\",1033:\"\"}';\r\n else\r\n msg = msg + 'title:{2052:\"' + $(this).attr(\"title\") + '\",1033:\"\"}';\r\n hasmsg = true;\r\n }\r\n if ($(this).is(\"[placeholder]\")) {\r\n if (hasmsg)\r\n msg = msg + ',placeholder:{2052:\"' + $(this).attr(\"placeholder\") + '\",1033:\"\"}';\r\n else\r\n msg = msg + 'placeholder:{2052:\"' + $(this).attr(\"placeholder\") + '\",1033:\"\"}';\r\n }\r\n msg = msg + '}';\r\n if (msgs)\r\n msgs = msgs + ',' + msg;\r\n else\r\n msgs = msg + '';\r\n });\r\n return msgs;\r\n}\r\n\r\nif (self.$) {\r\n $(function () {\r\n\r\n //定制\r\n if (window._kyModule) {\r\n var v = localStorage.getItem('_sVersion');\r\n loadScript($x.appRoot() + \"Custom/KYModel.js?v=\" + v);\r\n loadCss($x.appRoot() + \"Custom/KYModel.css?v=\" + v);\r\n }\r\n\r\n //连按2此Esc关闭弹窗\r\n $(document).bind('keydown', function (e) {\r\n if (e.keyCode == 27) {\r\n if (window.__lastDn && new Date() - __lastDn < 400) {\r\n $x.top().closePop();\r\n }\r\n else {\r\n window.__lastDn = new Date() - 0;\r\n }\r\n }\r\n });\r\n parseMsg();\r\n });\r\n\r\n //替换$.html函数 转换多语\r\n var $h = $.prototype.html;\r\n $.prototype.html = function () {\r\n var r = $h.apply(this, arguments);\r\n if (typeof r != \"string\") parseMsg(this);\r\n return r;\r\n };\r\n}\r\n\r\n//202304YP:导出到PDF,指定纸张(大小)方向\r\n// 分页纸张大小。A4 = 592.28 * 841.89\r\nfunction exportHtmlToPDF(exportObj, pdfName, landScape, onOk) {\r\n $(function () {\r\n var opt = { onOk: onOk };\r\n opt.landscape = landScape;\r\n htmlToPDF(exportObj, pdfName, opt);\r\n });\r\n}\r\n\r\n//将BI Report 导出为PDF,BY Todd 20200506, huangz 2021.2\r\nfunction exportBIReportToPDF(exportObj, pdfName, onOk) {\r\n $(function () {\r\n htmlToPDF(exportObj, pdfName, { onOk: onOk });\r\n })\r\n}\r\nfunction createPdfDiv(copyFrom) {\r\n var html = $(copyFrom)[0].outerHTML.replace(/
' + html + '
').appendTo($('body'));\r\n}\r\n\r\nfunction closeSysTip() {\r\n $('#system-auto-remind-content').animate({ height: 'toggle' }, 'slow');\r\n}\r\n\r\n\r\nfunction refreshTopWinPath(obj) {\r\n var biPortalFormObj = $(obj).parents('.bi_portal_win_form');\r\n if ($(biPortalFormObj).length >= 1) refreshWinPath($(biPortalFormObj).attr('path'));\r\n}\r\n\r\nfunction biPortalCalendarEvent(obj) {\r\n var xpath = $(obj).attr(\"xpath\");\r\n if (!xpath) return;\r\n var sid = $(obj).attr(\"sid\").toUpperCase();\r\n var xparas = $.trim($(obj).attr(\"xparas\"));\r\n var title = $(obj).attr(\"title\");\r\n if (title && title.length > 30) title = title.substring(0, 30) + \"...\";\r\n biIconClick(xpath, '', sid, xparas, title);\r\n}\r\n\r\nfunction resetQueryPwd(obj, account) {\r\n var url = $x.appRoot() + \"Tools/Others/GetBackPassword2.aspx?ddtab=true&Account=\" + encodeURIComponent(account);\r\n $x.top().open(url);\r\n}\r\n\r\n//同步表格中控件高度\r\nfunction syncGridCtlHeight(grid, trSel) {\r\n $(grid).find(trSel || 'tr[row]').each(function () {\r\n var ctls = $(this).find('.k-ctl'), maxHt = 0;\r\n for (var i = 0; i < ctls.length; i++) {\r\n maxHt = Math.max(maxHt, ctls.eq(i).outerHeight());\r\n }\r\n ctls.outerHeight(maxHt);\r\n })\r\n}"],"names":["ajaxSync","d","fnOk","fnError","thiso","callInterface","ajaxAsync","ajaxMsg","result","bind","showMsg","async","ret","r","errMsg","kygMsg","msg","KYError","pro","Promise","res","rej","callInterface0","call","err","onOk","onErr","url","$x","appRoot","func","FuncName","noLoading","_noLoading","test","ky_queryStr","data","kyEncPar","idata","JPack","undefined","$","toJSON","Ctx","toMyJson","p","type","timeout","ky_timeout","contentType","beforeSend","req","setRequestHeader","encode64","top","_KYTK","Math","random","Date","join","openMask","success","o","closeMask","substring","JSON","parse","indexOf","localStorage","getItem","SessionUtil","Expire","loadScript","then","_isRetryByTk","location","error","xhr","textStatus","ajax","s","replace","maskUtil","show","hide","popSpecifiedDlg","ihtml","title","width","height","options","openerWin","popFixDlgHTML","extend","popFixDlg","dialogId","getCurrentWind","dlg","length","appendTo","document","body","css","removeClass","autoWidth","html","before","w","prop","max","min","window","h","frmWinTitle","find","attr","dialog","maximizable","right","modal","resizable","shadow","onBeforeOpen","resolveExDialog","onOpen","maskClose","maskToClick","onClose","click","returnValue","fnClose","onMove","l","t","left","openDlgWin","targetURL","iargs","iTemplateHTML","openIFrDlg","urlAddVer","iDialogId","toAbsUrl","dlgObj","siframe","closable","noClose","df","src","ifrm","contentWindow","thisIframe_unload","on","winContainer","this","closed","dialogArguments","prev","k_dlgFromWin","closeIfr","Function","fnLoad","onPopKFrameLoad","parent","hasClass","dialogWindow","opts","trim","itemplateHTML","button","wc","Popup","openImage","imgSrc","minWidth","getTopWindWidth","getTopWindHeight","winid","nextAll","closePop","closeDlgWin","queryString","close","id","$pDialog","closest","addClass","focus","popEDetail","eid","EID","text","isnew","getCurrentFrameID","isDIVContainer","cuwid","getIFrameWindow","parentNode","tempWind","getCtxWin","registerEvent","funcName","ValidateForm","bar","ps","slice","arguments","fn","apply","console","onEnd","solved","ret1","removeAttr","closeTopWind","topWind","targetObj","trigger","downLoadFile","fileId","hrid","attachUtil","create","setTimeout","cancelBubble","event","stopPropagation","cancaleBubble","formatDate","date0","fmt","toUpperCase","date","isNaN","getDay","RegExp","$1","getFullYear","substr","k","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","W","padLeft","pad","Array","map","topWin","winWidth","winHeight","getMaxWinWdith","getMaxWinHeigth","fnFail","iTitle","status","msgid","illegalAccess","KYMsg","KYWarn","callback","gotoHref","href","sid","urlNew","encodeURIComponent","$h","_winmode","biIconClick","path","fmKey","pars","open","winURL","winName","openIModePage","iWidth","iHeight","push","openWindow","tabName","openPopWindow","moveToPath","afterClosePopWind","doc","iFrameObj","treeNode","itemEvent","Path","CurrentForm","reload","forceRefreshParts","saveFormCalendar","obj","calenderEvent","kingEditor","opcmd","paras","calendarWind","saveFormCalendarDate","parents","initUserCalendear","svgToDataUrl","svgXml","match","elementToPDF","element","fileName","opt","loadScriptIf","transform","transformOrigin","promises","each","index","svg","$svg","resolve","reject","img","createElement","onload","remove","xml","append","clone","onerror","canvasElement","canvg","all","finally","html2canvas","background","allowTaint","ignoreAnimation","canvas","canvasToPdf","save","htmlToPDF","delay","onDo","scrollWidth","scrollHeight","oldStl","position","htmlToImage","toCanvas","backgroundColor","paperWidth","pageWidth","paperHeight","pageHeight","landscape","hMargin","vMargin","cntWidth","cntHeight","onPageGot","rate","noDivide","toDataURL","contentHeight","scanHeight","round","ctx","getContext","pageStart","lineCt","pageIndex","pageEnd","scanStart","minColorCt","pageData","getImageData","minColorLine","i","line","colors","n","key","colorCt","Object","keys","getDevidePosY","pageImage","c0","ctx0","fillStyle","fillRect","putImageData","dataToImage","dividePages","imgData","realHeight","addPage","jsPDF","addImage","setFontSize","setTextColor","parseMsg","el","e","msgids","split","attrId","_tranPage","lgid","_lgid","msglgid","_msglgid","_msglgids","oitem","_msgapps","att","val","_getMessage","arg0","arg1","arg2","_msgrems","_getPageMessages","msgs","tag","hasmsg","is","exportHtmlToPDF","exportObj","pdfName","landScape","exportBIReportToPDF","createPdfDiv","copyFrom","outerHTML","closeSysTip","animate","refreshTopWinPath","biPortalFormObj","refreshWinPath","biPortalCalendarEvent","xpath","resetQueryPwd","account","syncGridCtlHeight","grid","trSel","ctls","maxHt","eq","outerHeight","navigator","userAgent","self","v","_kyModule","loadCss","keyCode","__lastDn","prototype"],"mappings":"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"}