{"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 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; //border=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 + 2;// 标题栏高度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)) {\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?Account=\" + 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","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","indexOf","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","localStorage","getItem","loadCss","keyCode","__lastDn","prototype"],"mappings":"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"}