From 099d7333c1ad062870144da4a51b3795cb3b9f5b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Nov 2021 18:54:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A7=BB=E5=8A=A8=E7=AB=AF?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A1=A8=E5=8D=95=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E7=BB=91=E5=AE=9A=E4=BA=8B=E4=BB=B6=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/form_custom_submit_mobile.json | 10 +- .../Module/Form/template/test.json | 608 ++++++++++++++++++ 2 files changed, 613 insertions(+), 5 deletions(-) create mode 100644 o2web/source/x_component_process_FormDesigner/Module/Form/template/test.json diff --git a/o2web/source/x_component_process_FormDesigner/Module/Form/template/form_custom_submit_mobile.json b/o2web/source/x_component_process_FormDesigner/Module/Form/template/form_custom_submit_mobile.json index 90fca6cf63..48b82953c5 100644 --- a/o2web/source/x_component_process_FormDesigner/Module/Form/template/form_custom_submit_mobile.json +++ b/o2web/source/x_component_process_FormDesigner/Module/Form/template/form_custom_submit_mobile.json @@ -512,8 +512,8 @@ }, "events": { "queryLoad": { - "code": "MWF.xDesktop.requireApp(\"process.Xform\", \"Org\", null, false);\r\n\r\nthis.define(\"loadProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nthis.define(\"popupProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nwindow.O2ProcessorMobile = new Class({\r\n Implements: [Events],\r\n initialize: function (macro) {\r\n\r\n debugger;\r\n\r\n this.macro = macro;\r\n this.app = macro.form.app;\r\n this.form = this.app.appForm;\r\n this.task = this.form.businessData.task;\r\n this.appContentNode = $(document.body); //this.app.content;\r\n\r\n this.initConstant();\r\n this.getCss();\r\n this.getAllNode();\r\n\r\n // this.loadCss();\r\n\r\n },\r\n initConstant: function () {\r\n this.DefaultDecisionOpinionName = \"其它\"; //默认的决策组,如果当前节点有决策组,但是某些决策没有落在决策组中,那么使用默认决策组\r\n },\r\n load: function () {\r\n if (this.status === \"closed\") {\r\n this.node.show();\r\n // this.positionSeted = false; //重新设置位置\r\n // this.setSize( this.getCurrentRouteOrgList().length );\r\n this.status = \"show\";\r\n } else {\r\n this.container = new Element(\"div\").inject(this.appContentNode);\r\n this.node.setStyles({\r\n \"width\" : \"100%\",\r\n \"position\" : \"absolute\",\r\n \"z-index\" : \"101\"\r\n })\r\n this.loadContent();\r\n this.setEvents();\r\n this.node.inject(this.container);\r\n this.status = \"show\";\r\n }\r\n },\r\n loadContent: function () {\r\n this.getRouteGroupList();\r\n\r\n var orgLength = this.getMaxOrgLength();\r\n if (orgLength === 0) { //流程选人数量为0\r\n if (this.orgsTile) {\r\n this.orgsTile.destroy();\r\n this.orgsTile = null;\r\n }\r\n if (this.orgsArea) {\r\n this.orgsArea.destroy();\r\n this.orgsArea = null;\r\n }\r\n }\r\n\r\n this.setOpinion(); //意见\r\n\r\n if (this.hasDecisionOpinion) { //有决策组\r\n this.setRouteGroupList();\r\n } else { //没有决策组\r\n if (this.routeGroupTitle) {\r\n this.routeGroupTitle.destroy();\r\n this.routeGroupTitle = null;\r\n }\r\n if (this.routeGroupArea) {\r\n this.routeGroupArea.destroy();\r\n this.routeGroupArea = null;\r\n }\r\n // this.routeSelectorArea.setStyles( this.css.routeSelectorArea );\r\n // if( this.inputOpinionNodeTd && this.selectIdeaNodeTd ){\r\n // this.inputOpinionNodeTd.set( \"width\", orgLength < 2 ? \"60%\" : \"50%\" );\r\n // }\r\n this.setRouteList();\r\n }\r\n },\r\n\r\n getAllNode: function () {\r\n this.node = this.getNode(\"submitNode\");\r\n\r\n this.buttonNode = this.getNode(\"submitButtonNode\");\r\n\r\n this.contentWrapNode = this.getNode(\"submitContentWrapNode\");\r\n this.contentNode = this.getNode(\"submitContentNode\");\r\n this.contentInnerNode = this.getNode(\"submitContentInnerNode\");\r\n\r\n this.routeGroupTitle = this.getNode(\"routeGroupTitle\");\r\n this.routeGroupArea = this.getNode(\"routeGroupArea\");\r\n\r\n this.routeSelectorTitle = this.getNode(\"routeSelectorTitle\");\r\n this.routeSelectorArea = this.getNode(\"routeSelectorArea\");\r\n\r\n this.selectIdeaAreaNode = this.getNode(\"selectIdeaAreaNode\");\r\n\r\n this.inputOpinionNode = this.getNode(\"inputOpinionNode\");\r\n this.inputTextarea = this.getNode(\"inputTextarea\");\r\n\r\n this.handwritingAction = this.getNode(\"handwritingAction\");\r\n\r\n this.orgsTile = this.getNode(\"orgsTile\");\r\n this.orgsArea = this.getNode(\"orgsArea\");\r\n\r\n this.buttonsArea = this.getNode(\"submitButtonNode\");\r\n this.okButton = this.getNode(\"okButton\");\r\n this.cancelButton = this.getNode(\"cancelButton\");\r\n },\r\n setEvents: function () {\r\n if (this.cancelButton) {\r\n this.cancelButton.addEvent(\"click\", function () {\r\n this.close();\r\n this.fireEvent(\"cancel\");\r\n }.bind(this));\r\n }\r\n if (this.okButton) {\r\n this.okButton.addEvent(\"click\", function (ev) {\r\n this.submit(ev)\r\n }.bind(this));\r\n }\r\n },\r\n getNode: function (name) {\r\n if (this.macro.form.get(name)) {\r\n return this.macro.form.get(name).node;\r\n }\r\n if (this.form.allForName[name]) {\r\n return this.form.allForName[name].node;\r\n }\r\n },\r\n setData: function (name, value) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.setData(value) : null;\r\n },\r\n getData: function (name) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.getData() : null;\r\n },\r\n getRouteConfigList: function () { //获取当前待办的所有路由设置\r\n if (!this.routeConfigList) {\r\n o2.Actions.get(\"x_processplatform_assemble_surface\").listRoute({\"valueList\": this.task.routeList}, function (json) {\r\n json.data.each(function (d) {\r\n d.selectConfigList = JSON.parse(d.selectConfig || \"[]\");\r\n }.bind(this));\r\n this.routeConfigList = json.data;\r\n }.bind(this), null, false);\r\n }\r\n return this.routeConfigList;\r\n },\r\n getRouteConfig: function (routeId) { //根据某个ID获取路由设置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i];\r\n }\r\n }\r\n },\r\n getMaxOrgLength: function () { //获取当前待办下可能的最多选人组件个数\r\n var routeList = this.getRouteConfigList();\r\n var length = 0;\r\n routeList.each(function (route) {\r\n if (route.hiddenScriptText) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n length = Math.max(length, route.selectConfigList.length);\r\n }.bind(this));\r\n return length;\r\n },\r\n getOrgConfig: function (routeId) { //获取人员选择配置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i].selectConfigList;\r\n }\r\n }\r\n },\r\n getCurrentRouteSelectorList: function () { //获取当前路由的人员选择器对象\r\n var selectorList = [];\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n if (!orgList) return [];\r\n orgList.each(function (org) {\r\n if (org.selector && org.selector.selector) {\r\n selectorList.push(org.selector.selector);\r\n }\r\n }.bind(this))\r\n return selectorList;\r\n },\r\n getCurrentRouteOrgList: function () { //获取当前路由的org对象\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n return orgList || [];\r\n },\r\n getSelectorSelectedData: function (filedName) { //获取人员选择器选择的值\r\n var data = [];\r\n var orgList = this.getCurrentRouteOrgList();\r\n for (var i = 0; i < orgList.length; i++) {\r\n var org = orgList[i];\r\n if (org.json.name === filedName) {\r\n var selector = org.selector.selector;\r\n selector.selectedItems.each(function (item) {\r\n data.push(item.data)\r\n })\r\n }\r\n }\r\n return data;\r\n },\r\n getMarginY: function (node) {\r\n return (node.getStyle(\"margin-top\").toInt() || 0) +\r\n (node.getStyle(\"margin-bottom\").toInt() || 0);\r\n // (node.getStyle(\"padding-top\").toInt() || 0 ) +\r\n // (node.getStyle(\"padding-bottom\").toInt() || 0 )+\r\n // (node.getStyle(\"border-top-width\").toInt() || 0 ) +\r\n // (node.getStyle(\"border-bottom-width\").toInt() || 0 );\r\n },\r\n setSize: function (currentOrgLength) {\r\n var lines = ((currentOrgLength + 1) / 2).toInt();\r\n\r\n if (lines > 0) {\r\n this.showOrgsArea();\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n if (this.buttonsArea) {\r\n var bodySize = this.appContentNode.getSize();\r\n var nodeHeight = bodySize.y - this.getMarginY(this.node);\r\n this.node.setStyles({\r\n \"overflow-y\": \"hidden\",\r\n \"height\": nodeHeight\r\n });\r\n var buttonsAreaSize = this.buttonsArea.getSize();\r\n this.contentNode.setStyles({\r\n \"height\": nodeHeight - buttonsAreaSize.y - this.getMarginY(this.buttonsArea) - this.getMarginY(this.contentNode),\r\n \"overflow-y\": \"auto\"\r\n })\r\n }\r\n\r\n this.fireEvent(\"resize\");\r\n },\r\n showOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.show();\r\n if (this.orgsArea) this.orgsArea.show();\r\n },\r\n hideOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.hide();\r\n if (this.orgsArea) this.orgsArea.hide();\r\n },\r\n\r\n /*决策和决策组相关 开始*/\r\n getRouteGroupList: function () { //获取决策组并格式化成对象\r\n if (this.routeGroupObject) return this.routeGroupObject;\r\n this.routeGroupObject = {};\r\n this.routeGroupNameList = [];\r\n this.hasDecisionOpinion = false;\r\n var routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n route.displayName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n } else {\r\n route.displayName = route.name;\r\n }\r\n\r\n if (route.decisionOpinion) { //决策组名称\r\n this.hasDecisionOpinion = true;\r\n var decisionOpinionList = route.decisionOpinion.split(\"#\");\r\n decisionOpinionList.each(function (decisionOption) {\r\n this.routeGroupNameList.combine([decisionOption]);\r\n var d = this.splitByStartNumber(decisionOption);\r\n if (!this.routeGroupObject[d.name]) this.routeGroupObject[d.name] = [];\r\n this.routeGroupObject[d.name].push(route);\r\n }.bind(this))\r\n } else {\r\n var defaultName = this.DefaultDecisionOpinionName;\r\n this.routeGroupNameList.combine([defaultName]);\r\n if (!this.routeGroupObject[defaultName]) this.routeGroupObject[defaultName] = [];\r\n this.routeGroupObject[defaultName].push(route);\r\n }\r\n }.bind(this));\r\n return this.routeGroupObject;\r\n },\r\n splitByStartNumber: function (str) {\r\n var obj = {\r\n name: \"\",\r\n order: \"\"\r\n };\r\n for (var i = 0; i < str.length; i++) {\r\n if (parseInt(str.substr(i, 1)).toString() !== \"NaN\") {\r\n obj.order = obj.order + str.substr(i, 1);\r\n } else {\r\n obj.name = str.substr(i, str.length);\r\n break;\r\n }\r\n }\r\n return obj;\r\n },\r\n setRouteGroupList: function () { //排序并创建决策组DOM对象\r\n var _self = this;\r\n\r\n //根据决策组的排序号进行排序\r\n var keys = this.routeGroupNameList;\r\n keys.sort(function (a, b) {\r\n var aIdx = parseInt(this.splitByStartNumber(a).order || \"9999999\");\r\n var bIdx = parseInt(this.splitByStartNumber(b).order || \"9999999\");\r\n return aIdx - bIdx;\r\n }.bind(this));\r\n\r\n var list = [];\r\n keys.each(function (k) {\r\n list.push(this.splitByStartNumber(k).name)\r\n }.bind(this));\r\n\r\n debugger;\r\n\r\n list.each(function (routeGroupName) {\r\n var routeList = this.routeGroupObject[routeGroupName];\r\n var routeGroupNode = new Element(\"div\", {\r\n \"styles\": this.css.routeGroupNode,\r\n \"text\": routeGroupName\r\n }).inject(this.routeGroupArea);\r\n routeGroupNode.store(\"routeList\", routeList);\r\n routeGroupNode.store(\"routeGroupName\", routeGroupName);\r\n\r\n routeGroupNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRouteGroup(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRouteGroup(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRouteGroup(this);\r\n }\r\n });\r\n\r\n if (keys.length === 1) { //如果决策组只有1个,则默认选中\r\n this.selectRouteGroup(routeGroupNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n }.bind(this))\r\n },\r\n overRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n },\r\n outRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n },\r\n selectRouteGroup: function (node) { //选中决策组执行...\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode);\r\n //this.selectedRouteGroup.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRouteGroup = node;\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode_selected);\r\n //this.selectedRouteGroup.addClass(\"mainColor_bg\");\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n\r\n } else {\r\n\r\n }\r\n } else {\r\n this.selectedRouteGroup = node;\r\n node.setStyles(this.css.routeGroupNode_selected);\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n }\r\n this.routeGroupArea.setStyle(\"background-color\", \"#FFF\");\r\n },\r\n setRouteList: function (routeList) { //创建决策对象\r\n var _self = this;\r\n this.routeSelectorArea.empty();\r\n this.selectedRoute = null;\r\n\r\n if (!routeList) routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n var routeName = route.name;\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n routeName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n }\r\n var routeNode = new Element(\"div\", {\r\n \"styles\": this.css.routeNode,\r\n \"text\": routeName\r\n }).inject(this.routeSelectorArea);\r\n routeNode.store(\"route\", route.id);\r\n routeNode.store(\"routeName\", route.name);\r\n\r\n routeNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRoute(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRoute(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRoute(this);\r\n }\r\n });\r\n\r\n if (routeList.length == 1 || route.sole) { //sole表示优先路由\r\n this.selectRoute(routeNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n\r\n }.bind(this));\r\n },\r\n overRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n },\r\n outRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n },\r\n selectRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n\r\n } else {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.addClass(\"lightColor_bg\");\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = null;\r\n }\r\n } else {\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#FFF\");\r\n\r\n this.loadOrgs(this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\");\r\n\r\n if (this.form.data.json.events && this.form.data.json.events.afterSelectRoute) {\r\n this.form.Macro.exec(this.form.data.json.events.afterSelectRoute.code, node);\r\n }\r\n\r\n },\r\n /*决策和决策组相关 结束*/\r\n\r\n setOpinion: function () {\r\n if (!this.inputTextarea) return;\r\n if (this.handwritingAction) this.handwritingAction.addEvent(\"click\", function () {\r\n window.setTimeout( function(){\r\n this.handwriting();\r\n }.bind(this), 100 )\r\n }.bind(this));\r\n\r\n if (this.selectIdeaAreaNode) {\r\n MWF.require(\"MWF.widget.UUID\", function () {\r\n MWF.UD.getDataJson(\"idea\", function (json) {\r\n if (json) {\r\n if (json.ideas) {\r\n this.setIdeaList(json.ideas);\r\n }\r\n } else {\r\n MWF.UD.getPublicData(\"idea\", function (pjson) {\r\n if (pjson) {\r\n if (pjson.ideas) {\r\n this.setIdeaList(pjson.ideas);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this));\r\n }.bind(this));\r\n }\r\n\r\n },\r\n\r\n audioRecord: function () {\r\n if (!this.audioRecordNode) this.createAudioRecord();\r\n this.audioRecordNode.show();\r\n this.audioRecordNode.position({\r\n \"relativeTo\": this.options.mediaNode || this.node,\r\n \"position\": \"center\",\r\n \"edge\": \"center\"\r\n });\r\n\r\n MWF.require(\"MWF.widget.AudioRecorder\", function () {\r\n this.audioRecorder = new MWF.widget.AudioRecorder(this.audioRecordNode, {\r\n \"onSave\": function (blobFile) {\r\n this.soundFile = blobFile;\r\n this.audioRecordNode.hide();\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.soundFile = null;\r\n this.audioRecordNode.hide();\r\n }.bind(this)\r\n }, null);\r\n }.bind(this));\r\n },\r\n createAudioRecord: function () {\r\n this.audioRecordNode = new Element(\"div\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n var size = (this.options.mediaNode || this.node).getSize();\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.audioRecordNode.setStyles({\r\n \"height\": \"\" + size.y + \"px\",\r\n \"width\": \"\" + size.x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n },\r\n\r\n handwriting: function () {\r\n if (!this.handwritingNode) this.createHandwriting();\r\n if(this.handwritingNodeMask)this.handwritingNodeMask.show();\r\n this.handwritingNode.show();\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n },\r\n createHandwriting: function () {\r\n this.handwritingNodeMask = new Element(\"div.handwritingMask\", {\"styles\": this.css.handwritingMask}).inject(this.node);\r\n\r\n this.handwritingNode = new Element(\"div.handwritingNode\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n //var size = (this.options.mediaNode || this.node).getSize();\r\n //var y = size.y;\r\n //var x = size.x;\r\n //兼容以前的默认高宽\r\n\r\n debugger;\r\n\r\n var bodySize = $(document.body).getSize();\r\n var x = bodySize.x;\r\n var y = bodySize.y;\r\n\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.handwritingNode.setStyles({\r\n \"height\": \"\" + y + \"px\",\r\n \"width\": \"\" + x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n this.handwritingNode.addEvent('touchmove' , function(e){\r\n e.preventDefault();\r\n });\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n this.handwritingAreaNode = new Element(\"div\", {\"styles\": this.css.handwritingAreaNode}).inject(this.handwritingNode);\r\n // this.handwritingActionNode = new Element(\"div\", {\r\n // \"styles\": this.css.handwritingActionNode,\r\n // \"text\": MWF.xApplication.process.Work.LP.saveWrite\r\n // }).inject(this.handwritingNode);\r\n // var h = this.handwritingActionNode.getSize().y + this.handwritingActionNode.getStyle(\"margin-top\").toInt() + this.handwritingActionNode.getStyle(\"margin-bottom\").toInt();\r\n // h = y - h;\r\n // this.handwritingAreaNode.setStyle(\"height\", \"\" + h + \"px\");\r\n this.handwritingAreaNode.setStyle(\"height\", \"\" + y + \"px\");\r\n\r\n MWF.require(\"MWF.widget.Tablet\", function () {\r\n var handWritingOptions = {\r\n \"style\": \"default\",\r\n \"contentWidth\": 0,\r\n \"contentHeight\": 0,\r\n \"onSave\": function (base64code, base64Image, imageFile) {\r\n this.handwritingFile = imageFile;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n // this.page.get(\"div_image\").node.set(\"src\",base64Image);\r\n\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.handwritingFile = null;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n }.bind(this)\r\n };\r\n handWritingOptions.tools = [\r\n \"undo\",\r\n \"redo\", \"|\",\r\n \"reset\", \"|\",\r\n \"size\",\r\n \"cancel\"\r\n ]\r\n this.tablet = new MWF.widget.Tablet(this.handwritingAreaNode, handWritingOptions, null);\r\n this.tablet.load();\r\n }.bind(this));\r\n\r\n // this.handwritingActionNode.addEvent(\"click\", function () {\r\n // //this.handwritingNode.hide();\r\n // if (this.tablet) this.tablet.save();\r\n // }.bind(this));\r\n },\r\n\r\n setIdeaList: function (ideas) {\r\n var _self = this;\r\n ideas.each(function (idea) {\r\n new Element(\"div\", {\r\n \"styles\": this.css.selectIdeaItemNode,\r\n \"text\": idea,\r\n \"events\": {\r\n \"click\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"dblclick\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"mouseover\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode_over);\r\n },\r\n \"mouseout\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode);\r\n }\r\n }\r\n }).inject(this.selectIdeaAreaNode);\r\n }.bind(this));\r\n },\r\n submit: function (ev) {\r\n if (this.hasDecisionOpinion && !this.selectedRouteGroup) {\r\n this.routeGroupArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"top\"},\r\n \"请先选择决策组\",\r\n this.routeGroupArea,\r\n null, //{\"x\": 0, \"y\": 30}\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n\r\n if (!this.selectedRoute) {\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.routeSelectorArea,\r\n delayClose: 6000,\r\n content: \"请先选择决策\"\r\n });\r\n return false;\r\n }\r\n var routeName = this.selectedRoute.retrieve(\"routeName\") || this.selectedRoute.get(\"text\");\r\n var opinion = this.getData(\"inputTextarea\");\r\n if (opinion === MWF.xApplication.process.Work.LP.inputText) opinion = \"\";\r\n var medias = [];\r\n if (this.handwritingFile) medias.push(this.handwritingFile);\r\n if (this.soundFile) medias.push(this.soundFile);\r\n if (this.videoFile) medias.push(this.videoFile);\r\n\r\n var currentRouteId = this.selectedRoute.retrieve(\"route\");\r\n var routeConfig = this.getRouteConfig(currentRouteId);\r\n if (!opinion && medias.length === 0) {\r\n if (routeConfig.opinionRequired == true) {\r\n this.inputTextarea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.inputTextarea,\r\n delayClose: 6000,\r\n content: \"请填写意见\"\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: validation\r\n });\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: \"路由校验失败\"\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //var array = [routeName, opinion, medias];\r\n //this.node.mask({\r\n // \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n // \"destroyOnHide\": true,\r\n // \"style\": {\r\n // \"background-color\": \"#999\",\r\n // \"opacity\": 0.3,\r\n // \"z-index\":600\r\n // }\r\n //});\r\n //this.fireEvent(\"submit\", array );\r\n\r\n var appendTaskOrgItem;\r\n if (routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\") {\r\n if (!this.orgItems || this.orgItems.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"没有配置转交人,请联系管理员\" //\"没有配置转交人,请联系管理员\"\r\n });\r\n return false;\r\n } else {\r\n appendTaskOrgItem = this.orgItems[0]\r\n }\r\n }\r\n\r\n if (!this.saveOrgs()) return false;\r\n\r\n //this.saveOrgsWithCheckEmpower( function(){\r\n var appandTaskIdentityList;\r\n if (appendTaskOrgItem) {\r\n appandTaskIdentityList = appendTaskOrgItem.getData();\r\n if (!appandTaskIdentityList || appandTaskIdentityList.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"请选择转交人\"\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n validation,\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n \"路由校验失败\",\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n this.node.mask({\r\n \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n \"destroyOnHide\": true,\r\n \"style\": {\r\n \"background-color\": \"#999\",\r\n \"opacity\": 0.3,\r\n \"z-index\": 600\r\n }\r\n });\r\n\r\n // var array = [ routeName, opinion, medias, appandTaskIdentityList, this.orgItems, function(){\r\n // if(appendTaskOrgItem)appendTaskOrgItem.setData([]);\r\n // }];\r\n\r\n var op = this.form.getOpinion();\r\n var mds = op.medias;\r\n\r\n if (!medias || !medias.length) {\r\n medias = mds;\r\n } else {\r\n medias = medias.concat(mds)\r\n }\r\n\r\n this.form.submitWork(routeName, opinion, medias, function () {\r\n this.close();\r\n }.bind(this), this, null, appandTaskIdentityList, this.orgItems, function () {\r\n if (appendTaskOrgItem) appendTaskOrgItem.setData([]);\r\n this.setData(\"inputTextarea\", \"\");\r\n }.bind(this));\r\n\r\n // this.fireEvent(\"submit\", array );\r\n },\r\n\r\n close: function () {\r\n this.node.setStyle(\"display\", \"none\");\r\n this.status = \"closed\";\r\n },\r\n destroy: function () {\r\n // this.node.empty();\r\n // delete this.task;\r\n // delete this.node;\r\n // delete this.routeSelectorTile;\r\n // delete this.routeSelectorArea;\r\n // delete this.routeOpinionTile;\r\n // delete this.routeOpinionArea;\r\n // delete this.buttonsArea;\r\n // delete this.inputOpinionNode;\r\n // delete this.inputTextarea;\r\n // delete this.cancelButton;\r\n // delete this.okButton;\r\n },\r\n loadOrgs: function (route) {\r\n if (!this.form || !route) {\r\n this.hideOrgsArea();\r\n return;\r\n } else {\r\n this.showOrgsArea();\r\n }\r\n if (!this.orgTableObject) this.orgTableObject = {};\r\n if (!this.orgItemsObject) this.orgItemsObject = {};\r\n var isLoaded = false;\r\n for (var key in this.orgTableObject) {\r\n if (route === key) {\r\n this.orgTableObject[key].show();\r\n this.orgItems = this.orgItemsObject[key] || [];\r\n var data = this.getOrgConfig(route);\r\n isLoaded = true;\r\n } else {\r\n this.orgTableObject[key].hide();\r\n }\r\n }\r\n if (isLoaded) return;\r\n\r\n this.orgItems = [];\r\n this.orgItemsObject[route] = this.orgItems;\r\n\r\n var data = this.getOrgConfig(route);\r\n var routeConfig = this.getRouteConfig(route);\r\n var ignoreFirstOrgOldData = false; //(routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\");\r\n this.setSize(data.length);\r\n if (data.length) {\r\n this.showOrgsArea();\r\n\r\n var routeOrgTable = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTable\r\n }).inject(this.orgsArea);\r\n this.orgTableObject[route] = routeOrgTable;\r\n\r\n data.each(function (config, i) {\r\n var sNode = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTr\r\n }).inject(routeOrgTable);\r\n this.loadOrg(sNode, config, ignoreFirstOrgOldData && i == 0)\r\n }.bind(this))\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n },\r\n loadOrg: function (container, json, position, ignoreOldData) {\r\n var titleNode = new Element(\"div.selectorTitle\", {\r\n \"styles\": this.css.selectorTitle\r\n }).inject(container);\r\n var titleTextNode = new Element(\"div.selectorTitleText\", {\r\n \"text\": json.title,\r\n \"styles\": this.css.selectorTitleText\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.selectorContent\", {\r\n \"styles\": this.css.selectorContent\r\n }).inject(container);\r\n\r\n var errorNode = new Element(\"div.selectorErrorNode\", {\r\n \"styles\": this.css.selectorErrorNode\r\n }).inject(container);\r\n\r\n var org = new O2ProcessorMobile.Org(contentNode, this.form, json, this, {\r\n onSelect: function (items, data) {\r\n if (!data || !data.length) {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n } else {\r\n contentNode.setStyles(this.css.selectorContent);\r\n }\r\n }.bind(this)\r\n });\r\n org.ignoreOldData = ignoreOldData;\r\n org.errContainer = errorNode;\r\n org.summitDlalog = this;\r\n this.orgItems.push(org);\r\n\r\n titleNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n contentNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n\r\n var defaultValue = org.getValue();\r\n org.loadOrgWidget(defaultValue, contentNode);\r\n if (!defaultValue || defaultValue.length == 0) {\r\n {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n }\r\n }\r\n\r\n },\r\n validationOrgs: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.validation()) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n isOrgsHasEmpower: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = false;\r\n this.needCheckEmpowerOrg = [];\r\n this.orgItems.each(function (item) {\r\n if (item.hasEmpowerIdentity()) {\r\n this.needCheckEmpowerOrg.push(item);\r\n flag = true;\r\n }\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgs: function (keepSilent) {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.save(!keepSilent)) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgsWithCheckEmpower: function (callback) {\r\n debugger;\r\n if (!this.orgItems || !this.orgItems.length) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n if (!this.validationOrgs()) return false;\r\n if (!this.isOrgsHasEmpower()) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n //this.checkEmpowerMode = true;\r\n this.showEmpowerDlg(callback);\r\n },\r\n showEmpowerDlg: function (callback) {\r\n\r\n //this.needCheckEmpowerOrg.each( function(org){\r\n // org.saveCheckedEmpowerData();\r\n //}.bind(this));\r\n\r\n var empowerNode = new Element(\"div.empowerNode\", {\"styles\": this.css.empowerNode});\r\n var empowerTitleNode = new Element(\"div\", {\r\n text: \"下列人员对工作进行了授权,选择后文件将发送给被授权人,取消选择后文件将发送给授权者本人\",\r\n styles: this.css.empowerTitleNode\r\n }).inject(empowerNode);\r\n\r\n var orgs = this.needCheckEmpowerOrg;\r\n var len = orgs.length;\r\n var lines = ((len + 1) / 2).toInt();\r\n\r\n var empowerTable = new Element(\"table\", {\r\n \"cellspacing\": 0, \"cellpadding\": 0, \"border\": 0, \"width\": \"100%\",\r\n \"styles\": this.css.empowerTable\r\n }).inject(empowerNode);\r\n\r\n for (var n = 0; n < lines; n++) {\r\n var tr = new Element(\"tr\").inject(empowerTable);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerOddTd}).inject(tr);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerEvenTd}).inject(tr);\r\n }\r\n\r\n var trs = empowerTable.getElements(\"tr\");\r\n orgs.each(function (org, i) {\r\n var sNode;\r\n var width;\r\n if (i + 1 == len && (len % 2 === 1)) {\r\n sNode = trs[trs.length - 1].getFirst(\"td\");\r\n sNode.set(\"colspan\", 2);\r\n trs[trs.length - 1].getLast(\"td\").destroy();\r\n width = \"50%\";\r\n } else {\r\n var row = ((i + 2) / 2).toInt();\r\n var tr = trs[row - 1];\r\n sNode = (i % 2 === 0) ? tr.getFirst(\"td\") : tr.getLast(\"td\");\r\n }\r\n\r\n var titleNode = new Element(\"div.empowerAreaTitle\", {\r\n \"styles\": this.css.empowerAreaTitle\r\n }).inject(sNode);\r\n\r\n var titleTextNode = new Element(\"div.empowerAreaTitleText\", {\r\n \"text\": org.json.title,\r\n \"styles\": this.css.empowerAreaTitleText\r\n }).inject(titleNode);\r\n\r\n var selectAllNode = new Element(\"div\", {\r\n styles: {\r\n float: \"right\"\r\n }\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.empowerAreaContent\", {\r\n \"styles\": this.css.empowerAreaContent\r\n }).inject(sNode);\r\n\r\n org.loadCheckEmpower(null, contentNode, selectAllNode);\r\n\r\n }.bind(this));\r\n\r\n empowerNode.setStyle(\"height\", lines * this.options.orgHeight + 20);\r\n //var dlgHeight = Math.min( Math.floor( this.form.app.content.getSize().y * 0.9) , lines*this.options.orgHeight + 151 );\r\n\r\n //var width = this.node.retrieve(\"width\");\r\n //empowerNode.setStyle( \"width\", width );\r\n var width = \"880\";\r\n //if( len > 1 ){\r\n // width = \"840\"\r\n //}else{\r\n // width = \"420\"\r\n //}\r\n empowerNode.setStyle(\"width\", width + \"px\");\r\n\r\n this.node.getParent().mask({\r\n \"style\": this.css.mask\r\n });\r\n this.empowerDlg = o2.DL.open({\r\n \"title\": \"授权人员替换选择\",\r\n \"style\": this.form.json.dialogStyle || \"user\",\r\n \"isResize\": false,\r\n \"content\": empowerNode,\r\n //\"container\" : this.node,\r\n \"width\": width, //600,\r\n \"height\": \"auto\", //dlgHeight,\r\n \"mark\": false,\r\n \"buttonList\": [\r\n {\r\n \"type\": \"ok\",\r\n \"text\": \"确定\",\r\n \"action\": function (d, e) {\r\n //if (this.empowerDlg) this.empowerDlg.okButton.click();\r\n\r\n orgs.each(function (org, i) {\r\n org.saveCheckedEmpowerData(function () {\r\n if (i === orgs.length - 1) {\r\n if (callback) callback();\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this)\r\n },\r\n {\r\n \"type\": \"cancel\",\r\n \"text\": \"取消\",\r\n \"action\": function () {\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }.bind(this)\r\n }\r\n ]\r\n });\r\n },\r\n getCss: function () {\r\n this.css = {\r\n\r\n \"routeGroupNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"padding-left\": \"28px\",\r\n \"color\": \"#000\",\r\n \"background-color\": \"#E3E3E3\",\r\n \"min-height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_over\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_selected\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/routegroup_selected.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"border-radius\": \"5px\",\r\n \"height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"padding-left\": \"26px\",\r\n \"padding-right\": \"8px\",\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#f0f0f0\"\r\n },\r\n \"routeNode_over\": {\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"routeNode_selected\": {\r\n \"color\": \"#fff\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/checked.png) no-repeat 5px center\",\r\n \"background-color\": \"#3296FA\"\r\n },\r\n\r\n \"selectIdeaItemNode\": {\r\n \"line-height\": \"18px\",\r\n \"font-size\": \"14px\",\r\n \"cursor\": \"pointer\",\r\n \"background-color\": \"#FFF\",\r\n \"padding\": \"4px 4px 4px 4px\",\r\n \"overflow\": \"hidden\"\r\n },\r\n \"selectIdeaItemNode_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n\r\n \"handwritingNode\": {\r\n \"position\": \"absolute\",\r\n \"background\": \"#ffffff\"\r\n },\r\n \"handwritingActionNode\": {\r\n \"width\": \"70%\",\r\n \"min-width\": \"100px\",\r\n \"height\": \"3em\",\r\n \"line-height\": \"3em\",\r\n \"margin\": \"5px auto\",\r\n \"border-radius\": \"5px\",\r\n \"border\": \"1px solid #3296FA\",\r\n \"background-color\": \"#3296FA\",\r\n \"text-align\": \"center\",\r\n \"color\": \"#ffffff\",\r\n \"font-size\": \"16px\"\r\n },\r\n\r\n \"inputOpinionAudioRecordAction\": {\r\n \"display\": \"none\",\r\n \"float\": \"right\",\r\n \"border\": \"1px solid #6681a5\",\r\n \"border-radius\": \"3px\",\r\n \"cursor\": \"pointer\",\r\n \"padding-left\": \"24px\",\r\n \"padding-right\": \"5px\",\r\n \"margin-left\": \"5px\",\r\n \"background\": \"url(\" + \"/x_component_process_Work/$Processor/default/audioRecord.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeOrgTable\": {},\r\n \"routeOrgTr\": {\r\n \"margin-bottom\": \"10px\"\r\n },\r\n \"routeOrgOddTd\": {\r\n \"width\": \"50%\"\r\n },\r\n \"routeOrgEvenTd\": {\r\n \"width\": \"50%\",\r\n \"border-left\": \"5px solid #ffffff\"\r\n },\r\n\r\n \"selectorTitle\": {\r\n \"padding\": \"0px 4px\",\r\n \"height\": \"30px\",\r\n \"line-height\": \"30px\",\r\n \"font-size\": \"14px\",\r\n // \"font-weight\": \"bold\",\r\n \"color\": \"#000\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/mobile/arrow_right2.png) no-repeat right 10px center\",\r\n \"background-color\": \"#fff\"\r\n },\r\n \"selectorTitle_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"selectorTitleText\": {\r\n// \"float\": \"left\"\r\n },\r\n \"selectorErrorNode\": {\r\n //\"float\" : \"right\",\r\n \"background-color\": \"#fff\",\r\n \"margin-right\": \"5px\",\r\n \"font-weight\": \"normal\"\r\n },\r\n \"selectorContent\": {\r\n \"overflow\": \"hidden\",\r\n \"background-color\": \"#fff\",\r\n \"padding\": \"0px 5px 5px 5px\"\r\n },\r\n \"selectorContent_noItem\": {\r\n \"padding\": \"0px\"\r\n }\r\n }\r\n\r\n }\r\n});\r\n\r\n\r\nO2ProcessorMobile.Org = new Class({\r\n Implements: [Options, Events],\r\n options: {\r\n height : 240,\r\n moduleEvents : [\"queryLoadSelector\",\"postLoadSelector\",\"postLoadContent\",\"queryLoadCategory\",\"postLoadCategory\",\r\n \"selectCategory\", \"unselectCategory\",\"queryLoadItem\",\"postLoadItem\",\"selectItem\", \"unselectItem\",\"change\"]\r\n },\r\n initialize: function (container, form, json, processor, options) {\r\n this.form = form;\r\n this.json = json;\r\n this.processor = processor;\r\n this.container = $(container);\r\n this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n this.setOptions(options);\r\n },\r\n load : function(){\r\n setTimeout( function(){ //如果有输入法界面,这个时候页面的计算不对,所以等100毫秒\r\n var options = this.getOptions();\r\n if(options){\r\n //this.selector = new MWF.O2Selector(this.container, options);\r\n this.selector = new MWF.O2Selector($(document.body), options);\r\n }\r\n }.bind(this), 100 )\r\n },\r\n _getOrgOptions: function(){\r\n this.selectTypeList = typeOf( this.json.selectType ) == \"array\" ? this.json.selectType : [this.json.selectType];\r\n if( this.selectTypeList.contains( \"identity\" ) ) {\r\n this.identityOptions = new O2ProcessorMobile.IdentityOptions(this.form, this.json);\r\n }\r\n if( this.selectTypeList.contains( \"unit\" ) ) {\r\n this.unitOptions = new O2ProcessorMobile.UnitOptions(this.form, this.json);\r\n }\r\n //if( this.selectTypeList.contains( \"group\" ) ){\r\n // this.groupOptions = new MWF.APPOrg.GroupOptions( this.form, this.json );\r\n //}\r\n },\r\n getOptions: function(){\r\n var _self = this;\r\n this._getOrgOptions();\r\n if( this.selectTypeList.length === 0 )return false;\r\n var exclude = [];\r\n if( this.json.exclude ){\r\n var v = this.form.Macro.exec(this.json.exclude.code, this);\r\n exclude = typeOf(v)===\"array\" ? v : [v];\r\n }\r\n\r\n var identityOpt;\r\n if( this.identityOptions ){\r\n identityOpt = this.identityOptions.getOptions();\r\n if (this.json.identityRange!==\"all\"){\r\n if ( !identityOpt.noUnit && (!identityOpt.units || !identityOpt.units.length) ){\r\n this.form.notice(\"无法确定身份的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if ( !identityOpt.noUnit && this.json.dutyRange && this.json.dutyRange!==\"all\"){\r\n if (!identityOpt.dutys || !identityOpt.dutys.length){\r\n this.form.notice(\"无法确定职务的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n identityOpt.values = this._computeValue() || [];\r\n }else{\r\n identityOpt.values = this.getValue();\r\n }\r\n identityOpt.exclude = exclude;\r\n }\r\n\r\n var unitOpt;\r\n if( this.unitOptions ){\r\n unitOpt = this.unitOptions.getOptions();\r\n if (this.json.unitRange!==\"all\"){\r\n if ( !unitOpt.units || !unitOpt.units.length){\r\n this.form.notice(\"无法确定组织的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n unitOpt.values = this._computeValue() || [];\r\n }else{\r\n unitOpt.values = this.getValue();\r\n }\r\n unitOpt.exclude = exclude;\r\n }\r\n\r\n //var groupOpt;\r\n //if( this.groupOptions ){\r\n // groupOpt = this.groupOptions.getOptions();\r\n // groupOpt.values = (this.json.isInput) ? [] : values;\r\n // groupOpt.exclude = exclude;\r\n //}\r\n\r\n var defaultOpt = {\r\n \"style\" : \"default\",\r\n \"zIndex\" : 3000\r\n };\r\n\r\n if( this.json.events && typeOf(this.json.events) === \"object\" ){\r\n Object.each(this.json.events, function(e, key){\r\n if (e.code){\r\n if (this.options.moduleEvents.indexOf(key)!==-1){\r\n //this.addEvent(key, function(event){\r\n // return this.form.Macro.fire(e.code, this, event);\r\n //}.bind(this));\r\n if( key === \"postLoadSelector\" ) {\r\n this.addEvent(\"loadSelector\", function (selector) {\r\n return this.form.Macro.fire(e.code, selector);\r\n }.bind(this))\r\n }else if( key === \"queryLoadSelector\"){\r\n defaultOpt[\"onQueryLoad\"] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }else{\r\n defaultOpt[\"on\"+key.capitalize()] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if( this.form.json.selectorStyle ){\r\n defaultOpt = Object.merge( Object.clone(this.form.json.selectorStyle), defaultOpt );\r\n if( this.form.json.selectorStyle.style )defaultOpt.style = this.form.json.selectorStyle.style;\r\n }\r\n\r\n var mobileEvents = {\r\n \"onComplete\": function(items){\r\n this.selectOnComplete(items);\r\n }.bind(this),\r\n \"onCancel\": this.selectOnCancel.bind(this),\r\n \"onClose\": this.selectOnClose.bind(this)\r\n };\r\n\r\n if( this.selectTypeList.length === 1 ){\r\n return Object.merge(\r\n defaultOpt,\r\n {\r\n \"type\": this.selectTypeList[0],\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this, this.selector )\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n },\r\n mobileEvents,\r\n identityOpt || unitOpt\r\n )\r\n }else if( this.selectTypeList.length > 1 ){\r\n var options = {\r\n \"type\" : \"\",\r\n \"types\" : this.selectTypeList,\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this)\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n };\r\n if( identityOpt ){\r\n options.identityOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n identityOpt\r\n );\r\n }\r\n if( unitOpt ){\r\n options.unitOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n unitOpt\r\n );\r\n }\r\n //if( groupOpt )options.groupOptions = groupOpt;\r\n return options;\r\n }\r\n },\r\n selectOnComplete: function(items){ //移动端才执行\r\n var array = [];\r\n items.each(function(item){\r\n array.push(item.data);\r\n }.bind(this));\r\n this.checkEmpower( array, function( data ){\r\n var values = [];\r\n data.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n\r\n this.setData(values);\r\n\r\n //this.validationMode();\r\n //this.validation();\r\n\r\n this.container.empty();\r\n this.loadOrgWidget(values, this.container);\r\n\r\n this.selector = null;\r\n\r\n this.fireEvent(\"select\", [items, values]);\r\n }.bind(this))\r\n },\r\n selectOnCancel: function(){ //移动端才执行\r\n //this.validation();\r\n },\r\n selectOnLoad: function( selector ){\r\n //if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"none\");\r\n this.fireEvent(\"loadSelector\", [selector])\r\n },\r\n selectOnClose: function(){\r\n var v = this._getBusinessData();\r\n //if (!v || !v.length) if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"block\");\r\n },\r\n loadOrgWidget: function(value, node){\r\n var height = node.getStyle(\"height\").toInt();\r\n if (node.getStyle(\"overflow\")===\"visible\" && !height) node.setStyle(\"overflow\", \"hidden\");\r\n if (value && value.length){\r\n value.each(function(data){\r\n var flag = data.distinguishedName.substr(data.distinguishedName.length-1, 1);\r\n var copyData = Object.clone(data);\r\n if( this.json.displayTextScript && this.json.displayTextScript.code ){\r\n this.currentData = copyData;\r\n var displayName = this.form.Macro.exec(this.json.displayTextScript.code, this);\r\n if( displayName ){\r\n copyData.displayName = displayName;\r\n }\r\n this.currentData = null;\r\n }\r\n\r\n var widget;\r\n switch (flag.toLowerCase()){\r\n case \"i\":\r\n widget = new MWF.widget.O2Identity(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"p\":\r\n widget = new MWF.widget.O2Person(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"u\":\r\n widget = new MWF.widget.O2Unit(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"g\":\r\n widget = new MWF.widget.O2Group(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n default:\r\n widget = new MWF.widget.O2Other(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n }\r\n widget.field = this;\r\n }.bind(this));\r\n }\r\n },\r\n\r\n hasEmpowerIdentity : function(){\r\n var data = this.getData();\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n return this.empowerChecker.hasEmpowerIdentity( data );\r\n },\r\n checkEmpower : function( data, callback, container, selectAllNode ){\r\n if( typeOf(data)===\"array\" && this.identityOptions && this.json.isCheckEmpower && this.json.identityResultType === \"identity\" ) {\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n this.empowerChecker.selectAllNode = selectAllNode;\r\n this.empowerChecker.load(data, callback, container);\r\n }else{\r\n if( callback )callback( data );\r\n }\r\n },\r\n\r\n loadCheckEmpower : function( callback, container, selectAllNode ){\r\n this.checkEmpower( this.getData(), callback, container, selectAllNode)\r\n },\r\n saveCheckedEmpowerData:function( callback ){\r\n var data = this.getData();\r\n //this.empowerChecker.replaceEmpowerIdentity(data, function( newData ){\r\n this.empowerChecker.setIgnoreEmpowerFlag(data, function( newData ){\r\n var values = [];\r\n newData.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n this.setData( values );\r\n if( callback )callback(values)\r\n }.bind(this))\r\n },\r\n\r\n save: function( isValid ){\r\n if( isValid ){\r\n if( this.validation() ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n this.setData( this.getData() );\r\n return true;\r\n }\r\n },\r\n\r\n resetSelectorData : function(){\r\n if( this.selector && this.selector.selector ){\r\n this.selector.selector.emptySelectedItems();\r\n this.selector.selector.options.values = this.getValue();\r\n this.selector.selector.setSelectedItem();\r\n }\r\n },\r\n resetData: function(){\r\n var v = this.getValue();\r\n //this.setData((v) ? v.join(\", \") : \"\");\r\n this.setData(v);\r\n },\r\n getData: function(){\r\n if( this.selector && !layout.mobile ){\r\n return this.getSelectedData();\r\n }else{\r\n return this.getValue();\r\n }\r\n },\r\n getSelectedData : function(){\r\n return this.getValue();\r\n },\r\n getValue: function(){\r\n var value = this._getBusinessData();\r\n if (!value) value = this._computeValue();\r\n return value || \"\";\r\n },\r\n _computeValue: function(){\r\n var values = [];\r\n if (this.json.identityValue) {\r\n this.json.identityValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.unitValue) {\r\n this.json.unitValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.dutyValue) {\r\n var dutys = JSON.decode(this.json.dutyValue);\r\n var par;\r\n if (dutys.length){\r\n dutys.each(function(duty){\r\n if (duty.code) par = this.form.Macro.exec(duty.code, this);\r\n var code = \"return this.org.getDuty(\\\"\"+duty.name+\"\\\", \\\"\"+par+\"\\\")\";\r\n\r\n var d = this.form.Macro.exec(code, this);\r\n if (typeOf(d)!==\"array\") d = (d) ? [d.toString()] : [];\r\n d.each(function(dd){if (dd) values.push(dd);});\r\n\r\n }.bind(this));\r\n }\r\n }\r\n if (this.json.defaultValue && this.json.defaultValue.code){\r\n var fd = this.form.Macro.exec(this.json.defaultValue.code, this);\r\n if (typeOf(fd)!==\"array\") fd = (fd) ? [fd] : [];\r\n fd.each(function(fdd){\r\n if (fdd){\r\n if (typeOf(fdd)===\"string\"){\r\n var data;\r\n this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = json.data }.bind(this), null, fdd, false);\r\n values.push(data);\r\n }else{\r\n values.push(fdd);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n if (this.json.count>0){\r\n return values.slice(0, this.json.count);\r\n }\r\n return values;\r\n //return (this.json.defaultValue.code) ? this.form.Macro.exec(this.json.defaultValue.code, this): (value || \"\");\r\n },\r\n getOrgAction: function(){\r\n if (!this.orgAction) this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n //if (!this.orgAction) this.orgAction = new MWF.xApplication.Selector.Actions.RestActions();\r\n return this.orgAction;\r\n },\r\n setData: function(value){\r\n\r\n if (!value) return false;\r\n var oldValues = this.getValue();\r\n var values = [];\r\n\r\n var type = typeOf(value);\r\n if (type===\"array\"){\r\n value.each(function(v){\r\n var vtype = typeOf(v);\r\n var data = null;\r\n if (vtype===\"string\"){\r\n this.getOrgAction()[this.getValueMethod(v)](function(json){ data = MWF.org.parseOrgData(json.data, true); }.bind(this), error, v, false);\r\n }\r\n if (vtype===\"object\") {\r\n data = MWF.org.parseOrgData(v, true);\r\n if(data.woPerson)delete data.woPerson;\r\n }\r\n if (data)values.push(data);\r\n }.bind(this));\r\n }\r\n if (type===\"string\"){\r\n var vData;\r\n this.getOrgAction()[this.getValueMethod(value)](function(json){ vData = MWF.org.parseOrgData(json.data, true); }.bind(this), error, value, false);\r\n if (vData)values.push(vData);\r\n }\r\n if (type===\"object\"){\r\n var vData = MWF.org.parseOrgData(value, true);\r\n if(vData.woPerson)delete vData.woPerson;\r\n values.push( vData );\r\n }\r\n\r\n var change = false;\r\n if (oldValues.length && values.length){\r\n if (oldValues.length === values.length){\r\n for (var i=0; i 0) {\r\n o2.Actions.get(\"x_organization_assemble_express\").listEmpowerWithIdentity({\r\n \"application\": (this.form.businessData.work || this.form.businessData.workCompleted).application,\r\n \"process\": (this.form.businessData.work || this.form.businessData.workCompleted).process,\r\n \"work\" : (this.form.businessData.work || this.form.businessData.workCompleted).id,\r\n \"identityList\": array\r\n }, function (json) {\r\n var arr = [];\r\n json.data.each(function (d) {\r\n if (d.fromIdentity !== d.toIdentity)\r\n arr.push(d);\r\n });\r\n if (arr.length > 0) {\r\n flag = true;\r\n }\r\n }.bind(this), null, false)\r\n }\r\n }\r\n return flag;\r\n },\r\n getSelectedData : function( callback ){\r\n var json = {};\r\n this.empowerSelectNodes.each(function(node){\r\n if( node.retrieve(\"isSelected\") ){\r\n var d = node.retrieve(\"data\");\r\n json[ d.fromIdentity ] = d;\r\n }\r\n }.bind(this));\r\n if( callback )callback( json );\r\n }\r\n});\r\n\r\nO2ProcessorMobile.UnitOptions = new Class({\r\n Extends : MWF.APPOrg.UnitOptions\r\n});\r\n\r\nO2ProcessorMobile.IdentityOptions = new Class({\r\n Extends : MWF.APPOrg.IdentityOptions\r\n});", - "html": "MWF.xDesktop.requireApp(\"process.Xform\", \"Org\", null, false);\r\n\r\nthis.define(\"loadProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nthis.define(\"popupProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nwindow.O2ProcessorMobile = new Class({\r\n Implements: [Events],\r\n initialize: function (macro) {\r\n\r\n debugger;\r\n\r\n this.macro = macro;\r\n this.app = macro.form.app;\r\n this.form = this.app.appForm;\r\n this.task = this.form.businessData.task;\r\n this.appContentNode = $(document.body); //this.app.content;\r\n\r\n this.initConstant();\r\n this.getCss();\r\n this.getAllNode();\r\n\r\n // this.loadCss();\r\n\r\n },\r\n initConstant: function () {\r\n this.DefaultDecisionOpinionName = \"其它\"; //默认的决策组,如果当前节点有决策组,但是某些决策没有落在决策组中,那么使用默认决策组\r\n },\r\n load: function () {\r\n if (this.status === \"closed\") {\r\n this.node.show();\r\n // this.positionSeted = false; //重新设置位置\r\n // this.setSize( this.getCurrentRouteOrgList().length );\r\n this.status = \"show\";\r\n } else {\r\n this.container = new Element(\"div\").inject(this.appContentNode);\r\n this.node.setStyles({\r\n \"width\" : \"100%\",\r\n \"position\" : \"absolute\",\r\n \"z-index\" : \"101\"\r\n })\r\n this.loadContent();\r\n this.setEvents();\r\n this.node.inject(this.container);\r\n this.status = \"show\";\r\n }\r\n },\r\n loadContent: function () {\r\n this.getRouteGroupList();\r\n\r\n var orgLength = this.getMaxOrgLength();\r\n if (orgLength === 0) { //流程选人数量为0\r\n if (this.orgsTile) {\r\n this.orgsTile.destroy();\r\n this.orgsTile = null;\r\n }\r\n if (this.orgsArea) {\r\n this.orgsArea.destroy();\r\n this.orgsArea = null;\r\n }\r\n }\r\n\r\n this.setOpinion(); //意见\r\n\r\n if (this.hasDecisionOpinion) { //有决策组\r\n this.setRouteGroupList();\r\n } else { //没有决策组\r\n if (this.routeGroupTitle) {\r\n this.routeGroupTitle.destroy();\r\n this.routeGroupTitle = null;\r\n }\r\n if (this.routeGroupArea) {\r\n this.routeGroupArea.destroy();\r\n this.routeGroupArea = null;\r\n }\r\n // this.routeSelectorArea.setStyles( this.css.routeSelectorArea );\r\n // if( this.inputOpinionNodeTd && this.selectIdeaNodeTd ){\r\n // this.inputOpinionNodeTd.set( \"width\", orgLength < 2 ? \"60%\" : \"50%\" );\r\n // }\r\n this.setRouteList();\r\n }\r\n },\r\n\r\n getAllNode: function () {\r\n this.node = this.getNode(\"submitNode\");\r\n\r\n this.buttonNode = this.getNode(\"submitButtonNode\");\r\n\r\n this.contentWrapNode = this.getNode(\"submitContentWrapNode\");\r\n this.contentNode = this.getNode(\"submitContentNode\");\r\n this.contentInnerNode = this.getNode(\"submitContentInnerNode\");\r\n\r\n this.routeGroupTitle = this.getNode(\"routeGroupTitle\");\r\n this.routeGroupArea = this.getNode(\"routeGroupArea\");\r\n\r\n this.routeSelectorTitle = this.getNode(\"routeSelectorTitle\");\r\n this.routeSelectorArea = this.getNode(\"routeSelectorArea\");\r\n\r\n this.selectIdeaAreaNode = this.getNode(\"selectIdeaAreaNode\");\r\n\r\n this.inputOpinionNode = this.getNode(\"inputOpinionNode\");\r\n this.inputTextarea = this.getNode(\"inputTextarea\");\r\n\r\n this.handwritingAction = this.getNode(\"handwritingAction\");\r\n\r\n this.orgsTile = this.getNode(\"orgsTile\");\r\n this.orgsArea = this.getNode(\"orgsArea\");\r\n\r\n this.buttonsArea = this.getNode(\"submitButtonNode\");\r\n this.okButton = this.getNode(\"okButton\");\r\n this.cancelButton = this.getNode(\"cancelButton\");\r\n },\r\n setEvents: function () {\r\n if (this.cancelButton) {\r\n this.cancelButton.addEvent(\"click\", function () {\r\n this.close();\r\n this.fireEvent(\"cancel\");\r\n }.bind(this));\r\n }\r\n if (this.okButton) {\r\n this.okButton.addEvent(\"click\", function (ev) {\r\n this.submit(ev)\r\n }.bind(this));\r\n }\r\n },\r\n getNode: function (name) {\r\n if (this.macro.form.get(name)) {\r\n return this.macro.form.get(name).node;\r\n }\r\n if (this.form.allForName[name]) {\r\n return this.form.allForName[name].node;\r\n }\r\n },\r\n setData: function (name, value) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.setData(value) : null;\r\n },\r\n getData: function (name) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.getData() : null;\r\n },\r\n getRouteConfigList: function () { //获取当前待办的所有路由设置\r\n if (!this.routeConfigList) {\r\n o2.Actions.get(\"x_processplatform_assemble_surface\").listRoute({\"valueList\": this.task.routeList}, function (json) {\r\n json.data.each(function (d) {\r\n d.selectConfigList = JSON.parse(d.selectConfig || \"[]\");\r\n }.bind(this));\r\n this.routeConfigList = json.data;\r\n }.bind(this), null, false);\r\n }\r\n return this.routeConfigList;\r\n },\r\n getRouteConfig: function (routeId) { //根据某个ID获取路由设置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i];\r\n }\r\n }\r\n },\r\n getMaxOrgLength: function () { //获取当前待办下可能的最多选人组件个数\r\n var routeList = this.getRouteConfigList();\r\n var length = 0;\r\n routeList.each(function (route) {\r\n if (route.hiddenScriptText) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n length = Math.max(length, route.selectConfigList.length);\r\n }.bind(this));\r\n return length;\r\n },\r\n getOrgConfig: function (routeId) { //获取人员选择配置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i].selectConfigList;\r\n }\r\n }\r\n },\r\n getCurrentRouteSelectorList: function () { //获取当前路由的人员选择器对象\r\n var selectorList = [];\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n if (!orgList) return [];\r\n orgList.each(function (org) {\r\n if (org.selector && org.selector.selector) {\r\n selectorList.push(org.selector.selector);\r\n }\r\n }.bind(this))\r\n return selectorList;\r\n },\r\n getCurrentRouteOrgList: function () { //获取当前路由的org对象\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n return orgList || [];\r\n },\r\n getSelectorSelectedData: function (filedName) { //获取人员选择器选择的值\r\n var data = [];\r\n var orgList = this.getCurrentRouteOrgList();\r\n for (var i = 0; i < orgList.length; i++) {\r\n var org = orgList[i];\r\n if (org.json.name === filedName) {\r\n var selector = org.selector.selector;\r\n selector.selectedItems.each(function (item) {\r\n data.push(item.data)\r\n })\r\n }\r\n }\r\n return data;\r\n },\r\n getMarginY: function (node) {\r\n return (node.getStyle(\"margin-top\").toInt() || 0) +\r\n (node.getStyle(\"margin-bottom\").toInt() || 0);\r\n // (node.getStyle(\"padding-top\").toInt() || 0 ) +\r\n // (node.getStyle(\"padding-bottom\").toInt() || 0 )+\r\n // (node.getStyle(\"border-top-width\").toInt() || 0 ) +\r\n // (node.getStyle(\"border-bottom-width\").toInt() || 0 );\r\n },\r\n setSize: function (currentOrgLength) {\r\n var lines = ((currentOrgLength + 1) / 2).toInt();\r\n\r\n if (lines > 0) {\r\n this.showOrgsArea();\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n if (this.buttonsArea) {\r\n var bodySize = this.appContentNode.getSize();\r\n var nodeHeight = bodySize.y - this.getMarginY(this.node);\r\n this.node.setStyles({\r\n \"overflow-y\": \"hidden\",\r\n \"height\": nodeHeight\r\n });\r\n var buttonsAreaSize = this.buttonsArea.getSize();\r\n this.contentNode.setStyles({\r\n \"height\": nodeHeight - buttonsAreaSize.y - this.getMarginY(this.buttonsArea) - this.getMarginY(this.contentNode),\r\n \"overflow-y\": \"auto\"\r\n })\r\n }\r\n\r\n this.fireEvent(\"resize\");\r\n },\r\n showOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.show();\r\n if (this.orgsArea) this.orgsArea.show();\r\n },\r\n hideOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.hide();\r\n if (this.orgsArea) this.orgsArea.hide();\r\n },\r\n\r\n /*决策和决策组相关 开始*/\r\n getRouteGroupList: function () { //获取决策组并格式化成对象\r\n if (this.routeGroupObject) return this.routeGroupObject;\r\n this.routeGroupObject = {};\r\n this.routeGroupNameList = [];\r\n this.hasDecisionOpinion = false;\r\n var routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n route.displayName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n } else {\r\n route.displayName = route.name;\r\n }\r\n\r\n if (route.decisionOpinion) { //决策组名称\r\n this.hasDecisionOpinion = true;\r\n var decisionOpinionList = route.decisionOpinion.split(\"#\");\r\n decisionOpinionList.each(function (decisionOption) {\r\n this.routeGroupNameList.combine([decisionOption]);\r\n var d = this.splitByStartNumber(decisionOption);\r\n if (!this.routeGroupObject[d.name]) this.routeGroupObject[d.name] = [];\r\n this.routeGroupObject[d.name].push(route);\r\n }.bind(this))\r\n } else {\r\n var defaultName = this.DefaultDecisionOpinionName;\r\n this.routeGroupNameList.combine([defaultName]);\r\n if (!this.routeGroupObject[defaultName]) this.routeGroupObject[defaultName] = [];\r\n this.routeGroupObject[defaultName].push(route);\r\n }\r\n }.bind(this));\r\n return this.routeGroupObject;\r\n },\r\n splitByStartNumber: function (str) {\r\n var obj = {\r\n name: \"\",\r\n order: \"\"\r\n };\r\n for (var i = 0; i < str.length; i++) {\r\n if (parseInt(str.substr(i, 1)).toString() !== \"NaN\") {\r\n obj.order = obj.order + str.substr(i, 1);\r\n } else {\r\n obj.name = str.substr(i, str.length);\r\n break;\r\n }\r\n }\r\n return obj;\r\n },\r\n setRouteGroupList: function () { //排序并创建决策组DOM对象\r\n var _self = this;\r\n\r\n //根据决策组的排序号进行排序\r\n var keys = this.routeGroupNameList;\r\n keys.sort(function (a, b) {\r\n var aIdx = parseInt(this.splitByStartNumber(a).order || \"9999999\");\r\n var bIdx = parseInt(this.splitByStartNumber(b).order || \"9999999\");\r\n return aIdx - bIdx;\r\n }.bind(this));\r\n\r\n var list = [];\r\n keys.each(function (k) {\r\n list.push(this.splitByStartNumber(k).name)\r\n }.bind(this));\r\n\r\n debugger;\r\n\r\n list.each(function (routeGroupName) {\r\n var routeList = this.routeGroupObject[routeGroupName];\r\n var routeGroupNode = new Element(\"div\", {\r\n \"styles\": this.css.routeGroupNode,\r\n \"text\": routeGroupName\r\n }).inject(this.routeGroupArea);\r\n routeGroupNode.store(\"routeList\", routeList);\r\n routeGroupNode.store(\"routeGroupName\", routeGroupName);\r\n\r\n routeGroupNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRouteGroup(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRouteGroup(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRouteGroup(this);\r\n }\r\n });\r\n\r\n if (keys.length === 1) { //如果决策组只有1个,则默认选中\r\n this.selectRouteGroup(routeGroupNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n }.bind(this))\r\n },\r\n overRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n },\r\n outRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n },\r\n selectRouteGroup: function (node) { //选中决策组执行...\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode);\r\n //this.selectedRouteGroup.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRouteGroup = node;\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode_selected);\r\n //this.selectedRouteGroup.addClass(\"mainColor_bg\");\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n\r\n } else {\r\n\r\n }\r\n } else {\r\n this.selectedRouteGroup = node;\r\n node.setStyles(this.css.routeGroupNode_selected);\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n }\r\n this.routeGroupArea.setStyle(\"background-color\", \"#FFF\");\r\n },\r\n setRouteList: function (routeList) { //创建决策对象\r\n var _self = this;\r\n this.routeSelectorArea.empty();\r\n this.selectedRoute = null;\r\n\r\n if (!routeList) routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n var routeName = route.name;\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n routeName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n }\r\n var routeNode = new Element(\"div\", {\r\n \"styles\": this.css.routeNode,\r\n \"text\": routeName\r\n }).inject(this.routeSelectorArea);\r\n routeNode.store(\"route\", route.id);\r\n routeNode.store(\"routeName\", route.name);\r\n\r\n routeNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRoute(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRoute(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRoute(this);\r\n }\r\n });\r\n\r\n if (routeList.length == 1 || route.sole) { //sole表示优先路由\r\n this.selectRoute(routeNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n\r\n }.bind(this));\r\n },\r\n overRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n },\r\n outRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n },\r\n selectRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n\r\n } else {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.addClass(\"lightColor_bg\");\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = null;\r\n }\r\n } else {\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#FFF\");\r\n\r\n this.loadOrgs(this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\");\r\n\r\n if (this.form.data.json.events && this.form.data.json.events.afterSelectRoute) {\r\n this.form.Macro.exec(this.form.data.json.events.afterSelectRoute.code, node);\r\n }\r\n\r\n },\r\n /*决策和决策组相关 结束*/\r\n\r\n setOpinion: function () {\r\n if (!this.inputTextarea) return;\r\n if (this.handwritingAction) this.handwritingAction.addEvent(\"click\", function () {\r\n window.setTimeout( function(){\r\n this.handwriting();\r\n }.bind(this), 100 )\r\n }.bind(this));\r\n\r\n if (this.selectIdeaAreaNode) {\r\n MWF.require(\"MWF.widget.UUID\", function () {\r\n MWF.UD.getDataJson(\"idea\", function (json) {\r\n if (json) {\r\n if (json.ideas) {\r\n this.setIdeaList(json.ideas);\r\n }\r\n } else {\r\n MWF.UD.getPublicData(\"idea\", function (pjson) {\r\n if (pjson) {\r\n if (pjson.ideas) {\r\n this.setIdeaList(pjson.ideas);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this));\r\n }.bind(this));\r\n }\r\n\r\n },\r\n\r\n audioRecord: function () {\r\n if (!this.audioRecordNode) this.createAudioRecord();\r\n this.audioRecordNode.show();\r\n this.audioRecordNode.position({\r\n \"relativeTo\": this.options.mediaNode || this.node,\r\n \"position\": \"center\",\r\n \"edge\": \"center\"\r\n });\r\n\r\n MWF.require(\"MWF.widget.AudioRecorder\", function () {\r\n this.audioRecorder = new MWF.widget.AudioRecorder(this.audioRecordNode, {\r\n \"onSave\": function (blobFile) {\r\n this.soundFile = blobFile;\r\n this.audioRecordNode.hide();\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.soundFile = null;\r\n this.audioRecordNode.hide();\r\n }.bind(this)\r\n }, null);\r\n }.bind(this));\r\n },\r\n createAudioRecord: function () {\r\n this.audioRecordNode = new Element(\"div\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n var size = (this.options.mediaNode || this.node).getSize();\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.audioRecordNode.setStyles({\r\n \"height\": \"\" + size.y + \"px\",\r\n \"width\": \"\" + size.x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n },\r\n\r\n handwriting: function () {\r\n if (!this.handwritingNode) this.createHandwriting();\r\n if(this.handwritingNodeMask)this.handwritingNodeMask.show();\r\n this.handwritingNode.show();\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n },\r\n createHandwriting: function () {\r\n this.handwritingNodeMask = new Element(\"div.handwritingMask\", {\"styles\": this.css.handwritingMask}).inject(this.node);\r\n\r\n this.handwritingNode = new Element(\"div.handwritingNode\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n //var size = (this.options.mediaNode || this.node).getSize();\r\n //var y = size.y;\r\n //var x = size.x;\r\n //兼容以前的默认高宽\r\n\r\n debugger;\r\n\r\n var bodySize = $(document.body).getSize();\r\n var x = bodySize.x;\r\n var y = bodySize.y;\r\n\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.handwritingNode.setStyles({\r\n \"height\": \"\" + y + \"px\",\r\n \"width\": \"\" + x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n this.handwritingNode.addEvent('touchmove' , function(e){\r\n e.preventDefault();\r\n });\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n this.handwritingAreaNode = new Element(\"div\", {\"styles\": this.css.handwritingAreaNode}).inject(this.handwritingNode);\r\n // this.handwritingActionNode = new Element(\"div\", {\r\n // \"styles\": this.css.handwritingActionNode,\r\n // \"text\": MWF.xApplication.process.Work.LP.saveWrite\r\n // }).inject(this.handwritingNode);\r\n // var h = this.handwritingActionNode.getSize().y + this.handwritingActionNode.getStyle(\"margin-top\").toInt() + this.handwritingActionNode.getStyle(\"margin-bottom\").toInt();\r\n // h = y - h;\r\n // this.handwritingAreaNode.setStyle(\"height\", \"\" + h + \"px\");\r\n this.handwritingAreaNode.setStyle(\"height\", \"\" + y + \"px\");\r\n\r\n MWF.require(\"MWF.widget.Tablet\", function () {\r\n var handWritingOptions = {\r\n \"style\": \"default\",\r\n \"contentWidth\": 0,\r\n \"contentHeight\": 0,\r\n \"onSave\": function (base64code, base64Image, imageFile) {\r\n this.handwritingFile = imageFile;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n // this.page.get(\"div_image\").node.set(\"src\",base64Image);\r\n\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.handwritingFile = null;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n }.bind(this)\r\n };\r\n handWritingOptions.tools = [\r\n \"undo\",\r\n \"redo\", \"|\",\r\n \"reset\", \"|\",\r\n \"size\",\r\n \"cancel\"\r\n ]\r\n this.tablet = new MWF.widget.Tablet(this.handwritingAreaNode, handWritingOptions, null);\r\n this.tablet.load();\r\n }.bind(this));\r\n\r\n // this.handwritingActionNode.addEvent(\"click\", function () {\r\n // //this.handwritingNode.hide();\r\n // if (this.tablet) this.tablet.save();\r\n // }.bind(this));\r\n },\r\n\r\n setIdeaList: function (ideas) {\r\n var _self = this;\r\n ideas.each(function (idea) {\r\n new Element(\"div\", {\r\n \"styles\": this.css.selectIdeaItemNode,\r\n \"text\": idea,\r\n \"events\": {\r\n \"click\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"dblclick\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"mouseover\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode_over);\r\n },\r\n \"mouseout\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode);\r\n }\r\n }\r\n }).inject(this.selectIdeaAreaNode);\r\n }.bind(this));\r\n },\r\n submit: function (ev) {\r\n if (this.hasDecisionOpinion && !this.selectedRouteGroup) {\r\n this.routeGroupArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"top\"},\r\n \"请先选择决策组\",\r\n this.routeGroupArea,\r\n null, //{\"x\": 0, \"y\": 30}\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n\r\n if (!this.selectedRoute) {\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.routeSelectorArea,\r\n delayClose: 6000,\r\n content: \"请先选择决策\"\r\n });\r\n return false;\r\n }\r\n var routeName = this.selectedRoute.retrieve(\"routeName\") || this.selectedRoute.get(\"text\");\r\n var opinion = this.getData(\"inputTextarea\");\r\n if (opinion === MWF.xApplication.process.Work.LP.inputText) opinion = \"\";\r\n var medias = [];\r\n if (this.handwritingFile) medias.push(this.handwritingFile);\r\n if (this.soundFile) medias.push(this.soundFile);\r\n if (this.videoFile) medias.push(this.videoFile);\r\n\r\n var currentRouteId = this.selectedRoute.retrieve(\"route\");\r\n var routeConfig = this.getRouteConfig(currentRouteId);\r\n if (!opinion && medias.length === 0) {\r\n if (routeConfig.opinionRequired == true) {\r\n this.inputTextarea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.inputTextarea,\r\n delayClose: 6000,\r\n content: \"请填写意见\"\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: validation\r\n });\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: \"路由校验失败\"\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //var array = [routeName, opinion, medias];\r\n //this.node.mask({\r\n // \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n // \"destroyOnHide\": true,\r\n // \"style\": {\r\n // \"background-color\": \"#999\",\r\n // \"opacity\": 0.3,\r\n // \"z-index\":600\r\n // }\r\n //});\r\n //this.fireEvent(\"submit\", array );\r\n\r\n var appendTaskOrgItem;\r\n if (routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\") {\r\n if (!this.orgItems || this.orgItems.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"没有配置转交人,请联系管理员\" //\"没有配置转交人,请联系管理员\"\r\n });\r\n return false;\r\n } else {\r\n appendTaskOrgItem = this.orgItems[0]\r\n }\r\n }\r\n\r\n if (!this.saveOrgs()) return false;\r\n\r\n //this.saveOrgsWithCheckEmpower( function(){\r\n var appandTaskIdentityList;\r\n if (appendTaskOrgItem) {\r\n appandTaskIdentityList = appendTaskOrgItem.getData();\r\n if (!appandTaskIdentityList || appandTaskIdentityList.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"请选择转交人\"\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n validation,\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n \"路由校验失败\",\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n this.node.mask({\r\n \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n \"destroyOnHide\": true,\r\n \"style\": {\r\n \"background-color\": \"#999\",\r\n \"opacity\": 0.3,\r\n \"z-index\": 600\r\n }\r\n });\r\n\r\n // var array = [ routeName, opinion, medias, appandTaskIdentityList, this.orgItems, function(){\r\n // if(appendTaskOrgItem)appendTaskOrgItem.setData([]);\r\n // }];\r\n\r\n var op = this.form.getOpinion();\r\n var mds = op.medias;\r\n\r\n if (!medias || !medias.length) {\r\n medias = mds;\r\n } else {\r\n medias = medias.concat(mds)\r\n }\r\n\r\n this.form.submitWork(routeName, opinion, medias, function () {\r\n this.close();\r\n }.bind(this), this, null, appandTaskIdentityList, this.orgItems, function () {\r\n if (appendTaskOrgItem) appendTaskOrgItem.setData([]);\r\n this.setData(\"inputTextarea\", \"\");\r\n }.bind(this));\r\n\r\n // this.fireEvent(\"submit\", array );\r\n },\r\n\r\n close: function () {\r\n this.node.setStyle(\"display\", \"none\");\r\n this.status = \"closed\";\r\n },\r\n destroy: function () {\r\n // this.node.empty();\r\n // delete this.task;\r\n // delete this.node;\r\n // delete this.routeSelectorTile;\r\n // delete this.routeSelectorArea;\r\n // delete this.routeOpinionTile;\r\n // delete this.routeOpinionArea;\r\n // delete this.buttonsArea;\r\n // delete this.inputOpinionNode;\r\n // delete this.inputTextarea;\r\n // delete this.cancelButton;\r\n // delete this.okButton;\r\n },\r\n loadOrgs: function (route) {\r\n if (!this.form || !route) {\r\n this.hideOrgsArea();\r\n return;\r\n } else {\r\n this.showOrgsArea();\r\n }\r\n if (!this.orgTableObject) this.orgTableObject = {};\r\n if (!this.orgItemsObject) this.orgItemsObject = {};\r\n var isLoaded = false;\r\n for (var key in this.orgTableObject) {\r\n if (route === key) {\r\n this.orgTableObject[key].show();\r\n this.orgItems = this.orgItemsObject[key] || [];\r\n var data = this.getOrgConfig(route);\r\n isLoaded = true;\r\n } else {\r\n this.orgTableObject[key].hide();\r\n }\r\n }\r\n if (isLoaded) return;\r\n\r\n this.orgItems = [];\r\n this.orgItemsObject[route] = this.orgItems;\r\n\r\n var data = this.getOrgConfig(route);\r\n var routeConfig = this.getRouteConfig(route);\r\n var ignoreFirstOrgOldData = false; //(routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\");\r\n this.setSize(data.length);\r\n if (data.length) {\r\n this.showOrgsArea();\r\n\r\n var routeOrgTable = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTable\r\n }).inject(this.orgsArea);\r\n this.orgTableObject[route] = routeOrgTable;\r\n\r\n data.each(function (config, i) {\r\n var sNode = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTr\r\n }).inject(routeOrgTable);\r\n this.loadOrg(sNode, config, ignoreFirstOrgOldData && i == 0)\r\n }.bind(this))\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n },\r\n loadOrg: function (container, json, position, ignoreOldData) {\r\n var titleNode = new Element(\"div.selectorTitle\", {\r\n \"styles\": this.css.selectorTitle\r\n }).inject(container);\r\n var titleTextNode = new Element(\"div.selectorTitleText\", {\r\n \"text\": json.title,\r\n \"styles\": this.css.selectorTitleText\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.selectorContent\", {\r\n \"styles\": this.css.selectorContent\r\n }).inject(container);\r\n\r\n var errorNode = new Element(\"div.selectorErrorNode\", {\r\n \"styles\": this.css.selectorErrorNode\r\n }).inject(container);\r\n\r\n var org = new O2ProcessorMobile.Org(contentNode, this.form, json, this, {\r\n onSelect: function (items, data) {\r\n if (!data || !data.length) {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n } else {\r\n contentNode.setStyles(this.css.selectorContent);\r\n }\r\n }.bind(this)\r\n });\r\n org.ignoreOldData = ignoreOldData;\r\n org.errContainer = errorNode;\r\n org.summitDlalog = this;\r\n this.orgItems.push(org);\r\n\r\n titleNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n contentNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n\r\n var defaultValue = org.getValue();\r\n org.loadOrgWidget(defaultValue, contentNode);\r\n if (!defaultValue || defaultValue.length == 0) {\r\n {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n }\r\n }\r\n\r\n },\r\n validationOrgs: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.validation()) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n isOrgsHasEmpower: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = false;\r\n this.needCheckEmpowerOrg = [];\r\n this.orgItems.each(function (item) {\r\n if (item.hasEmpowerIdentity()) {\r\n this.needCheckEmpowerOrg.push(item);\r\n flag = true;\r\n }\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgs: function (keepSilent) {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.save(!keepSilent)) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgsWithCheckEmpower: function (callback) {\r\n debugger;\r\n if (!this.orgItems || !this.orgItems.length) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n if (!this.validationOrgs()) return false;\r\n if (!this.isOrgsHasEmpower()) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n //this.checkEmpowerMode = true;\r\n this.showEmpowerDlg(callback);\r\n },\r\n showEmpowerDlg: function (callback) {\r\n\r\n //this.needCheckEmpowerOrg.each( function(org){\r\n // org.saveCheckedEmpowerData();\r\n //}.bind(this));\r\n\r\n var empowerNode = new Element(\"div.empowerNode\", {\"styles\": this.css.empowerNode});\r\n var empowerTitleNode = new Element(\"div\", {\r\n text: \"下列人员对工作进行了授权,选择后文件将发送给被授权人,取消选择后文件将发送给授权者本人\",\r\n styles: this.css.empowerTitleNode\r\n }).inject(empowerNode);\r\n\r\n var orgs = this.needCheckEmpowerOrg;\r\n var len = orgs.length;\r\n var lines = ((len + 1) / 2).toInt();\r\n\r\n var empowerTable = new Element(\"table\", {\r\n \"cellspacing\": 0, \"cellpadding\": 0, \"border\": 0, \"width\": \"100%\",\r\n \"styles\": this.css.empowerTable\r\n }).inject(empowerNode);\r\n\r\n for (var n = 0; n < lines; n++) {\r\n var tr = new Element(\"tr\").inject(empowerTable);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerOddTd}).inject(tr);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerEvenTd}).inject(tr);\r\n }\r\n\r\n var trs = empowerTable.getElements(\"tr\");\r\n orgs.each(function (org, i) {\r\n var sNode;\r\n var width;\r\n if (i + 1 == len && (len % 2 === 1)) {\r\n sNode = trs[trs.length - 1].getFirst(\"td\");\r\n sNode.set(\"colspan\", 2);\r\n trs[trs.length - 1].getLast(\"td\").destroy();\r\n width = \"50%\";\r\n } else {\r\n var row = ((i + 2) / 2).toInt();\r\n var tr = trs[row - 1];\r\n sNode = (i % 2 === 0) ? tr.getFirst(\"td\") : tr.getLast(\"td\");\r\n }\r\n\r\n var titleNode = new Element(\"div.empowerAreaTitle\", {\r\n \"styles\": this.css.empowerAreaTitle\r\n }).inject(sNode);\r\n\r\n var titleTextNode = new Element(\"div.empowerAreaTitleText\", {\r\n \"text\": org.json.title,\r\n \"styles\": this.css.empowerAreaTitleText\r\n }).inject(titleNode);\r\n\r\n var selectAllNode = new Element(\"div\", {\r\n styles: {\r\n float: \"right\"\r\n }\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.empowerAreaContent\", {\r\n \"styles\": this.css.empowerAreaContent\r\n }).inject(sNode);\r\n\r\n org.loadCheckEmpower(null, contentNode, selectAllNode);\r\n\r\n }.bind(this));\r\n\r\n empowerNode.setStyle(\"height\", lines * this.options.orgHeight + 20);\r\n //var dlgHeight = Math.min( Math.floor( this.form.app.content.getSize().y * 0.9) , lines*this.options.orgHeight + 151 );\r\n\r\n //var width = this.node.retrieve(\"width\");\r\n //empowerNode.setStyle( \"width\", width );\r\n var width = \"880\";\r\n //if( len > 1 ){\r\n // width = \"840\"\r\n //}else{\r\n // width = \"420\"\r\n //}\r\n empowerNode.setStyle(\"width\", width + \"px\");\r\n\r\n this.node.getParent().mask({\r\n \"style\": this.css.mask\r\n });\r\n this.empowerDlg = o2.DL.open({\r\n \"title\": \"授权人员替换选择\",\r\n \"style\": this.form.json.dialogStyle || \"user\",\r\n \"isResize\": false,\r\n \"content\": empowerNode,\r\n //\"container\" : this.node,\r\n \"width\": width, //600,\r\n \"height\": \"auto\", //dlgHeight,\r\n \"mark\": false,\r\n \"buttonList\": [\r\n {\r\n \"type\": \"ok\",\r\n \"text\": \"确定\",\r\n \"action\": function (d, e) {\r\n //if (this.empowerDlg) this.empowerDlg.okButton.click();\r\n\r\n orgs.each(function (org, i) {\r\n org.saveCheckedEmpowerData(function () {\r\n if (i === orgs.length - 1) {\r\n if (callback) callback();\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this)\r\n },\r\n {\r\n \"type\": \"cancel\",\r\n \"text\": \"取消\",\r\n \"action\": function () {\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }.bind(this)\r\n }\r\n ]\r\n });\r\n },\r\n getCss: function () {\r\n this.css = {\r\n\r\n \"routeGroupNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"padding-left\": \"28px\",\r\n \"color\": \"#000\",\r\n \"background-color\": \"#E3E3E3\",\r\n \"min-height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_over\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_selected\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/routegroup_selected.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"border-radius\": \"5px\",\r\n \"height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"padding-left\": \"26px\",\r\n \"padding-right\": \"8px\",\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#f0f0f0\"\r\n },\r\n \"routeNode_over\": {\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"routeNode_selected\": {\r\n \"color\": \"#fff\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/checked.png) no-repeat 5px center\",\r\n \"background-color\": \"#3296FA\"\r\n },\r\n\r\n \"selectIdeaItemNode\": {\r\n \"line-height\": \"18px\",\r\n \"font-size\": \"14px\",\r\n \"cursor\": \"pointer\",\r\n \"background-color\": \"#FFF\",\r\n \"padding\": \"4px 4px 4px 4px\",\r\n \"overflow\": \"hidden\"\r\n },\r\n \"selectIdeaItemNode_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n\r\n \"handwritingNode\": {\r\n \"position\": \"absolute\",\r\n \"background\": \"#ffffff\"\r\n },\r\n \"handwritingActionNode\": {\r\n \"width\": \"70%\",\r\n \"min-width\": \"100px\",\r\n \"height\": \"3em\",\r\n \"line-height\": \"3em\",\r\n \"margin\": \"5px auto\",\r\n \"border-radius\": \"5px\",\r\n \"border\": \"1px solid #3296FA\",\r\n \"background-color\": \"#3296FA\",\r\n \"text-align\": \"center\",\r\n \"color\": \"#ffffff\",\r\n \"font-size\": \"16px\"\r\n },\r\n\r\n \"inputOpinionAudioRecordAction\": {\r\n \"display\": \"none\",\r\n \"float\": \"right\",\r\n \"border\": \"1px solid #6681a5\",\r\n \"border-radius\": \"3px\",\r\n \"cursor\": \"pointer\",\r\n \"padding-left\": \"24px\",\r\n \"padding-right\": \"5px\",\r\n \"margin-left\": \"5px\",\r\n \"background\": \"url(\" + \"/x_component_process_Work/$Processor/default/audioRecord.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeOrgTable\": {},\r\n \"routeOrgTr\": {\r\n \"margin-bottom\": \"10px\"\r\n },\r\n \"routeOrgOddTd\": {\r\n \"width\": \"50%\"\r\n },\r\n \"routeOrgEvenTd\": {\r\n \"width\": \"50%\",\r\n \"border-left\": \"5px solid #ffffff\"\r\n },\r\n\r\n \"selectorTitle\": {\r\n \"padding\": \"0px 4px\",\r\n \"height\": \"30px\",\r\n \"line-height\": \"30px\",\r\n \"font-size\": \"14px\",\r\n // \"font-weight\": \"bold\",\r\n \"color\": \"#000\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/mobile/arrow_right2.png) no-repeat right 10px center\",\r\n \"background-color\": \"#fff\"\r\n },\r\n \"selectorTitle_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"selectorTitleText\": {\r\n// \"float\": \"left\"\r\n },\r\n \"selectorErrorNode\": {\r\n //\"float\" : \"right\",\r\n \"background-color\": \"#fff\",\r\n \"margin-right\": \"5px\",\r\n \"font-weight\": \"normal\"\r\n },\r\n \"selectorContent\": {\r\n \"overflow\": \"hidden\",\r\n \"background-color\": \"#fff\",\r\n \"padding\": \"0px 5px 5px 5px\"\r\n },\r\n \"selectorContent_noItem\": {\r\n \"padding\": \"0px\"\r\n }\r\n }\r\n\r\n }\r\n});\r\n\r\n\r\nO2ProcessorMobile.Org = new Class({\r\n Implements: [Options, Events],\r\n options: {\r\n height : 240,\r\n moduleEvents : [\"queryLoadSelector\",\"postLoadSelector\",\"postLoadContent\",\"queryLoadCategory\",\"postLoadCategory\",\r\n \"selectCategory\", \"unselectCategory\",\"queryLoadItem\",\"postLoadItem\",\"selectItem\", \"unselectItem\",\"change\"]\r\n },\r\n initialize: function (container, form, json, processor, options) {\r\n this.form = form;\r\n this.json = json;\r\n this.processor = processor;\r\n this.container = $(container);\r\n this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n this.setOptions(options);\r\n },\r\n load : function(){\r\n setTimeout( function(){ //如果有输入法界面,这个时候页面的计算不对,所以等100毫秒\r\n var options = this.getOptions();\r\n if(options){\r\n //this.selector = new MWF.O2Selector(this.container, options);\r\n this.selector = new MWF.O2Selector($(document.body), options);\r\n }\r\n }.bind(this), 100 )\r\n },\r\n _getOrgOptions: function(){\r\n this.selectTypeList = typeOf( this.json.selectType ) == \"array\" ? this.json.selectType : [this.json.selectType];\r\n if( this.selectTypeList.contains( \"identity\" ) ) {\r\n this.identityOptions = new O2ProcessorMobile.IdentityOptions(this.form, this.json);\r\n }\r\n if( this.selectTypeList.contains( \"unit\" ) ) {\r\n this.unitOptions = new O2ProcessorMobile.UnitOptions(this.form, this.json);\r\n }\r\n //if( this.selectTypeList.contains( \"group\" ) ){\r\n // this.groupOptions = new MWF.APPOrg.GroupOptions( this.form, this.json );\r\n //}\r\n },\r\n getOptions: function(){\r\n var _self = this;\r\n this._getOrgOptions();\r\n if( this.selectTypeList.length === 0 )return false;\r\n var exclude = [];\r\n if( this.json.exclude ){\r\n var v = this.form.Macro.exec(this.json.exclude.code, this);\r\n exclude = typeOf(v)===\"array\" ? v : [v];\r\n }\r\n\r\n var identityOpt;\r\n if( this.identityOptions ){\r\n identityOpt = this.identityOptions.getOptions();\r\n if (this.json.identityRange!==\"all\"){\r\n if ( !identityOpt.noUnit && (!identityOpt.units || !identityOpt.units.length) ){\r\n this.form.notice(\"无法确定身份的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if ( !identityOpt.noUnit && this.json.dutyRange && this.json.dutyRange!==\"all\"){\r\n if (!identityOpt.dutys || !identityOpt.dutys.length){\r\n this.form.notice(\"无法确定职务的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n identityOpt.values = this._computeValue() || [];\r\n }else{\r\n identityOpt.values = this.getValue();\r\n }\r\n identityOpt.exclude = exclude;\r\n }\r\n\r\n var unitOpt;\r\n if( this.unitOptions ){\r\n unitOpt = this.unitOptions.getOptions();\r\n if (this.json.unitRange!==\"all\"){\r\n if ( !unitOpt.units || !unitOpt.units.length){\r\n this.form.notice(\"无法确定组织的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n unitOpt.values = this._computeValue() || [];\r\n }else{\r\n unitOpt.values = this.getValue();\r\n }\r\n unitOpt.exclude = exclude;\r\n }\r\n\r\n //var groupOpt;\r\n //if( this.groupOptions ){\r\n // groupOpt = this.groupOptions.getOptions();\r\n // groupOpt.values = (this.json.isInput) ? [] : values;\r\n // groupOpt.exclude = exclude;\r\n //}\r\n\r\n var defaultOpt = {\r\n \"style\" : \"default\",\r\n \"zIndex\" : 3000\r\n };\r\n\r\n if( this.json.events && typeOf(this.json.events) === \"object\" ){\r\n Object.each(this.json.events, function(e, key){\r\n if (e.code){\r\n if (this.options.moduleEvents.indexOf(key)!==-1){\r\n //this.addEvent(key, function(event){\r\n // return this.form.Macro.fire(e.code, this, event);\r\n //}.bind(this));\r\n if( key === \"postLoadSelector\" ) {\r\n this.addEvent(\"loadSelector\", function (selector) {\r\n return this.form.Macro.fire(e.code, selector);\r\n }.bind(this))\r\n }else if( key === \"queryLoadSelector\"){\r\n defaultOpt[\"onQueryLoad\"] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }else{\r\n defaultOpt[\"on\"+key.capitalize()] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if( this.form.json.selectorStyle ){\r\n defaultOpt = Object.merge( Object.clone(this.form.json.selectorStyle), defaultOpt );\r\n if( this.form.json.selectorStyle.style )defaultOpt.style = this.form.json.selectorStyle.style;\r\n }\r\n\r\n var mobileEvents = {\r\n \"onComplete\": function(items){\r\n this.selectOnComplete(items);\r\n }.bind(this),\r\n \"onCancel\": this.selectOnCancel.bind(this),\r\n \"onClose\": this.selectOnClose.bind(this)\r\n };\r\n\r\n if( this.selectTypeList.length === 1 ){\r\n return Object.merge(\r\n defaultOpt,\r\n {\r\n \"type\": this.selectTypeList[0],\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this, this.selector )\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n },\r\n mobileEvents,\r\n identityOpt || unitOpt\r\n )\r\n }else if( this.selectTypeList.length > 1 ){\r\n var options = {\r\n \"type\" : \"\",\r\n \"types\" : this.selectTypeList,\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this)\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n };\r\n if( identityOpt ){\r\n options.identityOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n identityOpt\r\n );\r\n }\r\n if( unitOpt ){\r\n options.unitOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n unitOpt\r\n );\r\n }\r\n //if( groupOpt )options.groupOptions = groupOpt;\r\n return options;\r\n }\r\n },\r\n selectOnComplete: function(items){ //移动端才执行\r\n var array = [];\r\n items.each(function(item){\r\n array.push(item.data);\r\n }.bind(this));\r\n this.checkEmpower( array, function( data ){\r\n var values = [];\r\n data.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n\r\n this.setData(values);\r\n\r\n //this.validationMode();\r\n //this.validation();\r\n\r\n this.container.empty();\r\n this.loadOrgWidget(values, this.container);\r\n\r\n this.selector = null;\r\n\r\n this.fireEvent(\"select\", [items, values]);\r\n }.bind(this))\r\n },\r\n selectOnCancel: function(){ //移动端才执行\r\n //this.validation();\r\n },\r\n selectOnLoad: function( selector ){\r\n //if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"none\");\r\n this.fireEvent(\"loadSelector\", [selector])\r\n },\r\n selectOnClose: function(){\r\n var v = this._getBusinessData();\r\n //if (!v || !v.length) if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"block\");\r\n },\r\n loadOrgWidget: function(value, node){\r\n var height = node.getStyle(\"height\").toInt();\r\n if (node.getStyle(\"overflow\")===\"visible\" && !height) node.setStyle(\"overflow\", \"hidden\");\r\n if (value && value.length){\r\n value.each(function(data){\r\n var flag = data.distinguishedName.substr(data.distinguishedName.length-1, 1);\r\n var copyData = Object.clone(data);\r\n if( this.json.displayTextScript && this.json.displayTextScript.code ){\r\n this.currentData = copyData;\r\n var displayName = this.form.Macro.exec(this.json.displayTextScript.code, this);\r\n if( displayName ){\r\n copyData.displayName = displayName;\r\n }\r\n this.currentData = null;\r\n }\r\n\r\n var widget;\r\n switch (flag.toLowerCase()){\r\n case \"i\":\r\n widget = new MWF.widget.O2Identity(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"p\":\r\n widget = new MWF.widget.O2Person(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"u\":\r\n widget = new MWF.widget.O2Unit(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"g\":\r\n widget = new MWF.widget.O2Group(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n default:\r\n widget = new MWF.widget.O2Other(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n }\r\n widget.field = this;\r\n }.bind(this));\r\n }\r\n },\r\n\r\n hasEmpowerIdentity : function(){\r\n var data = this.getData();\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n return this.empowerChecker.hasEmpowerIdentity( data );\r\n },\r\n checkEmpower : function( data, callback, container, selectAllNode ){\r\n if( typeOf(data)===\"array\" && this.identityOptions && this.json.isCheckEmpower && this.json.identityResultType === \"identity\" ) {\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n this.empowerChecker.selectAllNode = selectAllNode;\r\n this.empowerChecker.load(data, callback, container);\r\n }else{\r\n if( callback )callback( data );\r\n }\r\n },\r\n\r\n loadCheckEmpower : function( callback, container, selectAllNode ){\r\n this.checkEmpower( this.getData(), callback, container, selectAllNode)\r\n },\r\n saveCheckedEmpowerData:function( callback ){\r\n var data = this.getData();\r\n //this.empowerChecker.replaceEmpowerIdentity(data, function( newData ){\r\n this.empowerChecker.setIgnoreEmpowerFlag(data, function( newData ){\r\n var values = [];\r\n newData.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n this.setData( values );\r\n if( callback )callback(values)\r\n }.bind(this))\r\n },\r\n\r\n save: function( isValid ){\r\n if( isValid ){\r\n if( this.validation() ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n this.setData( this.getData() );\r\n return true;\r\n }\r\n },\r\n\r\n resetSelectorData : function(){\r\n if( this.selector && this.selector.selector ){\r\n this.selector.selector.emptySelectedItems();\r\n this.selector.selector.options.values = this.getValue();\r\n this.selector.selector.setSelectedItem();\r\n }\r\n },\r\n resetData: function(){\r\n var v = this.getValue();\r\n //this.setData((v) ? v.join(\", \") : \"\");\r\n this.setData(v);\r\n },\r\n getData: function(){\r\n if( this.selector && !layout.mobile ){\r\n return this.getSelectedData();\r\n }else{\r\n return this.getValue();\r\n }\r\n },\r\n getSelectedData : function(){\r\n return this.getValue();\r\n },\r\n getValue: function(){\r\n var value = this._getBusinessData();\r\n if (!value) value = this._computeValue();\r\n return value || \"\";\r\n },\r\n _computeValue: function(){\r\n var values = [];\r\n if (this.json.identityValue) {\r\n this.json.identityValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.unitValue) {\r\n this.json.unitValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.dutyValue) {\r\n var dutys = JSON.decode(this.json.dutyValue);\r\n var par;\r\n if (dutys.length){\r\n dutys.each(function(duty){\r\n if (duty.code) par = this.form.Macro.exec(duty.code, this);\r\n var code = \"return this.org.getDuty(\\\"\"+duty.name+\"\\\", \\\"\"+par+\"\\\")\";\r\n\r\n var d = this.form.Macro.exec(code, this);\r\n if (typeOf(d)!==\"array\") d = (d) ? [d.toString()] : [];\r\n d.each(function(dd){if (dd) values.push(dd);});\r\n\r\n }.bind(this));\r\n }\r\n }\r\n if (this.json.defaultValue && this.json.defaultValue.code){\r\n var fd = this.form.Macro.exec(this.json.defaultValue.code, this);\r\n if (typeOf(fd)!==\"array\") fd = (fd) ? [fd] : [];\r\n fd.each(function(fdd){\r\n if (fdd){\r\n if (typeOf(fdd)===\"string\"){\r\n var data;\r\n this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = json.data }.bind(this), null, fdd, false);\r\n values.push(data);\r\n }else{\r\n values.push(fdd);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n if (this.json.count>0){\r\n return values.slice(0, this.json.count);\r\n }\r\n return values;\r\n //return (this.json.defaultValue.code) ? this.form.Macro.exec(this.json.defaultValue.code, this): (value || \"\");\r\n },\r\n getOrgAction: function(){\r\n if (!this.orgAction) this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n //if (!this.orgAction) this.orgAction = new MWF.xApplication.Selector.Actions.RestActions();\r\n return this.orgAction;\r\n },\r\n setData: function(value){\r\n\r\n if (!value) return false;\r\n var oldValues = this.getValue();\r\n var values = [];\r\n\r\n var type = typeOf(value);\r\n if (type===\"array\"){\r\n value.each(function(v){\r\n var vtype = typeOf(v);\r\n var data = null;\r\n if (vtype===\"string\"){\r\n this.getOrgAction()[this.getValueMethod(v)](function(json){ data = MWF.org.parseOrgData(json.data, true); }.bind(this), error, v, false);\r\n }\r\n if (vtype===\"object\") {\r\n data = MWF.org.parseOrgData(v, true);\r\n if(data.woPerson)delete data.woPerson;\r\n }\r\n if (data)values.push(data);\r\n }.bind(this));\r\n }\r\n if (type===\"string\"){\r\n var vData;\r\n this.getOrgAction()[this.getValueMethod(value)](function(json){ vData = MWF.org.parseOrgData(json.data, true); }.bind(this), error, value, false);\r\n if (vData)values.push(vData);\r\n }\r\n if (type===\"object\"){\r\n var vData = MWF.org.parseOrgData(value, true);\r\n if(vData.woPerson)delete vData.woPerson;\r\n values.push( vData );\r\n }\r\n\r\n var change = false;\r\n if (oldValues.length && values.length){\r\n if (oldValues.length === values.length){\r\n for (var i=0; i 0) {\r\n o2.Actions.get(\"x_organization_assemble_express\").listEmpowerWithIdentity({\r\n \"application\": (this.form.businessData.work || this.form.businessData.workCompleted).application,\r\n \"process\": (this.form.businessData.work || this.form.businessData.workCompleted).process,\r\n \"work\" : (this.form.businessData.work || this.form.businessData.workCompleted).id,\r\n \"identityList\": array\r\n }, function (json) {\r\n var arr = [];\r\n json.data.each(function (d) {\r\n if (d.fromIdentity !== d.toIdentity)\r\n arr.push(d);\r\n });\r\n if (arr.length > 0) {\r\n flag = true;\r\n }\r\n }.bind(this), null, false)\r\n }\r\n }\r\n return flag;\r\n },\r\n getSelectedData : function( callback ){\r\n var json = {};\r\n this.empowerSelectNodes.each(function(node){\r\n if( node.retrieve(\"isSelected\") ){\r\n var d = node.retrieve(\"data\");\r\n json[ d.fromIdentity ] = d;\r\n }\r\n }.bind(this));\r\n if( callback )callback( json );\r\n }\r\n});\r\n\r\nO2ProcessorMobile.UnitOptions = new Class({\r\n Extends : MWF.APPOrg.UnitOptions\r\n});\r\n\r\nO2ProcessorMobile.IdentityOptions = new Class({\r\n Extends : MWF.APPOrg.IdentityOptions\r\n});" + "code": "MWF.xDesktop.requireApp(\"process.Xform\", \"Org\", null, false);\r\n\r\nthis.define(\"loadProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nthis.define(\"popupProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nwindow.O2ProcessorMobile = new Class({\r\n Implements: [Events],\r\n initialize: function (macro) {\r\n\r\n debugger;\r\n\r\n this.macro = macro;\r\n this.app = macro.form.app;\r\n this.form = this.app.appForm;\r\n this.task = this.form.businessData.task;\r\n this.appContentNode = $(document.body); //this.app.content;\r\n\r\n this.initConstant();\r\n this.getCss();\r\n this.getAllNode();\r\n\r\n // this.loadCss();\r\n\r\n },\r\n initConstant: function () {\r\n this.DefaultDecisionOpinionName = \"其它\"; //默认的决策组,如果当前节点有决策组,但是某些决策没有落在决策组中,那么使用默认决策组\r\n },\r\n load: function () {\r\n if ( this.status === \"show\" || this.status === \"loading\" ){\r\n \r\n }else if (this.status === \"closed\" ) {\r\n this.node.show();\r\n // this.positionSeted = false; //重新设置位置\r\n // this.setSize( this.getCurrentRouteOrgList().length );\r\n this.status = \"show\";\r\n } else {\r\n this.status = \"loading\";\r\n this.container = new Element(\"div\").inject(this.appContentNode);\r\n this.node.setStyles({\r\n \"width\" : \"100%\",\r\n \"position\" : \"absolute\",\r\n \"z-index\" : \"101\"\r\n })\r\n this.loadContent();\r\n this.setEvents();\r\n this.node.inject(this.container);\r\n this.status = \"show\";\r\n }\r\n },\r\n loadContent: function () {\r\n this.getRouteGroupList();\r\n\r\n var orgLength = this.getMaxOrgLength();\r\n if (orgLength === 0) { //流程选人数量为0\r\n if (this.orgsTile) {\r\n this.orgsTile.destroy();\r\n this.orgsTile = null;\r\n }\r\n if (this.orgsArea) {\r\n this.orgsArea.destroy();\r\n this.orgsArea = null;\r\n }\r\n }\r\n\r\n this.setOpinion(); //意见\r\n\r\n if (this.hasDecisionOpinion) { //有决策组\r\n this.setRouteGroupList();\r\n } else { //没有决策组\r\n if (this.routeGroupTitle) {\r\n this.routeGroupTitle.destroy();\r\n this.routeGroupTitle = null;\r\n }\r\n if (this.routeGroupArea) {\r\n this.routeGroupArea.destroy();\r\n this.routeGroupArea = null;\r\n }\r\n // this.routeSelectorArea.setStyles( this.css.routeSelectorArea );\r\n // if( this.inputOpinionNodeTd && this.selectIdeaNodeTd ){\r\n // this.inputOpinionNodeTd.set( \"width\", orgLength < 2 ? \"60%\" : \"50%\" );\r\n // }\r\n this.setRouteList();\r\n }\r\n },\r\n\r\n getAllNode: function () {\r\n this.node = this.getNode(\"submitNode\");\r\n\r\n this.buttonNode = this.getNode(\"submitButtonNode\");\r\n\r\n this.contentWrapNode = this.getNode(\"submitContentWrapNode\");\r\n this.contentNode = this.getNode(\"submitContentNode\");\r\n this.contentInnerNode = this.getNode(\"submitContentInnerNode\");\r\n\r\n this.routeGroupTitle = this.getNode(\"routeGroupTitle\");\r\n this.routeGroupArea = this.getNode(\"routeGroupArea\");\r\n\r\n this.routeSelectorTitle = this.getNode(\"routeSelectorTitle\");\r\n this.routeSelectorArea = this.getNode(\"routeSelectorArea\");\r\n\r\n this.selectIdeaAreaNode = this.getNode(\"selectIdeaAreaNode\");\r\n\r\n this.inputOpinionNode = this.getNode(\"inputOpinionNode\");\r\n this.inputTextarea = this.getNode(\"inputTextarea\");\r\n\r\n this.handwritingAction = this.getNode(\"handwritingAction\");\r\n\r\n this.orgsTile = this.getNode(\"orgsTile\");\r\n this.orgsArea = this.getNode(\"orgsArea\");\r\n\r\n this.buttonsArea = this.getNode(\"submitButtonNode\");\r\n this.okButton = this.getNode(\"okButton\");\r\n this.cancelButton = this.getNode(\"cancelButton\");\r\n },\r\n setEvents: function () {\r\n if (this.cancelButton) {\r\n this.cancelButton.addEvent(\"click\", function () {\r\n this.close();\r\n this.fireEvent(\"cancel\");\r\n }.bind(this));\r\n }\r\n if (this.okButton) {\r\n this.okButton.addEvent(\"click\", function (ev) {\r\n this.submit(ev)\r\n }.bind(this));\r\n }\r\n },\r\n getNode: function (name) {\r\n if (this.macro.form.get(name)) {\r\n return this.macro.form.get(name).node;\r\n }\r\n if (this.form.allForName[name]) {\r\n return this.form.allForName[name].node;\r\n }\r\n },\r\n setData: function (name, value) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.setData(value) : null;\r\n },\r\n getData: function (name) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.getData() : null;\r\n },\r\n getRouteConfigList: function () { //获取当前待办的所有路由设置\r\n if (!this.routeConfigList) {\r\n o2.Actions.get(\"x_processplatform_assemble_surface\").listRoute({\"valueList\": this.task.routeList}, function (json) {\r\n json.data.each(function (d) {\r\n d.selectConfigList = JSON.parse(d.selectConfig || \"[]\");\r\n }.bind(this));\r\n this.routeConfigList = json.data;\r\n }.bind(this), null, false);\r\n }\r\n return this.routeConfigList;\r\n },\r\n getRouteConfig: function (routeId) { //根据某个ID获取路由设置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i];\r\n }\r\n }\r\n },\r\n getMaxOrgLength: function () { //获取当前待办下可能的最多选人组件个数\r\n var routeList = this.getRouteConfigList();\r\n var length = 0;\r\n routeList.each(function (route) {\r\n if (route.hiddenScriptText) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n length = Math.max(length, route.selectConfigList.length);\r\n }.bind(this));\r\n return length;\r\n },\r\n getOrgConfig: function (routeId) { //获取人员选择配置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i].selectConfigList;\r\n }\r\n }\r\n },\r\n getCurrentRouteSelectorList: function () { //获取当前路由的人员选择器对象\r\n var selectorList = [];\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n if (!orgList) return [];\r\n orgList.each(function (org) {\r\n if (org.selector && org.selector.selector) {\r\n selectorList.push(org.selector.selector);\r\n }\r\n }.bind(this))\r\n return selectorList;\r\n },\r\n getCurrentRouteOrgList: function () { //获取当前路由的org对象\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n return orgList || [];\r\n },\r\n getSelectorSelectedData: function (filedName) { //获取人员选择器选择的值\r\n var data = [];\r\n var orgList = this.getCurrentRouteOrgList();\r\n for (var i = 0; i < orgList.length; i++) {\r\n var org = orgList[i];\r\n if (org.json.name === filedName) {\r\n var selector = org.selector.selector;\r\n selector.selectedItems.each(function (item) {\r\n data.push(item.data)\r\n })\r\n }\r\n }\r\n return data;\r\n },\r\n getMarginY: function (node) {\r\n return (node.getStyle(\"margin-top\").toInt() || 0) +\r\n (node.getStyle(\"margin-bottom\").toInt() || 0);\r\n // (node.getStyle(\"padding-top\").toInt() || 0 ) +\r\n // (node.getStyle(\"padding-bottom\").toInt() || 0 )+\r\n // (node.getStyle(\"border-top-width\").toInt() || 0 ) +\r\n // (node.getStyle(\"border-bottom-width\").toInt() || 0 );\r\n },\r\n setSize: function (currentOrgLength) {\r\n var lines = ((currentOrgLength + 1) / 2).toInt();\r\n\r\n if (lines > 0) {\r\n this.showOrgsArea();\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n if (this.buttonsArea) {\r\n var bodySize = this.appContentNode.getSize();\r\n var nodeHeight = bodySize.y - this.getMarginY(this.node);\r\n this.node.setStyles({\r\n \"overflow-y\": \"hidden\",\r\n \"height\": nodeHeight\r\n });\r\n var buttonsAreaSize = this.buttonsArea.getSize();\r\n this.contentNode.setStyles({\r\n \"height\": nodeHeight - buttonsAreaSize.y - this.getMarginY(this.buttonsArea) - this.getMarginY(this.contentNode),\r\n \"overflow-y\": \"auto\"\r\n })\r\n }\r\n\r\n this.fireEvent(\"resize\");\r\n },\r\n showOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.show();\r\n if (this.orgsArea) this.orgsArea.show();\r\n },\r\n hideOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.hide();\r\n if (this.orgsArea) this.orgsArea.hide();\r\n },\r\n\r\n /*决策和决策组相关 开始*/\r\n getRouteGroupList: function () { //获取决策组并格式化成对象\r\n if (this.routeGroupObject) return this.routeGroupObject;\r\n this.routeGroupObject = {};\r\n this.routeGroupNameList = [];\r\n this.hasDecisionOpinion = false;\r\n var routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n route.displayName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n } else {\r\n route.displayName = route.name;\r\n }\r\n\r\n if (route.decisionOpinion) { //决策组名称\r\n this.hasDecisionOpinion = true;\r\n var decisionOpinionList = route.decisionOpinion.split(\"#\");\r\n decisionOpinionList.each(function (decisionOption) {\r\n this.routeGroupNameList.combine([decisionOption]);\r\n var d = this.splitByStartNumber(decisionOption);\r\n if (!this.routeGroupObject[d.name]) this.routeGroupObject[d.name] = [];\r\n this.routeGroupObject[d.name].push(route);\r\n }.bind(this))\r\n } else {\r\n var defaultName = this.DefaultDecisionOpinionName;\r\n this.routeGroupNameList.combine([defaultName]);\r\n if (!this.routeGroupObject[defaultName]) this.routeGroupObject[defaultName] = [];\r\n this.routeGroupObject[defaultName].push(route);\r\n }\r\n }.bind(this));\r\n return this.routeGroupObject;\r\n },\r\n splitByStartNumber: function (str) {\r\n var obj = {\r\n name: \"\",\r\n order: \"\"\r\n };\r\n for (var i = 0; i < str.length; i++) {\r\n if (parseInt(str.substr(i, 1)).toString() !== \"NaN\") {\r\n obj.order = obj.order + str.substr(i, 1);\r\n } else {\r\n obj.name = str.substr(i, str.length);\r\n break;\r\n }\r\n }\r\n return obj;\r\n },\r\n setRouteGroupList: function () { //排序并创建决策组DOM对象\r\n var _self = this;\r\n\r\n //根据决策组的排序号进行排序\r\n var keys = this.routeGroupNameList;\r\n keys.sort(function (a, b) {\r\n var aIdx = parseInt(this.splitByStartNumber(a).order || \"9999999\");\r\n var bIdx = parseInt(this.splitByStartNumber(b).order || \"9999999\");\r\n return aIdx - bIdx;\r\n }.bind(this));\r\n\r\n var list = [];\r\n keys.each(function (k) {\r\n list.push(this.splitByStartNumber(k).name)\r\n }.bind(this));\r\n\r\n debugger;\r\n\r\n list.each(function (routeGroupName) {\r\n var routeList = this.routeGroupObject[routeGroupName];\r\n var routeGroupNode = new Element(\"div\", {\r\n \"styles\": this.css.routeGroupNode,\r\n \"text\": routeGroupName\r\n }).inject(this.routeGroupArea);\r\n routeGroupNode.store(\"routeList\", routeList);\r\n routeGroupNode.store(\"routeGroupName\", routeGroupName);\r\n\r\n routeGroupNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRouteGroup(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRouteGroup(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRouteGroup(this);\r\n }\r\n });\r\n\r\n if (keys.length === 1) { //如果决策组只有1个,则默认选中\r\n this.selectRouteGroup(routeGroupNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n }.bind(this))\r\n },\r\n overRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n },\r\n outRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n },\r\n selectRouteGroup: function (node) { //选中决策组执行...\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode);\r\n //this.selectedRouteGroup.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRouteGroup = node;\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode_selected);\r\n //this.selectedRouteGroup.addClass(\"mainColor_bg\");\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n\r\n } else {\r\n\r\n }\r\n } else {\r\n this.selectedRouteGroup = node;\r\n node.setStyles(this.css.routeGroupNode_selected);\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n }\r\n this.routeGroupArea.setStyle(\"background-color\", \"#FFF\");\r\n },\r\n setRouteList: function (routeList) { //创建决策对象\r\n var _self = this;\r\n this.routeSelectorArea.empty();\r\n this.selectedRoute = null;\r\n\r\n if (!routeList) routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n var routeName = route.name;\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n routeName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n }\r\n var routeNode = new Element(\"div\", {\r\n \"styles\": this.css.routeNode,\r\n \"text\": routeName\r\n }).inject(this.routeSelectorArea);\r\n routeNode.store(\"route\", route.id);\r\n routeNode.store(\"routeName\", route.name);\r\n\r\n routeNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRoute(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRoute(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRoute(this);\r\n }\r\n });\r\n\r\n if (routeList.length == 1 || route.sole) { //sole表示优先路由\r\n this.selectRoute(routeNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n\r\n }.bind(this));\r\n },\r\n overRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n },\r\n outRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n },\r\n selectRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n\r\n } else {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.addClass(\"lightColor_bg\");\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = null;\r\n }\r\n } else {\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#FFF\");\r\n\r\n this.loadOrgs(this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\");\r\n\r\n if (this.form.data.json.events && this.form.data.json.events.afterSelectRoute) {\r\n this.form.Macro.exec(this.form.data.json.events.afterSelectRoute.code, node);\r\n }\r\n\r\n },\r\n /*决策和决策组相关 结束*/\r\n\r\n setOpinion: function () {\r\n if (!this.inputTextarea) return;\r\n if (this.handwritingAction) this.handwritingAction.addEvent(\"click\", function () {\r\n window.setTimeout( function(){\r\n this.handwriting();\r\n }.bind(this), 100 )\r\n }.bind(this));\r\n\r\n if (this.selectIdeaAreaNode) {\r\n MWF.require(\"MWF.widget.UUID\", function () {\r\n MWF.UD.getDataJson(\"idea\", function (json) {\r\n if (json) {\r\n if (json.ideas) {\r\n this.setIdeaList(json.ideas);\r\n }\r\n } else {\r\n MWF.UD.getPublicData(\"idea\", function (pjson) {\r\n if (pjson) {\r\n if (pjson.ideas) {\r\n this.setIdeaList(pjson.ideas);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this));\r\n }.bind(this));\r\n }\r\n\r\n },\r\n\r\n audioRecord: function () {\r\n if (!this.audioRecordNode) this.createAudioRecord();\r\n this.audioRecordNode.show();\r\n this.audioRecordNode.position({\r\n \"relativeTo\": this.options.mediaNode || this.node,\r\n \"position\": \"center\",\r\n \"edge\": \"center\"\r\n });\r\n\r\n MWF.require(\"MWF.widget.AudioRecorder\", function () {\r\n this.audioRecorder = new MWF.widget.AudioRecorder(this.audioRecordNode, {\r\n \"onSave\": function (blobFile) {\r\n this.soundFile = blobFile;\r\n this.audioRecordNode.hide();\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.soundFile = null;\r\n this.audioRecordNode.hide();\r\n }.bind(this)\r\n }, null);\r\n }.bind(this));\r\n },\r\n createAudioRecord: function () {\r\n this.audioRecordNode = new Element(\"div\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n var size = (this.options.mediaNode || this.node).getSize();\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.audioRecordNode.setStyles({\r\n \"height\": \"\" + size.y + \"px\",\r\n \"width\": \"\" + size.x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n },\r\n\r\n handwriting: function () {\r\n if (!this.handwritingNode) this.createHandwriting();\r\n if(this.handwritingNodeMask)this.handwritingNodeMask.show();\r\n this.handwritingNode.show();\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n },\r\n createHandwriting: function () {\r\n this.handwritingNodeMask = new Element(\"div.handwritingMask\", {\"styles\": this.css.handwritingMask}).inject(this.node);\r\n\r\n this.handwritingNode = new Element(\"div.handwritingNode\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n //var size = (this.options.mediaNode || this.node).getSize();\r\n //var y = size.y;\r\n //var x = size.x;\r\n //兼容以前的默认高宽\r\n\r\n debugger;\r\n\r\n var bodySize = $(document.body).getSize();\r\n var x = bodySize.x;\r\n var y = bodySize.y;\r\n\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.handwritingNode.setStyles({\r\n \"height\": \"\" + y + \"px\",\r\n \"width\": \"\" + x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n this.handwritingNode.addEvent('touchmove' , function(e){\r\n e.preventDefault();\r\n });\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n this.handwritingAreaNode = new Element(\"div\", {\"styles\": this.css.handwritingAreaNode}).inject(this.handwritingNode);\r\n // this.handwritingActionNode = new Element(\"div\", {\r\n // \"styles\": this.css.handwritingActionNode,\r\n // \"text\": MWF.xApplication.process.Work.LP.saveWrite\r\n // }).inject(this.handwritingNode);\r\n // var h = this.handwritingActionNode.getSize().y + this.handwritingActionNode.getStyle(\"margin-top\").toInt() + this.handwritingActionNode.getStyle(\"margin-bottom\").toInt();\r\n // h = y - h;\r\n // this.handwritingAreaNode.setStyle(\"height\", \"\" + h + \"px\");\r\n this.handwritingAreaNode.setStyle(\"height\", \"\" + y + \"px\");\r\n\r\n MWF.require(\"MWF.widget.Tablet\", function () {\r\n var handWritingOptions = {\r\n \"style\": \"default\",\r\n \"contentWidth\": 0,\r\n \"contentHeight\": 0,\r\n \"onSave\": function (base64code, base64Image, imageFile) {\r\n this.handwritingFile = imageFile;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n // this.page.get(\"div_image\").node.set(\"src\",base64Image);\r\n\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.handwritingFile = null;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n }.bind(this)\r\n };\r\n handWritingOptions.tools = [\r\n \"undo\",\r\n \"redo\", \"|\",\r\n \"reset\", \"|\",\r\n \"size\",\r\n \"cancel\"\r\n ]\r\n this.tablet = new MWF.widget.Tablet(this.handwritingAreaNode, handWritingOptions, null);\r\n this.tablet.load();\r\n }.bind(this));\r\n\r\n // this.handwritingActionNode.addEvent(\"click\", function () {\r\n // //this.handwritingNode.hide();\r\n // if (this.tablet) this.tablet.save();\r\n // }.bind(this));\r\n },\r\n\r\n setIdeaList: function (ideas) {\r\n var _self = this;\r\n ideas.each(function (idea) {\r\n new Element(\"div\", {\r\n \"styles\": this.css.selectIdeaItemNode,\r\n \"text\": idea,\r\n \"events\": {\r\n \"click\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"dblclick\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"mouseover\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode_over);\r\n },\r\n \"mouseout\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode);\r\n }\r\n }\r\n }).inject(this.selectIdeaAreaNode);\r\n }.bind(this));\r\n },\r\n submit: function (ev) {\r\n if (this.hasDecisionOpinion && !this.selectedRouteGroup) {\r\n this.routeGroupArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"top\"},\r\n \"请先选择决策组\",\r\n this.routeGroupArea,\r\n null, //{\"x\": 0, \"y\": 30}\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n\r\n if (!this.selectedRoute) {\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.routeSelectorArea,\r\n delayClose: 6000,\r\n content: \"请先选择决策\"\r\n });\r\n return false;\r\n }\r\n var routeName = this.selectedRoute.retrieve(\"routeName\") || this.selectedRoute.get(\"text\");\r\n var opinion = this.getData(\"inputTextarea\");\r\n if (opinion === MWF.xApplication.process.Work.LP.inputText) opinion = \"\";\r\n var medias = [];\r\n if (this.handwritingFile) medias.push(this.handwritingFile);\r\n if (this.soundFile) medias.push(this.soundFile);\r\n if (this.videoFile) medias.push(this.videoFile);\r\n\r\n var currentRouteId = this.selectedRoute.retrieve(\"route\");\r\n var routeConfig = this.getRouteConfig(currentRouteId);\r\n if (!opinion && medias.length === 0) {\r\n if (routeConfig.opinionRequired == true) {\r\n this.inputTextarea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.inputTextarea,\r\n delayClose: 6000,\r\n content: \"请填写意见\"\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: validation\r\n });\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: \"路由校验失败\"\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //var array = [routeName, opinion, medias];\r\n //this.node.mask({\r\n // \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n // \"destroyOnHide\": true,\r\n // \"style\": {\r\n // \"background-color\": \"#999\",\r\n // \"opacity\": 0.3,\r\n // \"z-index\":600\r\n // }\r\n //});\r\n //this.fireEvent(\"submit\", array );\r\n\r\n var appendTaskOrgItem;\r\n if (routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\") {\r\n if (!this.orgItems || this.orgItems.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"没有配置转交人,请联系管理员\" //\"没有配置转交人,请联系管理员\"\r\n });\r\n return false;\r\n } else {\r\n appendTaskOrgItem = this.orgItems[0]\r\n }\r\n }\r\n\r\n if (!this.saveOrgs()) return false;\r\n\r\n //this.saveOrgsWithCheckEmpower( function(){\r\n var appandTaskIdentityList;\r\n if (appendTaskOrgItem) {\r\n appandTaskIdentityList = appendTaskOrgItem.getData();\r\n if (!appandTaskIdentityList || appandTaskIdentityList.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"请选择转交人\"\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n validation,\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n \"路由校验失败\",\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n this.node.mask({\r\n \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n \"destroyOnHide\": true,\r\n \"style\": {\r\n \"background-color\": \"#999\",\r\n \"opacity\": 0.3,\r\n \"z-index\": 600\r\n }\r\n });\r\n\r\n // var array = [ routeName, opinion, medias, appandTaskIdentityList, this.orgItems, function(){\r\n // if(appendTaskOrgItem)appendTaskOrgItem.setData([]);\r\n // }];\r\n\r\n var op = this.form.getOpinion();\r\n var mds = op.medias;\r\n\r\n if (!medias || !medias.length) {\r\n medias = mds;\r\n } else {\r\n medias = medias.concat(mds)\r\n }\r\n\r\n this.form.submitWork(routeName, opinion, medias, function () {\r\n this.close();\r\n }.bind(this), this, null, appandTaskIdentityList, this.orgItems, function () {\r\n if (appendTaskOrgItem) appendTaskOrgItem.setData([]);\r\n this.setData(\"inputTextarea\", \"\");\r\n }.bind(this));\r\n\r\n // this.fireEvent(\"submit\", array );\r\n },\r\n\r\n close: function () {\r\n this.node.setStyle(\"display\", \"none\");\r\n this.status = \"closed\";\r\n },\r\n destroy: function () {\r\n // this.node.empty();\r\n // delete this.task;\r\n // delete this.node;\r\n // delete this.routeSelectorTile;\r\n // delete this.routeSelectorArea;\r\n // delete this.routeOpinionTile;\r\n // delete this.routeOpinionArea;\r\n // delete this.buttonsArea;\r\n // delete this.inputOpinionNode;\r\n // delete this.inputTextarea;\r\n // delete this.cancelButton;\r\n // delete this.okButton;\r\n },\r\n loadOrgs: function (route) {\r\n if (!this.form || !route) {\r\n this.hideOrgsArea();\r\n return;\r\n } else {\r\n this.showOrgsArea();\r\n }\r\n if (!this.orgTableObject) this.orgTableObject = {};\r\n if (!this.orgItemsObject) this.orgItemsObject = {};\r\n var isLoaded = false;\r\n for (var key in this.orgTableObject) {\r\n if (route === key) {\r\n this.orgTableObject[key].show();\r\n this.orgItems = this.orgItemsObject[key] || [];\r\n var data = this.getOrgConfig(route);\r\n isLoaded = true;\r\n } else {\r\n this.orgTableObject[key].hide();\r\n }\r\n }\r\n if (isLoaded) return;\r\n\r\n this.orgItems = [];\r\n this.orgItemsObject[route] = this.orgItems;\r\n\r\n var data = this.getOrgConfig(route);\r\n var routeConfig = this.getRouteConfig(route);\r\n var ignoreFirstOrgOldData = false; //(routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\");\r\n this.setSize(data.length);\r\n if (data.length) {\r\n this.showOrgsArea();\r\n\r\n var routeOrgTable = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTable\r\n }).inject(this.orgsArea);\r\n this.orgTableObject[route] = routeOrgTable;\r\n\r\n data.each(function (config, i) {\r\n var sNode = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTr\r\n }).inject(routeOrgTable);\r\n this.loadOrg(sNode, config, ignoreFirstOrgOldData && i == 0)\r\n }.bind(this))\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n },\r\n loadOrg: function (container, json, position, ignoreOldData) {\r\n var titleNode = new Element(\"div.selectorTitle\", {\r\n \"styles\": this.css.selectorTitle\r\n }).inject(container);\r\n var titleTextNode = new Element(\"div.selectorTitleText\", {\r\n \"text\": json.title,\r\n \"styles\": this.css.selectorTitleText\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.selectorContent\", {\r\n \"styles\": this.css.selectorContent\r\n }).inject(container);\r\n\r\n var errorNode = new Element(\"div.selectorErrorNode\", {\r\n \"styles\": this.css.selectorErrorNode\r\n }).inject(container);\r\n\r\n var org = new O2ProcessorMobile.Org(contentNode, this.form, json, this, {\r\n onSelect: function (items, data) {\r\n if (!data || !data.length) {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n } else {\r\n contentNode.setStyles(this.css.selectorContent);\r\n }\r\n }.bind(this)\r\n });\r\n org.ignoreOldData = ignoreOldData;\r\n org.errContainer = errorNode;\r\n org.summitDlalog = this;\r\n this.orgItems.push(org);\r\n\r\n titleNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n contentNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n\r\n var defaultValue = org.getValue();\r\n org.loadOrgWidget(defaultValue, contentNode);\r\n if (!defaultValue || defaultValue.length == 0) {\r\n {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n }\r\n }\r\n\r\n },\r\n validationOrgs: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.validation()) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n isOrgsHasEmpower: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = false;\r\n this.needCheckEmpowerOrg = [];\r\n this.orgItems.each(function (item) {\r\n if (item.hasEmpowerIdentity()) {\r\n this.needCheckEmpowerOrg.push(item);\r\n flag = true;\r\n }\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgs: function (keepSilent) {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.save(!keepSilent)) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgsWithCheckEmpower: function (callback) {\r\n debugger;\r\n if (!this.orgItems || !this.orgItems.length) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n if (!this.validationOrgs()) return false;\r\n if (!this.isOrgsHasEmpower()) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n //this.checkEmpowerMode = true;\r\n this.showEmpowerDlg(callback);\r\n },\r\n showEmpowerDlg: function (callback) {\r\n\r\n //this.needCheckEmpowerOrg.each( function(org){\r\n // org.saveCheckedEmpowerData();\r\n //}.bind(this));\r\n\r\n var empowerNode = new Element(\"div.empowerNode\", {\"styles\": this.css.empowerNode});\r\n var empowerTitleNode = new Element(\"div\", {\r\n text: \"下列人员对工作进行了授权,选择后文件将发送给被授权人,取消选择后文件将发送给授权者本人\",\r\n styles: this.css.empowerTitleNode\r\n }).inject(empowerNode);\r\n\r\n var orgs = this.needCheckEmpowerOrg;\r\n var len = orgs.length;\r\n var lines = ((len + 1) / 2).toInt();\r\n\r\n var empowerTable = new Element(\"table\", {\r\n \"cellspacing\": 0, \"cellpadding\": 0, \"border\": 0, \"width\": \"100%\",\r\n \"styles\": this.css.empowerTable\r\n }).inject(empowerNode);\r\n\r\n for (var n = 0; n < lines; n++) {\r\n var tr = new Element(\"tr\").inject(empowerTable);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerOddTd}).inject(tr);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerEvenTd}).inject(tr);\r\n }\r\n\r\n var trs = empowerTable.getElements(\"tr\");\r\n orgs.each(function (org, i) {\r\n var sNode;\r\n var width;\r\n if (i + 1 == len && (len % 2 === 1)) {\r\n sNode = trs[trs.length - 1].getFirst(\"td\");\r\n sNode.set(\"colspan\", 2);\r\n trs[trs.length - 1].getLast(\"td\").destroy();\r\n width = \"50%\";\r\n } else {\r\n var row = ((i + 2) / 2).toInt();\r\n var tr = trs[row - 1];\r\n sNode = (i % 2 === 0) ? tr.getFirst(\"td\") : tr.getLast(\"td\");\r\n }\r\n\r\n var titleNode = new Element(\"div.empowerAreaTitle\", {\r\n \"styles\": this.css.empowerAreaTitle\r\n }).inject(sNode);\r\n\r\n var titleTextNode = new Element(\"div.empowerAreaTitleText\", {\r\n \"text\": org.json.title,\r\n \"styles\": this.css.empowerAreaTitleText\r\n }).inject(titleNode);\r\n\r\n var selectAllNode = new Element(\"div\", {\r\n styles: {\r\n float: \"right\"\r\n }\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.empowerAreaContent\", {\r\n \"styles\": this.css.empowerAreaContent\r\n }).inject(sNode);\r\n\r\n org.loadCheckEmpower(null, contentNode, selectAllNode);\r\n\r\n }.bind(this));\r\n\r\n empowerNode.setStyle(\"height\", lines * this.options.orgHeight + 20);\r\n //var dlgHeight = Math.min( Math.floor( this.form.app.content.getSize().y * 0.9) , lines*this.options.orgHeight + 151 );\r\n\r\n //var width = this.node.retrieve(\"width\");\r\n //empowerNode.setStyle( \"width\", width );\r\n var width = \"880\";\r\n //if( len > 1 ){\r\n // width = \"840\"\r\n //}else{\r\n // width = \"420\"\r\n //}\r\n empowerNode.setStyle(\"width\", width + \"px\");\r\n\r\n this.node.getParent().mask({\r\n \"style\": this.css.mask\r\n });\r\n this.empowerDlg = o2.DL.open({\r\n \"title\": \"授权人员替换选择\",\r\n \"style\": this.form.json.dialogStyle || \"user\",\r\n \"isResize\": false,\r\n \"content\": empowerNode,\r\n //\"container\" : this.node,\r\n \"width\": width, //600,\r\n \"height\": \"auto\", //dlgHeight,\r\n \"mark\": false,\r\n \"buttonList\": [\r\n {\r\n \"type\": \"ok\",\r\n \"text\": \"确定\",\r\n \"action\": function (d, e) {\r\n //if (this.empowerDlg) this.empowerDlg.okButton.click();\r\n\r\n orgs.each(function (org, i) {\r\n org.saveCheckedEmpowerData(function () {\r\n if (i === orgs.length - 1) {\r\n if (callback) callback();\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this)\r\n },\r\n {\r\n \"type\": \"cancel\",\r\n \"text\": \"取消\",\r\n \"action\": function () {\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }.bind(this)\r\n }\r\n ]\r\n });\r\n },\r\n getCss: function () {\r\n this.css = {\r\n\r\n \"routeGroupNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"padding-left\": \"28px\",\r\n \"color\": \"#000\",\r\n \"background-color\": \"#E3E3E3\",\r\n \"min-height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_over\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_selected\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/routegroup_selected.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"border-radius\": \"5px\",\r\n \"height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"padding-left\": \"26px\",\r\n \"padding-right\": \"8px\",\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#f0f0f0\"\r\n },\r\n \"routeNode_over\": {\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"routeNode_selected\": {\r\n \"color\": \"#fff\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/checked.png) no-repeat 5px center\",\r\n \"background-color\": \"#3296FA\"\r\n },\r\n\r\n \"selectIdeaItemNode\": {\r\n \"line-height\": \"18px\",\r\n \"font-size\": \"14px\",\r\n \"cursor\": \"pointer\",\r\n \"background-color\": \"#FFF\",\r\n \"padding\": \"4px 4px 4px 4px\",\r\n \"overflow\": \"hidden\"\r\n },\r\n \"selectIdeaItemNode_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n\r\n \"handwritingNode\": {\r\n \"position\": \"absolute\",\r\n \"background\": \"#ffffff\"\r\n },\r\n \"handwritingActionNode\": {\r\n \"width\": \"70%\",\r\n \"min-width\": \"100px\",\r\n \"height\": \"3em\",\r\n \"line-height\": \"3em\",\r\n \"margin\": \"5px auto\",\r\n \"border-radius\": \"5px\",\r\n \"border\": \"1px solid #3296FA\",\r\n \"background-color\": \"#3296FA\",\r\n \"text-align\": \"center\",\r\n \"color\": \"#ffffff\",\r\n \"font-size\": \"16px\"\r\n },\r\n\r\n \"inputOpinionAudioRecordAction\": {\r\n \"display\": \"none\",\r\n \"float\": \"right\",\r\n \"border\": \"1px solid #6681a5\",\r\n \"border-radius\": \"3px\",\r\n \"cursor\": \"pointer\",\r\n \"padding-left\": \"24px\",\r\n \"padding-right\": \"5px\",\r\n \"margin-left\": \"5px\",\r\n \"background\": \"url(\" + \"/x_component_process_Work/$Processor/default/audioRecord.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeOrgTable\": {},\r\n \"routeOrgTr\": {\r\n \"margin-bottom\": \"10px\"\r\n },\r\n \"routeOrgOddTd\": {\r\n \"width\": \"50%\"\r\n },\r\n \"routeOrgEvenTd\": {\r\n \"width\": \"50%\",\r\n \"border-left\": \"5px solid #ffffff\"\r\n },\r\n\r\n \"selectorTitle\": {\r\n \"padding\": \"0px 4px\",\r\n \"height\": \"30px\",\r\n \"line-height\": \"30px\",\r\n \"font-size\": \"14px\",\r\n // \"font-weight\": \"bold\",\r\n \"color\": \"#000\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/mobile/arrow_right2.png) no-repeat right 10px center\",\r\n \"background-color\": \"#fff\"\r\n },\r\n \"selectorTitle_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"selectorTitleText\": {\r\n// \"float\": \"left\"\r\n },\r\n \"selectorErrorNode\": {\r\n //\"float\" : \"right\",\r\n \"background-color\": \"#fff\",\r\n \"margin-right\": \"5px\",\r\n \"font-weight\": \"normal\"\r\n },\r\n \"selectorContent\": {\r\n \"overflow\": \"hidden\",\r\n \"background-color\": \"#fff\",\r\n \"padding\": \"0px 5px 5px 5px\"\r\n },\r\n \"selectorContent_noItem\": {\r\n \"padding\": \"0px\"\r\n }\r\n }\r\n\r\n }\r\n});\r\n\r\n\r\nO2ProcessorMobile.Org = new Class({\r\n Implements: [Options, Events],\r\n options: {\r\n height : 240,\r\n moduleEvents : [\"queryLoadSelector\",\"postLoadSelector\",\"postLoadContent\",\"queryLoadCategory\",\"postLoadCategory\",\r\n \"selectCategory\", \"unselectCategory\",\"queryLoadItem\",\"postLoadItem\",\"selectItem\", \"unselectItem\",\"change\"]\r\n },\r\n initialize: function (container, form, json, processor, options) {\r\n this.form = form;\r\n this.json = json;\r\n this.processor = processor;\r\n this.container = $(container);\r\n this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n this.setOptions(options);\r\n },\r\n load : function(){\r\n setTimeout( function(){ //如果有输入法界面,这个时候页面的计算不对,所以等100毫秒\r\n var options = this.getOptions();\r\n if(options){\r\n //this.selector = new MWF.O2Selector(this.container, options);\r\n this.selector = new MWF.O2Selector($(document.body), options);\r\n }\r\n }.bind(this), 100 )\r\n },\r\n _getOrgOptions: function(){\r\n this.selectTypeList = typeOf( this.json.selectType ) == \"array\" ? this.json.selectType : [this.json.selectType];\r\n if( this.selectTypeList.contains( \"identity\" ) ) {\r\n this.identityOptions = new O2ProcessorMobile.IdentityOptions(this.form, this.json);\r\n }\r\n if( this.selectTypeList.contains( \"unit\" ) ) {\r\n this.unitOptions = new O2ProcessorMobile.UnitOptions(this.form, this.json);\r\n }\r\n //if( this.selectTypeList.contains( \"group\" ) ){\r\n // this.groupOptions = new MWF.APPOrg.GroupOptions( this.form, this.json );\r\n //}\r\n },\r\n getOptions: function(){\r\n var _self = this;\r\n this._getOrgOptions();\r\n if( this.selectTypeList.length === 0 )return false;\r\n var exclude = [];\r\n if( this.json.exclude ){\r\n var v = this.form.Macro.exec(this.json.exclude.code, this);\r\n exclude = typeOf(v)===\"array\" ? v : [v];\r\n }\r\n\r\n var identityOpt;\r\n if( this.identityOptions ){\r\n identityOpt = this.identityOptions.getOptions();\r\n if (this.json.identityRange!==\"all\"){\r\n if ( !identityOpt.noUnit && (!identityOpt.units || !identityOpt.units.length) ){\r\n this.form.notice(\"无法确定身份的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if ( !identityOpt.noUnit && this.json.dutyRange && this.json.dutyRange!==\"all\"){\r\n if (!identityOpt.dutys || !identityOpt.dutys.length){\r\n this.form.notice(\"无法确定职务的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n identityOpt.values = this._computeValue() || [];\r\n }else{\r\n identityOpt.values = this.getValue();\r\n }\r\n identityOpt.exclude = exclude;\r\n }\r\n\r\n var unitOpt;\r\n if( this.unitOptions ){\r\n unitOpt = this.unitOptions.getOptions();\r\n if (this.json.unitRange!==\"all\"){\r\n if ( !unitOpt.units || !unitOpt.units.length){\r\n this.form.notice(\"无法确定组织的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n unitOpt.values = this._computeValue() || [];\r\n }else{\r\n unitOpt.values = this.getValue();\r\n }\r\n unitOpt.exclude = exclude;\r\n }\r\n\r\n //var groupOpt;\r\n //if( this.groupOptions ){\r\n // groupOpt = this.groupOptions.getOptions();\r\n // groupOpt.values = (this.json.isInput) ? [] : values;\r\n // groupOpt.exclude = exclude;\r\n //}\r\n\r\n var defaultOpt = {\r\n \"style\" : \"default\",\r\n \"zIndex\" : 3000\r\n };\r\n\r\n if( this.json.events && typeOf(this.json.events) === \"object\" ){\r\n Object.each(this.json.events, function(e, key){\r\n if (e.code){\r\n if (this.options.moduleEvents.indexOf(key)!==-1){\r\n //this.addEvent(key, function(event){\r\n // return this.form.Macro.fire(e.code, this, event);\r\n //}.bind(this));\r\n if( key === \"postLoadSelector\" ) {\r\n this.addEvent(\"loadSelector\", function (selector) {\r\n return this.form.Macro.fire(e.code, selector);\r\n }.bind(this))\r\n }else if( key === \"queryLoadSelector\"){\r\n defaultOpt[\"onQueryLoad\"] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }else{\r\n defaultOpt[\"on\"+key.capitalize()] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if( this.form.json.selectorStyle ){\r\n defaultOpt = Object.merge( Object.clone(this.form.json.selectorStyle), defaultOpt );\r\n if( this.form.json.selectorStyle.style )defaultOpt.style = this.form.json.selectorStyle.style;\r\n }\r\n\r\n var mobileEvents = {\r\n \"onComplete\": function(items){\r\n this.selectOnComplete(items);\r\n }.bind(this),\r\n \"onCancel\": this.selectOnCancel.bind(this),\r\n \"onClose\": this.selectOnClose.bind(this)\r\n };\r\n\r\n if( this.selectTypeList.length === 1 ){\r\n return Object.merge(\r\n defaultOpt,\r\n {\r\n \"type\": this.selectTypeList[0],\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this, this.selector )\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n },\r\n mobileEvents,\r\n identityOpt || unitOpt\r\n )\r\n }else if( this.selectTypeList.length > 1 ){\r\n var options = {\r\n \"type\" : \"\",\r\n \"types\" : this.selectTypeList,\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this)\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n };\r\n if( identityOpt ){\r\n options.identityOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n identityOpt\r\n );\r\n }\r\n if( unitOpt ){\r\n options.unitOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n unitOpt\r\n );\r\n }\r\n //if( groupOpt )options.groupOptions = groupOpt;\r\n return options;\r\n }\r\n },\r\n selectOnComplete: function(items){ //移动端才执行\r\n var array = [];\r\n items.each(function(item){\r\n array.push(item.data);\r\n }.bind(this));\r\n this.checkEmpower( array, function( data ){\r\n var values = [];\r\n data.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n\r\n this.setData(values);\r\n\r\n //this.validationMode();\r\n //this.validation();\r\n\r\n this.container.empty();\r\n this.loadOrgWidget(values, this.container);\r\n\r\n this.selector = null;\r\n\r\n this.fireEvent(\"select\", [items, values]);\r\n }.bind(this))\r\n },\r\n selectOnCancel: function(){ //移动端才执行\r\n //this.validation();\r\n },\r\n selectOnLoad: function( selector ){\r\n //if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"none\");\r\n this.fireEvent(\"loadSelector\", [selector])\r\n },\r\n selectOnClose: function(){\r\n var v = this._getBusinessData();\r\n //if (!v || !v.length) if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"block\");\r\n },\r\n loadOrgWidget: function(value, node){\r\n var height = node.getStyle(\"height\").toInt();\r\n if (node.getStyle(\"overflow\")===\"visible\" && !height) node.setStyle(\"overflow\", \"hidden\");\r\n if (value && value.length){\r\n value.each(function(data){\r\n var flag = data.distinguishedName.substr(data.distinguishedName.length-1, 1);\r\n var copyData = Object.clone(data);\r\n if( this.json.displayTextScript && this.json.displayTextScript.code ){\r\n this.currentData = copyData;\r\n var displayName = this.form.Macro.exec(this.json.displayTextScript.code, this);\r\n if( displayName ){\r\n copyData.displayName = displayName;\r\n }\r\n this.currentData = null;\r\n }\r\n\r\n var widget;\r\n switch (flag.toLowerCase()){\r\n case \"i\":\r\n widget = new MWF.widget.O2Identity(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"p\":\r\n widget = new MWF.widget.O2Person(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"u\":\r\n widget = new MWF.widget.O2Unit(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"g\":\r\n widget = new MWF.widget.O2Group(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n default:\r\n widget = new MWF.widget.O2Other(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n }\r\n widget.field = this;\r\n }.bind(this));\r\n }\r\n },\r\n\r\n hasEmpowerIdentity : function(){\r\n var data = this.getData();\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n return this.empowerChecker.hasEmpowerIdentity( data );\r\n },\r\n checkEmpower : function( data, callback, container, selectAllNode ){\r\n if( typeOf(data)===\"array\" && this.identityOptions && this.json.isCheckEmpower && this.json.identityResultType === \"identity\" ) {\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n this.empowerChecker.selectAllNode = selectAllNode;\r\n this.empowerChecker.load(data, callback, container);\r\n }else{\r\n if( callback )callback( data );\r\n }\r\n },\r\n\r\n loadCheckEmpower : function( callback, container, selectAllNode ){\r\n this.checkEmpower( this.getData(), callback, container, selectAllNode)\r\n },\r\n saveCheckedEmpowerData:function( callback ){\r\n var data = this.getData();\r\n //this.empowerChecker.replaceEmpowerIdentity(data, function( newData ){\r\n this.empowerChecker.setIgnoreEmpowerFlag(data, function( newData ){\r\n var values = [];\r\n newData.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n this.setData( values );\r\n if( callback )callback(values)\r\n }.bind(this))\r\n },\r\n\r\n save: function( isValid ){\r\n if( isValid ){\r\n if( this.validation() ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n this.setData( this.getData() );\r\n return true;\r\n }\r\n },\r\n\r\n resetSelectorData : function(){\r\n if( this.selector && this.selector.selector ){\r\n this.selector.selector.emptySelectedItems();\r\n this.selector.selector.options.values = this.getValue();\r\n this.selector.selector.setSelectedItem();\r\n }\r\n },\r\n resetData: function(){\r\n var v = this.getValue();\r\n //this.setData((v) ? v.join(\", \") : \"\");\r\n this.setData(v);\r\n },\r\n getData: function(){\r\n if( this.selector && !layout.mobile ){\r\n return this.getSelectedData();\r\n }else{\r\n return this.getValue();\r\n }\r\n },\r\n getSelectedData : function(){\r\n return this.getValue();\r\n },\r\n getValue: function(){\r\n var value = this._getBusinessData();\r\n if (!value) value = this._computeValue();\r\n return value || \"\";\r\n },\r\n _computeValue: function(){\r\n var values = [];\r\n if (this.json.identityValue) {\r\n this.json.identityValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.unitValue) {\r\n this.json.unitValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.dutyValue) {\r\n var dutys = JSON.decode(this.json.dutyValue);\r\n var par;\r\n if (dutys.length){\r\n dutys.each(function(duty){\r\n if (duty.code) par = this.form.Macro.exec(duty.code, this);\r\n var code = \"return this.org.getDuty(\\\"\"+duty.name+\"\\\", \\\"\"+par+\"\\\")\";\r\n\r\n var d = this.form.Macro.exec(code, this);\r\n if (typeOf(d)!==\"array\") d = (d) ? [d.toString()] : [];\r\n d.each(function(dd){if (dd) values.push(dd);});\r\n\r\n }.bind(this));\r\n }\r\n }\r\n if (this.json.defaultValue && this.json.defaultValue.code){\r\n var fd = this.form.Macro.exec(this.json.defaultValue.code, this);\r\n if (typeOf(fd)!==\"array\") fd = (fd) ? [fd] : [];\r\n fd.each(function(fdd){\r\n if (fdd){\r\n if (typeOf(fdd)===\"string\"){\r\n var data;\r\n this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = json.data }.bind(this), null, fdd, false);\r\n values.push(data);\r\n }else{\r\n values.push(fdd);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n if (this.json.count>0){\r\n return values.slice(0, this.json.count);\r\n }\r\n return values;\r\n //return (this.json.defaultValue.code) ? this.form.Macro.exec(this.json.defaultValue.code, this): (value || \"\");\r\n },\r\n getOrgAction: function(){\r\n if (!this.orgAction) this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n //if (!this.orgAction) this.orgAction = new MWF.xApplication.Selector.Actions.RestActions();\r\n return this.orgAction;\r\n },\r\n setData: function(value){\r\n\r\n if (!value) return false;\r\n var oldValues = this.getValue();\r\n var values = [];\r\n\r\n var type = typeOf(value);\r\n if (type===\"array\"){\r\n value.each(function(v){\r\n var vtype = typeOf(v);\r\n var data = null;\r\n if (vtype===\"string\"){\r\n this.getOrgAction()[this.getValueMethod(v)](function(json){ data = MWF.org.parseOrgData(json.data, true); }.bind(this), error, v, false);\r\n }\r\n if (vtype===\"object\") {\r\n data = MWF.org.parseOrgData(v, true);\r\n if(data.woPerson)delete data.woPerson;\r\n }\r\n if (data)values.push(data);\r\n }.bind(this));\r\n }\r\n if (type===\"string\"){\r\n var vData;\r\n this.getOrgAction()[this.getValueMethod(value)](function(json){ vData = MWF.org.parseOrgData(json.data, true); }.bind(this), error, value, false);\r\n if (vData)values.push(vData);\r\n }\r\n if (type===\"object\"){\r\n var vData = MWF.org.parseOrgData(value, true);\r\n if(vData.woPerson)delete vData.woPerson;\r\n values.push( vData );\r\n }\r\n\r\n var change = false;\r\n if (oldValues.length && values.length){\r\n if (oldValues.length === values.length){\r\n for (var i=0; i 0) {\r\n o2.Actions.get(\"x_organization_assemble_express\").listEmpowerWithIdentity({\r\n \"application\": (this.form.businessData.work || this.form.businessData.workCompleted).application,\r\n \"process\": (this.form.businessData.work || this.form.businessData.workCompleted).process,\r\n \"work\" : (this.form.businessData.work || this.form.businessData.workCompleted).id,\r\n \"identityList\": array\r\n }, function (json) {\r\n var arr = [];\r\n json.data.each(function (d) {\r\n if (d.fromIdentity !== d.toIdentity)\r\n arr.push(d);\r\n });\r\n if (arr.length > 0) {\r\n flag = true;\r\n }\r\n }.bind(this), null, false)\r\n }\r\n }\r\n return flag;\r\n },\r\n getSelectedData : function( callback ){\r\n var json = {};\r\n this.empowerSelectNodes.each(function(node){\r\n if( node.retrieve(\"isSelected\") ){\r\n var d = node.retrieve(\"data\");\r\n json[ d.fromIdentity ] = d;\r\n }\r\n }.bind(this));\r\n if( callback )callback( json );\r\n }\r\n});\r\n\r\nO2ProcessorMobile.UnitOptions = new Class({\r\n Extends : MWF.APPOrg.UnitOptions\r\n});\r\n\r\nO2ProcessorMobile.IdentityOptions = new Class({\r\n Extends : MWF.APPOrg.IdentityOptions\r\n});", + "html": "MWF.xDesktop.requireApp(\"process.Xform\", \"Org\", null, false);\r\n\r\nthis.define(\"loadProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nthis.define(\"popupProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nwindow.O2ProcessorMobile = new Class({\r\n Implements: [Events],\r\n initialize: function (macro) {\r\n\r\n debugger;\r\n\r\n this.macro = macro;\r\n this.app = macro.form.app;\r\n this.form = this.app.appForm;\r\n this.task = this.form.businessData.task;\r\n this.appContentNode = $(document.body); //this.app.content;\r\n\r\n this.initConstant();\r\n this.getCss();\r\n this.getAllNode();\r\n\r\n // this.loadCss();\r\n\r\n },\r\n initConstant: function () {\r\n this.DefaultDecisionOpinionName = \"其它\"; //默认的决策组,如果当前节点有决策组,但是某些决策没有落在决策组中,那么使用默认决策组\r\n },\r\n load: function () {\r\n if ( this.status === \"show\" || this.status === \"loading\" ){\r\n \r\n }else if (this.status === \"closed\" ) {\r\n this.node.show();\r\n // this.positionSeted = false; //重新设置位置\r\n // this.setSize( this.getCurrentRouteOrgList().length );\r\n this.status = \"show\";\r\n } else {\r\n this.status = \"loading\";\r\n this.container = new Element(\"div\").inject(this.appContentNode);\r\n this.node.setStyles({\r\n \"width\" : \"100%\",\r\n \"position\" : \"absolute\",\r\n \"z-index\" : \"101\"\r\n })\r\n this.loadContent();\r\n this.setEvents();\r\n this.node.inject(this.container);\r\n this.status = \"show\";\r\n }\r\n },\r\n loadContent: function () {\r\n this.getRouteGroupList();\r\n\r\n var orgLength = this.getMaxOrgLength();\r\n if (orgLength === 0) { //流程选人数量为0\r\n if (this.orgsTile) {\r\n this.orgsTile.destroy();\r\n this.orgsTile = null;\r\n }\r\n if (this.orgsArea) {\r\n this.orgsArea.destroy();\r\n this.orgsArea = null;\r\n }\r\n }\r\n\r\n this.setOpinion(); //意见\r\n\r\n if (this.hasDecisionOpinion) { //有决策组\r\n this.setRouteGroupList();\r\n } else { //没有决策组\r\n if (this.routeGroupTitle) {\r\n this.routeGroupTitle.destroy();\r\n this.routeGroupTitle = null;\r\n }\r\n if (this.routeGroupArea) {\r\n this.routeGroupArea.destroy();\r\n this.routeGroupArea = null;\r\n }\r\n // this.routeSelectorArea.setStyles( this.css.routeSelectorArea );\r\n // if( this.inputOpinionNodeTd && this.selectIdeaNodeTd ){\r\n // this.inputOpinionNodeTd.set( \"width\", orgLength < 2 ? \"60%\" : \"50%\" );\r\n // }\r\n this.setRouteList();\r\n }\r\n },\r\n\r\n getAllNode: function () {\r\n this.node = this.getNode(\"submitNode\");\r\n\r\n this.buttonNode = this.getNode(\"submitButtonNode\");\r\n\r\n this.contentWrapNode = this.getNode(\"submitContentWrapNode\");\r\n this.contentNode = this.getNode(\"submitContentNode\");\r\n this.contentInnerNode = this.getNode(\"submitContentInnerNode\");\r\n\r\n this.routeGroupTitle = this.getNode(\"routeGroupTitle\");\r\n this.routeGroupArea = this.getNode(\"routeGroupArea\");\r\n\r\n this.routeSelectorTitle = this.getNode(\"routeSelectorTitle\");\r\n this.routeSelectorArea = this.getNode(\"routeSelectorArea\");\r\n\r\n this.selectIdeaAreaNode = this.getNode(\"selectIdeaAreaNode\");\r\n\r\n this.inputOpinionNode = this.getNode(\"inputOpinionNode\");\r\n this.inputTextarea = this.getNode(\"inputTextarea\");\r\n\r\n this.handwritingAction = this.getNode(\"handwritingAction\");\r\n\r\n this.orgsTile = this.getNode(\"orgsTile\");\r\n this.orgsArea = this.getNode(\"orgsArea\");\r\n\r\n this.buttonsArea = this.getNode(\"submitButtonNode\");\r\n this.okButton = this.getNode(\"okButton\");\r\n this.cancelButton = this.getNode(\"cancelButton\");\r\n },\r\n setEvents: function () {\r\n if (this.cancelButton) {\r\n this.cancelButton.addEvent(\"click\", function () {\r\n this.close();\r\n this.fireEvent(\"cancel\");\r\n }.bind(this));\r\n }\r\n if (this.okButton) {\r\n this.okButton.addEvent(\"click\", function (ev) {\r\n this.submit(ev)\r\n }.bind(this));\r\n }\r\n },\r\n getNode: function (name) {\r\n if (this.macro.form.get(name)) {\r\n return this.macro.form.get(name).node;\r\n }\r\n if (this.form.allForName[name]) {\r\n return this.form.allForName[name].node;\r\n }\r\n },\r\n setData: function (name, value) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.setData(value) : null;\r\n },\r\n getData: function (name) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.getData() : null;\r\n },\r\n getRouteConfigList: function () { //获取当前待办的所有路由设置\r\n if (!this.routeConfigList) {\r\n o2.Actions.get(\"x_processplatform_assemble_surface\").listRoute({\"valueList\": this.task.routeList}, function (json) {\r\n json.data.each(function (d) {\r\n d.selectConfigList = JSON.parse(d.selectConfig || \"[]\");\r\n }.bind(this));\r\n this.routeConfigList = json.data;\r\n }.bind(this), null, false);\r\n }\r\n return this.routeConfigList;\r\n },\r\n getRouteConfig: function (routeId) { //根据某个ID获取路由设置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i];\r\n }\r\n }\r\n },\r\n getMaxOrgLength: function () { //获取当前待办下可能的最多选人组件个数\r\n var routeList = this.getRouteConfigList();\r\n var length = 0;\r\n routeList.each(function (route) {\r\n if (route.hiddenScriptText) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n length = Math.max(length, route.selectConfigList.length);\r\n }.bind(this));\r\n return length;\r\n },\r\n getOrgConfig: function (routeId) { //获取人员选择配置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i].selectConfigList;\r\n }\r\n }\r\n },\r\n getCurrentRouteSelectorList: function () { //获取当前路由的人员选择器对象\r\n var selectorList = [];\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n if (!orgList) return [];\r\n orgList.each(function (org) {\r\n if (org.selector && org.selector.selector) {\r\n selectorList.push(org.selector.selector);\r\n }\r\n }.bind(this))\r\n return selectorList;\r\n },\r\n getCurrentRouteOrgList: function () { //获取当前路由的org对象\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n return orgList || [];\r\n },\r\n getSelectorSelectedData: function (filedName) { //获取人员选择器选择的值\r\n var data = [];\r\n var orgList = this.getCurrentRouteOrgList();\r\n for (var i = 0; i < orgList.length; i++) {\r\n var org = orgList[i];\r\n if (org.json.name === filedName) {\r\n var selector = org.selector.selector;\r\n selector.selectedItems.each(function (item) {\r\n data.push(item.data)\r\n })\r\n }\r\n }\r\n return data;\r\n },\r\n getMarginY: function (node) {\r\n return (node.getStyle(\"margin-top\").toInt() || 0) +\r\n (node.getStyle(\"margin-bottom\").toInt() || 0);\r\n // (node.getStyle(\"padding-top\").toInt() || 0 ) +\r\n // (node.getStyle(\"padding-bottom\").toInt() || 0 )+\r\n // (node.getStyle(\"border-top-width\").toInt() || 0 ) +\r\n // (node.getStyle(\"border-bottom-width\").toInt() || 0 );\r\n },\r\n setSize: function (currentOrgLength) {\r\n var lines = ((currentOrgLength + 1) / 2).toInt();\r\n\r\n if (lines > 0) {\r\n this.showOrgsArea();\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n if (this.buttonsArea) {\r\n var bodySize = this.appContentNode.getSize();\r\n var nodeHeight = bodySize.y - this.getMarginY(this.node);\r\n this.node.setStyles({\r\n \"overflow-y\": \"hidden\",\r\n \"height\": nodeHeight\r\n });\r\n var buttonsAreaSize = this.buttonsArea.getSize();\r\n this.contentNode.setStyles({\r\n \"height\": nodeHeight - buttonsAreaSize.y - this.getMarginY(this.buttonsArea) - this.getMarginY(this.contentNode),\r\n \"overflow-y\": \"auto\"\r\n })\r\n }\r\n\r\n this.fireEvent(\"resize\");\r\n },\r\n showOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.show();\r\n if (this.orgsArea) this.orgsArea.show();\r\n },\r\n hideOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.hide();\r\n if (this.orgsArea) this.orgsArea.hide();\r\n },\r\n\r\n /*决策和决策组相关 开始*/\r\n getRouteGroupList: function () { //获取决策组并格式化成对象\r\n if (this.routeGroupObject) return this.routeGroupObject;\r\n this.routeGroupObject = {};\r\n this.routeGroupNameList = [];\r\n this.hasDecisionOpinion = false;\r\n var routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n route.displayName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n } else {\r\n route.displayName = route.name;\r\n }\r\n\r\n if (route.decisionOpinion) { //决策组名称\r\n this.hasDecisionOpinion = true;\r\n var decisionOpinionList = route.decisionOpinion.split(\"#\");\r\n decisionOpinionList.each(function (decisionOption) {\r\n this.routeGroupNameList.combine([decisionOption]);\r\n var d = this.splitByStartNumber(decisionOption);\r\n if (!this.routeGroupObject[d.name]) this.routeGroupObject[d.name] = [];\r\n this.routeGroupObject[d.name].push(route);\r\n }.bind(this))\r\n } else {\r\n var defaultName = this.DefaultDecisionOpinionName;\r\n this.routeGroupNameList.combine([defaultName]);\r\n if (!this.routeGroupObject[defaultName]) this.routeGroupObject[defaultName] = [];\r\n this.routeGroupObject[defaultName].push(route);\r\n }\r\n }.bind(this));\r\n return this.routeGroupObject;\r\n },\r\n splitByStartNumber: function (str) {\r\n var obj = {\r\n name: \"\",\r\n order: \"\"\r\n };\r\n for (var i = 0; i < str.length; i++) {\r\n if (parseInt(str.substr(i, 1)).toString() !== \"NaN\") {\r\n obj.order = obj.order + str.substr(i, 1);\r\n } else {\r\n obj.name = str.substr(i, str.length);\r\n break;\r\n }\r\n }\r\n return obj;\r\n },\r\n setRouteGroupList: function () { //排序并创建决策组DOM对象\r\n var _self = this;\r\n\r\n //根据决策组的排序号进行排序\r\n var keys = this.routeGroupNameList;\r\n keys.sort(function (a, b) {\r\n var aIdx = parseInt(this.splitByStartNumber(a).order || \"9999999\");\r\n var bIdx = parseInt(this.splitByStartNumber(b).order || \"9999999\");\r\n return aIdx - bIdx;\r\n }.bind(this));\r\n\r\n var list = [];\r\n keys.each(function (k) {\r\n list.push(this.splitByStartNumber(k).name)\r\n }.bind(this));\r\n\r\n debugger;\r\n\r\n list.each(function (routeGroupName) {\r\n var routeList = this.routeGroupObject[routeGroupName];\r\n var routeGroupNode = new Element(\"div\", {\r\n \"styles\": this.css.routeGroupNode,\r\n \"text\": routeGroupName\r\n }).inject(this.routeGroupArea);\r\n routeGroupNode.store(\"routeList\", routeList);\r\n routeGroupNode.store(\"routeGroupName\", routeGroupName);\r\n\r\n routeGroupNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRouteGroup(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRouteGroup(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRouteGroup(this);\r\n }\r\n });\r\n\r\n if (keys.length === 1) { //如果决策组只有1个,则默认选中\r\n this.selectRouteGroup(routeGroupNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n }.bind(this))\r\n },\r\n overRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n },\r\n outRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n },\r\n selectRouteGroup: function (node) { //选中决策组执行...\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode);\r\n //this.selectedRouteGroup.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRouteGroup = node;\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode_selected);\r\n //this.selectedRouteGroup.addClass(\"mainColor_bg\");\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n\r\n } else {\r\n\r\n }\r\n } else {\r\n this.selectedRouteGroup = node;\r\n node.setStyles(this.css.routeGroupNode_selected);\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n }\r\n this.routeGroupArea.setStyle(\"background-color\", \"#FFF\");\r\n },\r\n setRouteList: function (routeList) { //创建决策对象\r\n var _self = this;\r\n this.routeSelectorArea.empty();\r\n this.selectedRoute = null;\r\n\r\n if (!routeList) routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n var routeName = route.name;\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n routeName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n }\r\n var routeNode = new Element(\"div\", {\r\n \"styles\": this.css.routeNode,\r\n \"text\": routeName\r\n }).inject(this.routeSelectorArea);\r\n routeNode.store(\"route\", route.id);\r\n routeNode.store(\"routeName\", route.name);\r\n\r\n routeNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRoute(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRoute(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRoute(this);\r\n }\r\n });\r\n\r\n if (routeList.length == 1 || route.sole) { //sole表示优先路由\r\n this.selectRoute(routeNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n\r\n }.bind(this));\r\n },\r\n overRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n },\r\n outRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n },\r\n selectRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n\r\n } else {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.addClass(\"lightColor_bg\");\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = null;\r\n }\r\n } else {\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#FFF\");\r\n\r\n this.loadOrgs(this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\");\r\n\r\n if (this.form.data.json.events && this.form.data.json.events.afterSelectRoute) {\r\n this.form.Macro.exec(this.form.data.json.events.afterSelectRoute.code, node);\r\n }\r\n\r\n },\r\n /*决策和决策组相关 结束*/\r\n\r\n setOpinion: function () {\r\n if (!this.inputTextarea) return;\r\n if (this.handwritingAction) this.handwritingAction.addEvent(\"click\", function () {\r\n window.setTimeout( function(){\r\n this.handwriting();\r\n }.bind(this), 100 )\r\n }.bind(this));\r\n\r\n if (this.selectIdeaAreaNode) {\r\n MWF.require(\"MWF.widget.UUID\", function () {\r\n MWF.UD.getDataJson(\"idea\", function (json) {\r\n if (json) {\r\n if (json.ideas) {\r\n this.setIdeaList(json.ideas);\r\n }\r\n } else {\r\n MWF.UD.getPublicData(\"idea\", function (pjson) {\r\n if (pjson) {\r\n if (pjson.ideas) {\r\n this.setIdeaList(pjson.ideas);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this));\r\n }.bind(this));\r\n }\r\n\r\n },\r\n\r\n audioRecord: function () {\r\n if (!this.audioRecordNode) this.createAudioRecord();\r\n this.audioRecordNode.show();\r\n this.audioRecordNode.position({\r\n \"relativeTo\": this.options.mediaNode || this.node,\r\n \"position\": \"center\",\r\n \"edge\": \"center\"\r\n });\r\n\r\n MWF.require(\"MWF.widget.AudioRecorder\", function () {\r\n this.audioRecorder = new MWF.widget.AudioRecorder(this.audioRecordNode, {\r\n \"onSave\": function (blobFile) {\r\n this.soundFile = blobFile;\r\n this.audioRecordNode.hide();\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.soundFile = null;\r\n this.audioRecordNode.hide();\r\n }.bind(this)\r\n }, null);\r\n }.bind(this));\r\n },\r\n createAudioRecord: function () {\r\n this.audioRecordNode = new Element(\"div\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n var size = (this.options.mediaNode || this.node).getSize();\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.audioRecordNode.setStyles({\r\n \"height\": \"\" + size.y + \"px\",\r\n \"width\": \"\" + size.x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n },\r\n\r\n handwriting: function () {\r\n if (!this.handwritingNode) this.createHandwriting();\r\n if(this.handwritingNodeMask)this.handwritingNodeMask.show();\r\n this.handwritingNode.show();\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n },\r\n createHandwriting: function () {\r\n this.handwritingNodeMask = new Element(\"div.handwritingMask\", {\"styles\": this.css.handwritingMask}).inject(this.node);\r\n\r\n this.handwritingNode = new Element(\"div.handwritingNode\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n //var size = (this.options.mediaNode || this.node).getSize();\r\n //var y = size.y;\r\n //var x = size.x;\r\n //兼容以前的默认高宽\r\n\r\n debugger;\r\n\r\n var bodySize = $(document.body).getSize();\r\n var x = bodySize.x;\r\n var y = bodySize.y;\r\n\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.handwritingNode.setStyles({\r\n \"height\": \"\" + y + \"px\",\r\n \"width\": \"\" + x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n this.handwritingNode.addEvent('touchmove' , function(e){\r\n e.preventDefault();\r\n });\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n this.handwritingAreaNode = new Element(\"div\", {\"styles\": this.css.handwritingAreaNode}).inject(this.handwritingNode);\r\n // this.handwritingActionNode = new Element(\"div\", {\r\n // \"styles\": this.css.handwritingActionNode,\r\n // \"text\": MWF.xApplication.process.Work.LP.saveWrite\r\n // }).inject(this.handwritingNode);\r\n // var h = this.handwritingActionNode.getSize().y + this.handwritingActionNode.getStyle(\"margin-top\").toInt() + this.handwritingActionNode.getStyle(\"margin-bottom\").toInt();\r\n // h = y - h;\r\n // this.handwritingAreaNode.setStyle(\"height\", \"\" + h + \"px\");\r\n this.handwritingAreaNode.setStyle(\"height\", \"\" + y + \"px\");\r\n\r\n MWF.require(\"MWF.widget.Tablet\", function () {\r\n var handWritingOptions = {\r\n \"style\": \"default\",\r\n \"contentWidth\": 0,\r\n \"contentHeight\": 0,\r\n \"onSave\": function (base64code, base64Image, imageFile) {\r\n this.handwritingFile = imageFile;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n // this.page.get(\"div_image\").node.set(\"src\",base64Image);\r\n\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.handwritingFile = null;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n }.bind(this)\r\n };\r\n handWritingOptions.tools = [\r\n \"undo\",\r\n \"redo\", \"|\",\r\n \"reset\", \"|\",\r\n \"size\",\r\n \"cancel\"\r\n ]\r\n this.tablet = new MWF.widget.Tablet(this.handwritingAreaNode, handWritingOptions, null);\r\n this.tablet.load();\r\n }.bind(this));\r\n\r\n // this.handwritingActionNode.addEvent(\"click\", function () {\r\n // //this.handwritingNode.hide();\r\n // if (this.tablet) this.tablet.save();\r\n // }.bind(this));\r\n },\r\n\r\n setIdeaList: function (ideas) {\r\n var _self = this;\r\n ideas.each(function (idea) {\r\n new Element(\"div\", {\r\n \"styles\": this.css.selectIdeaItemNode,\r\n \"text\": idea,\r\n \"events\": {\r\n \"click\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"dblclick\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"mouseover\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode_over);\r\n },\r\n \"mouseout\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode);\r\n }\r\n }\r\n }).inject(this.selectIdeaAreaNode);\r\n }.bind(this));\r\n },\r\n submit: function (ev) {\r\n if (this.hasDecisionOpinion && !this.selectedRouteGroup) {\r\n this.routeGroupArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"top\"},\r\n \"请先选择决策组\",\r\n this.routeGroupArea,\r\n null, //{\"x\": 0, \"y\": 30}\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n\r\n if (!this.selectedRoute) {\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.routeSelectorArea,\r\n delayClose: 6000,\r\n content: \"请先选择决策\"\r\n });\r\n return false;\r\n }\r\n var routeName = this.selectedRoute.retrieve(\"routeName\") || this.selectedRoute.get(\"text\");\r\n var opinion = this.getData(\"inputTextarea\");\r\n if (opinion === MWF.xApplication.process.Work.LP.inputText) opinion = \"\";\r\n var medias = [];\r\n if (this.handwritingFile) medias.push(this.handwritingFile);\r\n if (this.soundFile) medias.push(this.soundFile);\r\n if (this.videoFile) medias.push(this.videoFile);\r\n\r\n var currentRouteId = this.selectedRoute.retrieve(\"route\");\r\n var routeConfig = this.getRouteConfig(currentRouteId);\r\n if (!opinion && medias.length === 0) {\r\n if (routeConfig.opinionRequired == true) {\r\n this.inputTextarea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.inputTextarea,\r\n delayClose: 6000,\r\n content: \"请填写意见\"\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: validation\r\n });\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: \"路由校验失败\"\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //var array = [routeName, opinion, medias];\r\n //this.node.mask({\r\n // \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n // \"destroyOnHide\": true,\r\n // \"style\": {\r\n // \"background-color\": \"#999\",\r\n // \"opacity\": 0.3,\r\n // \"z-index\":600\r\n // }\r\n //});\r\n //this.fireEvent(\"submit\", array );\r\n\r\n var appendTaskOrgItem;\r\n if (routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\") {\r\n if (!this.orgItems || this.orgItems.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"没有配置转交人,请联系管理员\" //\"没有配置转交人,请联系管理员\"\r\n });\r\n return false;\r\n } else {\r\n appendTaskOrgItem = this.orgItems[0]\r\n }\r\n }\r\n\r\n if (!this.saveOrgs()) return false;\r\n\r\n //this.saveOrgsWithCheckEmpower( function(){\r\n var appandTaskIdentityList;\r\n if (appendTaskOrgItem) {\r\n appandTaskIdentityList = appendTaskOrgItem.getData();\r\n if (!appandTaskIdentityList || appandTaskIdentityList.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"请选择转交人\"\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n validation,\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n \"路由校验失败\",\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n this.node.mask({\r\n \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n \"destroyOnHide\": true,\r\n \"style\": {\r\n \"background-color\": \"#999\",\r\n \"opacity\": 0.3,\r\n \"z-index\": 600\r\n }\r\n });\r\n\r\n // var array = [ routeName, opinion, medias, appandTaskIdentityList, this.orgItems, function(){\r\n // if(appendTaskOrgItem)appendTaskOrgItem.setData([]);\r\n // }];\r\n\r\n var op = this.form.getOpinion();\r\n var mds = op.medias;\r\n\r\n if (!medias || !medias.length) {\r\n medias = mds;\r\n } else {\r\n medias = medias.concat(mds)\r\n }\r\n\r\n this.form.submitWork(routeName, opinion, medias, function () {\r\n this.close();\r\n }.bind(this), this, null, appandTaskIdentityList, this.orgItems, function () {\r\n if (appendTaskOrgItem) appendTaskOrgItem.setData([]);\r\n this.setData(\"inputTextarea\", \"\");\r\n }.bind(this));\r\n\r\n // this.fireEvent(\"submit\", array );\r\n },\r\n\r\n close: function () {\r\n this.node.setStyle(\"display\", \"none\");\r\n this.status = \"closed\";\r\n },\r\n destroy: function () {\r\n // this.node.empty();\r\n // delete this.task;\r\n // delete this.node;\r\n // delete this.routeSelectorTile;\r\n // delete this.routeSelectorArea;\r\n // delete this.routeOpinionTile;\r\n // delete this.routeOpinionArea;\r\n // delete this.buttonsArea;\r\n // delete this.inputOpinionNode;\r\n // delete this.inputTextarea;\r\n // delete this.cancelButton;\r\n // delete this.okButton;\r\n },\r\n loadOrgs: function (route) {\r\n if (!this.form || !route) {\r\n this.hideOrgsArea();\r\n return;\r\n } else {\r\n this.showOrgsArea();\r\n }\r\n if (!this.orgTableObject) this.orgTableObject = {};\r\n if (!this.orgItemsObject) this.orgItemsObject = {};\r\n var isLoaded = false;\r\n for (var key in this.orgTableObject) {\r\n if (route === key) {\r\n this.orgTableObject[key].show();\r\n this.orgItems = this.orgItemsObject[key] || [];\r\n var data = this.getOrgConfig(route);\r\n isLoaded = true;\r\n } else {\r\n this.orgTableObject[key].hide();\r\n }\r\n }\r\n if (isLoaded) return;\r\n\r\n this.orgItems = [];\r\n this.orgItemsObject[route] = this.orgItems;\r\n\r\n var data = this.getOrgConfig(route);\r\n var routeConfig = this.getRouteConfig(route);\r\n var ignoreFirstOrgOldData = false; //(routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\");\r\n this.setSize(data.length);\r\n if (data.length) {\r\n this.showOrgsArea();\r\n\r\n var routeOrgTable = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTable\r\n }).inject(this.orgsArea);\r\n this.orgTableObject[route] = routeOrgTable;\r\n\r\n data.each(function (config, i) {\r\n var sNode = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTr\r\n }).inject(routeOrgTable);\r\n this.loadOrg(sNode, config, ignoreFirstOrgOldData && i == 0)\r\n }.bind(this))\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n },\r\n loadOrg: function (container, json, position, ignoreOldData) {\r\n var titleNode = new Element(\"div.selectorTitle\", {\r\n \"styles\": this.css.selectorTitle\r\n }).inject(container);\r\n var titleTextNode = new Element(\"div.selectorTitleText\", {\r\n \"text\": json.title,\r\n \"styles\": this.css.selectorTitleText\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.selectorContent\", {\r\n \"styles\": this.css.selectorContent\r\n }).inject(container);\r\n\r\n var errorNode = new Element(\"div.selectorErrorNode\", {\r\n \"styles\": this.css.selectorErrorNode\r\n }).inject(container);\r\n\r\n var org = new O2ProcessorMobile.Org(contentNode, this.form, json, this, {\r\n onSelect: function (items, data) {\r\n if (!data || !data.length) {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n } else {\r\n contentNode.setStyles(this.css.selectorContent);\r\n }\r\n }.bind(this)\r\n });\r\n org.ignoreOldData = ignoreOldData;\r\n org.errContainer = errorNode;\r\n org.summitDlalog = this;\r\n this.orgItems.push(org);\r\n\r\n titleNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n contentNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n\r\n var defaultValue = org.getValue();\r\n org.loadOrgWidget(defaultValue, contentNode);\r\n if (!defaultValue || defaultValue.length == 0) {\r\n {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n }\r\n }\r\n\r\n },\r\n validationOrgs: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.validation()) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n isOrgsHasEmpower: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = false;\r\n this.needCheckEmpowerOrg = [];\r\n this.orgItems.each(function (item) {\r\n if (item.hasEmpowerIdentity()) {\r\n this.needCheckEmpowerOrg.push(item);\r\n flag = true;\r\n }\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgs: function (keepSilent) {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.save(!keepSilent)) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgsWithCheckEmpower: function (callback) {\r\n debugger;\r\n if (!this.orgItems || !this.orgItems.length) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n if (!this.validationOrgs()) return false;\r\n if (!this.isOrgsHasEmpower()) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n //this.checkEmpowerMode = true;\r\n this.showEmpowerDlg(callback);\r\n },\r\n showEmpowerDlg: function (callback) {\r\n\r\n //this.needCheckEmpowerOrg.each( function(org){\r\n // org.saveCheckedEmpowerData();\r\n //}.bind(this));\r\n\r\n var empowerNode = new Element(\"div.empowerNode\", {\"styles\": this.css.empowerNode});\r\n var empowerTitleNode = new Element(\"div\", {\r\n text: \"下列人员对工作进行了授权,选择后文件将发送给被授权人,取消选择后文件将发送给授权者本人\",\r\n styles: this.css.empowerTitleNode\r\n }).inject(empowerNode);\r\n\r\n var orgs = this.needCheckEmpowerOrg;\r\n var len = orgs.length;\r\n var lines = ((len + 1) / 2).toInt();\r\n\r\n var empowerTable = new Element(\"table\", {\r\n \"cellspacing\": 0, \"cellpadding\": 0, \"border\": 0, \"width\": \"100%\",\r\n \"styles\": this.css.empowerTable\r\n }).inject(empowerNode);\r\n\r\n for (var n = 0; n < lines; n++) {\r\n var tr = new Element(\"tr\").inject(empowerTable);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerOddTd}).inject(tr);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerEvenTd}).inject(tr);\r\n }\r\n\r\n var trs = empowerTable.getElements(\"tr\");\r\n orgs.each(function (org, i) {\r\n var sNode;\r\n var width;\r\n if (i + 1 == len && (len % 2 === 1)) {\r\n sNode = trs[trs.length - 1].getFirst(\"td\");\r\n sNode.set(\"colspan\", 2);\r\n trs[trs.length - 1].getLast(\"td\").destroy();\r\n width = \"50%\";\r\n } else {\r\n var row = ((i + 2) / 2).toInt();\r\n var tr = trs[row - 1];\r\n sNode = (i % 2 === 0) ? tr.getFirst(\"td\") : tr.getLast(\"td\");\r\n }\r\n\r\n var titleNode = new Element(\"div.empowerAreaTitle\", {\r\n \"styles\": this.css.empowerAreaTitle\r\n }).inject(sNode);\r\n\r\n var titleTextNode = new Element(\"div.empowerAreaTitleText\", {\r\n \"text\": org.json.title,\r\n \"styles\": this.css.empowerAreaTitleText\r\n }).inject(titleNode);\r\n\r\n var selectAllNode = new Element(\"div\", {\r\n styles: {\r\n float: \"right\"\r\n }\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.empowerAreaContent\", {\r\n \"styles\": this.css.empowerAreaContent\r\n }).inject(sNode);\r\n\r\n org.loadCheckEmpower(null, contentNode, selectAllNode);\r\n\r\n }.bind(this));\r\n\r\n empowerNode.setStyle(\"height\", lines * this.options.orgHeight + 20);\r\n //var dlgHeight = Math.min( Math.floor( this.form.app.content.getSize().y * 0.9) , lines*this.options.orgHeight + 151 );\r\n\r\n //var width = this.node.retrieve(\"width\");\r\n //empowerNode.setStyle( \"width\", width );\r\n var width = \"880\";\r\n //if( len > 1 ){\r\n // width = \"840\"\r\n //}else{\r\n // width = \"420\"\r\n //}\r\n empowerNode.setStyle(\"width\", width + \"px\");\r\n\r\n this.node.getParent().mask({\r\n \"style\": this.css.mask\r\n });\r\n this.empowerDlg = o2.DL.open({\r\n \"title\": \"授权人员替换选择\",\r\n \"style\": this.form.json.dialogStyle || \"user\",\r\n \"isResize\": false,\r\n \"content\": empowerNode,\r\n //\"container\" : this.node,\r\n \"width\": width, //600,\r\n \"height\": \"auto\", //dlgHeight,\r\n \"mark\": false,\r\n \"buttonList\": [\r\n {\r\n \"type\": \"ok\",\r\n \"text\": \"确定\",\r\n \"action\": function (d, e) {\r\n //if (this.empowerDlg) this.empowerDlg.okButton.click();\r\n\r\n orgs.each(function (org, i) {\r\n org.saveCheckedEmpowerData(function () {\r\n if (i === orgs.length - 1) {\r\n if (callback) callback();\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this)\r\n },\r\n {\r\n \"type\": \"cancel\",\r\n \"text\": \"取消\",\r\n \"action\": function () {\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }.bind(this)\r\n }\r\n ]\r\n });\r\n },\r\n getCss: function () {\r\n this.css = {\r\n\r\n \"routeGroupNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"padding-left\": \"28px\",\r\n \"color\": \"#000\",\r\n \"background-color\": \"#E3E3E3\",\r\n \"min-height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_over\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_selected\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/routegroup_selected.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"border-radius\": \"5px\",\r\n \"height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"padding-left\": \"26px\",\r\n \"padding-right\": \"8px\",\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#f0f0f0\"\r\n },\r\n \"routeNode_over\": {\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"routeNode_selected\": {\r\n \"color\": \"#fff\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/checked.png) no-repeat 5px center\",\r\n \"background-color\": \"#3296FA\"\r\n },\r\n\r\n \"selectIdeaItemNode\": {\r\n \"line-height\": \"18px\",\r\n \"font-size\": \"14px\",\r\n \"cursor\": \"pointer\",\r\n \"background-color\": \"#FFF\",\r\n \"padding\": \"4px 4px 4px 4px\",\r\n \"overflow\": \"hidden\"\r\n },\r\n \"selectIdeaItemNode_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n\r\n \"handwritingNode\": {\r\n \"position\": \"absolute\",\r\n \"background\": \"#ffffff\"\r\n },\r\n \"handwritingActionNode\": {\r\n \"width\": \"70%\",\r\n \"min-width\": \"100px\",\r\n \"height\": \"3em\",\r\n \"line-height\": \"3em\",\r\n \"margin\": \"5px auto\",\r\n \"border-radius\": \"5px\",\r\n \"border\": \"1px solid #3296FA\",\r\n \"background-color\": \"#3296FA\",\r\n \"text-align\": \"center\",\r\n \"color\": \"#ffffff\",\r\n \"font-size\": \"16px\"\r\n },\r\n\r\n \"inputOpinionAudioRecordAction\": {\r\n \"display\": \"none\",\r\n \"float\": \"right\",\r\n \"border\": \"1px solid #6681a5\",\r\n \"border-radius\": \"3px\",\r\n \"cursor\": \"pointer\",\r\n \"padding-left\": \"24px\",\r\n \"padding-right\": \"5px\",\r\n \"margin-left\": \"5px\",\r\n \"background\": \"url(\" + \"/x_component_process_Work/$Processor/default/audioRecord.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeOrgTable\": {},\r\n \"routeOrgTr\": {\r\n \"margin-bottom\": \"10px\"\r\n },\r\n \"routeOrgOddTd\": {\r\n \"width\": \"50%\"\r\n },\r\n \"routeOrgEvenTd\": {\r\n \"width\": \"50%\",\r\n \"border-left\": \"5px solid #ffffff\"\r\n },\r\n\r\n \"selectorTitle\": {\r\n \"padding\": \"0px 4px\",\r\n \"height\": \"30px\",\r\n \"line-height\": \"30px\",\r\n \"font-size\": \"14px\",\r\n // \"font-weight\": \"bold\",\r\n \"color\": \"#000\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/mobile/arrow_right2.png) no-repeat right 10px center\",\r\n \"background-color\": \"#fff\"\r\n },\r\n \"selectorTitle_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"selectorTitleText\": {\r\n// \"float\": \"left\"\r\n },\r\n \"selectorErrorNode\": {\r\n //\"float\" : \"right\",\r\n \"background-color\": \"#fff\",\r\n \"margin-right\": \"5px\",\r\n \"font-weight\": \"normal\"\r\n },\r\n \"selectorContent\": {\r\n \"overflow\": \"hidden\",\r\n \"background-color\": \"#fff\",\r\n \"padding\": \"0px 5px 5px 5px\"\r\n },\r\n \"selectorContent_noItem\": {\r\n \"padding\": \"0px\"\r\n }\r\n }\r\n\r\n }\r\n});\r\n\r\n\r\nO2ProcessorMobile.Org = new Class({\r\n Implements: [Options, Events],\r\n options: {\r\n height : 240,\r\n moduleEvents : [\"queryLoadSelector\",\"postLoadSelector\",\"postLoadContent\",\"queryLoadCategory\",\"postLoadCategory\",\r\n \"selectCategory\", \"unselectCategory\",\"queryLoadItem\",\"postLoadItem\",\"selectItem\", \"unselectItem\",\"change\"]\r\n },\r\n initialize: function (container, form, json, processor, options) {\r\n this.form = form;\r\n this.json = json;\r\n this.processor = processor;\r\n this.container = $(container);\r\n this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n this.setOptions(options);\r\n },\r\n load : function(){\r\n setTimeout( function(){ //如果有输入法界面,这个时候页面的计算不对,所以等100毫秒\r\n var options = this.getOptions();\r\n if(options){\r\n //this.selector = new MWF.O2Selector(this.container, options);\r\n this.selector = new MWF.O2Selector($(document.body), options);\r\n }\r\n }.bind(this), 100 )\r\n },\r\n _getOrgOptions: function(){\r\n this.selectTypeList = typeOf( this.json.selectType ) == \"array\" ? this.json.selectType : [this.json.selectType];\r\n if( this.selectTypeList.contains( \"identity\" ) ) {\r\n this.identityOptions = new O2ProcessorMobile.IdentityOptions(this.form, this.json);\r\n }\r\n if( this.selectTypeList.contains( \"unit\" ) ) {\r\n this.unitOptions = new O2ProcessorMobile.UnitOptions(this.form, this.json);\r\n }\r\n //if( this.selectTypeList.contains( \"group\" ) ){\r\n // this.groupOptions = new MWF.APPOrg.GroupOptions( this.form, this.json );\r\n //}\r\n },\r\n getOptions: function(){\r\n var _self = this;\r\n this._getOrgOptions();\r\n if( this.selectTypeList.length === 0 )return false;\r\n var exclude = [];\r\n if( this.json.exclude ){\r\n var v = this.form.Macro.exec(this.json.exclude.code, this);\r\n exclude = typeOf(v)===\"array\" ? v : [v];\r\n }\r\n\r\n var identityOpt;\r\n if( this.identityOptions ){\r\n identityOpt = this.identityOptions.getOptions();\r\n if (this.json.identityRange!==\"all\"){\r\n if ( !identityOpt.noUnit && (!identityOpt.units || !identityOpt.units.length) ){\r\n this.form.notice(\"无法确定身份的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if ( !identityOpt.noUnit && this.json.dutyRange && this.json.dutyRange!==\"all\"){\r\n if (!identityOpt.dutys || !identityOpt.dutys.length){\r\n this.form.notice(\"无法确定职务的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n identityOpt.values = this._computeValue() || [];\r\n }else{\r\n identityOpt.values = this.getValue();\r\n }\r\n identityOpt.exclude = exclude;\r\n }\r\n\r\n var unitOpt;\r\n if( this.unitOptions ){\r\n unitOpt = this.unitOptions.getOptions();\r\n if (this.json.unitRange!==\"all\"){\r\n if ( !unitOpt.units || !unitOpt.units.length){\r\n this.form.notice(\"无法确定组织的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n unitOpt.values = this._computeValue() || [];\r\n }else{\r\n unitOpt.values = this.getValue();\r\n }\r\n unitOpt.exclude = exclude;\r\n }\r\n\r\n //var groupOpt;\r\n //if( this.groupOptions ){\r\n // groupOpt = this.groupOptions.getOptions();\r\n // groupOpt.values = (this.json.isInput) ? [] : values;\r\n // groupOpt.exclude = exclude;\r\n //}\r\n\r\n var defaultOpt = {\r\n \"style\" : \"default\",\r\n \"zIndex\" : 3000\r\n };\r\n\r\n if( this.json.events && typeOf(this.json.events) === \"object\" ){\r\n Object.each(this.json.events, function(e, key){\r\n if (e.code){\r\n if (this.options.moduleEvents.indexOf(key)!==-1){\r\n //this.addEvent(key, function(event){\r\n // return this.form.Macro.fire(e.code, this, event);\r\n //}.bind(this));\r\n if( key === \"postLoadSelector\" ) {\r\n this.addEvent(\"loadSelector\", function (selector) {\r\n return this.form.Macro.fire(e.code, selector);\r\n }.bind(this))\r\n }else if( key === \"queryLoadSelector\"){\r\n defaultOpt[\"onQueryLoad\"] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }else{\r\n defaultOpt[\"on\"+key.capitalize()] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if( this.form.json.selectorStyle ){\r\n defaultOpt = Object.merge( Object.clone(this.form.json.selectorStyle), defaultOpt );\r\n if( this.form.json.selectorStyle.style )defaultOpt.style = this.form.json.selectorStyle.style;\r\n }\r\n\r\n var mobileEvents = {\r\n \"onComplete\": function(items){\r\n this.selectOnComplete(items);\r\n }.bind(this),\r\n \"onCancel\": this.selectOnCancel.bind(this),\r\n \"onClose\": this.selectOnClose.bind(this)\r\n };\r\n\r\n if( this.selectTypeList.length === 1 ){\r\n return Object.merge(\r\n defaultOpt,\r\n {\r\n \"type\": this.selectTypeList[0],\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this, this.selector )\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n },\r\n mobileEvents,\r\n identityOpt || unitOpt\r\n )\r\n }else if( this.selectTypeList.length > 1 ){\r\n var options = {\r\n \"type\" : \"\",\r\n \"types\" : this.selectTypeList,\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this)\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n };\r\n if( identityOpt ){\r\n options.identityOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n identityOpt\r\n );\r\n }\r\n if( unitOpt ){\r\n options.unitOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n unitOpt\r\n );\r\n }\r\n //if( groupOpt )options.groupOptions = groupOpt;\r\n return options;\r\n }\r\n },\r\n selectOnComplete: function(items){ //移动端才执行\r\n var array = [];\r\n items.each(function(item){\r\n array.push(item.data);\r\n }.bind(this));\r\n this.checkEmpower( array, function( data ){\r\n var values = [];\r\n data.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n\r\n this.setData(values);\r\n\r\n //this.validationMode();\r\n //this.validation();\r\n\r\n this.container.empty();\r\n this.loadOrgWidget(values, this.container);\r\n\r\n this.selector = null;\r\n\r\n this.fireEvent(\"select\", [items, values]);\r\n }.bind(this))\r\n },\r\n selectOnCancel: function(){ //移动端才执行\r\n //this.validation();\r\n },\r\n selectOnLoad: function( selector ){\r\n //if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"none\");\r\n this.fireEvent(\"loadSelector\", [selector])\r\n },\r\n selectOnClose: function(){\r\n var v = this._getBusinessData();\r\n //if (!v || !v.length) if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"block\");\r\n },\r\n loadOrgWidget: function(value, node){\r\n var height = node.getStyle(\"height\").toInt();\r\n if (node.getStyle(\"overflow\")===\"visible\" && !height) node.setStyle(\"overflow\", \"hidden\");\r\n if (value && value.length){\r\n value.each(function(data){\r\n var flag = data.distinguishedName.substr(data.distinguishedName.length-1, 1);\r\n var copyData = Object.clone(data);\r\n if( this.json.displayTextScript && this.json.displayTextScript.code ){\r\n this.currentData = copyData;\r\n var displayName = this.form.Macro.exec(this.json.displayTextScript.code, this);\r\n if( displayName ){\r\n copyData.displayName = displayName;\r\n }\r\n this.currentData = null;\r\n }\r\n\r\n var widget;\r\n switch (flag.toLowerCase()){\r\n case \"i\":\r\n widget = new MWF.widget.O2Identity(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"p\":\r\n widget = new MWF.widget.O2Person(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"u\":\r\n widget = new MWF.widget.O2Unit(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"g\":\r\n widget = new MWF.widget.O2Group(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n default:\r\n widget = new MWF.widget.O2Other(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n }\r\n widget.field = this;\r\n }.bind(this));\r\n }\r\n },\r\n\r\n hasEmpowerIdentity : function(){\r\n var data = this.getData();\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n return this.empowerChecker.hasEmpowerIdentity( data );\r\n },\r\n checkEmpower : function( data, callback, container, selectAllNode ){\r\n if( typeOf(data)===\"array\" && this.identityOptions && this.json.isCheckEmpower && this.json.identityResultType === \"identity\" ) {\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n this.empowerChecker.selectAllNode = selectAllNode;\r\n this.empowerChecker.load(data, callback, container);\r\n }else{\r\n if( callback )callback( data );\r\n }\r\n },\r\n\r\n loadCheckEmpower : function( callback, container, selectAllNode ){\r\n this.checkEmpower( this.getData(), callback, container, selectAllNode)\r\n },\r\n saveCheckedEmpowerData:function( callback ){\r\n var data = this.getData();\r\n //this.empowerChecker.replaceEmpowerIdentity(data, function( newData ){\r\n this.empowerChecker.setIgnoreEmpowerFlag(data, function( newData ){\r\n var values = [];\r\n newData.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n this.setData( values );\r\n if( callback )callback(values)\r\n }.bind(this))\r\n },\r\n\r\n save: function( isValid ){\r\n if( isValid ){\r\n if( this.validation() ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n this.setData( this.getData() );\r\n return true;\r\n }\r\n },\r\n\r\n resetSelectorData : function(){\r\n if( this.selector && this.selector.selector ){\r\n this.selector.selector.emptySelectedItems();\r\n this.selector.selector.options.values = this.getValue();\r\n this.selector.selector.setSelectedItem();\r\n }\r\n },\r\n resetData: function(){\r\n var v = this.getValue();\r\n //this.setData((v) ? v.join(\", \") : \"\");\r\n this.setData(v);\r\n },\r\n getData: function(){\r\n if( this.selector && !layout.mobile ){\r\n return this.getSelectedData();\r\n }else{\r\n return this.getValue();\r\n }\r\n },\r\n getSelectedData : function(){\r\n return this.getValue();\r\n },\r\n getValue: function(){\r\n var value = this._getBusinessData();\r\n if (!value) value = this._computeValue();\r\n return value || \"\";\r\n },\r\n _computeValue: function(){\r\n var values = [];\r\n if (this.json.identityValue) {\r\n this.json.identityValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.unitValue) {\r\n this.json.unitValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.dutyValue) {\r\n var dutys = JSON.decode(this.json.dutyValue);\r\n var par;\r\n if (dutys.length){\r\n dutys.each(function(duty){\r\n if (duty.code) par = this.form.Macro.exec(duty.code, this);\r\n var code = \"return this.org.getDuty(\\\"\"+duty.name+\"\\\", \\\"\"+par+\"\\\")\";\r\n\r\n var d = this.form.Macro.exec(code, this);\r\n if (typeOf(d)!==\"array\") d = (d) ? [d.toString()] : [];\r\n d.each(function(dd){if (dd) values.push(dd);});\r\n\r\n }.bind(this));\r\n }\r\n }\r\n if (this.json.defaultValue && this.json.defaultValue.code){\r\n var fd = this.form.Macro.exec(this.json.defaultValue.code, this);\r\n if (typeOf(fd)!==\"array\") fd = (fd) ? [fd] : [];\r\n fd.each(function(fdd){\r\n if (fdd){\r\n if (typeOf(fdd)===\"string\"){\r\n var data;\r\n this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = json.data }.bind(this), null, fdd, false);\r\n values.push(data);\r\n }else{\r\n values.push(fdd);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n if (this.json.count>0){\r\n return values.slice(0, this.json.count);\r\n }\r\n return values;\r\n //return (this.json.defaultValue.code) ? this.form.Macro.exec(this.json.defaultValue.code, this): (value || \"\");\r\n },\r\n getOrgAction: function(){\r\n if (!this.orgAction) this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n //if (!this.orgAction) this.orgAction = new MWF.xApplication.Selector.Actions.RestActions();\r\n return this.orgAction;\r\n },\r\n setData: function(value){\r\n\r\n if (!value) return false;\r\n var oldValues = this.getValue();\r\n var values = [];\r\n\r\n var type = typeOf(value);\r\n if (type===\"array\"){\r\n value.each(function(v){\r\n var vtype = typeOf(v);\r\n var data = null;\r\n if (vtype===\"string\"){\r\n this.getOrgAction()[this.getValueMethod(v)](function(json){ data = MWF.org.parseOrgData(json.data, true); }.bind(this), error, v, false);\r\n }\r\n if (vtype===\"object\") {\r\n data = MWF.org.parseOrgData(v, true);\r\n if(data.woPerson)delete data.woPerson;\r\n }\r\n if (data)values.push(data);\r\n }.bind(this));\r\n }\r\n if (type===\"string\"){\r\n var vData;\r\n this.getOrgAction()[this.getValueMethod(value)](function(json){ vData = MWF.org.parseOrgData(json.data, true); }.bind(this), error, value, false);\r\n if (vData)values.push(vData);\r\n }\r\n if (type===\"object\"){\r\n var vData = MWF.org.parseOrgData(value, true);\r\n if(vData.woPerson)delete vData.woPerson;\r\n values.push( vData );\r\n }\r\n\r\n var change = false;\r\n if (oldValues.length && values.length){\r\n if (oldValues.length === values.length){\r\n for (var i=0; i 0) {\r\n o2.Actions.get(\"x_organization_assemble_express\").listEmpowerWithIdentity({\r\n \"application\": (this.form.businessData.work || this.form.businessData.workCompleted).application,\r\n \"process\": (this.form.businessData.work || this.form.businessData.workCompleted).process,\r\n \"work\" : (this.form.businessData.work || this.form.businessData.workCompleted).id,\r\n \"identityList\": array\r\n }, function (json) {\r\n var arr = [];\r\n json.data.each(function (d) {\r\n if (d.fromIdentity !== d.toIdentity)\r\n arr.push(d);\r\n });\r\n if (arr.length > 0) {\r\n flag = true;\r\n }\r\n }.bind(this), null, false)\r\n }\r\n }\r\n return flag;\r\n },\r\n getSelectedData : function( callback ){\r\n var json = {};\r\n this.empowerSelectNodes.each(function(node){\r\n if( node.retrieve(\"isSelected\") ){\r\n var d = node.retrieve(\"data\");\r\n json[ d.fromIdentity ] = d;\r\n }\r\n }.bind(this));\r\n if( callback )callback( json );\r\n }\r\n});\r\n\r\nO2ProcessorMobile.UnitOptions = new Class({\r\n Extends : MWF.APPOrg.UnitOptions\r\n});\r\n\r\nO2ProcessorMobile.IdentityOptions = new Class({\r\n Extends : MWF.APPOrg.IdentityOptions\r\n});" }, "load": { "code": "this.loadProcessorMobile()", @@ -524,7 +524,7 @@ "text": "这里的queryLoad加载源码,load事件执行初始化" }, "isSaved": true, - "pid": "Mobiledf8e5915-a9db-427f-8227-872cd00bd28fdiv_loadSubmitForm", + "pid": "Mobile3af5d031-b50b-465b-bc8c-cc13e3327549div_loadSubmitForm", "moduleName": "div", "recoveryStyles": { "display": "none" @@ -533,7 +533,7 @@ } }, "formStyleType": "defaultMobile", - "pid": "Mobile4c9e9bc5-3f34-4f8e-8fec-b16fafc55fe54c9e9bc5-3f34-4f8e-8fec-b16fafc55fe5", + "pid": "Mobile3af5d031-b50b-465b-bc8c-cc13e33275493af5d031-b50b-465b-bc8c-cc13e3327549", "submitFormType": "select", "isPrompt": true, "promptPosition": "center", @@ -633,6 +633,6 @@ "code": "layout.mobile ? this.popupProcessorMobile() : this.popupProcessor();" } }, - "html": "
选择决策组
选择决策
填写意见
手写
选择人员
确定
取消
这里的queryLoad加载源码,load事件执行初始化
" + "html": "
选择决策组
选择决策
填写意见
手写
选择人员
确定
取消
这里的queryLoad加载源码,load事件执行初始化
" } } \ No newline at end of file diff --git a/o2web/source/x_component_process_FormDesigner/Module/Form/template/test.json b/o2web/source/x_component_process_FormDesigner/Module/Form/template/test.json new file mode 100644 index 0000000000..3cd611ad05 --- /dev/null +++ b/o2web/source/x_component_process_FormDesigner/Module/Form/template/test.json @@ -0,0 +1,608 @@ +{ + "json": { + "id": "3af5d031-b50b-465b-bc8c-cc13e3327549", + "name": "自定义提交表单Mobile端模板", + "type": "Form", + "mode": "Mobile", + "application": "1b77e104-b0d3-45f0-944d-79b825d2a27e", + "applicationName": "003测试", + "styles": { + "background-color": "#f0f0f0" + }, + "cssLinks": [], + "scriptSrc": [], + "moduleList": { + "submitNode": { + "id": "submitNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "Mobile1ba2edfb-8d28-4058-9d76-4f9d53f5e613submitNode", + "moduleName": "div", + "recoveryStyles": { + "height": "100%", + "min-height": "280px", + "background-color": "#eeeeee" + }, + "preprocessing": "y" + }, + "submitInnerNode": { + "id": "submitInnerNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613submitInnerNode", + "moduleName": "div", + "preprocessing": "y" + }, + "submitContentWrapNode": { + "id": "submitContentWrapNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613div", + "moduleName": "div", + "preprocessing": "y" + }, + "submitContentNode": { + "id": "submitContentNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613div", + "moduleName": "div", + "preprocessing": "y" + }, + "submitContentInnerNode": { + "id": "submitContentInnerNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613submitContentInnerNode", + "moduleName": "div", + "preprocessing": "y" + }, + "routeGroupArea": { + "id": "routeGroupArea", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613routeGroupArea", + "moduleName": "div", + "recoveryStyles": { + "overflow": "hidden", + "min-height": "40px", + "background-color": "#ffffff", + "padding": "0xp 20px" + }, + "preprocessing": "y" + }, + "routeSelectorArea": { + "id": "routeSelectorArea", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613routeSelectorArea", + "moduleName": "div", + "recoveryStyles": { + "overflow": "hidden", + "min-height": "40px", + "background-color": "#ffffff", + "padding": "0xp 20px" + }, + "preprocessing": "y" + }, + "inputOpinionNode": { + "id": "inputOpinionNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613inputOpinionNode", + "moduleName": "div", + "recoveryStyles": { + "height": "129px", + "border-right": "0px solid #6681a5", + "overflow": "hidden", + "border-left": "0px solid #6681a5", + "background-color": "#EEE" + }, + "preprocessing": "y" + }, + "inputTextarea": { + "id": "inputTextarea", + "type": "Textarea", + "defaultValue": { + "code": "", + "html": "" + }, + "compute": "create", + "section": "no", + "sectionBy": "person", + "properties": { + "placeholder": "请在此处填写流程意见" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613inputTextarea", + "isReadonly": false, + "moduleName": "textarea", + "recoveryStyles": { + "border": "0px solid #ccc", + "color": "#666" + }, + "recoveryInputStyles": { + "height": "120px", + "background-color": "#fff", + "border": "1px solid #eeeeee", + "margin-right": "1px", + "width": "100%", + "font-size": "100%", + "resize": "none", + "border-image": "none", + "padding": "3px", + "overflow-x": "hidden", + "overflow-y": "auto", + "color": "#666", + "border-bottom": "1px solid #ccc" + }, + "preprocessing": "y" + }, + "mediaActionArea": { + "id": "mediaActionArea", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613mediaActionArea", + "moduleName": "div", + "recoveryStyles": { + "position": "relative", + "height": "25px", + "line-height": "25px", + "top": "-32px", + "margin-right": "5px" + }, + "preprocessing": "y" + }, + "handwritingAction": { + "id": "handwritingAction", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "properties": { + "text": "手写" + }, + "isSaved": true, + "pid": "db627f2f-ec8d-4c02-ba90-2e083ebd9dafhandwritingAction", + "moduleName": "div", + "recoveryStyles": { + "float": "right", + "border": "1px solid #6681a5", + "border-radius": "3px", + "cursor": "pointer", + "padding-left": "24px", + "padding-right": "5px", + "margin-left": "5px", + "background": "url(/x_component_process_Work/$Processor/default/write.png) no-repeat 5px center", + "width": "28px", + "height": "25px" + }, + "preprocessing": "y" + }, + "selectIdeaNode": { + "id": "selectIdeaNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613selectIdeaNode", + "moduleName": "div", + "recoveryStyles": { + "background-color": "#eee", + "max-height": "200px", + "clear": "both", + "overflow": "hidden" + }, + "preprocessing": "y" + }, + "selectIdeaAreaNode": { + "id": "selectIdeaAreaNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613selectIdeaAreaNode", + "moduleName": "div", + "recoveryStyles": { + "overflow": "auto", + "max-height": "200px" + }, + "preprocessing": "y" + }, + "orgsArea": { + "id": "orgsArea", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613orgsArea", + "moduleName": "div", + "preprocessing": "y" + }, + "submitButtonNode": { + "id": "submitButtonNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613submitButtonNode", + "moduleName": "div", + "recoveryStyles": { + "height": "50px", + "overflow": "hidden", + "clear": "both", + "margin-top": "10px" + }, + "preprocessing": "y" + }, + "routeGroupTitle": { + "id": "routeGroupTitle", + "type": "Label", + "valueType": "text", + "text": "选择决策组", + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613routeGroupTitle", + "moduleName": "label", + "recoveryStyles": { + "overflow": "hidden", + "height": "30px", + "line-height": "30px", + "font-size": "14px", + "font-weight": "bold", + "background-color": "#eeeeee", + "color": "#333333", + "padding-left": "20px" + }, + "preprocessing": "y" + }, + "routeSelectorTitle": { + "id": "routeSelectorTitle", + "type": "Label", + "valueType": "text", + "text": "选择决策", + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613routeSelectorTitle", + "moduleName": "label", + "recoveryStyles": { + "overflow": "hidden", + "height": "30px", + "line-height": "30px", + "font-size": "14px", + "font-weight": "bold", + "background-color": "#eeeeee", + "color": "#333333", + "padding-left": "20px" + }, + "preprocessing": "y" + }, + "routeOpinionTile": { + "id": "routeOpinionTile", + "type": "Label", + "valueType": "text", + "text": "填写意见", + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613routeOpinionTile", + "moduleName": "label", + "recoveryStyles": { + "overflow": "hidden", + "height": "30px", + "line-height": "30px", + "font-size": "14px", + "font-weight": "bold", + "background-color": "#eeeeee", + "color": "#333333", + "padding-left": "20px" + }, + "preprocessing": "y" + }, + "orgsTile": { + "id": "orgsTile", + "type": "Label", + "valueType": "text", + "text": "选择人员", + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613orgsTile", + "moduleName": "label", + "recoveryStyles": { + "overflow": "hidden", + "height": "30px", + "line-height": "30px", + "font-size": "14px", + "font-weight": "bold", + "background-color": "#eeeeee", + "color": "#333333", + "padding-left": "20px" + }, + "preprocessing": "y" + }, + "okButton": { + "id": "okButton", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613div", + "moduleName": "div", + "recoveryStyles": { + "width": "45%", + "height": "3em", + "float": "left", + "margin-left": "0.5em", + "color": "#ffffff", + "background": "#3296FA", + "border-radius": "5px", + "border": "1px solid #3296FA" + }, + "preprocessing": "y" + }, + "cancelButton": { + "id": "cancelButton", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613div", + "moduleName": "div", + "recoveryStyles": { + "width": "45%", + "height": "3em", + "float": "right", + "margin-right": "0.5em", + "background": "#ffffff", + "border-radius": "5px", + "border": "1px solid #dfdfdf" + }, + "preprocessing": "y" + }, + "okIconNode": { + "id": "okIconNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613div", + "moduleName": "div", + "recoveryStyles": { + "height": "3em", + "width": "3em", + "float": "left", + "background": "url(/x_component_process_Work/$Processor/default/ok-18.png) no-repeat center center" + }, + "preprocessing": "y" + }, + "okTextNode": { + "id": "okTextNode", + "type": "Label", + "valueType": "text", + "text": "确定", + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613label", + "moduleName": "label", + "recoveryStyles": { + "font-size": "1em", + "margin-left": "3em", + "margin-right": "3em", + "line-height": "3em", + "text-align": "center" + }, + "preprocessing": "y" + }, + "cancelIconNode": { + "id": "cancelIconNode", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613div", + "moduleName": "div", + "recoveryStyles": { + "height": "3em", + "width": "3em", + "float": "left", + "background": "url(/x_component_process_Work/$Processor/default/cancel-18.png) no-repeat center center" + }, + "preprocessing": "y" + }, + "label": { + "id": "label", + "type": "Label", + "valueType": "text", + "text": "取消", + "isSaved": true, + "pid": "1ba2edfb-8d28-4058-9d76-4f9d53f5e613label", + "moduleName": "label", + "recoveryStyles": { + "font-size": "1em", + "color": "#191F25", + "margin-left": "3em", + "margin-right": "3em", + "line-height": "3em", + "text-align": "center" + }, + "preprocessing": "y" + }, + "div_loadSubmitForm": { + "id": "div_loadSubmitForm", + "type": "Div", + "defaultValue": { + "code": "", + "html": "" + }, + "events": { + "queryLoad": { + "code": "MWF.xDesktop.requireApp(\"process.Xform\", \"Org\", null, false);\r\n\r\nthis.define(\"loadProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nthis.define(\"popupProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nwindow.O2ProcessorMobile = new Class({\r\n Implements: [Events],\r\n initialize: function (macro) {\r\n\r\n debugger;\r\n\r\n this.macro = macro;\r\n this.app = macro.form.app;\r\n this.form = this.app.appForm;\r\n this.task = this.form.businessData.task;\r\n this.appContentNode = $(document.body); //this.app.content;\r\n\r\n this.initConstant();\r\n this.getCss();\r\n this.getAllNode();\r\n\r\n // this.loadCss();\r\n\r\n },\r\n initConstant: function () {\r\n this.DefaultDecisionOpinionName = \"其它\"; //默认的决策组,如果当前节点有决策组,但是某些决策没有落在决策组中,那么使用默认决策组\r\n },\r\n load: function () {\r\n if ( this.status === \"show\" || this.status === \"loading\" ){\r\n \r\n }else if (this.status === \"closed\" ) {\r\n this.node.show();\r\n // this.positionSeted = false; //重新设置位置\r\n // this.setSize( this.getCurrentRouteOrgList().length );\r\n this.status = \"show\";\r\n } else {\r\n this.status = \"loading\";\r\n this.container = new Element(\"div\").inject(this.appContentNode);\r\n this.node.setStyles({\r\n \"width\" : \"100%\",\r\n \"position\" : \"absolute\",\r\n \"z-index\" : \"101\"\r\n })\r\n this.loadContent();\r\n this.setEvents();\r\n this.node.inject(this.container);\r\n this.status = \"show\";\r\n }\r\n },\r\n loadContent: function () {\r\n this.getRouteGroupList();\r\n\r\n var orgLength = this.getMaxOrgLength();\r\n if (orgLength === 0) { //流程选人数量为0\r\n if (this.orgsTile) {\r\n this.orgsTile.destroy();\r\n this.orgsTile = null;\r\n }\r\n if (this.orgsArea) {\r\n this.orgsArea.destroy();\r\n this.orgsArea = null;\r\n }\r\n }\r\n\r\n this.setOpinion(); //意见\r\n\r\n if (this.hasDecisionOpinion) { //有决策组\r\n this.setRouteGroupList();\r\n } else { //没有决策组\r\n if (this.routeGroupTitle) {\r\n this.routeGroupTitle.destroy();\r\n this.routeGroupTitle = null;\r\n }\r\n if (this.routeGroupArea) {\r\n this.routeGroupArea.destroy();\r\n this.routeGroupArea = null;\r\n }\r\n // this.routeSelectorArea.setStyles( this.css.routeSelectorArea );\r\n // if( this.inputOpinionNodeTd && this.selectIdeaNodeTd ){\r\n // this.inputOpinionNodeTd.set( \"width\", orgLength < 2 ? \"60%\" : \"50%\" );\r\n // }\r\n this.setRouteList();\r\n }\r\n },\r\n\r\n getAllNode: function () {\r\n this.node = this.getNode(\"submitNode\");\r\n\r\n this.buttonNode = this.getNode(\"submitButtonNode\");\r\n\r\n this.contentWrapNode = this.getNode(\"submitContentWrapNode\");\r\n this.contentNode = this.getNode(\"submitContentNode\");\r\n this.contentInnerNode = this.getNode(\"submitContentInnerNode\");\r\n\r\n this.routeGroupTitle = this.getNode(\"routeGroupTitle\");\r\n this.routeGroupArea = this.getNode(\"routeGroupArea\");\r\n\r\n this.routeSelectorTitle = this.getNode(\"routeSelectorTitle\");\r\n this.routeSelectorArea = this.getNode(\"routeSelectorArea\");\r\n\r\n this.selectIdeaAreaNode = this.getNode(\"selectIdeaAreaNode\");\r\n\r\n this.inputOpinionNode = this.getNode(\"inputOpinionNode\");\r\n this.inputTextarea = this.getNode(\"inputTextarea\");\r\n\r\n this.handwritingAction = this.getNode(\"handwritingAction\");\r\n\r\n this.orgsTile = this.getNode(\"orgsTile\");\r\n this.orgsArea = this.getNode(\"orgsArea\");\r\n\r\n this.buttonsArea = this.getNode(\"submitButtonNode\");\r\n this.okButton = this.getNode(\"okButton\");\r\n this.cancelButton = this.getNode(\"cancelButton\");\r\n },\r\n setEvents: function () {\r\n if (this.cancelButton) {\r\n this.cancelButton.addEvent(\"click\", function () {\r\n this.close();\r\n this.fireEvent(\"cancel\");\r\n }.bind(this));\r\n }\r\n if (this.okButton) {\r\n this.okButton.addEvent(\"click\", function (ev) {\r\n this.submit(ev)\r\n }.bind(this));\r\n }\r\n },\r\n getNode: function (name) {\r\n if (this.macro.form.get(name)) {\r\n return this.macro.form.get(name).node;\r\n }\r\n if (this.form.allForName[name]) {\r\n return this.form.allForName[name].node;\r\n }\r\n },\r\n setData: function (name, value) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.setData(value) : null;\r\n },\r\n getData: function (name) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.getData() : null;\r\n },\r\n getRouteConfigList: function () { //获取当前待办的所有路由设置\r\n if (!this.routeConfigList) {\r\n o2.Actions.get(\"x_processplatform_assemble_surface\").listRoute({\"valueList\": this.task.routeList}, function (json) {\r\n json.data.each(function (d) {\r\n d.selectConfigList = JSON.parse(d.selectConfig || \"[]\");\r\n }.bind(this));\r\n this.routeConfigList = json.data;\r\n }.bind(this), null, false);\r\n }\r\n return this.routeConfigList;\r\n },\r\n getRouteConfig: function (routeId) { //根据某个ID获取路由设置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i];\r\n }\r\n }\r\n },\r\n getMaxOrgLength: function () { //获取当前待办下可能的最多选人组件个数\r\n var routeList = this.getRouteConfigList();\r\n var length = 0;\r\n routeList.each(function (route) {\r\n if (route.hiddenScriptText) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n length = Math.max(length, route.selectConfigList.length);\r\n }.bind(this));\r\n return length;\r\n },\r\n getOrgConfig: function (routeId) { //获取人员选择配置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i].selectConfigList;\r\n }\r\n }\r\n },\r\n getCurrentRouteSelectorList: function () { //获取当前路由的人员选择器对象\r\n var selectorList = [];\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n if (!orgList) return [];\r\n orgList.each(function (org) {\r\n if (org.selector && org.selector.selector) {\r\n selectorList.push(org.selector.selector);\r\n }\r\n }.bind(this))\r\n return selectorList;\r\n },\r\n getCurrentRouteOrgList: function () { //获取当前路由的org对象\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n return orgList || [];\r\n },\r\n getSelectorSelectedData: function (filedName) { //获取人员选择器选择的值\r\n var data = [];\r\n var orgList = this.getCurrentRouteOrgList();\r\n for (var i = 0; i < orgList.length; i++) {\r\n var org = orgList[i];\r\n if (org.json.name === filedName) {\r\n var selector = org.selector.selector;\r\n selector.selectedItems.each(function (item) {\r\n data.push(item.data)\r\n })\r\n }\r\n }\r\n return data;\r\n },\r\n getMarginY: function (node) {\r\n return (node.getStyle(\"margin-top\").toInt() || 0) +\r\n (node.getStyle(\"margin-bottom\").toInt() || 0);\r\n // (node.getStyle(\"padding-top\").toInt() || 0 ) +\r\n // (node.getStyle(\"padding-bottom\").toInt() || 0 )+\r\n // (node.getStyle(\"border-top-width\").toInt() || 0 ) +\r\n // (node.getStyle(\"border-bottom-width\").toInt() || 0 );\r\n },\r\n setSize: function (currentOrgLength) {\r\n var lines = ((currentOrgLength + 1) / 2).toInt();\r\n\r\n if (lines > 0) {\r\n this.showOrgsArea();\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n if (this.buttonsArea) {\r\n var bodySize = this.appContentNode.getSize();\r\n var nodeHeight = bodySize.y - this.getMarginY(this.node);\r\n this.node.setStyles({\r\n \"overflow-y\": \"hidden\",\r\n \"height\": nodeHeight\r\n });\r\n var buttonsAreaSize = this.buttonsArea.getSize();\r\n this.contentNode.setStyles({\r\n \"height\": nodeHeight - buttonsAreaSize.y - this.getMarginY(this.buttonsArea) - this.getMarginY(this.contentNode),\r\n \"overflow-y\": \"auto\"\r\n })\r\n }\r\n\r\n this.fireEvent(\"resize\");\r\n },\r\n showOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.show();\r\n if (this.orgsArea) this.orgsArea.show();\r\n },\r\n hideOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.hide();\r\n if (this.orgsArea) this.orgsArea.hide();\r\n },\r\n\r\n /*决策和决策组相关 开始*/\r\n getRouteGroupList: function () { //获取决策组并格式化成对象\r\n if (this.routeGroupObject) return this.routeGroupObject;\r\n this.routeGroupObject = {};\r\n this.routeGroupNameList = [];\r\n this.hasDecisionOpinion = false;\r\n var routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n route.displayName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n } else {\r\n route.displayName = route.name;\r\n }\r\n\r\n if (route.decisionOpinion) { //决策组名称\r\n this.hasDecisionOpinion = true;\r\n var decisionOpinionList = route.decisionOpinion.split(\"#\");\r\n decisionOpinionList.each(function (decisionOption) {\r\n this.routeGroupNameList.combine([decisionOption]);\r\n var d = this.splitByStartNumber(decisionOption);\r\n if (!this.routeGroupObject[d.name]) this.routeGroupObject[d.name] = [];\r\n this.routeGroupObject[d.name].push(route);\r\n }.bind(this))\r\n } else {\r\n var defaultName = this.DefaultDecisionOpinionName;\r\n this.routeGroupNameList.combine([defaultName]);\r\n if (!this.routeGroupObject[defaultName]) this.routeGroupObject[defaultName] = [];\r\n this.routeGroupObject[defaultName].push(route);\r\n }\r\n }.bind(this));\r\n return this.routeGroupObject;\r\n },\r\n splitByStartNumber: function (str) {\r\n var obj = {\r\n name: \"\",\r\n order: \"\"\r\n };\r\n for (var i = 0; i < str.length; i++) {\r\n if (parseInt(str.substr(i, 1)).toString() !== \"NaN\") {\r\n obj.order = obj.order + str.substr(i, 1);\r\n } else {\r\n obj.name = str.substr(i, str.length);\r\n break;\r\n }\r\n }\r\n return obj;\r\n },\r\n setRouteGroupList: function () { //排序并创建决策组DOM对象\r\n var _self = this;\r\n\r\n //根据决策组的排序号进行排序\r\n var keys = this.routeGroupNameList;\r\n keys.sort(function (a, b) {\r\n var aIdx = parseInt(this.splitByStartNumber(a).order || \"9999999\");\r\n var bIdx = parseInt(this.splitByStartNumber(b).order || \"9999999\");\r\n return aIdx - bIdx;\r\n }.bind(this));\r\n\r\n var list = [];\r\n keys.each(function (k) {\r\n list.push(this.splitByStartNumber(k).name)\r\n }.bind(this));\r\n\r\n debugger;\r\n\r\n list.each(function (routeGroupName) {\r\n var routeList = this.routeGroupObject[routeGroupName];\r\n var routeGroupNode = new Element(\"div\", {\r\n \"styles\": this.css.routeGroupNode,\r\n \"text\": routeGroupName\r\n }).inject(this.routeGroupArea);\r\n routeGroupNode.store(\"routeList\", routeList);\r\n routeGroupNode.store(\"routeGroupName\", routeGroupName);\r\n\r\n routeGroupNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRouteGroup(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRouteGroup(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRouteGroup(this);\r\n }\r\n });\r\n\r\n if (keys.length === 1) { //如果决策组只有1个,则默认选中\r\n this.selectRouteGroup(routeGroupNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n }.bind(this))\r\n },\r\n overRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n },\r\n outRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n },\r\n selectRouteGroup: function (node) { //选中决策组执行...\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode);\r\n //this.selectedRouteGroup.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRouteGroup = node;\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode_selected);\r\n //this.selectedRouteGroup.addClass(\"mainColor_bg\");\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n\r\n } else {\r\n\r\n }\r\n } else {\r\n this.selectedRouteGroup = node;\r\n node.setStyles(this.css.routeGroupNode_selected);\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n }\r\n this.routeGroupArea.setStyle(\"background-color\", \"#FFF\");\r\n },\r\n setRouteList: function (routeList) { //创建决策对象\r\n var _self = this;\r\n this.routeSelectorArea.empty();\r\n this.selectedRoute = null;\r\n\r\n if (!routeList) routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n var routeName = route.name;\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n routeName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n }\r\n var routeNode = new Element(\"div\", {\r\n \"styles\": this.css.routeNode,\r\n \"text\": routeName\r\n }).inject(this.routeSelectorArea);\r\n routeNode.store(\"route\", route.id);\r\n routeNode.store(\"routeName\", route.name);\r\n\r\n routeNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRoute(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRoute(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRoute(this);\r\n }\r\n });\r\n\r\n if (routeList.length == 1 || route.sole) { //sole表示优先路由\r\n this.selectRoute(routeNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n\r\n }.bind(this));\r\n },\r\n overRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n },\r\n outRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n },\r\n selectRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n\r\n } else {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.addClass(\"lightColor_bg\");\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = null;\r\n }\r\n } else {\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#FFF\");\r\n\r\n this.loadOrgs(this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\");\r\n\r\n if (this.form.data.json.events && this.form.data.json.events.afterSelectRoute) {\r\n this.form.Macro.exec(this.form.data.json.events.afterSelectRoute.code, node);\r\n }\r\n\r\n },\r\n /*决策和决策组相关 结束*/\r\n\r\n setOpinion: function () {\r\n if (!this.inputTextarea) return;\r\n if (this.handwritingAction) this.handwritingAction.addEvent(\"click\", function () {\r\n window.setTimeout( function(){\r\n this.handwriting();\r\n }.bind(this), 100 )\r\n }.bind(this));\r\n\r\n if (this.selectIdeaAreaNode) {\r\n MWF.require(\"MWF.widget.UUID\", function () {\r\n MWF.UD.getDataJson(\"idea\", function (json) {\r\n if (json) {\r\n if (json.ideas) {\r\n this.setIdeaList(json.ideas);\r\n }\r\n } else {\r\n MWF.UD.getPublicData(\"idea\", function (pjson) {\r\n if (pjson) {\r\n if (pjson.ideas) {\r\n this.setIdeaList(pjson.ideas);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this));\r\n }.bind(this));\r\n }\r\n\r\n },\r\n\r\n audioRecord: function () {\r\n if (!this.audioRecordNode) this.createAudioRecord();\r\n this.audioRecordNode.show();\r\n this.audioRecordNode.position({\r\n \"relativeTo\": this.options.mediaNode || this.node,\r\n \"position\": \"center\",\r\n \"edge\": \"center\"\r\n });\r\n\r\n MWF.require(\"MWF.widget.AudioRecorder\", function () {\r\n this.audioRecorder = new MWF.widget.AudioRecorder(this.audioRecordNode, {\r\n \"onSave\": function (blobFile) {\r\n this.soundFile = blobFile;\r\n this.audioRecordNode.hide();\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.soundFile = null;\r\n this.audioRecordNode.hide();\r\n }.bind(this)\r\n }, null);\r\n }.bind(this));\r\n },\r\n createAudioRecord: function () {\r\n this.audioRecordNode = new Element(\"div\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n var size = (this.options.mediaNode || this.node).getSize();\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.audioRecordNode.setStyles({\r\n \"height\": \"\" + size.y + \"px\",\r\n \"width\": \"\" + size.x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n },\r\n\r\n handwriting: function () {\r\n if (!this.handwritingNode) this.createHandwriting();\r\n if(this.handwritingNodeMask)this.handwritingNodeMask.show();\r\n this.handwritingNode.show();\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n },\r\n createHandwriting: function () {\r\n this.handwritingNodeMask = new Element(\"div.handwritingMask\", {\"styles\": this.css.handwritingMask}).inject(this.node);\r\n\r\n this.handwritingNode = new Element(\"div.handwritingNode\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n //var size = (this.options.mediaNode || this.node).getSize();\r\n //var y = size.y;\r\n //var x = size.x;\r\n //兼容以前的默认高宽\r\n\r\n debugger;\r\n\r\n var bodySize = $(document.body).getSize();\r\n var x = bodySize.x;\r\n var y = bodySize.y;\r\n\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.handwritingNode.setStyles({\r\n \"height\": \"\" + y + \"px\",\r\n \"width\": \"\" + x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n this.handwritingNode.addEvent('touchmove' , function(e){\r\n e.preventDefault();\r\n });\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n this.handwritingAreaNode = new Element(\"div\", {\"styles\": this.css.handwritingAreaNode}).inject(this.handwritingNode);\r\n // this.handwritingActionNode = new Element(\"div\", {\r\n // \"styles\": this.css.handwritingActionNode,\r\n // \"text\": MWF.xApplication.process.Work.LP.saveWrite\r\n // }).inject(this.handwritingNode);\r\n // var h = this.handwritingActionNode.getSize().y + this.handwritingActionNode.getStyle(\"margin-top\").toInt() + this.handwritingActionNode.getStyle(\"margin-bottom\").toInt();\r\n // h = y - h;\r\n // this.handwritingAreaNode.setStyle(\"height\", \"\" + h + \"px\");\r\n this.handwritingAreaNode.setStyle(\"height\", \"\" + y + \"px\");\r\n\r\n MWF.require(\"MWF.widget.Tablet\", function () {\r\n var handWritingOptions = {\r\n \"style\": \"default\",\r\n \"contentWidth\": 0,\r\n \"contentHeight\": 0,\r\n \"onSave\": function (base64code, base64Image, imageFile) {\r\n this.handwritingFile = imageFile;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n // this.page.get(\"div_image\").node.set(\"src\",base64Image);\r\n\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.handwritingFile = null;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n }.bind(this)\r\n };\r\n handWritingOptions.tools = [\r\n \"undo\",\r\n \"redo\", \"|\",\r\n \"reset\", \"|\",\r\n \"size\",\r\n \"cancel\"\r\n ]\r\n this.tablet = new MWF.widget.Tablet(this.handwritingAreaNode, handWritingOptions, null);\r\n this.tablet.load();\r\n }.bind(this));\r\n\r\n // this.handwritingActionNode.addEvent(\"click\", function () {\r\n // //this.handwritingNode.hide();\r\n // if (this.tablet) this.tablet.save();\r\n // }.bind(this));\r\n },\r\n\r\n setIdeaList: function (ideas) {\r\n var _self = this;\r\n ideas.each(function (idea) {\r\n new Element(\"div\", {\r\n \"styles\": this.css.selectIdeaItemNode,\r\n \"text\": idea,\r\n \"events\": {\r\n \"click\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"dblclick\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"mouseover\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode_over);\r\n },\r\n \"mouseout\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode);\r\n }\r\n }\r\n }).inject(this.selectIdeaAreaNode);\r\n }.bind(this));\r\n },\r\n submit: function (ev) {\r\n if (this.hasDecisionOpinion && !this.selectedRouteGroup) {\r\n this.routeGroupArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"top\"},\r\n \"请先选择决策组\",\r\n this.routeGroupArea,\r\n null, //{\"x\": 0, \"y\": 30}\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n\r\n if (!this.selectedRoute) {\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.routeSelectorArea,\r\n delayClose: 6000,\r\n content: \"请先选择决策\"\r\n });\r\n return false;\r\n }\r\n var routeName = this.selectedRoute.retrieve(\"routeName\") || this.selectedRoute.get(\"text\");\r\n var opinion = this.getData(\"inputTextarea\");\r\n if (opinion === MWF.xApplication.process.Work.LP.inputText) opinion = \"\";\r\n var medias = [];\r\n if (this.handwritingFile) medias.push(this.handwritingFile);\r\n if (this.soundFile) medias.push(this.soundFile);\r\n if (this.videoFile) medias.push(this.videoFile);\r\n\r\n var currentRouteId = this.selectedRoute.retrieve(\"route\");\r\n var routeConfig = this.getRouteConfig(currentRouteId);\r\n if (!opinion && medias.length === 0) {\r\n if (routeConfig.opinionRequired == true) {\r\n this.inputTextarea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.inputTextarea,\r\n delayClose: 6000,\r\n content: \"请填写意见\"\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: validation\r\n });\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: \"路由校验失败\"\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //var array = [routeName, opinion, medias];\r\n //this.node.mask({\r\n // \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n // \"destroyOnHide\": true,\r\n // \"style\": {\r\n // \"background-color\": \"#999\",\r\n // \"opacity\": 0.3,\r\n // \"z-index\":600\r\n // }\r\n //});\r\n //this.fireEvent(\"submit\", array );\r\n\r\n var appendTaskOrgItem;\r\n if (routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\") {\r\n if (!this.orgItems || this.orgItems.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"没有配置转交人,请联系管理员\" //\"没有配置转交人,请联系管理员\"\r\n });\r\n return false;\r\n } else {\r\n appendTaskOrgItem = this.orgItems[0]\r\n }\r\n }\r\n\r\n if (!this.saveOrgs()) return false;\r\n\r\n //this.saveOrgsWithCheckEmpower( function(){\r\n var appandTaskIdentityList;\r\n if (appendTaskOrgItem) {\r\n appandTaskIdentityList = appendTaskOrgItem.getData();\r\n if (!appandTaskIdentityList || appandTaskIdentityList.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"请选择转交人\"\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n validation,\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n \"路由校验失败\",\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n this.node.mask({\r\n \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n \"destroyOnHide\": true,\r\n \"style\": {\r\n \"background-color\": \"#999\",\r\n \"opacity\": 0.3,\r\n \"z-index\": 600\r\n }\r\n });\r\n\r\n // var array = [ routeName, opinion, medias, appandTaskIdentityList, this.orgItems, function(){\r\n // if(appendTaskOrgItem)appendTaskOrgItem.setData([]);\r\n // }];\r\n\r\n var op = this.form.getOpinion();\r\n var mds = op.medias;\r\n\r\n if (!medias || !medias.length) {\r\n medias = mds;\r\n } else {\r\n medias = medias.concat(mds)\r\n }\r\n\r\n this.form.submitWork(routeName, opinion, medias, function () {\r\n this.close();\r\n }.bind(this), this, null, appandTaskIdentityList, this.orgItems, function () {\r\n if (appendTaskOrgItem) appendTaskOrgItem.setData([]);\r\n this.setData(\"inputTextarea\", \"\");\r\n }.bind(this));\r\n\r\n // this.fireEvent(\"submit\", array );\r\n },\r\n\r\n close: function () {\r\n this.node.setStyle(\"display\", \"none\");\r\n this.status = \"closed\";\r\n },\r\n destroy: function () {\r\n // this.node.empty();\r\n // delete this.task;\r\n // delete this.node;\r\n // delete this.routeSelectorTile;\r\n // delete this.routeSelectorArea;\r\n // delete this.routeOpinionTile;\r\n // delete this.routeOpinionArea;\r\n // delete this.buttonsArea;\r\n // delete this.inputOpinionNode;\r\n // delete this.inputTextarea;\r\n // delete this.cancelButton;\r\n // delete this.okButton;\r\n },\r\n loadOrgs: function (route) {\r\n if (!this.form || !route) {\r\n this.hideOrgsArea();\r\n return;\r\n } else {\r\n this.showOrgsArea();\r\n }\r\n if (!this.orgTableObject) this.orgTableObject = {};\r\n if (!this.orgItemsObject) this.orgItemsObject = {};\r\n var isLoaded = false;\r\n for (var key in this.orgTableObject) {\r\n if (route === key) {\r\n this.orgTableObject[key].show();\r\n this.orgItems = this.orgItemsObject[key] || [];\r\n var data = this.getOrgConfig(route);\r\n isLoaded = true;\r\n } else {\r\n this.orgTableObject[key].hide();\r\n }\r\n }\r\n if (isLoaded) return;\r\n\r\n this.orgItems = [];\r\n this.orgItemsObject[route] = this.orgItems;\r\n\r\n var data = this.getOrgConfig(route);\r\n var routeConfig = this.getRouteConfig(route);\r\n var ignoreFirstOrgOldData = false; //(routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\");\r\n this.setSize(data.length);\r\n if (data.length) {\r\n this.showOrgsArea();\r\n\r\n var routeOrgTable = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTable\r\n }).inject(this.orgsArea);\r\n this.orgTableObject[route] = routeOrgTable;\r\n\r\n data.each(function (config, i) {\r\n var sNode = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTr\r\n }).inject(routeOrgTable);\r\n this.loadOrg(sNode, config, ignoreFirstOrgOldData && i == 0)\r\n }.bind(this))\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n },\r\n loadOrg: function (container, json, position, ignoreOldData) {\r\n var titleNode = new Element(\"div.selectorTitle\", {\r\n \"styles\": this.css.selectorTitle\r\n }).inject(container);\r\n var titleTextNode = new Element(\"div.selectorTitleText\", {\r\n \"text\": json.title,\r\n \"styles\": this.css.selectorTitleText\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.selectorContent\", {\r\n \"styles\": this.css.selectorContent\r\n }).inject(container);\r\n\r\n var errorNode = new Element(\"div.selectorErrorNode\", {\r\n \"styles\": this.css.selectorErrorNode\r\n }).inject(container);\r\n\r\n var org = new O2ProcessorMobile.Org(contentNode, this.form, json, this, {\r\n onSelect: function (items, data) {\r\n if (!data || !data.length) {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n } else {\r\n contentNode.setStyles(this.css.selectorContent);\r\n }\r\n }.bind(this)\r\n });\r\n org.ignoreOldData = ignoreOldData;\r\n org.errContainer = errorNode;\r\n org.summitDlalog = this;\r\n this.orgItems.push(org);\r\n\r\n titleNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n contentNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n\r\n var defaultValue = org.getValue();\r\n org.loadOrgWidget(defaultValue, contentNode);\r\n if (!defaultValue || defaultValue.length == 0) {\r\n {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n }\r\n }\r\n\r\n },\r\n validationOrgs: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.validation()) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n isOrgsHasEmpower: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = false;\r\n this.needCheckEmpowerOrg = [];\r\n this.orgItems.each(function (item) {\r\n if (item.hasEmpowerIdentity()) {\r\n this.needCheckEmpowerOrg.push(item);\r\n flag = true;\r\n }\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgs: function (keepSilent) {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.save(!keepSilent)) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgsWithCheckEmpower: function (callback) {\r\n debugger;\r\n if (!this.orgItems || !this.orgItems.length) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n if (!this.validationOrgs()) return false;\r\n if (!this.isOrgsHasEmpower()) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n //this.checkEmpowerMode = true;\r\n this.showEmpowerDlg(callback);\r\n },\r\n showEmpowerDlg: function (callback) {\r\n\r\n //this.needCheckEmpowerOrg.each( function(org){\r\n // org.saveCheckedEmpowerData();\r\n //}.bind(this));\r\n\r\n var empowerNode = new Element(\"div.empowerNode\", {\"styles\": this.css.empowerNode});\r\n var empowerTitleNode = new Element(\"div\", {\r\n text: \"下列人员对工作进行了授权,选择后文件将发送给被授权人,取消选择后文件将发送给授权者本人\",\r\n styles: this.css.empowerTitleNode\r\n }).inject(empowerNode);\r\n\r\n var orgs = this.needCheckEmpowerOrg;\r\n var len = orgs.length;\r\n var lines = ((len + 1) / 2).toInt();\r\n\r\n var empowerTable = new Element(\"table\", {\r\n \"cellspacing\": 0, \"cellpadding\": 0, \"border\": 0, \"width\": \"100%\",\r\n \"styles\": this.css.empowerTable\r\n }).inject(empowerNode);\r\n\r\n for (var n = 0; n < lines; n++) {\r\n var tr = new Element(\"tr\").inject(empowerTable);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerOddTd}).inject(tr);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerEvenTd}).inject(tr);\r\n }\r\n\r\n var trs = empowerTable.getElements(\"tr\");\r\n orgs.each(function (org, i) {\r\n var sNode;\r\n var width;\r\n if (i + 1 == len && (len % 2 === 1)) {\r\n sNode = trs[trs.length - 1].getFirst(\"td\");\r\n sNode.set(\"colspan\", 2);\r\n trs[trs.length - 1].getLast(\"td\").destroy();\r\n width = \"50%\";\r\n } else {\r\n var row = ((i + 2) / 2).toInt();\r\n var tr = trs[row - 1];\r\n sNode = (i % 2 === 0) ? tr.getFirst(\"td\") : tr.getLast(\"td\");\r\n }\r\n\r\n var titleNode = new Element(\"div.empowerAreaTitle\", {\r\n \"styles\": this.css.empowerAreaTitle\r\n }).inject(sNode);\r\n\r\n var titleTextNode = new Element(\"div.empowerAreaTitleText\", {\r\n \"text\": org.json.title,\r\n \"styles\": this.css.empowerAreaTitleText\r\n }).inject(titleNode);\r\n\r\n var selectAllNode = new Element(\"div\", {\r\n styles: {\r\n float: \"right\"\r\n }\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.empowerAreaContent\", {\r\n \"styles\": this.css.empowerAreaContent\r\n }).inject(sNode);\r\n\r\n org.loadCheckEmpower(null, contentNode, selectAllNode);\r\n\r\n }.bind(this));\r\n\r\n empowerNode.setStyle(\"height\", lines * this.options.orgHeight + 20);\r\n //var dlgHeight = Math.min( Math.floor( this.form.app.content.getSize().y * 0.9) , lines*this.options.orgHeight + 151 );\r\n\r\n //var width = this.node.retrieve(\"width\");\r\n //empowerNode.setStyle( \"width\", width );\r\n var width = \"880\";\r\n //if( len > 1 ){\r\n // width = \"840\"\r\n //}else{\r\n // width = \"420\"\r\n //}\r\n empowerNode.setStyle(\"width\", width + \"px\");\r\n\r\n this.node.getParent().mask({\r\n \"style\": this.css.mask\r\n });\r\n this.empowerDlg = o2.DL.open({\r\n \"title\": \"授权人员替换选择\",\r\n \"style\": this.form.json.dialogStyle || \"user\",\r\n \"isResize\": false,\r\n \"content\": empowerNode,\r\n //\"container\" : this.node,\r\n \"width\": width, //600,\r\n \"height\": \"auto\", //dlgHeight,\r\n \"mark\": false,\r\n \"buttonList\": [\r\n {\r\n \"type\": \"ok\",\r\n \"text\": \"确定\",\r\n \"action\": function (d, e) {\r\n //if (this.empowerDlg) this.empowerDlg.okButton.click();\r\n\r\n orgs.each(function (org, i) {\r\n org.saveCheckedEmpowerData(function () {\r\n if (i === orgs.length - 1) {\r\n if (callback) callback();\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this)\r\n },\r\n {\r\n \"type\": \"cancel\",\r\n \"text\": \"取消\",\r\n \"action\": function () {\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }.bind(this)\r\n }\r\n ]\r\n });\r\n },\r\n getCss: function () {\r\n this.css = {\r\n\r\n \"routeGroupNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"padding-left\": \"28px\",\r\n \"color\": \"#000\",\r\n \"background-color\": \"#E3E3E3\",\r\n \"min-height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_over\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_selected\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/routegroup_selected.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"border-radius\": \"5px\",\r\n \"height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"padding-left\": \"26px\",\r\n \"padding-right\": \"8px\",\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#f0f0f0\"\r\n },\r\n \"routeNode_over\": {\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"routeNode_selected\": {\r\n \"color\": \"#fff\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/checked.png) no-repeat 5px center\",\r\n \"background-color\": \"#3296FA\"\r\n },\r\n\r\n \"selectIdeaItemNode\": {\r\n \"line-height\": \"18px\",\r\n \"font-size\": \"14px\",\r\n \"cursor\": \"pointer\",\r\n \"background-color\": \"#FFF\",\r\n \"padding\": \"4px 4px 4px 4px\",\r\n \"overflow\": \"hidden\"\r\n },\r\n \"selectIdeaItemNode_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n\r\n \"handwritingNode\": {\r\n \"position\": \"absolute\",\r\n \"background\": \"#ffffff\"\r\n },\r\n \"handwritingActionNode\": {\r\n \"width\": \"70%\",\r\n \"min-width\": \"100px\",\r\n \"height\": \"3em\",\r\n \"line-height\": \"3em\",\r\n \"margin\": \"5px auto\",\r\n \"border-radius\": \"5px\",\r\n \"border\": \"1px solid #3296FA\",\r\n \"background-color\": \"#3296FA\",\r\n \"text-align\": \"center\",\r\n \"color\": \"#ffffff\",\r\n \"font-size\": \"16px\"\r\n },\r\n\r\n \"inputOpinionAudioRecordAction\": {\r\n \"display\": \"none\",\r\n \"float\": \"right\",\r\n \"border\": \"1px solid #6681a5\",\r\n \"border-radius\": \"3px\",\r\n \"cursor\": \"pointer\",\r\n \"padding-left\": \"24px\",\r\n \"padding-right\": \"5px\",\r\n \"margin-left\": \"5px\",\r\n \"background\": \"url(\" + \"/x_component_process_Work/$Processor/default/audioRecord.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeOrgTable\": {},\r\n \"routeOrgTr\": {\r\n \"margin-bottom\": \"10px\"\r\n },\r\n \"routeOrgOddTd\": {\r\n \"width\": \"50%\"\r\n },\r\n \"routeOrgEvenTd\": {\r\n \"width\": \"50%\",\r\n \"border-left\": \"5px solid #ffffff\"\r\n },\r\n\r\n \"selectorTitle\": {\r\n \"padding\": \"0px 4px\",\r\n \"height\": \"30px\",\r\n \"line-height\": \"30px\",\r\n \"font-size\": \"14px\",\r\n // \"font-weight\": \"bold\",\r\n \"color\": \"#000\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/mobile/arrow_right2.png) no-repeat right 10px center\",\r\n \"background-color\": \"#fff\"\r\n },\r\n \"selectorTitle_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"selectorTitleText\": {\r\n// \"float\": \"left\"\r\n },\r\n \"selectorErrorNode\": {\r\n //\"float\" : \"right\",\r\n \"background-color\": \"#fff\",\r\n \"margin-right\": \"5px\",\r\n \"font-weight\": \"normal\"\r\n },\r\n \"selectorContent\": {\r\n \"overflow\": \"hidden\",\r\n \"background-color\": \"#fff\",\r\n \"padding\": \"0px 5px 5px 5px\"\r\n },\r\n \"selectorContent_noItem\": {\r\n \"padding\": \"0px\"\r\n }\r\n }\r\n\r\n }\r\n});\r\n\r\n\r\nO2ProcessorMobile.Org = new Class({\r\n Implements: [Options, Events],\r\n options: {\r\n height : 240,\r\n moduleEvents : [\"queryLoadSelector\",\"postLoadSelector\",\"postLoadContent\",\"queryLoadCategory\",\"postLoadCategory\",\r\n \"selectCategory\", \"unselectCategory\",\"queryLoadItem\",\"postLoadItem\",\"selectItem\", \"unselectItem\",\"change\"]\r\n },\r\n initialize: function (container, form, json, processor, options) {\r\n this.form = form;\r\n this.json = json;\r\n this.processor = processor;\r\n this.container = $(container);\r\n this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n this.setOptions(options);\r\n },\r\n load : function(){\r\n setTimeout( function(){ //如果有输入法界面,这个时候页面的计算不对,所以等100毫秒\r\n var options = this.getOptions();\r\n if(options){\r\n //this.selector = new MWF.O2Selector(this.container, options);\r\n this.selector = new MWF.O2Selector($(document.body), options);\r\n }\r\n }.bind(this), 100 )\r\n },\r\n _getOrgOptions: function(){\r\n this.selectTypeList = typeOf( this.json.selectType ) == \"array\" ? this.json.selectType : [this.json.selectType];\r\n if( this.selectTypeList.contains( \"identity\" ) ) {\r\n this.identityOptions = new O2ProcessorMobile.IdentityOptions(this.form, this.json);\r\n }\r\n if( this.selectTypeList.contains( \"unit\" ) ) {\r\n this.unitOptions = new O2ProcessorMobile.UnitOptions(this.form, this.json);\r\n }\r\n //if( this.selectTypeList.contains( \"group\" ) ){\r\n // this.groupOptions = new MWF.APPOrg.GroupOptions( this.form, this.json );\r\n //}\r\n },\r\n getOptions: function(){\r\n var _self = this;\r\n this._getOrgOptions();\r\n if( this.selectTypeList.length === 0 )return false;\r\n var exclude = [];\r\n if( this.json.exclude ){\r\n var v = this.form.Macro.exec(this.json.exclude.code, this);\r\n exclude = typeOf(v)===\"array\" ? v : [v];\r\n }\r\n\r\n var identityOpt;\r\n if( this.identityOptions ){\r\n identityOpt = this.identityOptions.getOptions();\r\n if (this.json.identityRange!==\"all\"){\r\n if ( !identityOpt.noUnit && (!identityOpt.units || !identityOpt.units.length) ){\r\n this.form.notice(\"无法确定身份的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if ( !identityOpt.noUnit && this.json.dutyRange && this.json.dutyRange!==\"all\"){\r\n if (!identityOpt.dutys || !identityOpt.dutys.length){\r\n this.form.notice(\"无法确定职务的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n identityOpt.values = this._computeValue() || [];\r\n }else{\r\n identityOpt.values = this.getValue();\r\n }\r\n identityOpt.exclude = exclude;\r\n }\r\n\r\n var unitOpt;\r\n if( this.unitOptions ){\r\n unitOpt = this.unitOptions.getOptions();\r\n if (this.json.unitRange!==\"all\"){\r\n if ( !unitOpt.units || !unitOpt.units.length){\r\n this.form.notice(\"无法确定组织的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n unitOpt.values = this._computeValue() || [];\r\n }else{\r\n unitOpt.values = this.getValue();\r\n }\r\n unitOpt.exclude = exclude;\r\n }\r\n\r\n //var groupOpt;\r\n //if( this.groupOptions ){\r\n // groupOpt = this.groupOptions.getOptions();\r\n // groupOpt.values = (this.json.isInput) ? [] : values;\r\n // groupOpt.exclude = exclude;\r\n //}\r\n\r\n var defaultOpt = {\r\n \"style\" : \"default\",\r\n \"zIndex\" : 3000\r\n };\r\n\r\n if( this.json.events && typeOf(this.json.events) === \"object\" ){\r\n Object.each(this.json.events, function(e, key){\r\n if (e.code){\r\n if (this.options.moduleEvents.indexOf(key)!==-1){\r\n //this.addEvent(key, function(event){\r\n // return this.form.Macro.fire(e.code, this, event);\r\n //}.bind(this));\r\n if( key === \"postLoadSelector\" ) {\r\n this.addEvent(\"loadSelector\", function (selector) {\r\n return this.form.Macro.fire(e.code, selector);\r\n }.bind(this))\r\n }else if( key === \"queryLoadSelector\"){\r\n defaultOpt[\"onQueryLoad\"] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }else{\r\n defaultOpt[\"on\"+key.capitalize()] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if( this.form.json.selectorStyle ){\r\n defaultOpt = Object.merge( Object.clone(this.form.json.selectorStyle), defaultOpt );\r\n if( this.form.json.selectorStyle.style )defaultOpt.style = this.form.json.selectorStyle.style;\r\n }\r\n\r\n var mobileEvents = {\r\n \"onComplete\": function(items){\r\n this.selectOnComplete(items);\r\n }.bind(this),\r\n \"onCancel\": this.selectOnCancel.bind(this),\r\n \"onClose\": this.selectOnClose.bind(this)\r\n };\r\n\r\n if( this.selectTypeList.length === 1 ){\r\n return Object.merge(\r\n defaultOpt,\r\n {\r\n \"type\": this.selectTypeList[0],\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this, this.selector )\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n },\r\n mobileEvents,\r\n identityOpt || unitOpt\r\n )\r\n }else if( this.selectTypeList.length > 1 ){\r\n var options = {\r\n \"type\" : \"\",\r\n \"types\" : this.selectTypeList,\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this)\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n };\r\n if( identityOpt ){\r\n options.identityOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n identityOpt\r\n );\r\n }\r\n if( unitOpt ){\r\n options.unitOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n unitOpt\r\n );\r\n }\r\n //if( groupOpt )options.groupOptions = groupOpt;\r\n return options;\r\n }\r\n },\r\n selectOnComplete: function(items){ //移动端才执行\r\n var array = [];\r\n items.each(function(item){\r\n array.push(item.data);\r\n }.bind(this));\r\n this.checkEmpower( array, function( data ){\r\n var values = [];\r\n data.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n\r\n this.setData(values);\r\n\r\n //this.validationMode();\r\n //this.validation();\r\n\r\n this.container.empty();\r\n this.loadOrgWidget(values, this.container);\r\n\r\n this.selector = null;\r\n\r\n this.fireEvent(\"select\", [items, values]);\r\n }.bind(this))\r\n },\r\n selectOnCancel: function(){ //移动端才执行\r\n //this.validation();\r\n },\r\n selectOnLoad: function( selector ){\r\n //if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"none\");\r\n this.fireEvent(\"loadSelector\", [selector])\r\n },\r\n selectOnClose: function(){\r\n var v = this._getBusinessData();\r\n //if (!v || !v.length) if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"block\");\r\n },\r\n loadOrgWidget: function(value, node){\r\n var height = node.getStyle(\"height\").toInt();\r\n if (node.getStyle(\"overflow\")===\"visible\" && !height) node.setStyle(\"overflow\", \"hidden\");\r\n if (value && value.length){\r\n value.each(function(data){\r\n var flag = data.distinguishedName.substr(data.distinguishedName.length-1, 1);\r\n var copyData = Object.clone(data);\r\n if( this.json.displayTextScript && this.json.displayTextScript.code ){\r\n this.currentData = copyData;\r\n var displayName = this.form.Macro.exec(this.json.displayTextScript.code, this);\r\n if( displayName ){\r\n copyData.displayName = displayName;\r\n }\r\n this.currentData = null;\r\n }\r\n\r\n var widget;\r\n switch (flag.toLowerCase()){\r\n case \"i\":\r\n widget = new MWF.widget.O2Identity(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"p\":\r\n widget = new MWF.widget.O2Person(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"u\":\r\n widget = new MWF.widget.O2Unit(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"g\":\r\n widget = new MWF.widget.O2Group(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n default:\r\n widget = new MWF.widget.O2Other(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n }\r\n widget.field = this;\r\n }.bind(this));\r\n }\r\n },\r\n\r\n hasEmpowerIdentity : function(){\r\n var data = this.getData();\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n return this.empowerChecker.hasEmpowerIdentity( data );\r\n },\r\n checkEmpower : function( data, callback, container, selectAllNode ){\r\n if( typeOf(data)===\"array\" && this.identityOptions && this.json.isCheckEmpower && this.json.identityResultType === \"identity\" ) {\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n this.empowerChecker.selectAllNode = selectAllNode;\r\n this.empowerChecker.load(data, callback, container);\r\n }else{\r\n if( callback )callback( data );\r\n }\r\n },\r\n\r\n loadCheckEmpower : function( callback, container, selectAllNode ){\r\n this.checkEmpower( this.getData(), callback, container, selectAllNode)\r\n },\r\n saveCheckedEmpowerData:function( callback ){\r\n var data = this.getData();\r\n //this.empowerChecker.replaceEmpowerIdentity(data, function( newData ){\r\n this.empowerChecker.setIgnoreEmpowerFlag(data, function( newData ){\r\n var values = [];\r\n newData.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n this.setData( values );\r\n if( callback )callback(values)\r\n }.bind(this))\r\n },\r\n\r\n save: function( isValid ){\r\n if( isValid ){\r\n if( this.validation() ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n this.setData( this.getData() );\r\n return true;\r\n }\r\n },\r\n\r\n resetSelectorData : function(){\r\n if( this.selector && this.selector.selector ){\r\n this.selector.selector.emptySelectedItems();\r\n this.selector.selector.options.values = this.getValue();\r\n this.selector.selector.setSelectedItem();\r\n }\r\n },\r\n resetData: function(){\r\n var v = this.getValue();\r\n //this.setData((v) ? v.join(\", \") : \"\");\r\n this.setData(v);\r\n },\r\n getData: function(){\r\n if( this.selector && !layout.mobile ){\r\n return this.getSelectedData();\r\n }else{\r\n return this.getValue();\r\n }\r\n },\r\n getSelectedData : function(){\r\n return this.getValue();\r\n },\r\n getValue: function(){\r\n var value = this._getBusinessData();\r\n if (!value) value = this._computeValue();\r\n return value || \"\";\r\n },\r\n _computeValue: function(){\r\n var values = [];\r\n if (this.json.identityValue) {\r\n this.json.identityValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.unitValue) {\r\n this.json.unitValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.dutyValue) {\r\n var dutys = JSON.decode(this.json.dutyValue);\r\n var par;\r\n if (dutys.length){\r\n dutys.each(function(duty){\r\n if (duty.code) par = this.form.Macro.exec(duty.code, this);\r\n var code = \"return this.org.getDuty(\\\"\"+duty.name+\"\\\", \\\"\"+par+\"\\\")\";\r\n\r\n var d = this.form.Macro.exec(code, this);\r\n if (typeOf(d)!==\"array\") d = (d) ? [d.toString()] : [];\r\n d.each(function(dd){if (dd) values.push(dd);});\r\n\r\n }.bind(this));\r\n }\r\n }\r\n if (this.json.defaultValue && this.json.defaultValue.code){\r\n var fd = this.form.Macro.exec(this.json.defaultValue.code, this);\r\n if (typeOf(fd)!==\"array\") fd = (fd) ? [fd] : [];\r\n fd.each(function(fdd){\r\n if (fdd){\r\n if (typeOf(fdd)===\"string\"){\r\n var data;\r\n this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = json.data }.bind(this), null, fdd, false);\r\n values.push(data);\r\n }else{\r\n values.push(fdd);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n if (this.json.count>0){\r\n return values.slice(0, this.json.count);\r\n }\r\n return values;\r\n //return (this.json.defaultValue.code) ? this.form.Macro.exec(this.json.defaultValue.code, this): (value || \"\");\r\n },\r\n getOrgAction: function(){\r\n if (!this.orgAction) this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n //if (!this.orgAction) this.orgAction = new MWF.xApplication.Selector.Actions.RestActions();\r\n return this.orgAction;\r\n },\r\n setData: function(value){\r\n\r\n if (!value) return false;\r\n var oldValues = this.getValue();\r\n var values = [];\r\n\r\n var type = typeOf(value);\r\n if (type===\"array\"){\r\n value.each(function(v){\r\n var vtype = typeOf(v);\r\n var data = null;\r\n if (vtype===\"string\"){\r\n this.getOrgAction()[this.getValueMethod(v)](function(json){ data = MWF.org.parseOrgData(json.data, true); }.bind(this), error, v, false);\r\n }\r\n if (vtype===\"object\") {\r\n data = MWF.org.parseOrgData(v, true);\r\n if(data.woPerson)delete data.woPerson;\r\n }\r\n if (data)values.push(data);\r\n }.bind(this));\r\n }\r\n if (type===\"string\"){\r\n var vData;\r\n this.getOrgAction()[this.getValueMethod(value)](function(json){ vData = MWF.org.parseOrgData(json.data, true); }.bind(this), error, value, false);\r\n if (vData)values.push(vData);\r\n }\r\n if (type===\"object\"){\r\n var vData = MWF.org.parseOrgData(value, true);\r\n if(vData.woPerson)delete vData.woPerson;\r\n values.push( vData );\r\n }\r\n\r\n var change = false;\r\n if (oldValues.length && values.length){\r\n if (oldValues.length === values.length){\r\n for (var i=0; i 0) {\r\n o2.Actions.get(\"x_organization_assemble_express\").listEmpowerWithIdentity({\r\n \"application\": (this.form.businessData.work || this.form.businessData.workCompleted).application,\r\n \"process\": (this.form.businessData.work || this.form.businessData.workCompleted).process,\r\n \"work\" : (this.form.businessData.work || this.form.businessData.workCompleted).id,\r\n \"identityList\": array\r\n }, function (json) {\r\n var arr = [];\r\n json.data.each(function (d) {\r\n if (d.fromIdentity !== d.toIdentity)\r\n arr.push(d);\r\n });\r\n if (arr.length > 0) {\r\n flag = true;\r\n }\r\n }.bind(this), null, false)\r\n }\r\n }\r\n return flag;\r\n },\r\n getSelectedData : function( callback ){\r\n var json = {};\r\n this.empowerSelectNodes.each(function(node){\r\n if( node.retrieve(\"isSelected\") ){\r\n var d = node.retrieve(\"data\");\r\n json[ d.fromIdentity ] = d;\r\n }\r\n }.bind(this));\r\n if( callback )callback( json );\r\n }\r\n});\r\n\r\nO2ProcessorMobile.UnitOptions = new Class({\r\n Extends : MWF.APPOrg.UnitOptions\r\n});\r\n\r\nO2ProcessorMobile.IdentityOptions = new Class({\r\n Extends : MWF.APPOrg.IdentityOptions\r\n});", + "html": "MWF.xDesktop.requireApp(\"process.Xform\", \"Org\", null, false);\r\n\r\nthis.define(\"loadProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nthis.define(\"popupProcessorMobile\", function(){\r\n if( !this.processor ){\r\n this.processor = new O2ProcessorMobile(this);\r\n }\r\n this.processor.load();\r\n});\r\n\r\nwindow.O2ProcessorMobile = new Class({\r\n Implements: [Events],\r\n initialize: function (macro) {\r\n\r\n debugger;\r\n\r\n this.macro = macro;\r\n this.app = macro.form.app;\r\n this.form = this.app.appForm;\r\n this.task = this.form.businessData.task;\r\n this.appContentNode = $(document.body); //this.app.content;\r\n\r\n this.initConstant();\r\n this.getCss();\r\n this.getAllNode();\r\n\r\n // this.loadCss();\r\n\r\n },\r\n initConstant: function () {\r\n this.DefaultDecisionOpinionName = \"其它\"; //默认的决策组,如果当前节点有决策组,但是某些决策没有落在决策组中,那么使用默认决策组\r\n },\r\n load: function () {\r\n if ( this.status === \"show\" || this.status === \"loading\" ){\r\n \r\n }else if (this.status === \"closed\" ) {\r\n this.node.show();\r\n // this.positionSeted = false; //重新设置位置\r\n // this.setSize( this.getCurrentRouteOrgList().length );\r\n this.status = \"show\";\r\n } else {\r\n this.status = \"loading\";\r\n this.container = new Element(\"div\").inject(this.appContentNode);\r\n this.node.setStyles({\r\n \"width\" : \"100%\",\r\n \"position\" : \"absolute\",\r\n \"z-index\" : \"101\"\r\n })\r\n this.loadContent();\r\n this.setEvents();\r\n this.node.inject(this.container);\r\n this.status = \"show\";\r\n }\r\n },\r\n loadContent: function () {\r\n this.getRouteGroupList();\r\n\r\n var orgLength = this.getMaxOrgLength();\r\n if (orgLength === 0) { //流程选人数量为0\r\n if (this.orgsTile) {\r\n this.orgsTile.destroy();\r\n this.orgsTile = null;\r\n }\r\n if (this.orgsArea) {\r\n this.orgsArea.destroy();\r\n this.orgsArea = null;\r\n }\r\n }\r\n\r\n this.setOpinion(); //意见\r\n\r\n if (this.hasDecisionOpinion) { //有决策组\r\n this.setRouteGroupList();\r\n } else { //没有决策组\r\n if (this.routeGroupTitle) {\r\n this.routeGroupTitle.destroy();\r\n this.routeGroupTitle = null;\r\n }\r\n if (this.routeGroupArea) {\r\n this.routeGroupArea.destroy();\r\n this.routeGroupArea = null;\r\n }\r\n // this.routeSelectorArea.setStyles( this.css.routeSelectorArea );\r\n // if( this.inputOpinionNodeTd && this.selectIdeaNodeTd ){\r\n // this.inputOpinionNodeTd.set( \"width\", orgLength < 2 ? \"60%\" : \"50%\" );\r\n // }\r\n this.setRouteList();\r\n }\r\n },\r\n\r\n getAllNode: function () {\r\n this.node = this.getNode(\"submitNode\");\r\n\r\n this.buttonNode = this.getNode(\"submitButtonNode\");\r\n\r\n this.contentWrapNode = this.getNode(\"submitContentWrapNode\");\r\n this.contentNode = this.getNode(\"submitContentNode\");\r\n this.contentInnerNode = this.getNode(\"submitContentInnerNode\");\r\n\r\n this.routeGroupTitle = this.getNode(\"routeGroupTitle\");\r\n this.routeGroupArea = this.getNode(\"routeGroupArea\");\r\n\r\n this.routeSelectorTitle = this.getNode(\"routeSelectorTitle\");\r\n this.routeSelectorArea = this.getNode(\"routeSelectorArea\");\r\n\r\n this.selectIdeaAreaNode = this.getNode(\"selectIdeaAreaNode\");\r\n\r\n this.inputOpinionNode = this.getNode(\"inputOpinionNode\");\r\n this.inputTextarea = this.getNode(\"inputTextarea\");\r\n\r\n this.handwritingAction = this.getNode(\"handwritingAction\");\r\n\r\n this.orgsTile = this.getNode(\"orgsTile\");\r\n this.orgsArea = this.getNode(\"orgsArea\");\r\n\r\n this.buttonsArea = this.getNode(\"submitButtonNode\");\r\n this.okButton = this.getNode(\"okButton\");\r\n this.cancelButton = this.getNode(\"cancelButton\");\r\n },\r\n setEvents: function () {\r\n if (this.cancelButton) {\r\n this.cancelButton.addEvent(\"click\", function () {\r\n this.close();\r\n this.fireEvent(\"cancel\");\r\n }.bind(this));\r\n }\r\n if (this.okButton) {\r\n this.okButton.addEvent(\"click\", function (ev) {\r\n this.submit(ev)\r\n }.bind(this));\r\n }\r\n },\r\n getNode: function (name) {\r\n if (this.macro.form.get(name)) {\r\n return this.macro.form.get(name).node;\r\n }\r\n if (this.form.allForName[name]) {\r\n return this.form.allForName[name].node;\r\n }\r\n },\r\n setData: function (name, value) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.setData(value) : null;\r\n },\r\n getData: function (name) {\r\n var item = this.macro.form.get(name);\r\n return item ? item.getData() : null;\r\n },\r\n getRouteConfigList: function () { //获取当前待办的所有路由设置\r\n if (!this.routeConfigList) {\r\n o2.Actions.get(\"x_processplatform_assemble_surface\").listRoute({\"valueList\": this.task.routeList}, function (json) {\r\n json.data.each(function (d) {\r\n d.selectConfigList = JSON.parse(d.selectConfig || \"[]\");\r\n }.bind(this));\r\n this.routeConfigList = json.data;\r\n }.bind(this), null, false);\r\n }\r\n return this.routeConfigList;\r\n },\r\n getRouteConfig: function (routeId) { //根据某个ID获取路由设置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i];\r\n }\r\n }\r\n },\r\n getMaxOrgLength: function () { //获取当前待办下可能的最多选人组件个数\r\n var routeList = this.getRouteConfigList();\r\n var length = 0;\r\n routeList.each(function (route) {\r\n if (route.hiddenScriptText) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n length = Math.max(length, route.selectConfigList.length);\r\n }.bind(this));\r\n return length;\r\n },\r\n getOrgConfig: function (routeId) { //获取人员选择配置\r\n var routeList = this.getRouteConfigList();\r\n for (var i = 0; i < routeList.length; i++) {\r\n if (routeList[i].id === routeId) {\r\n return routeList[i].selectConfigList;\r\n }\r\n }\r\n },\r\n getCurrentRouteSelectorList: function () { //获取当前路由的人员选择器对象\r\n var selectorList = [];\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n if (!orgList) return [];\r\n orgList.each(function (org) {\r\n if (org.selector && org.selector.selector) {\r\n selectorList.push(org.selector.selector);\r\n }\r\n }.bind(this))\r\n return selectorList;\r\n },\r\n getCurrentRouteOrgList: function () { //获取当前路由的org对象\r\n var currentRoute = this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\";\r\n var orgList = this.orgItemsObject[currentRoute];\r\n return orgList || [];\r\n },\r\n getSelectorSelectedData: function (filedName) { //获取人员选择器选择的值\r\n var data = [];\r\n var orgList = this.getCurrentRouteOrgList();\r\n for (var i = 0; i < orgList.length; i++) {\r\n var org = orgList[i];\r\n if (org.json.name === filedName) {\r\n var selector = org.selector.selector;\r\n selector.selectedItems.each(function (item) {\r\n data.push(item.data)\r\n })\r\n }\r\n }\r\n return data;\r\n },\r\n getMarginY: function (node) {\r\n return (node.getStyle(\"margin-top\").toInt() || 0) +\r\n (node.getStyle(\"margin-bottom\").toInt() || 0);\r\n // (node.getStyle(\"padding-top\").toInt() || 0 ) +\r\n // (node.getStyle(\"padding-bottom\").toInt() || 0 )+\r\n // (node.getStyle(\"border-top-width\").toInt() || 0 ) +\r\n // (node.getStyle(\"border-bottom-width\").toInt() || 0 );\r\n },\r\n setSize: function (currentOrgLength) {\r\n var lines = ((currentOrgLength + 1) / 2).toInt();\r\n\r\n if (lines > 0) {\r\n this.showOrgsArea();\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n if (this.buttonsArea) {\r\n var bodySize = this.appContentNode.getSize();\r\n var nodeHeight = bodySize.y - this.getMarginY(this.node);\r\n this.node.setStyles({\r\n \"overflow-y\": \"hidden\",\r\n \"height\": nodeHeight\r\n });\r\n var buttonsAreaSize = this.buttonsArea.getSize();\r\n this.contentNode.setStyles({\r\n \"height\": nodeHeight - buttonsAreaSize.y - this.getMarginY(this.buttonsArea) - this.getMarginY(this.contentNode),\r\n \"overflow-y\": \"auto\"\r\n })\r\n }\r\n\r\n this.fireEvent(\"resize\");\r\n },\r\n showOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.show();\r\n if (this.orgsArea) this.orgsArea.show();\r\n },\r\n hideOrgsArea: function () {\r\n if (this.orgsTile) this.orgsTile.hide();\r\n if (this.orgsArea) this.orgsArea.hide();\r\n },\r\n\r\n /*决策和决策组相关 开始*/\r\n getRouteGroupList: function () { //获取决策组并格式化成对象\r\n if (this.routeGroupObject) return this.routeGroupObject;\r\n this.routeGroupObject = {};\r\n this.routeGroupNameList = [];\r\n this.hasDecisionOpinion = false;\r\n var routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n route.displayName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n } else {\r\n route.displayName = route.name;\r\n }\r\n\r\n if (route.decisionOpinion) { //决策组名称\r\n this.hasDecisionOpinion = true;\r\n var decisionOpinionList = route.decisionOpinion.split(\"#\");\r\n decisionOpinionList.each(function (decisionOption) {\r\n this.routeGroupNameList.combine([decisionOption]);\r\n var d = this.splitByStartNumber(decisionOption);\r\n if (!this.routeGroupObject[d.name]) this.routeGroupObject[d.name] = [];\r\n this.routeGroupObject[d.name].push(route);\r\n }.bind(this))\r\n } else {\r\n var defaultName = this.DefaultDecisionOpinionName;\r\n this.routeGroupNameList.combine([defaultName]);\r\n if (!this.routeGroupObject[defaultName]) this.routeGroupObject[defaultName] = [];\r\n this.routeGroupObject[defaultName].push(route);\r\n }\r\n }.bind(this));\r\n return this.routeGroupObject;\r\n },\r\n splitByStartNumber: function (str) {\r\n var obj = {\r\n name: \"\",\r\n order: \"\"\r\n };\r\n for (var i = 0; i < str.length; i++) {\r\n if (parseInt(str.substr(i, 1)).toString() !== \"NaN\") {\r\n obj.order = obj.order + str.substr(i, 1);\r\n } else {\r\n obj.name = str.substr(i, str.length);\r\n break;\r\n }\r\n }\r\n return obj;\r\n },\r\n setRouteGroupList: function () { //排序并创建决策组DOM对象\r\n var _self = this;\r\n\r\n //根据决策组的排序号进行排序\r\n var keys = this.routeGroupNameList;\r\n keys.sort(function (a, b) {\r\n var aIdx = parseInt(this.splitByStartNumber(a).order || \"9999999\");\r\n var bIdx = parseInt(this.splitByStartNumber(b).order || \"9999999\");\r\n return aIdx - bIdx;\r\n }.bind(this));\r\n\r\n var list = [];\r\n keys.each(function (k) {\r\n list.push(this.splitByStartNumber(k).name)\r\n }.bind(this));\r\n\r\n debugger;\r\n\r\n list.each(function (routeGroupName) {\r\n var routeList = this.routeGroupObject[routeGroupName];\r\n var routeGroupNode = new Element(\"div\", {\r\n \"styles\": this.css.routeGroupNode,\r\n \"text\": routeGroupName\r\n }).inject(this.routeGroupArea);\r\n routeGroupNode.store(\"routeList\", routeList);\r\n routeGroupNode.store(\"routeGroupName\", routeGroupName);\r\n\r\n routeGroupNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRouteGroup(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRouteGroup(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRouteGroup(this);\r\n }\r\n });\r\n\r\n if (keys.length === 1) { //如果决策组只有1个,则默认选中\r\n this.selectRouteGroup(routeGroupNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n }.bind(this))\r\n },\r\n overRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode_over);\r\n }\r\n },\r\n outRouteGroup: function (node) {\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n } else {\r\n node.setStyles(this.css.routeGroupNode);\r\n }\r\n },\r\n selectRouteGroup: function (node) { //选中决策组执行...\r\n if (this.selectedRouteGroup) {\r\n if (this.selectedRouteGroup.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode);\r\n //this.selectedRouteGroup.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRouteGroup = node;\r\n this.selectedRouteGroup.setStyles(this.css.routeGroupNode_selected);\r\n //this.selectedRouteGroup.addClass(\"mainColor_bg\");\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n\r\n } else {\r\n\r\n }\r\n } else {\r\n this.selectedRouteGroup = node;\r\n node.setStyles(this.css.routeGroupNode_selected);\r\n\r\n var routeList = this.selectedRouteGroup.retrieve(\"routeList\");\r\n this.setRouteList(routeList);\r\n }\r\n this.routeGroupArea.setStyle(\"background-color\", \"#FFF\");\r\n },\r\n setRouteList: function (routeList) { //创建决策对象\r\n var _self = this;\r\n this.routeSelectorArea.empty();\r\n this.selectedRoute = null;\r\n\r\n if (!routeList) routeList = this.getRouteConfigList();\r\n routeList.each(function (route, i) {\r\n if (route.hiddenScriptText && this.form && this.form.Macro) { //如果隐藏路由,返回\r\n if (this.form.Macro.exec(route.hiddenScriptText, this).toString() === \"true\") return;\r\n }\r\n var routeName = route.name;\r\n if (route.displayNameScriptText && this.form && this.form.Macro) { //如果有显示名称公式\r\n routeName = this.form.Macro.exec(route.displayNameScriptText, this);\r\n }\r\n var routeNode = new Element(\"div\", {\r\n \"styles\": this.css.routeNode,\r\n \"text\": routeName\r\n }).inject(this.routeSelectorArea);\r\n routeNode.store(\"route\", route.id);\r\n routeNode.store(\"routeName\", route.name);\r\n\r\n routeNode.addEvents({\r\n \"mouseover\": function (e) {\r\n _self.overRoute(this);\r\n },\r\n \"mouseout\": function (e) {\r\n _self.outRoute(this);\r\n },\r\n \"click\": function (e) {\r\n _self.selectRoute(this);\r\n }\r\n });\r\n\r\n if (routeList.length == 1 || route.sole) { //sole表示优先路由\r\n this.selectRoute(routeNode);\r\n } else {\r\n this.setSize(0);\r\n }\r\n\r\n }.bind(this));\r\n },\r\n overRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode_over);\r\n node.addClass(\"lightColor_bg\");\r\n }\r\n },\r\n outRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n } else {\r\n node.setStyles(this.css.routeNode);\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n },\r\n selectRoute: function (node) {\r\n if (this.selectedRoute) {\r\n if (this.selectedRoute.get(\"text\") != node.get(\"text\")) {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n\r\n } else {\r\n this.selectedRoute.setStyles(this.css.routeNode);\r\n this.selectedRoute.addClass(\"lightColor_bg\");\r\n this.selectedRoute.removeClass(\"mainColor_bg\");\r\n\r\n this.selectedRoute = null;\r\n }\r\n } else {\r\n this.selectedRoute = node;\r\n node.setStyles(this.css.routeNode_selected);\r\n node.addClass(\"mainColor_bg\");\r\n node.removeClass(\"lightColor_bg\");\r\n }\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#FFF\");\r\n\r\n this.loadOrgs(this.selectedRoute ? this.selectedRoute.retrieve(\"route\") : \"\");\r\n\r\n if (this.form.data.json.events && this.form.data.json.events.afterSelectRoute) {\r\n this.form.Macro.exec(this.form.data.json.events.afterSelectRoute.code, node);\r\n }\r\n\r\n },\r\n /*决策和决策组相关 结束*/\r\n\r\n setOpinion: function () {\r\n if (!this.inputTextarea) return;\r\n if (this.handwritingAction) this.handwritingAction.addEvent(\"click\", function () {\r\n window.setTimeout( function(){\r\n this.handwriting();\r\n }.bind(this), 100 )\r\n }.bind(this));\r\n\r\n if (this.selectIdeaAreaNode) {\r\n MWF.require(\"MWF.widget.UUID\", function () {\r\n MWF.UD.getDataJson(\"idea\", function (json) {\r\n if (json) {\r\n if (json.ideas) {\r\n this.setIdeaList(json.ideas);\r\n }\r\n } else {\r\n MWF.UD.getPublicData(\"idea\", function (pjson) {\r\n if (pjson) {\r\n if (pjson.ideas) {\r\n this.setIdeaList(pjson.ideas);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n }.bind(this));\r\n }.bind(this));\r\n }\r\n\r\n },\r\n\r\n audioRecord: function () {\r\n if (!this.audioRecordNode) this.createAudioRecord();\r\n this.audioRecordNode.show();\r\n this.audioRecordNode.position({\r\n \"relativeTo\": this.options.mediaNode || this.node,\r\n \"position\": \"center\",\r\n \"edge\": \"center\"\r\n });\r\n\r\n MWF.require(\"MWF.widget.AudioRecorder\", function () {\r\n this.audioRecorder = new MWF.widget.AudioRecorder(this.audioRecordNode, {\r\n \"onSave\": function (blobFile) {\r\n this.soundFile = blobFile;\r\n this.audioRecordNode.hide();\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.soundFile = null;\r\n this.audioRecordNode.hide();\r\n }.bind(this)\r\n }, null);\r\n }.bind(this));\r\n },\r\n createAudioRecord: function () {\r\n this.audioRecordNode = new Element(\"div\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n var size = (this.options.mediaNode || this.node).getSize();\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.audioRecordNode.setStyles({\r\n \"height\": \"\" + size.y + \"px\",\r\n \"width\": \"\" + size.x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n },\r\n\r\n handwriting: function () {\r\n if (!this.handwritingNode) this.createHandwriting();\r\n if(this.handwritingNodeMask)this.handwritingNodeMask.show();\r\n this.handwritingNode.show();\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n },\r\n createHandwriting: function () {\r\n this.handwritingNodeMask = new Element(\"div.handwritingMask\", {\"styles\": this.css.handwritingMask}).inject(this.node);\r\n\r\n this.handwritingNode = new Element(\"div.handwritingNode\", {\"styles\": this.css.handwritingNode}).inject(this.node, \"after\");\r\n //var size = (this.options.mediaNode || this.node).getSize();\r\n //var y = size.y;\r\n //var x = size.x;\r\n //兼容以前的默认高宽\r\n\r\n debugger;\r\n\r\n var bodySize = $(document.body).getSize();\r\n var x = bodySize.x;\r\n var y = bodySize.y;\r\n\r\n var zidx = this.node.getStyle(\"z-index\");\r\n this.handwritingNode.setStyles({\r\n \"height\": \"\" + y + \"px\",\r\n \"width\": \"\" + x + \"px\",\r\n \"z-index\": zidx + 1\r\n });\r\n this.handwritingNode.addEvent('touchmove' , function(e){\r\n e.preventDefault();\r\n });\r\n this.handwritingNode.setStyles({\r\n \"top\": \"0px\",\r\n \"left\": \"0px\"\r\n });\r\n this.handwritingAreaNode = new Element(\"div\", {\"styles\": this.css.handwritingAreaNode}).inject(this.handwritingNode);\r\n // this.handwritingActionNode = new Element(\"div\", {\r\n // \"styles\": this.css.handwritingActionNode,\r\n // \"text\": MWF.xApplication.process.Work.LP.saveWrite\r\n // }).inject(this.handwritingNode);\r\n // var h = this.handwritingActionNode.getSize().y + this.handwritingActionNode.getStyle(\"margin-top\").toInt() + this.handwritingActionNode.getStyle(\"margin-bottom\").toInt();\r\n // h = y - h;\r\n // this.handwritingAreaNode.setStyle(\"height\", \"\" + h + \"px\");\r\n this.handwritingAreaNode.setStyle(\"height\", \"\" + y + \"px\");\r\n\r\n MWF.require(\"MWF.widget.Tablet\", function () {\r\n var handWritingOptions = {\r\n \"style\": \"default\",\r\n \"contentWidth\": 0,\r\n \"contentHeight\": 0,\r\n \"onSave\": function (base64code, base64Image, imageFile) {\r\n this.handwritingFile = imageFile;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n // this.page.get(\"div_image\").node.set(\"src\",base64Image);\r\n\r\n }.bind(this),\r\n \"onCancel\": function () {\r\n this.handwritingFile = null;\r\n this.handwritingNode.hide();\r\n this.handwritingNodeMask.hide();\r\n }.bind(this)\r\n };\r\n handWritingOptions.tools = [\r\n \"undo\",\r\n \"redo\", \"|\",\r\n \"reset\", \"|\",\r\n \"size\",\r\n \"cancel\"\r\n ]\r\n this.tablet = new MWF.widget.Tablet(this.handwritingAreaNode, handWritingOptions, null);\r\n this.tablet.load();\r\n }.bind(this));\r\n\r\n // this.handwritingActionNode.addEvent(\"click\", function () {\r\n // //this.handwritingNode.hide();\r\n // if (this.tablet) this.tablet.save();\r\n // }.bind(this));\r\n },\r\n\r\n setIdeaList: function (ideas) {\r\n var _self = this;\r\n ideas.each(function (idea) {\r\n new Element(\"div\", {\r\n \"styles\": this.css.selectIdeaItemNode,\r\n \"text\": idea,\r\n \"events\": {\r\n \"click\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"dblclick\": function () {\r\n if (!_self.getData(\"inputTextarea\")) {\r\n _self.setData(\"inputTextarea\", this.get(\"text\"));\r\n } else {\r\n _self.setData(\"inputTextarea\", _self.getData(\"inputTextarea\") + \", \" + this.get(\"text\"));\r\n }\r\n },\r\n \"mouseover\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode_over);\r\n },\r\n \"mouseout\": function () {\r\n this.setStyles(_self.css.selectIdeaItemNode);\r\n }\r\n }\r\n }).inject(this.selectIdeaAreaNode);\r\n }.bind(this));\r\n },\r\n submit: function (ev) {\r\n if (this.hasDecisionOpinion && !this.selectedRouteGroup) {\r\n this.routeGroupArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"top\"},\r\n \"请先选择决策组\",\r\n this.routeGroupArea,\r\n null, //{\"x\": 0, \"y\": 30}\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n\r\n if (!this.selectedRoute) {\r\n this.routeSelectorArea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.routeSelectorArea,\r\n delayClose: 6000,\r\n content: \"请先选择决策\"\r\n });\r\n return false;\r\n }\r\n var routeName = this.selectedRoute.retrieve(\"routeName\") || this.selectedRoute.get(\"text\");\r\n var opinion = this.getData(\"inputTextarea\");\r\n if (opinion === MWF.xApplication.process.Work.LP.inputText) opinion = \"\";\r\n var medias = [];\r\n if (this.handwritingFile) medias.push(this.handwritingFile);\r\n if (this.soundFile) medias.push(this.soundFile);\r\n if (this.videoFile) medias.push(this.videoFile);\r\n\r\n var currentRouteId = this.selectedRoute.retrieve(\"route\");\r\n var routeConfig = this.getRouteConfig(currentRouteId);\r\n if (!opinion && medias.length === 0) {\r\n if (routeConfig.opinionRequired == true) {\r\n this.inputTextarea.setStyle(\"background-color\", \"#ffe9e9\");\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.inputTextarea,\r\n delayClose: 6000,\r\n content: \"请填写意见\"\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: validation\r\n });\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.node,\r\n delayClose: 6000,\r\n content: \"路由校验失败\"\r\n });\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //var array = [routeName, opinion, medias];\r\n //this.node.mask({\r\n // \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n // \"destroyOnHide\": true,\r\n // \"style\": {\r\n // \"background-color\": \"#999\",\r\n // \"opacity\": 0.3,\r\n // \"z-index\":600\r\n // }\r\n //});\r\n //this.fireEvent(\"submit\", array );\r\n\r\n var appendTaskOrgItem;\r\n if (routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\") {\r\n if (!this.orgItems || this.orgItems.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"没有配置转交人,请联系管理员\" //\"没有配置转交人,请联系管理员\"\r\n });\r\n return false;\r\n } else {\r\n appendTaskOrgItem = this.orgItems[0]\r\n }\r\n }\r\n\r\n if (!this.saveOrgs()) return false;\r\n\r\n //this.saveOrgsWithCheckEmpower( function(){\r\n var appandTaskIdentityList;\r\n if (appendTaskOrgItem) {\r\n appandTaskIdentityList = appendTaskOrgItem.getData();\r\n if (!appandTaskIdentityList || appandTaskIdentityList.length === 0) {\r\n new mBox.Notice({\r\n type: \"error\",\r\n position: {\"x\": \"center\", \"y\": \"top\"},\r\n move: false,\r\n target: this.orgsArea,\r\n delayClose: 6000,\r\n content: \"请选择转交人\"\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (routeConfig.validationScriptText) {\r\n var validation = this.form.Macro.exec(routeConfig.validationScriptText, this);\r\n if (!validation || validation.toString() !== \"true\") {\r\n if (typeOf(validation) === \"string\") {\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n validation,\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n } else {\r\n //\"路由校验失败\"\r\n MWF.xDesktop.notice(\r\n \"error\",\r\n {\"x\": \"center\", \"y\": \"center\"},\r\n \"路由校验失败\",\r\n this.node,\r\n {\"x\": 0, \"y\": 30},\r\n {\"closeOnBoxClick\": true, \"closeOnBodyClick\": true, \"fixed\": true, \"delayClose\": 6000}\r\n );\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n this.node.mask({\r\n \"inject\": {\"where\": \"bottom\", \"target\": this.node},\r\n \"destroyOnHide\": true,\r\n \"style\": {\r\n \"background-color\": \"#999\",\r\n \"opacity\": 0.3,\r\n \"z-index\": 600\r\n }\r\n });\r\n\r\n // var array = [ routeName, opinion, medias, appandTaskIdentityList, this.orgItems, function(){\r\n // if(appendTaskOrgItem)appendTaskOrgItem.setData([]);\r\n // }];\r\n\r\n var op = this.form.getOpinion();\r\n var mds = op.medias;\r\n\r\n if (!medias || !medias.length) {\r\n medias = mds;\r\n } else {\r\n medias = medias.concat(mds)\r\n }\r\n\r\n this.form.submitWork(routeName, opinion, medias, function () {\r\n this.close();\r\n }.bind(this), this, null, appandTaskIdentityList, this.orgItems, function () {\r\n if (appendTaskOrgItem) appendTaskOrgItem.setData([]);\r\n this.setData(\"inputTextarea\", \"\");\r\n }.bind(this));\r\n\r\n // this.fireEvent(\"submit\", array );\r\n },\r\n\r\n close: function () {\r\n this.node.setStyle(\"display\", \"none\");\r\n this.status = \"closed\";\r\n },\r\n destroy: function () {\r\n // this.node.empty();\r\n // delete this.task;\r\n // delete this.node;\r\n // delete this.routeSelectorTile;\r\n // delete this.routeSelectorArea;\r\n // delete this.routeOpinionTile;\r\n // delete this.routeOpinionArea;\r\n // delete this.buttonsArea;\r\n // delete this.inputOpinionNode;\r\n // delete this.inputTextarea;\r\n // delete this.cancelButton;\r\n // delete this.okButton;\r\n },\r\n loadOrgs: function (route) {\r\n if (!this.form || !route) {\r\n this.hideOrgsArea();\r\n return;\r\n } else {\r\n this.showOrgsArea();\r\n }\r\n if (!this.orgTableObject) this.orgTableObject = {};\r\n if (!this.orgItemsObject) this.orgItemsObject = {};\r\n var isLoaded = false;\r\n for (var key in this.orgTableObject) {\r\n if (route === key) {\r\n this.orgTableObject[key].show();\r\n this.orgItems = this.orgItemsObject[key] || [];\r\n var data = this.getOrgConfig(route);\r\n isLoaded = true;\r\n } else {\r\n this.orgTableObject[key].hide();\r\n }\r\n }\r\n if (isLoaded) return;\r\n\r\n this.orgItems = [];\r\n this.orgItemsObject[route] = this.orgItems;\r\n\r\n var data = this.getOrgConfig(route);\r\n var routeConfig = this.getRouteConfig(route);\r\n var ignoreFirstOrgOldData = false; //(routeConfig.type === \"appendTask\" && routeConfig.appendTaskIdentityType === \"select\");\r\n this.setSize(data.length);\r\n if (data.length) {\r\n this.showOrgsArea();\r\n\r\n var routeOrgTable = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTable\r\n }).inject(this.orgsArea);\r\n this.orgTableObject[route] = routeOrgTable;\r\n\r\n data.each(function (config, i) {\r\n var sNode = new Element(\"div\", {\r\n \"styles\": this.css.routeOrgTr\r\n }).inject(routeOrgTable);\r\n this.loadOrg(sNode, config, ignoreFirstOrgOldData && i == 0)\r\n }.bind(this))\r\n } else {\r\n this.hideOrgsArea();\r\n }\r\n\r\n },\r\n loadOrg: function (container, json, position, ignoreOldData) {\r\n var titleNode = new Element(\"div.selectorTitle\", {\r\n \"styles\": this.css.selectorTitle\r\n }).inject(container);\r\n var titleTextNode = new Element(\"div.selectorTitleText\", {\r\n \"text\": json.title,\r\n \"styles\": this.css.selectorTitleText\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.selectorContent\", {\r\n \"styles\": this.css.selectorContent\r\n }).inject(container);\r\n\r\n var errorNode = new Element(\"div.selectorErrorNode\", {\r\n \"styles\": this.css.selectorErrorNode\r\n }).inject(container);\r\n\r\n var org = new O2ProcessorMobile.Org(contentNode, this.form, json, this, {\r\n onSelect: function (items, data) {\r\n if (!data || !data.length) {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n } else {\r\n contentNode.setStyles(this.css.selectorContent);\r\n }\r\n }.bind(this)\r\n });\r\n org.ignoreOldData = ignoreOldData;\r\n org.errContainer = errorNode;\r\n org.summitDlalog = this;\r\n this.orgItems.push(org);\r\n\r\n titleNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n contentNode.addEvent(\"click\", function () {\r\n this.load();\r\n }.bind(org));\r\n\r\n var defaultValue = org.getValue();\r\n org.loadOrgWidget(defaultValue, contentNode);\r\n if (!defaultValue || defaultValue.length == 0) {\r\n {\r\n contentNode.setStyles(this.css.selectorContent_noItem);\r\n }\r\n }\r\n\r\n },\r\n validationOrgs: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.validation()) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n isOrgsHasEmpower: function () {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = false;\r\n this.needCheckEmpowerOrg = [];\r\n this.orgItems.each(function (item) {\r\n if (item.hasEmpowerIdentity()) {\r\n this.needCheckEmpowerOrg.push(item);\r\n flag = true;\r\n }\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgs: function (keepSilent) {\r\n if (!this.orgItems || !this.orgItems.length) return true;\r\n var flag = true;\r\n this.orgItems.each(function (item) {\r\n if (!item.save(!keepSilent)) flag = false;\r\n }.bind(this));\r\n return flag;\r\n },\r\n saveOrgsWithCheckEmpower: function (callback) {\r\n debugger;\r\n if (!this.orgItems || !this.orgItems.length) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n if (!this.validationOrgs()) return false;\r\n if (!this.isOrgsHasEmpower()) {\r\n if (callback) callback();\r\n return true;\r\n }\r\n //this.checkEmpowerMode = true;\r\n this.showEmpowerDlg(callback);\r\n },\r\n showEmpowerDlg: function (callback) {\r\n\r\n //this.needCheckEmpowerOrg.each( function(org){\r\n // org.saveCheckedEmpowerData();\r\n //}.bind(this));\r\n\r\n var empowerNode = new Element(\"div.empowerNode\", {\"styles\": this.css.empowerNode});\r\n var empowerTitleNode = new Element(\"div\", {\r\n text: \"下列人员对工作进行了授权,选择后文件将发送给被授权人,取消选择后文件将发送给授权者本人\",\r\n styles: this.css.empowerTitleNode\r\n }).inject(empowerNode);\r\n\r\n var orgs = this.needCheckEmpowerOrg;\r\n var len = orgs.length;\r\n var lines = ((len + 1) / 2).toInt();\r\n\r\n var empowerTable = new Element(\"table\", {\r\n \"cellspacing\": 0, \"cellpadding\": 0, \"border\": 0, \"width\": \"100%\",\r\n \"styles\": this.css.empowerTable\r\n }).inject(empowerNode);\r\n\r\n for (var n = 0; n < lines; n++) {\r\n var tr = new Element(\"tr\").inject(empowerTable);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerOddTd}).inject(tr);\r\n new Element(\"td\", {\"width\": \"50%\", \"styles\": this.css.empowerEvenTd}).inject(tr);\r\n }\r\n\r\n var trs = empowerTable.getElements(\"tr\");\r\n orgs.each(function (org, i) {\r\n var sNode;\r\n var width;\r\n if (i + 1 == len && (len % 2 === 1)) {\r\n sNode = trs[trs.length - 1].getFirst(\"td\");\r\n sNode.set(\"colspan\", 2);\r\n trs[trs.length - 1].getLast(\"td\").destroy();\r\n width = \"50%\";\r\n } else {\r\n var row = ((i + 2) / 2).toInt();\r\n var tr = trs[row - 1];\r\n sNode = (i % 2 === 0) ? tr.getFirst(\"td\") : tr.getLast(\"td\");\r\n }\r\n\r\n var titleNode = new Element(\"div.empowerAreaTitle\", {\r\n \"styles\": this.css.empowerAreaTitle\r\n }).inject(sNode);\r\n\r\n var titleTextNode = new Element(\"div.empowerAreaTitleText\", {\r\n \"text\": org.json.title,\r\n \"styles\": this.css.empowerAreaTitleText\r\n }).inject(titleNode);\r\n\r\n var selectAllNode = new Element(\"div\", {\r\n styles: {\r\n float: \"right\"\r\n }\r\n }).inject(titleNode);\r\n\r\n var contentNode = new Element(\"div.empowerAreaContent\", {\r\n \"styles\": this.css.empowerAreaContent\r\n }).inject(sNode);\r\n\r\n org.loadCheckEmpower(null, contentNode, selectAllNode);\r\n\r\n }.bind(this));\r\n\r\n empowerNode.setStyle(\"height\", lines * this.options.orgHeight + 20);\r\n //var dlgHeight = Math.min( Math.floor( this.form.app.content.getSize().y * 0.9) , lines*this.options.orgHeight + 151 );\r\n\r\n //var width = this.node.retrieve(\"width\");\r\n //empowerNode.setStyle( \"width\", width );\r\n var width = \"880\";\r\n //if( len > 1 ){\r\n // width = \"840\"\r\n //}else{\r\n // width = \"420\"\r\n //}\r\n empowerNode.setStyle(\"width\", width + \"px\");\r\n\r\n this.node.getParent().mask({\r\n \"style\": this.css.mask\r\n });\r\n this.empowerDlg = o2.DL.open({\r\n \"title\": \"授权人员替换选择\",\r\n \"style\": this.form.json.dialogStyle || \"user\",\r\n \"isResize\": false,\r\n \"content\": empowerNode,\r\n //\"container\" : this.node,\r\n \"width\": width, //600,\r\n \"height\": \"auto\", //dlgHeight,\r\n \"mark\": false,\r\n \"buttonList\": [\r\n {\r\n \"type\": \"ok\",\r\n \"text\": \"确定\",\r\n \"action\": function (d, e) {\r\n //if (this.empowerDlg) this.empowerDlg.okButton.click();\r\n\r\n orgs.each(function (org, i) {\r\n org.saveCheckedEmpowerData(function () {\r\n if (i === orgs.length - 1) {\r\n if (callback) callback();\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }\r\n }.bind(this))\r\n }.bind(this))\r\n }.bind(this)\r\n },\r\n {\r\n \"type\": \"cancel\",\r\n \"text\": \"取消\",\r\n \"action\": function () {\r\n this.node.getParent().unmask();\r\n this.empowerDlg.close();\r\n }.bind(this)\r\n }\r\n ]\r\n });\r\n },\r\n getCss: function () {\r\n this.css = {\r\n\r\n \"routeGroupNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"padding-left\": \"28px\",\r\n \"color\": \"#000\",\r\n \"background-color\": \"#E3E3E3\",\r\n \"min-height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_over\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/route.png) no-repeat 5px center\"\r\n },\r\n \"routeGroupNode_selected\": {\r\n \"background-color\": \"#E3E3E3\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/routegroup_selected.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeNode\": {\r\n \"float\": \"left\",\r\n \"margin-left\": \"20px\",\r\n \"border-radius\": \"5px\",\r\n \"height\": \"24px\",\r\n \"line-height\": \"24px\",\r\n \"margin-top\": \"8px\",\r\n \"padding-left\": \"26px\",\r\n \"padding-right\": \"8px\",\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#f0f0f0\"\r\n },\r\n \"routeNode_over\": {\r\n \"color\": \"#000\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/nocheck.png) no-repeat 5px center\",\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"routeNode_selected\": {\r\n \"color\": \"#fff\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/process/checked.png) no-repeat 5px center\",\r\n \"background-color\": \"#3296FA\"\r\n },\r\n\r\n \"selectIdeaItemNode\": {\r\n \"line-height\": \"18px\",\r\n \"font-size\": \"14px\",\r\n \"cursor\": \"pointer\",\r\n \"background-color\": \"#FFF\",\r\n \"padding\": \"4px 4px 4px 4px\",\r\n \"overflow\": \"hidden\"\r\n },\r\n \"selectIdeaItemNode_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n\r\n \"handwritingNode\": {\r\n \"position\": \"absolute\",\r\n \"background\": \"#ffffff\"\r\n },\r\n \"handwritingActionNode\": {\r\n \"width\": \"70%\",\r\n \"min-width\": \"100px\",\r\n \"height\": \"3em\",\r\n \"line-height\": \"3em\",\r\n \"margin\": \"5px auto\",\r\n \"border-radius\": \"5px\",\r\n \"border\": \"1px solid #3296FA\",\r\n \"background-color\": \"#3296FA\",\r\n \"text-align\": \"center\",\r\n \"color\": \"#ffffff\",\r\n \"font-size\": \"16px\"\r\n },\r\n\r\n \"inputOpinionAudioRecordAction\": {\r\n \"display\": \"none\",\r\n \"float\": \"right\",\r\n \"border\": \"1px solid #6681a5\",\r\n \"border-radius\": \"3px\",\r\n \"cursor\": \"pointer\",\r\n \"padding-left\": \"24px\",\r\n \"padding-right\": \"5px\",\r\n \"margin-left\": \"5px\",\r\n \"background\": \"url(\" + \"/x_component_process_Work/$Processor/default/audioRecord.png) no-repeat 5px center\"\r\n },\r\n\r\n \"routeOrgTable\": {},\r\n \"routeOrgTr\": {\r\n \"margin-bottom\": \"10px\"\r\n },\r\n \"routeOrgOddTd\": {\r\n \"width\": \"50%\"\r\n },\r\n \"routeOrgEvenTd\": {\r\n \"width\": \"50%\",\r\n \"border-left\": \"5px solid #ffffff\"\r\n },\r\n\r\n \"selectorTitle\": {\r\n \"padding\": \"0px 4px\",\r\n \"height\": \"30px\",\r\n \"line-height\": \"30px\",\r\n \"font-size\": \"14px\",\r\n // \"font-weight\": \"bold\",\r\n \"color\": \"#000\",\r\n \"cursor\": \"pointer\",\r\n \"background\": \"url(/x_component_process_Work/$Processor/mobile/arrow_right2.png) no-repeat right 10px center\",\r\n \"background-color\": \"#fff\"\r\n },\r\n \"selectorTitle_over\": {\r\n \"background-color\": \"#e6ecf8\"\r\n },\r\n \"selectorTitleText\": {\r\n// \"float\": \"left\"\r\n },\r\n \"selectorErrorNode\": {\r\n //\"float\" : \"right\",\r\n \"background-color\": \"#fff\",\r\n \"margin-right\": \"5px\",\r\n \"font-weight\": \"normal\"\r\n },\r\n \"selectorContent\": {\r\n \"overflow\": \"hidden\",\r\n \"background-color\": \"#fff\",\r\n \"padding\": \"0px 5px 5px 5px\"\r\n },\r\n \"selectorContent_noItem\": {\r\n \"padding\": \"0px\"\r\n }\r\n }\r\n\r\n }\r\n});\r\n\r\n\r\nO2ProcessorMobile.Org = new Class({\r\n Implements: [Options, Events],\r\n options: {\r\n height : 240,\r\n moduleEvents : [\"queryLoadSelector\",\"postLoadSelector\",\"postLoadContent\",\"queryLoadCategory\",\"postLoadCategory\",\r\n \"selectCategory\", \"unselectCategory\",\"queryLoadItem\",\"postLoadItem\",\"selectItem\", \"unselectItem\",\"change\"]\r\n },\r\n initialize: function (container, form, json, processor, options) {\r\n this.form = form;\r\n this.json = json;\r\n this.processor = processor;\r\n this.container = $(container);\r\n this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n this.setOptions(options);\r\n },\r\n load : function(){\r\n setTimeout( function(){ //如果有输入法界面,这个时候页面的计算不对,所以等100毫秒\r\n var options = this.getOptions();\r\n if(options){\r\n //this.selector = new MWF.O2Selector(this.container, options);\r\n this.selector = new MWF.O2Selector($(document.body), options);\r\n }\r\n }.bind(this), 100 )\r\n },\r\n _getOrgOptions: function(){\r\n this.selectTypeList = typeOf( this.json.selectType ) == \"array\" ? this.json.selectType : [this.json.selectType];\r\n if( this.selectTypeList.contains( \"identity\" ) ) {\r\n this.identityOptions = new O2ProcessorMobile.IdentityOptions(this.form, this.json);\r\n }\r\n if( this.selectTypeList.contains( \"unit\" ) ) {\r\n this.unitOptions = new O2ProcessorMobile.UnitOptions(this.form, this.json);\r\n }\r\n //if( this.selectTypeList.contains( \"group\" ) ){\r\n // this.groupOptions = new MWF.APPOrg.GroupOptions( this.form, this.json );\r\n //}\r\n },\r\n getOptions: function(){\r\n var _self = this;\r\n this._getOrgOptions();\r\n if( this.selectTypeList.length === 0 )return false;\r\n var exclude = [];\r\n if( this.json.exclude ){\r\n var v = this.form.Macro.exec(this.json.exclude.code, this);\r\n exclude = typeOf(v)===\"array\" ? v : [v];\r\n }\r\n\r\n var identityOpt;\r\n if( this.identityOptions ){\r\n identityOpt = this.identityOptions.getOptions();\r\n if (this.json.identityRange!==\"all\"){\r\n if ( !identityOpt.noUnit && (!identityOpt.units || !identityOpt.units.length) ){\r\n this.form.notice(\"无法确定身份的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if ( !identityOpt.noUnit && this.json.dutyRange && this.json.dutyRange!==\"all\"){\r\n if (!identityOpt.dutys || !identityOpt.dutys.length){\r\n this.form.notice(\"无法确定职务的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n identityOpt.values = this._computeValue() || [];\r\n }else{\r\n identityOpt.values = this.getValue();\r\n }\r\n identityOpt.exclude = exclude;\r\n }\r\n\r\n var unitOpt;\r\n if( this.unitOptions ){\r\n unitOpt = this.unitOptions.getOptions();\r\n if (this.json.unitRange!==\"all\"){\r\n if ( !unitOpt.units || !unitOpt.units.length){\r\n this.form.notice(\"无法确定组织的选择范围\", \"error\", this.node);\r\n return false;\r\n }\r\n }\r\n if( this.ignoreOldData ){\r\n unitOpt.values = this._computeValue() || [];\r\n }else{\r\n unitOpt.values = this.getValue();\r\n }\r\n unitOpt.exclude = exclude;\r\n }\r\n\r\n //var groupOpt;\r\n //if( this.groupOptions ){\r\n // groupOpt = this.groupOptions.getOptions();\r\n // groupOpt.values = (this.json.isInput) ? [] : values;\r\n // groupOpt.exclude = exclude;\r\n //}\r\n\r\n var defaultOpt = {\r\n \"style\" : \"default\",\r\n \"zIndex\" : 3000\r\n };\r\n\r\n if( this.json.events && typeOf(this.json.events) === \"object\" ){\r\n Object.each(this.json.events, function(e, key){\r\n if (e.code){\r\n if (this.options.moduleEvents.indexOf(key)!==-1){\r\n //this.addEvent(key, function(event){\r\n // return this.form.Macro.fire(e.code, this, event);\r\n //}.bind(this));\r\n if( key === \"postLoadSelector\" ) {\r\n this.addEvent(\"loadSelector\", function (selector) {\r\n return this.form.Macro.fire(e.code, selector);\r\n }.bind(this))\r\n }else if( key === \"queryLoadSelector\"){\r\n defaultOpt[\"onQueryLoad\"] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }else{\r\n defaultOpt[\"on\"+key.capitalize()] = function(target){\r\n return this.form.Macro.fire(e.code, target);\r\n }.bind(this)\r\n }\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n\r\n if( this.form.json.selectorStyle ){\r\n defaultOpt = Object.merge( Object.clone(this.form.json.selectorStyle), defaultOpt );\r\n if( this.form.json.selectorStyle.style )defaultOpt.style = this.form.json.selectorStyle.style;\r\n }\r\n\r\n var mobileEvents = {\r\n \"onComplete\": function(items){\r\n this.selectOnComplete(items);\r\n }.bind(this),\r\n \"onCancel\": this.selectOnCancel.bind(this),\r\n \"onClose\": this.selectOnClose.bind(this)\r\n };\r\n\r\n if( this.selectTypeList.length === 1 ){\r\n return Object.merge(\r\n defaultOpt,\r\n {\r\n \"type\": this.selectTypeList[0],\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this, this.selector )\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n },\r\n mobileEvents,\r\n identityOpt || unitOpt\r\n )\r\n }else if( this.selectTypeList.length > 1 ){\r\n var options = {\r\n \"type\" : \"\",\r\n \"types\" : this.selectTypeList,\r\n \"onLoad\": function(){\r\n //this 为 selector\r\n _self.selectOnLoad(this)\r\n }\r\n //\"onComplete\": function(items){\r\n // this.selectOnComplete(items);\r\n //}.bind(this),\r\n //\"onCancel\": this.selectOnCancel.bind(this),\r\n //\"onClose\": this.selectOnClose.bind(this)\r\n };\r\n if( identityOpt ){\r\n options.identityOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n identityOpt\r\n );\r\n }\r\n if( unitOpt ){\r\n options.unitOptions = Object.merge(\r\n defaultOpt,\r\n mobileEvents,\r\n unitOpt\r\n );\r\n }\r\n //if( groupOpt )options.groupOptions = groupOpt;\r\n return options;\r\n }\r\n },\r\n selectOnComplete: function(items){ //移动端才执行\r\n var array = [];\r\n items.each(function(item){\r\n array.push(item.data);\r\n }.bind(this));\r\n this.checkEmpower( array, function( data ){\r\n var values = [];\r\n data.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n\r\n this.setData(values);\r\n\r\n //this.validationMode();\r\n //this.validation();\r\n\r\n this.container.empty();\r\n this.loadOrgWidget(values, this.container);\r\n\r\n this.selector = null;\r\n\r\n this.fireEvent(\"select\", [items, values]);\r\n }.bind(this))\r\n },\r\n selectOnCancel: function(){ //移动端才执行\r\n //this.validation();\r\n },\r\n selectOnLoad: function( selector ){\r\n //if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"none\");\r\n this.fireEvent(\"loadSelector\", [selector])\r\n },\r\n selectOnClose: function(){\r\n var v = this._getBusinessData();\r\n //if (!v || !v.length) if (this.descriptionNode) this.descriptionNode.setStyle(\"display\", \"block\");\r\n },\r\n loadOrgWidget: function(value, node){\r\n var height = node.getStyle(\"height\").toInt();\r\n if (node.getStyle(\"overflow\")===\"visible\" && !height) node.setStyle(\"overflow\", \"hidden\");\r\n if (value && value.length){\r\n value.each(function(data){\r\n var flag = data.distinguishedName.substr(data.distinguishedName.length-1, 1);\r\n var copyData = Object.clone(data);\r\n if( this.json.displayTextScript && this.json.displayTextScript.code ){\r\n this.currentData = copyData;\r\n var displayName = this.form.Macro.exec(this.json.displayTextScript.code, this);\r\n if( displayName ){\r\n copyData.displayName = displayName;\r\n }\r\n this.currentData = null;\r\n }\r\n\r\n var widget;\r\n switch (flag.toLowerCase()){\r\n case \"i\":\r\n widget = new MWF.widget.O2Identity(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"p\":\r\n widget = new MWF.widget.O2Person(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"u\":\r\n widget = new MWF.widget.O2Unit(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n case \"g\":\r\n widget = new MWF.widget.O2Group(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n break;\r\n default:\r\n widget = new MWF.widget.O2Other(copyData, node, {\"style\": \"xform\",\"lazy\":true});\r\n }\r\n widget.field = this;\r\n }.bind(this));\r\n }\r\n },\r\n\r\n hasEmpowerIdentity : function(){\r\n var data = this.getData();\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n return this.empowerChecker.hasEmpowerIdentity( data );\r\n },\r\n checkEmpower : function( data, callback, container, selectAllNode ){\r\n if( typeOf(data)===\"array\" && this.identityOptions && this.json.isCheckEmpower && this.json.identityResultType === \"identity\" ) {\r\n if(!this.empowerChecker )this.empowerChecker = new O2ProcessorMobile.EmpowerChecker(this.form, this.json, this.processor);\r\n this.empowerChecker.selectAllNode = selectAllNode;\r\n this.empowerChecker.load(data, callback, container);\r\n }else{\r\n if( callback )callback( data );\r\n }\r\n },\r\n\r\n loadCheckEmpower : function( callback, container, selectAllNode ){\r\n this.checkEmpower( this.getData(), callback, container, selectAllNode)\r\n },\r\n saveCheckedEmpowerData:function( callback ){\r\n var data = this.getData();\r\n //this.empowerChecker.replaceEmpowerIdentity(data, function( newData ){\r\n this.empowerChecker.setIgnoreEmpowerFlag(data, function( newData ){\r\n var values = [];\r\n newData.each(function(d){\r\n values.push(MWF.org.parseOrgData(d, true));\r\n }.bind(this));\r\n this.setData( values );\r\n if( callback )callback(values)\r\n }.bind(this))\r\n },\r\n\r\n save: function( isValid ){\r\n if( isValid ){\r\n if( this.validation() ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n }else{\r\n this.setData( this.getData() );\r\n return true;\r\n }\r\n },\r\n\r\n resetSelectorData : function(){\r\n if( this.selector && this.selector.selector ){\r\n this.selector.selector.emptySelectedItems();\r\n this.selector.selector.options.values = this.getValue();\r\n this.selector.selector.setSelectedItem();\r\n }\r\n },\r\n resetData: function(){\r\n var v = this.getValue();\r\n //this.setData((v) ? v.join(\", \") : \"\");\r\n this.setData(v);\r\n },\r\n getData: function(){\r\n if( this.selector && !layout.mobile ){\r\n return this.getSelectedData();\r\n }else{\r\n return this.getValue();\r\n }\r\n },\r\n getSelectedData : function(){\r\n return this.getValue();\r\n },\r\n getValue: function(){\r\n var value = this._getBusinessData();\r\n if (!value) value = this._computeValue();\r\n return value || \"\";\r\n },\r\n _computeValue: function(){\r\n var values = [];\r\n if (this.json.identityValue) {\r\n this.json.identityValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.unitValue) {\r\n this.json.unitValue.each(function(v){ if (v) values.push(v)});\r\n }\r\n if (this.json.dutyValue) {\r\n var dutys = JSON.decode(this.json.dutyValue);\r\n var par;\r\n if (dutys.length){\r\n dutys.each(function(duty){\r\n if (duty.code) par = this.form.Macro.exec(duty.code, this);\r\n var code = \"return this.org.getDuty(\\\"\"+duty.name+\"\\\", \\\"\"+par+\"\\\")\";\r\n\r\n var d = this.form.Macro.exec(code, this);\r\n if (typeOf(d)!==\"array\") d = (d) ? [d.toString()] : [];\r\n d.each(function(dd){if (dd) values.push(dd);});\r\n\r\n }.bind(this));\r\n }\r\n }\r\n if (this.json.defaultValue && this.json.defaultValue.code){\r\n var fd = this.form.Macro.exec(this.json.defaultValue.code, this);\r\n if (typeOf(fd)!==\"array\") fd = (fd) ? [fd] : [];\r\n fd.each(function(fdd){\r\n if (fdd){\r\n if (typeOf(fdd)===\"string\"){\r\n var data;\r\n this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = json.data }.bind(this), null, fdd, false);\r\n values.push(data);\r\n }else{\r\n values.push(fdd);\r\n }\r\n }\r\n }.bind(this));\r\n }\r\n if (this.json.count>0){\r\n return values.slice(0, this.json.count);\r\n }\r\n return values;\r\n //return (this.json.defaultValue.code) ? this.form.Macro.exec(this.json.defaultValue.code, this): (value || \"\");\r\n },\r\n getOrgAction: function(){\r\n if (!this.orgAction) this.orgAction = MWF.Actions.get(\"x_organization_assemble_control\");\r\n //if (!this.orgAction) this.orgAction = new MWF.xApplication.Selector.Actions.RestActions();\r\n return this.orgAction;\r\n },\r\n setData: function(value){\r\n\r\n if (!value) return false;\r\n var oldValues = this.getValue();\r\n var values = [];\r\n\r\n var type = typeOf(value);\r\n if (type===\"array\"){\r\n value.each(function(v){\r\n var vtype = typeOf(v);\r\n var data = null;\r\n if (vtype===\"string\"){\r\n this.getOrgAction()[this.getValueMethod(v)](function(json){ data = MWF.org.parseOrgData(json.data, true); }.bind(this), error, v, false);\r\n }\r\n if (vtype===\"object\") {\r\n data = MWF.org.parseOrgData(v, true);\r\n if(data.woPerson)delete data.woPerson;\r\n }\r\n if (data)values.push(data);\r\n }.bind(this));\r\n }\r\n if (type===\"string\"){\r\n var vData;\r\n this.getOrgAction()[this.getValueMethod(value)](function(json){ vData = MWF.org.parseOrgData(json.data, true); }.bind(this), error, value, false);\r\n if (vData)values.push(vData);\r\n }\r\n if (type===\"object\"){\r\n var vData = MWF.org.parseOrgData(value, true);\r\n if(vData.woPerson)delete vData.woPerson;\r\n values.push( vData );\r\n }\r\n\r\n var change = false;\r\n if (oldValues.length && values.length){\r\n if (oldValues.length === values.length){\r\n for (var i=0; i 0) {\r\n o2.Actions.get(\"x_organization_assemble_express\").listEmpowerWithIdentity({\r\n \"application\": (this.form.businessData.work || this.form.businessData.workCompleted).application,\r\n \"process\": (this.form.businessData.work || this.form.businessData.workCompleted).process,\r\n \"work\" : (this.form.businessData.work || this.form.businessData.workCompleted).id,\r\n \"identityList\": array\r\n }, function (json) {\r\n var arr = [];\r\n json.data.each(function (d) {\r\n if (d.fromIdentity !== d.toIdentity)\r\n arr.push(d);\r\n });\r\n if (arr.length > 0) {\r\n flag = true;\r\n }\r\n }.bind(this), null, false)\r\n }\r\n }\r\n return flag;\r\n },\r\n getSelectedData : function( callback ){\r\n var json = {};\r\n this.empowerSelectNodes.each(function(node){\r\n if( node.retrieve(\"isSelected\") ){\r\n var d = node.retrieve(\"data\");\r\n json[ d.fromIdentity ] = d;\r\n }\r\n }.bind(this));\r\n if( callback )callback( json );\r\n }\r\n});\r\n\r\nO2ProcessorMobile.UnitOptions = new Class({\r\n Extends : MWF.APPOrg.UnitOptions\r\n});\r\n\r\nO2ProcessorMobile.IdentityOptions = new Class({\r\n Extends : MWF.APPOrg.IdentityOptions\r\n});" + }, + "load": { + "code": "this.loadProcessorMobile()", + "html": "this.loadProcessorMobile()" + } + }, + "properties": { + "text": "这里的queryLoad加载源码,load事件执行初始化" + }, + "isSaved": true, + "pid": "Mobile3af5d031-b50b-465b-bc8c-cc13e3327549div_loadSubmitForm", + "moduleName": "div", + "recoveryStyles": { + "display": "none" + }, + "preprocessing": "y" + } + }, + "formStyleType": "defaultMobile", + "pid": "Mobile3af5d031-b50b-465b-bc8c-cc13e33275493af5d031-b50b-465b-bc8c-cc13e3327549", + "submitFormType": "select", + "isPrompt": true, + "promptPosition": "center", + "defaultTools": [ + { + "type": "MWFToolBarButton", + "img": "save.png", + "title": "{{$.lp.saveTitle}}", + "action": "saveWork", + "text": "{{$.lp.save}}", + "id": "action_saveData", + "control": "allowSave", + "condition": "", + "read": false + }, + { + "type": "MWFToolBarButton", + "img": "submit.png", + "title": "{{$.lp.flowTitle}}", + "action": "processWork", + "text": "{{$.lp.flow}}", + "id": "action_processWork", + "control": "allowProcessing", + "condition": "", + "read": false + }, + { + "type": "MWFToolBarButton", + "img": "retract.png", + "title": "{{$.lp.retractTitle}}", + "action": "retractWork", + "text": "{{$.lp.retract}}", + "id": "action_retract", + "control": "allowRetract", + "condition": "", + "read": true + }, + { + "type": "MWFToolBarButton", + "img": "read.png", + "title": "{{$.lp.setReaded}}", + "action": "readedWork", + "text": "{{$.lp.readed}}", + "id": "action_readed", + "control": "allowReadProcessing", + "condition": "", + "read": true + }, + { + "type": "MWFToolBarButton", + "img": "rollback.png", + "title": "{{$.lp.rollbackTitle}}", + "action": "rollback", + "text": "{{$.lp.rollback}}", + "id": "action_rollback", + "control": "allowRollback", + "condition": "", + "read": true + }, + { + "type": "MWFToolBarButton", + "img": "del.png", + "title": "{{$.lp.deleteTitle}}", + "action": "deleteWork", + "text": "{{$.lp.delete}}", + "id": "action_delete", + "control": "allowDelete", + "condition": "", + "read": false + }, + { + "type": "MWFToolBarButton", + "img": "press.png", + "title": "{{$.lp.pressTitle}}", + "action": "pressWork", + "text": "{{$.lp.press}}", + "id": "action_press", + "control": "allowPress", + "condition": "", + "read": true + } + ], + "tools": [], + "styleConfig": { + "name": "手机样式", + "file": "styles_defaultMobile.json", + "mode": [ + "pc", + "mobile" + ] + }, + "languageType": "none", + "afterProcessAction": "close", + "subformList": [], + "$version": "5.2", + "submitScript": { + "code": "layout.mobile ? this.popupProcessorMobile() : this.popupProcessor();" + } + }, + "html": "
选择决策组
选择决策
填写意见
手写
选择人员
确定
取消
这里的queryLoad加载源码,load事件执行初始化
" +} \ No newline at end of file -- GitLab