MWF.xApplication.cms = MWF.xApplication.cms || {}; MWF.xApplication.cms.Xform = MWF.xApplication.cms.Xform || {}; MWF.require("MWF.widget.Common", null, false); // MWF.require("MWF.xAction.org.express.RestActions", null, false); MWF.xDesktop.requireApp("Selector", "package", null, false); MWF.xDesktop.requireApp("process.Xform", "Form", null, false); MWF.require("MWF.widget.O2Identity", null, false); MWF.xDesktop.requireApp("cms.Xform", "Package", null, false); /** @class CMSForm 内容管理表单。 * @o2cn 内容管理表单 * @o2category FormComponents * @o2range {CMS} * @alias CMSForm * @example * //可以在脚本中获取表单 * //方法1: * var form = this.form.getApp().appForm; //获取表单 * //方法2 * var form = this.target; //在表单本身的事件脚本中获取 * @hideconstructor */ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class( /** @lends CMSForm# */ { Implements: [Options, Events], Extends: MWF.APPForm, options: { "style": "default", "readonly": false, "cssPath": "", "autoSave": false, "saveOnClose": false, "showAttachment": true, "moduleEvents": [ /** * 表单加载前触发。表单html已经就位。 * @event CMSForm#queryLoad * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "queryLoad", /** * 表单加载前触发。数据(businessData)已经就绪。 * @event CMSForm#beforeLoad * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforeLoad", /** * 表单的所有组件加载前触发,此时表单的样式和js head已经加载。 * @event CMSForm#beforeModulesLoad * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforeModulesLoad", /** * 表单加载后触发。 * @event CMSForm#postLoad * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "postLoad", /** * 表单的所有组件加载后触发。 * @event CMSForm#afterModulesLoad * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "afterModulesLoad", /** * 表单加载后触发。 * @event CMSForm#afterLoad * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "afterLoad", /** * 保存前触发。 * @event CMSForm#beforeSave * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforeSave", /** * 数据已经整理完成,但还未保存到后台时触发。this.event指向整理完成的数据 * @event CMSForm#postSave * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "postSave", /** * 数据保存到后台后触发。 * @event CMSForm#afterSave * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "afterSave", /** * 关闭前触发。 * @event CMSForm#beforeClose * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforeClose", /** * 发布前触发。 * @event CMSForm#beforePublish * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforePublish", /** * 数据已经整理完成,但还未调用服务发布触发。this.event指向整理完成的数据 * @event CMSForm#postPublish * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "postPublish", /** * 执行后台服务发布后触发。 * @event CMSForm#afterPublish * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "afterPublish", /** * 定时发布前触发。 * @event CMSForm#beforeWaitPublish * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforeWaitPublish", /** * 数据已经整理完成,但还未调用定时发布服务前触发。this.event指向整理完成的数据 * @event CMSForm#postWaitPublish * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "postWaitPublish", /** * 执行后台定时发布服务后触发。 * @event CMSForm#afterPublish * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "afterWaitPublish", /** * 删除前触发。 * @event CMSForm#beforeDelete * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "beforeDelete", /** * 删除后触发。 * @event CMSForm#afterDelete * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明} */ "afterDelete", "resize" ] }, /** * @summary 获取表单的所有数据. * @method getData * @memberof CMSForm * @example * var data = this.form.getApp().appForm.getData(); * @return {Object} */ initialize: function (node, data, options) { this.setOptions(options); /** * @summary 表单容器 * @see https://mootools.net/core/docs/1.6.0/Element/Element * @member {Element} * @example * //可以在脚本中获取表单容器 * var formContainer = this.form.getApp().appForm.container; */ this.container = $(node); this.container.setStyle("-webkit-user-select", "text"); this.data = data; /** * @summary 表单的配置信息,比如表单名称等等. * @member {Object} * @example * //可以在脚本中获取表单配置信息 * var json = this.form.getApp().appForm.json; //表单配置信息 * var name = json.name; //表单名称 */ this.json = data.json; this.html = data.html; this.path = "../x_component_cms_Xform/$Form/"; this.cssPath = this.options.cssPath || "../x_component_cms_Xform/$Form/" + this.options.style + "/css.wcss"; this._loadCss(); /** * @summary 表单中的所有组件数组. * @member {Array} * @example * //下面的样例对表单组件进行循环,并且判断是输入类型的组件 * var modules = this.form.getApp().appForm.modules; //获取所有表单组件 * for( var i=0; i * 需要注意的是,在子表单中嵌入不绑定数据的组件(比如div,common,button等等),系统允许重名。
* 在打开表单的时候,系统会根据重名情况,自动在组件的标识后跟上 "_1", "_2"。 * @summary 表单中的所有组件对象. * @member {Object} * @example * var moduleAll = this.form.getApp().appForm.all; //获取组件对象 * var subjectField = moduleAll["subject"] //获取名称为subject的组件 */ this.all = {}; this.forms = {}; //if (!this.personActions) this.personActions = new MWF.xAction.org.express.RestActions(); }, load: function (callback) { if (this.app) { if (this.app.formNode) this.app.formNode.setStyles(this.json.styles); if (this.app.addEvent) this.app.addEvent("resize", function () { this.fireEvent("resize"); }.bind(this)) } //if (!this.businessData.control.allowSave) this.setOptions({"readonly": true}); this.Macro = new MWF.CMSMacro.CMSFormContext(this); this.loadLanguage(function(flag) { this.isParseLanguage = flag; if (flag && this.formDataText) { var data = o2.bindJson(this.formDataText, {"lp": MWF.xApplication.cms.Xform.LP.form}); this.data = JSON.parse(data); this.json = this.data.json; this.html = this.data.html; } var cssClass = ""; if (this.json.css && this.json.css.code) cssClass = this.loadCss(); this.container.set("html", this.html); this.node = this.container.getFirst(); if (cssClass) this.node.addClass(cssClass); this._loadEvents(); this.loadRelatedScript(); if (this.fireEvent("queryLoad")) { // MWF.xDesktop.requireApp("cms.Xform", "lp." + MWF.language, null, false); // this.container.setStyles(this.css.container); this._loadBusinessData(); this.fireEvent("beforeLoad"); if (this.app) if (this.app.fireEvent) this.app.fireEvent("beforeLoad"); this.loadContent(callback) } }.bind(this)); }, loadLanguage: function(callback){ MWF.xDesktop.requireApp("cms.Xform", "lp." + MWF.language, null, false); //formDataText if (this.json.languageType!=="script" && this.json.languageType!=="default"){ if (callback) callback(); return true; } var language = MWF.xApplication.cms.Xform.LP.form; var languageJson = null; if (this.json.languageType=="script"){ if (this.json.languageScript && this.json.languageScript.code){ languageJson = this.Macro.exec(this.json.languageScript.code, this); } }else if (this.json.languageType=="default") { var name = "lp-"+o2.language; var application = this.businessData.document.appId; var p1 = this.documentAction.getDictRoot(name, application, function(d){ return d.data; }, function(){}); var p2 = this.documentAction.getScriptByNameV2(name, application, function(d){ return this.Macro.exec(d.data.text, this); }.bind(this), function(){}); languageJson = Promise.any([p1, p2]); } if (languageJson){ if (languageJson.then && o2.typeOf(languageJson.then)=="function"){ languageJson.then(function(json) { MWF.xApplication.cms.Xform.LP.form = Object.merge(MWF.xApplication.cms.Xform.LP.form, json); if (callback) callback(true); }, function(){ if (callback) callback(true); }) }else{ MWF.xApplication.cms.Xform.LP.form = Object.merge(MWF.xApplication.cms.Xform.LP.form, languageJson); if (callback) callback(true); } }else{ if (callback) callback(true); } }, loadRelatedScript: function () { if (this.json.includeScripts && this.json.includeScripts.length) { var includeScriptText = ""; var includedIds = []; this.json.includeScripts.each(function (s) { if (this.app.relatedScriptMap && this.app.relatedScriptMap[s.id]) { includeScriptText += "\n" + this.app.relatedScriptMap[s.id].text; includedIds.push(s.id); } }.bind(this)); if (includeScriptText) this.Macro.exec(includeScriptText, this); } }, loadContent: function (callback) { this.subformCount = 0; this.subformLoadedCount = 0; this.subformLoaded = [this.json.id]; this._loadHtml(); this._loadForm(); this.fireEvent("beforeModulesLoad"); this._loadModules(this.node); if (!this.options.readonly) { if (this.options.autoSave) this.autoSave(); this.app.addEvent("queryClose", function () { if (this.options.saveOnClose && this.businessData.document.docStatus == "draft") this.saveDocument(null, true); //if (this.autoSaveTimerID) window.clearInterval(this.autoSaveTimerID); Object.each(this.forms, function (module, id) { if (module.json && module.json.type == "Htmleditor" && module.editor) { //if(CKEDITOR.currentImageDialog)CKEDITOR.currentImageDialog.destroy(); //CKEDITOR.currentImageDialog = null; CKEDITOR.remove(module.editor); delete module.editor } }); }.bind(this)); } this.fireEvent("afterModulesLoad"); this.fireEvent("postLoad"); this.fireEvent("afterLoad"); if (this.app && this.app.fireEvent) { this.app.fireEvent("afterModulesLoad"); this.app.fireEvent("postLoad"); this.app.fireEvent("afterLoad"); } // 移动端表单 展现底部工具栏 debugger; if (this.json.mode === "Mobile") { var node = document.body.getElement(".o2_form_mobile_actions"); if (node) { node.empty(); this._loadMobileActions(node, callback); } else { if (callback) callback(); } } // 告诉移动端表单加载完成 // if (this.app && this.app.mobile) { // if (callback) callback(); // } }, autoSave: function () { //this.autoSaveTimerID = window.setInterval(function(){ // this.saveDocument(); //}.bind(this), 300000); }, // 默认的移动端底部工具栏 _loadMobileDefaultTools: function (callback) { if (this.json.defaultTools) { if (callback) callback(); } else { this.json.defaultTools = o2.JSON.get("../x_component_process_FormDesigner/Module/Actionbar/toolbars.json", function (json) { this.json.defaultTools = json; if (callback) callback(); }.bind(this)); } }, // 移动端生成底部工具栏 _loadMobileActions: function (node, callback) { var tools = []; this._loadMobileDefaultTools(function () { if (this.json.defaultTools) { var jsonStr = JSON.stringify(this.json.defaultTools); jsonStr = o2.bindJson(jsonStr, {"lp": MWF.xApplication.cms.Xform.LP.form}); this.json.defaultTools = JSON.parse(jsonStr); this.json.defaultTools.each(function (tool) { var flag = this._checkDefaultMobileActionItem(tool, this.options.readonly); if (flag) tools.push(tool); }.bind(this)); } if (this.json.tools) { var jsonStr = JSON.stringify(this.json.tools); jsonStr = o2.bindJson(jsonStr, {"lp": MWF.xApplication.cms.Xform.LP.form}); this.json.tools = JSON.parse(jsonStr); this.json.tools.each(function (tool) { var flag = this._checkCustomMobileActionItem(tool, this.options.readonly); if (flag) tools.push(tool); }.bind(this)); } this.mobileTools = tools; //app上用原来的按钮样式 if (window.o2android) { if (tools.length) if (node) this._createMobileActions(node, tools); } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.o2mLog) { if (tools.length) if (node) this._createMobileActions(node, tools); } else { //钉钉 企业微信用新的样式 if (tools.length) if (node) this._createMobileActionsDingdingStyle(node, tools); } if (callback) callback(); }.bind(this)); }, // 检查默认按钮是否显示 _checkDefaultMobileActionItem: function (tool, readonly, noCondition) { var flag = true; if (tool.control) { flag = this.businessData.control[tool.control] } if (!noCondition) if (tool.condition) { var hideFlag = this.Macro.exec(tool.condition, this); flag = flag && (!hideFlag); } // if (readonly) if (!tool.read) flag = false; if (readonly){ if (!tool.read) flag = false; }else{ if (!tool.edit) flag = false; } // 移动端禁用 关闭和打印 if (tool.id === "action_close" || tool.id === "action_print" || tool.id === "action_popular") { flag = false; } return flag; }, // 检查自定义按钮是否显示 _checkCustomMobileActionItem: function (tool, readonly) { var flag = true; if (readonly) { flag = tool.readShow; } else { flag = tool.editShow; } if (flag) { flag = true; if (tool.control) { flag = this.businessData.control[tool.control] } if (tool.condition) { var hideFlag = this.Macro.exec(tool.condition, this); flag = !hideFlag; } } return flag; }, // 创建默认样式的底部工具栏 _createMobileActions: function (node, tools) { node.show(); var count = tools.length; if (count <= 2) { this.css.html5ActionButton.width = "100%"; if (count == 2) this.css.html5ActionButton.width = "49%"; tools.each(function (tool) { var action = new Element("div", { "styles": this.css.html5ActionButton, "text": tool.text }).inject(node); action.store("tool", tool); action.addEvent("click", function (e) { var t = e.target.retrieve("tool"); e.setDisable = function () { } if (t.actionScript) { this._runCustomAction(t.actionScript); } else { if (this[t.action]) this[t.action](e); } }.bind(this)); this._setMobileBottonStyle(action); }.bind(this)); if (count == 2) new Element("div", { "styles": this.css.html5ActionButtonSplit }).inject(node.getLast(), "before"); } else { this.css.html5ActionButton.width = "38%" for (var i = 0; i < 2; i++) { tool = tools[i]; var action = new Element("div", { "styles": this.css.html5ActionButton, "text": tool.text }).inject(node); action.store("tool", tool); action.addEvent("click", function (e) { var t = e.target.retrieve("tool"); e.setDisable = function () { } if (t.actionScript) { this._runCustomAction(t.actionScript); } else { if (this[t.action]) this[t.action](e); } }.bind(this)); this._setMobileBottonStyle(action); } new Element("div", { "styles": this.css.html5ActionButtonSplit }).inject(node.getLast(), "before"); new Element("div", { "styles": this.css.html5ActionButtonSplit }).inject(node); this.css.html5ActionButton.width = "23%" var action = new Element("div", { "styles": this.css.html5ActionButton, "text": "…" }).inject(node); action.addEvent("click", function (e) { this._loadMoreMobileActions(tools, 2, node); }.bind(this)); this._setMobileBottonStyle(action); } }, // 更多按钮 _loadMoreMobileActions: function (tools, n, node) { document.body.mask({ "id": "cms_toolbar_mask_id", "style": { "background-color": "#cccccc", "opacity": 0.6 }, "hideOnClick": true, "onHide": function () { if (this.actionMoreArea){ this.actionMoreArea.setStyle("display", "none"); } }.bind(this) }); if (this.actionMoreArea) { this.actionMoreArea.setStyle("display", "block"); } else { var size = document.body.getSize(); this.actionMoreArea = new Element("div", { "styles": this.css.html5ActionOtherArea }).inject(document.body); var pl = this.actionMoreArea.getStyle("padding-left").toInt(); var pr = this.actionMoreArea.getStyle("padding-right").toInt(); var w = size.x - pl - pr; this.actionMoreArea.setStyle("width", "" + w + "px"); for (var i = n; i < tools.length; i++) { tool = tools[i]; var action = new Element("div", { "styles": this.css.html5ActionOtherButton, "text": tool.text }).inject(this.actionMoreArea); action.store("tool", tool); action.addEvent("click", function (e) { //隐藏更多菜单 var mask = document.id("cms_toolbar_mask_id"); mask.destroy(); this.actionMoreArea.setStyle("display", "none"); var t = e.target.retrieve("tool"); e.setDisable = function () { } if (t.actionScript) { this._runCustomAction(t.actionScript); } else { if (this[t.action]) this[t.action](e); } }.bind(this)); this._setMobileBottonStyle(action); } } // actionArea.position({ // relativeTo: node, // position: 'topCenter', // edge: 'bottomCenter' // }); }, _setMobileBottonStyle: function (action) { var _self = this; action.addEvents({ "mouseover": function (e) { this.setStyles(_self.css.html5ActionButton_over) }, "mouseout": function (e) { this.setStyles(_self.css.html5ActionButton_up) }, "mousedown": function (e) { this.setStyles(_self.css.html5ActionButton_over) }, "mouseup": function (e) { this.setStyles(_self.css.html5ActionButton_up) }, "touchstart": function (e) { this.setStyles(_self.css.html5ActionButton_over) }, "touchcancel": function (e) { this.setStyles(_self.css.html5ActionButton_up) }, "touchend": function (e) { this.setStyles(_self.css.html5ActionButton_up) }, "touchmove": function (e) { this.setStyles(_self.css.html5ActionButton_over) } }); }, // 钉钉企业微信样式的按钮 _createMobileActionsDingdingStyle: function (node, tools) { node.show(); var count = tools.length; if (count <= 2) { //左边 间隔 var dingdingSplitLeft = new Element("div", { "styles": this.css.html5ActionButtonDingdingSplit, "text": " " }).inject(node); var splitSize = dingdingSplitLeft.getSize(); var size = document.body.getSize(); var buttonWidth = (size.x - splitSize.x * (count + 1) - (count * 2)) / count; tools.each(function (tool) { var actionStyle = this.css.html5ActionButtonDingdingNormal; if (tool.id === "action_edit" || tool.id === "action_saveData" || tool.id === "action_saveDraftDocument" || tool.id === "action_publishDocument" || tool.id === "action_publishDocumentDelayed") { actionStyle = this.css.html5ActionButtonDingdingPrimary; } else if (tool.id === "action_delete") { actionStyle = this.css.html5ActionButtonDingdingDanger; } actionStyle.width = buttonWidth + "px"; var action = new Element("div", { "styles": actionStyle, "text": tool.text }).inject(node); action.store("tool", tool); action.addEvent("click", function (e) { var clickFun = function () { var t = e.target.retrieve("tool"); e.setDisable = function () { }; if (t.actionScript) { this._runCustomAction(t.actionScript); } else { if (this[t.action]) this[t.action](e); } }.bind(this); if (tool.text === "继续流转" || tool.id === "action_processWork") { //输入法激活的时候,需要一段时间等待输入法关闭 window.setTimeout(clickFun, 100) } else { clickFun(); } }.bind(this)); new Element("div", { "styles": this.css.html5ActionButtonDingdingSplit, "text": " " }).inject(node); }.bind(this)); } else { //左边 间隔 var dingdingSplitLeft = new Element("div", { "styles": this.css.html5ActionButtonDingdingSplit, "text": " " }).inject(node); var splitSize = dingdingSplitLeft.getSize(); var size = document.body.getSize(); var buttonWidth = (size.x - splitSize.x * 4 - 6) / 5; for (var i = 0; i < 3; i++) { tool = tools[i]; var actionStyle = this.css.html5ActionButtonDingdingNormal; if (tool.id === "action_edit" || tool.id === "action_saveData" || tool.id === "action_saveDraftDocument" || tool.id === "action_publishDocument" || tool.id === "action_publishDocumentDelayed") { actionStyle = this.css.html5ActionButtonDingdingPrimary; } else if (tool.id === "action_delete") { actionStyle = this.css.html5ActionButtonDingdingDanger; } if (i == 2) { this.css.html5ActionButtonDingdingMore.width = buttonWidth + "px"; var action = new Element("div", { "styles": this.css.html5ActionButtonDingdingMore, "text": "…" }).inject(node); action.addEvent("click", function (e) { this._loadMoreMobileActionsDingdingStyle(tools, 2, node); }.bind(this)); } else { actionStyle.width = (buttonWidth * 2) + "px"; var action = new Element("div", { "styles": actionStyle, "text": tool.text }).inject(node); action.store("tool", tool); action.addEvent("click", function (e) { var t = e.target.retrieve("tool"); e.setDisable = function () { } if (t.actionScript) { this._runCustomAction(t.actionScript); } else { if (this[t.action]) this[t.action](e); } }.bind(this)); } new Element("div", { "styles": this.css.html5ActionButtonDingdingSplit, "text": " " }).inject(node); } } }, // _loadMoreMobileActionsDingdingStyle: function (tools, n, node) { document.body.mask({ "id": "cms_toolbar_mask_id", "style": { "background-color": "#cccccc", "opacity": 0.6 }, "hideOnClick": true, "onHide": function () { if (this.actionMoreArea){ this.actionMoreArea.setStyle("display", "none"); } }.bind(this) }); if (this.actionMoreArea) { this.actionMoreArea.setStyle("display", "block"); } else { var size = document.body.getSize(); this.actionMoreArea = new Element("div", { "styles": this.css.html5ActionOtherArea }).inject(document.body); var pl = this.actionMoreArea.getStyle("padding-left").toInt(); var pr = this.actionMoreArea.getStyle("padding-right").toInt(); var w = size.x - pl - pr; this.actionMoreArea.setStyle("width", "" + w + "px"); for (var i = n; i < tools.length; i++) { tool = tools[i]; var actionStyle = this.css.html5ActionButtonDingdingNormal; if (tool.id === "action_edit" || tool.id === "action_saveData" || tool.id === "action_saveDraftDocument" || tool.id === "action_publishDocument" || tool.id === "action_publishDocumentDelayed") { actionStyle = this.css.html5ActionButtonDingdingPrimary; } else if (tool.id === "action_delete") { actionStyle = this.css.html5ActionButtonDingdingDanger; } actionStyle.width = "100%"; var action = new Element("div", { "styles": actionStyle, "text": tool.text }).inject(this.actionMoreArea); action.store("tool", tool); action.addEvent("click", function (e) { //隐藏更多菜单 var mask = document.id("cms_toolbar_mask_id"); mask.destroy(); this.actionMoreArea.setStyle("display", "none"); var t = e.target.retrieve("tool"); e.setDisable = function () { } if (t.actionScript) { this._runCustomAction(t.actionScript); } else { if (this[t.action]) this[t.action](e); } }.bind(this)); } } }, _loadBusinessData: function () { if (!this.businessData) { this.businessData = { "data": {} }; } }, _loadEvents: function () { Object.each(this.json.events, function (e, key) { if (e.code) { if (this.options.moduleEvents.indexOf(key) != -1) { this.addEvent(key, function (event) { return this.Macro.fire(e.code, this, event); }.bind(this)); } else { if (key == "load") { this.addEvent("postLoad", function () { return this.Macro.fire(e.code, this); }.bind(this)); } else if (key == "submit") { this.addEvent("beforePublish", function () { return this.Macro.fire(e.code, this); }.bind(this)); } else { this.node.addEvent(key, function (event) { return this.Macro.fire(e.code, this, event); }.bind(this)); } } } }.bind(this)); }, _loadModules: function (dom, beforeLoadModule, replace, callback) { var moduleNodes = this._getModuleNodes(dom); var modules = [], jsons = []; moduleNodes.each(function (node) { var json = this._getDomjson(node); jsons.push( json ); if (!this.options.showAttachment && json && json.type == "Attachment") { return; } //移动端去掉操作栏 if (layout.mobile && json && json.type === "Actionbar") { return; } var module = this._loadModule(json, node, beforeLoadModule, replace); this.modules.push(module); modules.push( module ); }.bind(this)); if( callback )callback( moduleNodes, jsons, modules ) }, _loadModule: function (json, node, beforeLoad) { if (!json) return; //流程组件返回 if( ( json.type === "Log" && json.logType ) || ["Monitor","ReadLog"].contains(json.type) ){ node.empty(); return; }else if( this.options.useProcessForm && json.type === "Actionbar" ){ //使用流程表单,组件是操作条 json.type = "ProcessActionbar" } if (!MWF["CMS" + json.type]) { var moduleType = json.type; if(moduleType === "AttachmentDg")moduleType = "Attachment"; MWF.xDesktop.requireApp("cms.Xform", moduleType, null, false); } var module = new MWF["CMS" + json.type](node, json, this); if (beforeLoad) beforeLoad.apply(module); if (!this.all[json.id]) this.all[json.id] = module; if (module.field) { if (!this.forms[json.id]) this.forms[json.id] = module; } module.readonly = this.options.readonly; module.load(); return module; }, //getData: function(){ // var data= Object.clone(this.businessData.data); // Object.each(this.forms, function(module, id){ // debugger; // if (module.json.section=="yes"){ // data[id] = this.getSectionData(module, data[id]); // }else{ // data[id] = module.getData(); // } // }.bind(this)); // // this.businessData.data = data; // this.Macro.environment.setData(this.businessData.data); // return data; //}, trim: function (array) { var arr = []; array.each(function (v) { if (v) arr.push(v); }); return arr; }, transportPermissionData: function (array, t) { var result = []; array.each(function (data) { var dn = typeOf(data) === "string" ? data : data.distinguishedName; if (dn) { var flag = dn.substr(dn.length - 1, 1); var type; switch (flag.toLowerCase()) { case "i": type = "人员"; //"身份"; break; case "p": type = "人员"; break; case "u": type = "组织"; break; case "g": type = "群组"; break; case "r": type = "角色"; break; default: type = ""; //result.push( data ); } if (type) { var name; if( typeOf(data) === "object" && data.name ){ name = data.name; }else if( MWF.name && MWF.name.cn ){ name = MWF.name.cn( dn ); }else{ name = dn.split("@")[0]; } result.push({ permission: t == "author" ? "作者" : "阅读", permissionObjectType: type, permissionObjectName: name, permissionObjectCode: dn }) } } }); return result; }, getSpecialData: function () { var data = this.businessData.data; var readers = []; var authors = []; var pictures = []; var cloudPictures = []; var summary = ""; Object.each(this.forms, function (module, id) { if (module.json.type == "Readerfield" || module.json.type == "Reader") { if (module.json.section == "yes") { readers = readers.concat(this.getSectionData(module, data[id])); } else { readers = readers.concat(module.getData()); } } if (module.json.type == "Authorfield" || module.json.type == "Author") { if (module.json.section == "yes") { authors = authors.concat(this.getSectionData(module, data[id])); } else { authors = authors.concat(module.getData()); } } if (module.json.type == "ImageClipper") { var d = module.getData(); if (d) pictures.push(d); } if (module.json.type == "Htmleditor") { var text = module.getText(); summary = text.substr(0, 80); cloudPictures = cloudPictures.concat(module.getImageIds()); } if (module.json.type == "TinyMCEEditor") { var text = module.getText(); summary = text.substr(0, 80); cloudPictures = cloudPictures.concat(module.getImageIds()); } }); if (data.processOwnerList && typeOf(data.processOwnerList) == "array") { //如果是流程中发布的 var owner = { personValue: [] }; data.processOwnerList.each(function (p) { owner.personValue.push({ name: p, type: "person" }); }); readers = readers.concat(owner); } return { readers: this.transportPermissionData(readers, "reader"), authors: this.transportPermissionData(authors, "author"), pictures: pictures, summary: summary, cloudPictures: cloudPictures }; }, getDocumentData: function (formData) { var data = Object.clone(this.businessData.document); if (formData.subject) { data.title = formData.subject; data.subject = formData.subject; this.businessData.document.title = formData.subject; this.businessData.document.subject = formData.subject; } data.isNewDocument = false; return data; }, saveDocument: function (callback, sync) { this.fireEvent("beforeSave"); if (this.businessData.document.docStatus == "published") { if (!this.formValidation("publish")) { this.app.content.unmask(); //if (callback) callback(); return false; } } if (!this.formSaveValidation()) { this.app.content.unmask(); if (callback && typeof callback === "function") callback(); return false; } var data = this.getData(); var specialData = this.getSpecialData(); var documentData = this.getDocumentData(data); if( documentData.docStatus === "waitPublish" ){ documentData.documentNotify = this.getNoticeOptions(); } documentData.readerList = specialData.readers; documentData.authorList = specialData.authors; documentData.pictureList = specialData.pictures; documentData.summary = specialData.summary; documentData.cloudPictures = specialData.cloudPictures; documentData.docData = data; delete documentData.attachmentList; this.fireEvent("postSave", [documentData]); if (this.officeList) { this.officeList.each(function (module) { module.save(); }); } this.documentAction.saveDocument(documentData, function () { //this.documentAction.saveData(function(json){ this.app.notice(MWF.xApplication.cms.Xform.LP.dataSaved, "success"); this.businessData.data.isNew = false; this.fireEvent("afterSave"); if (callback && typeof callback === "function") callback(); if( !this.json.notReloadWhenSave ){ this._reloadReadForm(); } //}.bind(this), null, this.businessData.document.id, data, !sync ); }.bind(this), null, !sync); }, // 重新加载阅读表单 _reloadReadForm: function() { this.fireEvent("reloadReadForm"); if (this.app.inBrowser) { this.modules.each(function (module) { MWF.release(module); }); //MWF.release(this); this.app.node.destroy(); this.app.options.readonly = true; this.app.loadApplication(); } }, closeDocument: function () { this.fireEvent("beforeClose"); if (this.app) { this.app.close(); } }, printDocument: function (form) { var form = form; if (!form) { form = this.json.id; if (this.json.printForm && this.json.printForm !== "none") form = this.json.printForm; } window.open(o2.filterUrl("../x_desktop/printcmsdoc.html?documentid=" + this.businessData.document.id + "&form=" + form)); }, formValidation: function (status) { if (this.options.readonly) return true; var flag = true; //flag = this.validation(); Object.each(this.forms, function (field, key) { if (field.validationMode)field.validationMode(); if (field.validation && !field.validation(status)) { flag = false; } }.bind(this)); return flag; }, formSaveValidation: function () { if (!this.json.validationSave) return true; if (!this.json.validationSave.code) return true; var flag = this.Macro.exec(this.json.validationSave.code, this); if (!flag) flag = MWF.xApplication.cms.Xform.LP.notValidation; if (typeOf(flag) === "string") { if (flag !== "true") { this.app.notice(flag, "error"); return false; } } else if (flag.toString() != "true") { return false; } return true; }, formPublishValidation: function () { if (!this.json.validationPublish) return true; if (!this.json.validationPublish.code) return true; var flag = this.Macro.exec(this.json.validationPublish.code, this); if (!flag) flag = MWF.xApplication.cms.Xform.LP.notValidation; if (typeOf(flag) === "string") { if (flag !== "true") { this.app.notice(flag, "error"); return false; } } else if (flag.toString() != "true") { return false; } return true; }, publishDocumentDelayed: function( callback ){ this.fireEvent("beforeWaitPublish"); // this.app.content.mask({ // "destroyOnHide": true, // "style": this.app.css.maskNode // }); if (!this.formValidation("publish")) { // this.app.content.unmask(); //if (callback) callback(); return false; } if (!this.formPublishValidation()) { // this.app.content.unmask(); if (callback) callback(); return false; } MWF.xDesktop.requireApp("cms.Document", "DelayPublishForm", null, false); debugger; var form = new MWF.xApplication.cms.Document.DelayPublishForm(this, {}, { publishTime : this.businessData.document.publishTime || "", onPostOk : function( publishTime ){ this._publishDocumentDelayed( publishTime ); }.bind(this) },{ app : this.app, lp : this.app.lp, css : this.app.css, actions : this.app.action }); form.create(); }, _publishDocumentDelayed: function( publishTime ){ var data = this.getData(); var specialData = this.getSpecialData(); //this.documentAction.saveData(function(json){ var documentData = this.getDocumentData(data); documentData.publishTime = publishTime; documentData.docStatus = "waitPublish"; documentData.documentNotify = this.getNoticeOptions(); documentData.readerList = specialData.readers; documentData.authorList = specialData.authors; documentData.pictureList = specialData.pictures; documentData.summary = specialData.summary; documentData.cloudPictures = specialData.cloudPictures; documentData.docData = data; delete documentData.attachmentList; //this.documentAction.saveDocument(documentData, function(){ this.fireEvent("postWaitPublish", [documentData]); if (this.app) if (this.app.fireEvent) this.app.fireEvent("postWaitPublish",[documentData]); if (this.officeList) { this.officeList.each(function (module) { module.save(); }); } this.documentAction.publishDocumentComplex(documentData, function (json) { this.businessData.data.isNew = false; this.fireEvent("afterWaitPublish", [this, json.data]); if (this.app) if (this.app.fireEvent) this.app.fireEvent("afterWaitPublish",[this, json.data]); // if (callback) callback(); // 传进来不是function if (layout.mobile) { // this.app.content.unmask(); this.closeWindowOnMobile(); } else { if (this.businessData.document.title) { this.app.notice(MWF.xApplication.cms.Xform.LP.documentDelayedPublished + ": “" + this.businessData.document.title + "”", "success"); } else { this.app.notice(MWF.xApplication.cms.Xform.LP.documentDelayedPublished, "success"); } this.options.saveOnClose = false; debugger; if( layout.inBrowser ){ try{ if( window.opener && window.opener.o2RefreshCMSView ){ window.opener.o2RefreshCMSView(); } }catch (e) {} window.setTimeout(function () { this.app.close(); }.bind(this), 1500) }else{ this.app.close(); } } }.bind(this)); }, publishDocument: function (callback, slience) { this.fireEvent("beforePublish"); this.app.content.mask({ "destroyOnHide": true, "style": this.app.css.maskNode }); if (!this.formValidation("publish")) { this.app.content.unmask(); if (o2.typeOf(callback) === "function") callback(); return false; } if (!this.formPublishValidation()) { this.app.content.unmask(); if (o2.typeOf(callback) === "function") callback(); return false; } var data = this.getData(); var specialData = this.getSpecialData(); //this.documentAction.saveData(function(json){ var documentData = this.getDocumentData(data); documentData.readerList = specialData.readers; documentData.authorList = specialData.authors; documentData.pictureList = specialData.pictures; documentData.summary = specialData.summary; documentData.cloudPictures = specialData.cloudPictures; documentData.docData = data; delete documentData.attachmentList; //this.documentAction.saveDocument(documentData, function(){ this.fireEvent("postPublish", [documentData]); if (this.app) if (this.app.fireEvent) this.app.fireEvent("postPublish",[documentData]); if (this.officeList) { this.officeList.each(function (module) { module.save(); }); } this.documentAction.publishDocumentComplex(documentData, function (json) { this.sendNotice(function () { this.businessData.data.isNew = false; this.fireEvent("afterPublish", [this, json.data]); if (this.app) if (this.app.fireEvent) this.app.fireEvent("afterPublish",[this, json.data]); if (o2.typeOf(callback) === "function") callback(json); // 传进来不是function if (layout.mobile) { this.app.content.unmask(); this.closeWindowOnMobile(); } else { if( slience !== true ){ if (this.businessData.document.title) { this.app.notice(MWF.xApplication.cms.Xform.LP.documentPublished + ": “" + this.businessData.document.title + "”", "success"); } else { this.app.notice(MWF.xApplication.cms.Xform.LP.documentPublished, "success"); } } this.options.saveOnClose = false; debugger; if( layout.inBrowser ){ try{ if( window.opener && window.opener.o2RefreshCMSView ){ window.opener.o2RefreshCMSView(); } }catch (e) {} window.setTimeout(function () { this.app.close(); }.bind(this), 1500) }else{ this.app.close(); } } }.bind(this)); }.bind(this)); //}.bind(this)) //}.bind(this), null, this.businessData.document.id, data); }, getNoticeOptions: function(){ var rangeList = []; var sendOptions; if( this.json.noticeType === "custom" ){ //reader switch ( o2.typeOf( this.json.noticeSpecificList ) ) { case "array": rangeList = this.json.noticeSpecificList; break; case "string": case "object": rangeList.push( this.json.noticeSpecificList ); break; } (this.json.noticeFormFieldList || []).each(function (name) { var range = this.all[name.id] ? this.all[name.id].getData() : null; if( range )rangeList = rangeList.concat( range ); }.bind(this)); if( this.json.noticeScript && this.json.noticeScript.code ){ range = this.Macro.exec(this.json.noticeScript.code, this); switch ( o2.typeOf( range ) ) { case "array": rangeList = rangeList.concat( range ); break; case "string": case "object": rangeList.push( range ); break; } } rangeList = rangeList.clean().map(function ( range ) { return o2.typeOf(range) === "string" ? range : range.distinguishedName }).unique(); sendOptions = { documentId: this.businessData.document.id, notifyPersonList: rangeList, notifyCreatePerson: this.json.notifyCreatePerson !== "no" }; }else{ var readers = []; Object.each(this.forms, function (module, id) { if (module.json.type === "Readerfield" || module.json.type === "Reader") { readers = readers.concat(module.getData()); } }); rangeList = readers.clean().map(function ( range ) { return o2.typeOf(range) === "string" ? range : range.distinguishedName }).unique(); if( rangeList.length === 0 ){ if( this.json.blankToAllNotify !== "no" ){ //通知所有人 sendOptions = { documentId: this.businessData.document.id, notifyByDocumentReadPerson: true, notifyCreatePerson: this.json.notifyCreatePerson !== "no" }; } }else{ sendOptions = { documentId: this.businessData.document.id, notifyPersonList: rangeList, notifyByDocumentReadPerson: true, notifyCreatePerson: this.json.notifyCreatePerson !== "no" }; } } if( !sendOptions && this.json.notifyCreatePerson !== "no" ){ sendOptions = { documentId: this.businessData.document.id, notifyByDocumentReadPerson: false, notifyCreatePerson: true }; } return sendOptions; }, sendNotice: function( callback ){ var sendOptions = this.getNoticeOptions(); if( sendOptions && o2.Actions.load("x_cms_assemble_control").DocumentAction.publishNotify ) { o2.Actions.load("x_cms_assemble_control").DocumentAction.publishNotify(this.businessData.document.id, sendOptions, function () { if (callback) callback( sendOptions ); }, function () { if (callback) callback( sendOptions ); }) }else{ if(callback)callback( sendOptions ); } }, deleteDocumentForMobile: function () { if (layout.mobile) { this.app.content.mask({ "style": { "background-color": "#999", "opacity": 0.6 } }); this.fireEvent("beforeDelete"); if (this.app && this.app.fireEvent) this.app.fireEvent("beforeDelete"); this.documentAction.removeDocument(this.businessData.document.id, function (json) { this.fireEvent("afterDelete"); if (this.app && this.app.fireEvent) this.app.fireEvent("afterDelete"); this.app.notice(MWF.xApplication.cms.Xform.LP.documentDelete + ": “" + this.businessData.document.title + "”", "success"); this.options.autoSave = false; this.options.saveOnClose = false; this.fireEvent("postDelete"); this.closeWindowOnMobile(); }.bind(this)); } }, /** * @summary 弹出删除文档确认框. * @method deleteDocument * @memberof CMSForm * @example * this.form.getApp().appForm.deleteDocument(); */ deleteDocument: function () { var _self = this; var p = MWF.getCenterPosition(this.app.content, 380, 150); var event = { "event": { "x": p.x, "y": p.y - 200, "clientX": p.x, "clientY": p.y - 200 } }; debugger; this.app.confirm("infor", event, MWF.xApplication.cms.Xform.LP.deleteDocumentTitle, MWF.xApplication.cms.Xform.LP.deleteDocumentText, 380, 120, function () { if (layout.mobile) { _self.deleteDocumentForMobile(); } else { _self.app.content.mask({ "style": { "background-color": "#999", "opacity": 0.6 } }); _self.fireEvent("beforeDelete"); if (_self.app && _self.app.fireEvent) _self.app.fireEvent("beforeDelete"); _self.documentAction.removeDocument(_self.businessData.document.id, function (json) { debugger; _self.fireEvent("afterDelete"); if (_self.app && _self.app.fireEvent) _self.app.fireEvent("afterDelete"); _self.app.notice(MWF.xApplication.cms.Xform.LP.documentDelete + ": “" + _self.businessData.document.title + "”", "success"); _self.options.autoSave = false; _self.options.saveOnClose = false; _self.fireEvent("postDelete"); _self.app.close(); this.close(); }.bind(this)); } //this.close(); }, function () { this.close(); }); }, /** * @summary 编辑文档. * @method editDocument * @memberof CMSForm * @example * this.form.getApp().appForm.editDocument(); */ editDocument: function () { this.fireEvent("editDocument"); if (this.app.inBrowser) { this.modules.each(function (module) { MWF.release(module); }); //MWF.release(this); this.app.node.destroy(); this.app.options.readonly = false; this.app.loadApplication(); } else { var options = { "documentId": this.businessData.document.id, "readonly": false }; //this.explorer.app.options.application.allowControl}; if (this.app.options.postPublish)options.postPublish = this.app.options.postPublish; if (this.app.options.afterPublish)options.afterPublish = this.app.options.afterPublish; if (this.app.options.postDelete)options.postDelete = this.app.options.postDelete; if (this.app.options.formEditId) options.formEditId = this.app.options.formEditId; this.app.desktop.openApplication(null, "cms.Document", options); this.app.close(); } }, //2019-11-29 移动端 开启编辑模式 /** * @summary 移动端开启编辑模式. * @method editDocumentForMobile * @memberof CMSForm * @example * this.form.getApp().appForm.editDocumentForMobile(); */ editDocumentForMobile: function () { if (layout.mobile) { this.app.options.readonly = false; this.app.loadDocument(this.app.options); } }, /** * @summary 弹出设置热点的界面. * @method setPopularDocument * @memberof CMSForm * @example * this.form.getApp().appForm.setPopularDocument(); */ setPopularDocument: function () { this.app.setPopularDocument(); }, // printWork: function (app, form) { // var application = app || this.businessData.work.application; // var form = form; // if (!form) { // form = this.json.id; // if (this.json.printForm) form = this.json.printForm; // } // window.open(o2.filterUrl("../x_desktop/printWork.html?workid=" + this.businessData.work.id + "&app=" + this.businessData.work.application + "&form=" + form)); // }, openWindow: function (form, app) { var form = form; if (!form) { form = this.json.id; } if (this.businessData.document) { //var application = app; //window.open("../x_desktop/printWork.html?workCompletedId="+this.businessData.workCompleted.id+"&app="+application+"&form="+form); } }, /** * @summary 将新上传的附件在指定的附件组件中展现. * @method uploadedAttachment * @memberof CMSForm * @param {String} site - 附件组件的标识 * @param {String} id - 新上传的附件id * @example * this.form.getApp().appForm.uploadedAttachment(site, id); */ uploadedAttachment: function (site, id) { this.documentAction.getAttachment(id, this.businessData.document.id, function (json) { var flag = this.businessData.attachmentList.some(function (attData) { return json.data.id === attData.id; }.bind(this)); if( !flag ){ this.businessData.attachmentList.push(json.data); } var att = this.all[site]; if (att) { if (json.data) att.attachmentController.addAttachment(json.data); att.attachmentController.checkActions(); att.fireEvent("upload", [json.data]); } }.bind(this)); }, replacedAttachment: function (site, id) { this.documentAction.getAttachment(id, this.businessData.document.id, function (json) { var att = this.all[site]; if (att) { var attachmentController = att.attachmentController; var attachment = null; for (var i = 0; i < attachmentController.attachments.length; i++) { if (attachmentController.attachments[i].data.id === id) { attachment = attachmentController.attachments[i]; break; } } attachment.data = json.data; attachment.reload(); attachmentController.checkActions(); } }.bind(this)) }, uploadedAttachmentDatagrid: function (site, id, moduleId) { this.documentAction.getAttachment(id, this.businessData.document.id, function (json) { var flag = this.businessData.attachmentList.some(function (attData) { return json.data.id === attData.id; }.bind(this)); if( !flag ){ this.businessData.attachmentList.push(json.data); } var att = this.all[moduleId]; if (att) { if (json.data) att.attachmentController.addAttachment(json.data); att.setAttachmentBusinessData(); att.attachmentController.checkActions(); att.fireEvent("upload", [json.data]); att.fireEvent("change", [json.data]); } }.bind(this)); }, replacedAttachmentDatagrid: function (site, id, moduleId) { this.documentAction.getAttachment(id, this.businessData.document.id, function (json) { var att = this.all[moduleId]; if (att) { var attachmentController = att.attachmentController; var attachment = null; for (var i = 0; i < attachmentController.attachments.length; i++) { if (attachmentController.attachments[i].data.id === id) { attachment = attachmentController.attachments[i]; break; } } attachment.data = json.data; att.setAttachmentBusinessData(); attachment.reload(); attachmentController.checkActions(); att.fireEvent("change", [json.data]); } }.bind(this)) }, /** * @summary 弹出文档置顶对话框,操作后使当前文档在列式服务中排在前面. * @method setTop * @memberof CMSForm * @example * this.form.getApp().appForm.setTop(); */ setTop: function () { var _self = this; var p = MWF.getCenterPosition(this.app.content, 380, 150); var event = { "event": { "x": p.x, "y": p.y - 200, "clientX": p.x, "clientY": p.y - 200 } }; this.app.confirm("infor", event, MWF.xApplication.cms.Xform.LP.setTopTitle, MWF.xApplication.cms.Xform.LP.setTopText, 380, 120, function () { o2.Actions.load("x_cms_assemble_control").DocumentAction.persist_top(_self.businessData.document.id, function () { _self.app.notice(MWF.xApplication.cms.Xform.LP.setTopSuccess, "success"); _self.app.reload(); this.close(); }.bind(this)) //this.close(); }, function () { this.close(); }); }, /** * @summary 弹出文档取消置顶对话框. * @method cancelTop * @memberof CMSForm * @example * this.form.getApp().appForm.cancelTop(); */ cancelTop: function () { var _self = this; var p = MWF.getCenterPosition(this.app.content, 380, 150); var event = { "event": { "x": p.x, "y": p.y - 200, "clientX": p.x, "clientY": p.y - 200 } }; this.app.confirm("infor", event, MWF.xApplication.cms.Xform.LP.cancelTopTitle, MWF.xApplication.cms.Xform.LP.cancelTopText, 380, 120, function () { o2.Actions.load("x_cms_assemble_control").DocumentAction.persist_unTop(_self.businessData.document.id, function () { _self.app.notice(MWF.xApplication.cms.Xform.LP.cancelTopSuccess, "success"); _self.app.reload(); this.close(); }.bind(this)) //this.close(); }, function () { this.close(); }); }, /** * @summary 一键下载表单和附件. * @method downloadAll * @memberof CMSForm * @example * this.form.getApp().appForm.downloadAll(); */ downloadAll: function () { o2.Actions.load("x_cms_assemble_control").FileInfoAction.uploadWorkInfo(this.businessData.document.id, "pdf", { "workHtml": encodeURIComponent(this.app.content.get("html")), "pageWidth": 1000 }, function (json) { var htmlFormId = json.data.id; htmlFormId = htmlFormId.replace("#", "%23"); var url = "/x_cms_assemble_control/jaxrs/fileinfo/batch/download/doc/" + this.businessData.document.id + "/site/(0)"; url = o2.filterUrl(o2.Actions.getHost("x_processplatform_assemble_surface") + url); var downloadUrl = o2.filterUrl(url + "?fileName=&flag=" + htmlFormId); if ((o2.thirdparty.isDingdingPC() || o2.thirdparty.isQywxPC())) { var xtoken = Cookie.read(o2.tokenName); downloadUrl += "&" + o2.tokenName + "=" + xtoken; } window.open(downloadUrl); }.bind(this)); }, /** * 移动端处理关闭 */ closeWindowOnMobile: function () { if (window.o2android && window.o2android.postMessage) { var body = { type: "closeDocumentWindow", data: {} }; window.o2android.postMessage(JSON.stringify(body)); } else if (window.o2android && window.o2android.closeDocumentWindow) { window.o2android.closeDocumentWindow(""); } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.closeDocumentWindow) { window.webkit.messageHandlers.closeDocumentWindow.postMessage(""); } else if (window.wx && window.__wxjs_environment === 'miniprogram') { //微信小程序 关闭页面 wx.miniProgram.navigateBack({ delta: 1 }); } else if (window.uni && window.uni.navigateBack) { // uniapp 关闭页面 window.uni.navigateBack(); } else if (this.json.afterProcessAction === "redirect" && this.json.afterProcessRedirectScript && this.json.afterProcessRedirectScript.code) { var url = this.Macro.exec(this.json.afterProcessRedirectScript.code, this); (new URI(url)).go(); } else { var uri = new URI(window.location.href); var redirectlink = uri.getData("redirectlink"); if (redirectlink) { history.replaceState(null, "work", redirectlink); redirectlink.toURI().go(); } else { this.app.close(); } // var len = window.history.length; // if (len > 1) { // history.back(); // } else { // // window.location = o2.filterUrl("../x_desktop/appMobile.html?app=process.TaskCenter"); // history.replaceState(null, "work", o2.filterUrl("../x_desktop/appMobile.html?app=process.TaskCenter")); // o2.filterUrl("../x_desktop/appMobile.html?app=process.TaskCenter").toURI().go(); // } } }, // //列式流程log // listWorkLog: function ( callback ) { // if( !this.businessData.data.$work || !this.businessData.data.$work.job ){ // callback([]); // return // } // // if( this.workLogList ){ // callback(this.workLogList); // return; // } // // //只获取一次。把callback存起来,等异步调用完成后一次性执行callback // if( !this.worklogCallbackList )this.worklogCallbackList = []; // Promise.resolve( o2.Actions.load("x_processplatform_assemble_surface").WorkLogAction.listWithJob( this.businessData.data.$work.job )).then(function(json){ // this.workLogList = json.data; // debugger; // while( this.worklogCallbackList.length ){ // this.worklogCallbackList.shift()( this.workLogList ); // } // }.bind(this)); // this.worklogCallbackList.push( callback ); // }, // //列式流程record // listWorkRecord: function ( callback ) { // if( !this.businessData.data.$work || !this.businessData.data.$work.job ){ // callback([]); // return // } // // if( this.workRecordList ){ // callback(this.workRecordList); // return; // } // // //只获取一次。把callback存起来,等异步调用完成后一次性执行callback // if( !this.workRecordCallbackList )this.workRecordCallbackList = []; // Promise.resolve( o2.Actions.load("x_processplatform_assemble_surface").RecordAction.listWithJob( this.businessData.data.$work.job )).then(function(json){ // this.workRecordList = json.data; // while( this.workRecordCallbackList.length ){ // this.workRecordCallbackList.shift()( this.workRecordList ); // } // }.bind(this)); // this.workRecordCallbackList.push( callback ); // } });