O2OA API

source

x_component_process_Xform/Actionbar.js

MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
//MWF.require("MWF.widget.Tree", null, false);
//MWF.require("MWF.widget.Toolbar", null, false);

/** @class Actionbar 操作条组件。
 * @o2cn 操作条
 * @example
 * //可以在脚本中获取该组件
 * //方法1:
 * var actionbar = this.form.get("name"); //获取操作条
 * //方法2
 * var actionbar = this.target; //在操作条和操作本身的事件脚本中获取
 * @extends MWF.xApplication.process.Xform.$Module
 * @o2category FormComponents
 * @o2range {Process|CMS}
 * @hideconstructor
 */
MWF.xApplication.process.Xform.Actionbar = MWF.APPActionbar =  new Class(
    /** @lends MWF.xApplication.process.Xform.Actionbar# */
    {
        Extends: MWF.APP$Module,
        options: {
            /**
             * 组件加载前触发。当前组件的queryLoad事件还没有在form里注册,通过this.form.get("fieldId")不能获取到当前组件,需要用this.target获取当前组件。
             * @event MWF.xApplication.process.Xform.Actionbar#queryLoad
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
             */
            /**
             * 组件加载时触发。
             * @event MWF.xApplication.process.Xform.Actionbar#load
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
             */
            /**
             * 组件加载后事件.由于加载过程中有异步处理,这个时候操作条有可能还未生成。
             * @event MWF.xApplication.process.Xform.Actionbar#postLoad
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
             */
            /**
             * 组件加载后事件。这个时候操作条已生成
             * @event MWF.xApplication.process.Xform.Actionbar#afterLoad
             * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
             */
            "moduleEvents": ["load", "queryLoad", "postLoad", "afterLoad"]
        },
        /**
         * @summary 重新加载操作条。会触发afterLoad事件
         * @example
         * this.form.get("name").reload(); //显示操作条
         */
        reload : function(){
            this._loadUserInterface();
        },
        _loadUserInterface: function(){
            // if (this.form.json.mode == "Mobile"){
            //     this.node.empty();
            // }else if (COMMON.Browser.Platform.isMobile){
            //     this.node.empty();
            // }else{
            this.toolbarNode = this.node.getFirst("div");
            if(!this.toolbarNode)return;

            this.toolbarNode.empty();

            MWF.require("MWF.widget.Toolbar", function(){
                /**
                 * @summary Toolbar组件,平台使用该组件生成操作条。
                 * @member {o2.widget.Toolbar}
                 * @example
                 *  //可以在脚本中获取该组件
                 * var toolbarWidget = this.form.get("fieldId").toolbarWidget; //获取组件对象
                 */
                this.toolbarWidget = new MWF.widget.Toolbar(this.toolbarNode, {
                    "style": this.json.style,
                    "onPostLoad" : function(){
                        this.fireEvent("afterLoad");
                    }.bind(this)
                }, this);
                if (this.json.actionStyles) this.toolbarWidget.css = this.json.actionStyles;
                //alert(this.readonly)

                if( this.json.multiTools ){ //自定义操作和系统操作混合的情况,用 system : true 来区分系统和自定义
                    var addReadActionFlag = !this.json.hideSystemTools && !this.json.hideReadedAction; //是否需要增加已阅
                    var jsonStr = JSON.stringify(this.json.multiTools);
                    jsonStr = o2.bindJson(jsonStr, {"lp": MWF.xApplication.process.Xform.LP.form});
                    this.json.multiTools = JSON.parse(jsonStr);
                    this.json.multiTools.each( function (tool) {
                        if( tool.system ){
                            if( !this.json.hideSystemTools ){
                                if( tool.id === "action_readed" )addReadActionFlag = false;
                                this.setToolbars([tool], this.toolbarNode, this.readonly);
                            }
                        }else{
                            this.setCustomToolbars([tool], this.toolbarNode);
                        }
                    }.bind(this));
                    if( addReadActionFlag ){
                        var addActions = [
                            {
                                "type": "MWFToolBarButton",
                                "img": "read.png",
                                "title": MWF.xApplication.process.Xform.LP.setReaded,
                                "action": "readedWork",
                                "text": MWF.xApplication.process.Xform.LP.readed,
                                "id": "action_readed",
                                "control": "allowReadProcessing",
                                "condition": "",
                                "read": true
                            }
                        ];
                        this.setToolbars(addActions, this.toolbarNode, this.readonly);
                    }
                    this.toolbarWidget.load();
                }else{
                    if (this.json.hideSystemTools){
                        this.setCustomToolbars(this.json.tools, this.toolbarNode);
                        this.toolbarWidget.load();
                    }else{
                        if (this.json.defaultTools){
                            var addActions = [
                                {
                                    "type": "MWFToolBarButton",
                                    "img": "read.png",
                                    "title": MWF.xApplication.process.Xform.LP.setReaded,
                                    "action": "readedWork",
                                    "text": MWF.xApplication.process.Xform.LP.readed,
                                    "id": "action_readed",
                                    "control": "allowReadProcessing",
                                    "condition": "",
                                    "read": true
                                }
                            ];
                            //this.form.businessData.control.allowReflow =

                            //this.json.defaultTools.push(o);
                            this.setToolbars(this.json.defaultTools, this.toolbarNode, this.readonly);
                            if( !this.json.hideReadedAction ){
                                this.setToolbars(addActions, this.toolbarNode, this.readonly);
                            }

                            this.setCustomToolbars(this.json.tools, this.toolbarNode);
                            this.toolbarWidget.load();
                        }else{
                            MWF.getJSON(this.form.path+"toolbars.json", function(json){
                                this.setToolbars(json, this.toolbarNode, this.readonly, true);
                                this.setCustomToolbars(this.json.tools, this.toolbarNode);
                                this.toolbarWidget.load();
                            }.bind(this), null);
                        }
                    }
                }

                if (this.toolbarWidget.items["action_goBack"]){
                    // 异步判断是否有可退回的活动
                    if (this.form.businessData.task) o2.Actions.load('x_processplatform_assemble_surface').WorkAction.V2ListActivityGoBack(this.form.businessData.task.work, function(json){
                        if (json.data.length){
                            this.toolbarWidget.items["action_goBack"].show();
                        }
                    }.bind(this));
                }

            }.bind(this));
        },

        setCustomToolbars: function(tools, node){
            var path = "../x_component_process_FormDesigner/Module/Actionbar/";
            var iconPath = "";
            if( this.json.customIconStyle ){
                iconPath = this.json.customIconStyle+"/";
            }
            tools.each(function(tool){
                var flag = true;
                if (this.readonly){
                    flag = tool.readShow;
                }else{
                    flag = tool.editShow;
                }
                if (flag){
                    flag = true;
                    if (tool.control){
                        flag = this.form.businessData.control[tool.control]
                    }
                    if (tool.condition){
                        var hideFlag = this.form.Macro.exec(tool.condition, this);
                        flag = !hideFlag;
                    }
                    if (flag){
                        var actionNode = new Element("div", {
                            "id": tool.id,
                            "MWFnodetype": tool.type,
                            "MWFButtonImage": path+""+this.form.options.style+"/custom/"+iconPath+tool.img,
                            "title": tool.title,
                            "MWFButtonAction": "runCustomAction",
                            "MWFButtonText": tool.text
                        }).inject(node);
                        if( this.json.customIconOverStyle ){
                            actionNode.set("MWFButtonImageOver" , path+""+this.form.options.style +"/custom/"+this.json.customIconOverStyle+ "/" +tool.img );
                        }
                        if( tool.properties ){
                            actionNode.set(tool.properties);
                        }
                        if (tool.actionScript){
                            actionNode.store("script", tool.actionScript);
                        }
                        if (tool.sub){
                            var subNode = node.getLast();
                            this.setCustomToolbars(tool.sub, subNode);
                        }
                    }
                }
            }.bind(this));
        },

        getImagePath: function(img, iscustom){
            var path = "../x_component_process_FormDesigner/Module/Actionbar/";
            if( iscustom ){
                var iconPath = this.json.customIconStyle ? (this.json.customIconStyle+ "/") : "";
                return path+""+this.form.options.style+"/custom/"+iconPath+img;
            }else{
                return path+(this.options.style||"default") +"/tools/"+ (this.json.style || "default") +"/"+img;
            }
        },
        getImageOverPath: function(img, iscustom){
            var path = "../x_component_process_FormDesigner/Module/Actionbar/";
            if( iscustom && this.json.customIconOverStyle ){
                return path+""+this.form.options.style +"/custom/"+this.json.customIconOverStyle+ "/" +img
            }else{
                return path+""+(this.options.style||"default")+"/tools/"+( this.json.iconOverStyle || "default" )+"/"+img;
            }
        },
        setToolbarItem: function(tool, node, readonly, noCondition){
            var path = "../x_component_process_FormDesigner/Module/Actionbar/";
            var flag = true;
            if (tool.control){
                flag = this.form.businessData.control[tool.control]
            }
            if (!noCondition) if (tool.condition){
                var hideFlag = this.form.Macro.exec(tool.condition, this);
                flag = flag && (!hideFlag);
            }

            if (tool.id == "action_downloadAll" || tool.id == "action_print"){
                if (!this.form.businessData.work.startTime){
                    flag = false;
                }
            }
            if (tool.id == "action_delete"){
                if (!this.form.businessData.work || !this.form.businessData.work.id){
                    flag = false;
                }
            }

            if (tool.id == "action_rollback") tool.read = true;
            if (readonly) if (!tool.read) flag = false;
            if (flag){
                var actionNode = new Element("div", {
                    "id": tool.id,
                    "MWFnodetype": tool.type,
                    //"MWFButtonImage": this.form.path+""+this.form.options.style+"/actionbar/"+tool.img,
                    "MWFButtonImage": this.getImagePath(tool.img, tool.customImg),
                    "title": tool.title,
                    "MWFButtonAction": tool.action,
                    "MWFButtonText": tool.text,
                    "MWFHide": (tool.id === "action_goBack") ? 'true' : ''
                }).inject(node);
                if( this.json.iconOverStyle ){
                    actionNode.set("MWFButtonImageOver" , this.getImageOverPath(tool.img, tool.customImg) );
                }
                if( tool.properties ){
                    actionNode.set(tool.properties);
                }
                if (tool.sub){
                    var subNode = node.getLast();
                    this.setToolbars(tool.sub, subNode, readonly, noCondition);
                }
            }
        },
        /**
         * @summary 根据操作id获取操作,该方法在操作条的afterLoad事件中有效,操作的操作脚本有效。
         *  @param {String} id - 必选,操作id.
         *  @return {o2.widget.ToolbarButton} 操作
         *  @example
         *  var actionbar = this.form.get("name"); //获取操作条
         *  var item = actionbar.getItem( "action_delete" ); //获取删除操作
         *  item.node.hide(); //隐藏删除操作的节点
         *  item.node.click(); //触发操作的click事件
         */
        getItem : function( id ){
            if( this.toolbarWidget && id ){
                return this.toolbarWidget.items[id]
            }
        },
        /**
         * @summary 获取所有操作,该方法在操作条的afterLoad事件中有效,操作的操作脚本有效。
         *  @return {Array} 操作数组
         *  @example
         *  var actionbar = this.form.get("name"); //获取操作条
         *  var itemList = actionbar.getAllItem(); //获取操作数组
         *  itemList[1].node.hide(); //隐藏第一个操作
         */
        getAllItem : function(){
            return this.toolbarWidget ? this.toolbarWidget.childrenButton : [];
        },
        setToolbars: function(tools, node, readonly, noCondition){
            tools.each(function(tool){
                this.setToolbarItem(tool, node, readonly, noCondition);
            }.bind(this));
        },
        runCustomAction: function(bt){
            var script = bt.node.retrieve("script");
            this.form.Macro.exec(script, this);
        },
        saveWork: function(){
            debugger;
            this.form.saveWork();
        },
        closeWork: function(){
            this.form.closeWork();
        },
        flowWork: function(){
            this.form.flowWork();
        },
        processWork: function(){
            this.form.processWork();
        },
        resetWork: function(){
            this.form.resetWork();
        },
        addTask: function(){
            this.form.addTask();
        },
        retractWork: function(e, ev){
            this.form.retractWork(e, ev);
        },
        rerouteWork: function(e, ev){
            this.form.rerouteWork(e, ev);
        },
        deleteWork: function(){
            this.form.deleteWork();
        },
        printWork: function(){
            this.form.printWork();
        },
        readedWork: function(b,e){
            this.form.readedWork(e);
        },
        addSplit: function(e){
            this.form.addSplit(e);
        },
        rollback: function(e){
            this.form.rollback(e);
        },
        downloadAll: function(e){
            this.form.downloadAll(e);
        },
        monitor: function(e){
            this.form.monitor(e);
        },
        pressWork: function(e){
            this.form.pressWork(e);
        },
        pauseTask: function(e){
            var p = this.form.pauseTask(e);
            if (p){
                p.then(function(){
                    e.setText(MWF.xApplication.process.Xform.LP.resume);
                    e.options.action = "resumeTask";

                    var img = e.picNode.getElement("img");
                    var src = img.get("src");
                    src = src.substr(0, src.lastIndexOf("/"));
                    src = src+"/resume.png";
                    img.set("src", src);

                }.bind(this), function(){});
            }
        },
        resumeTask: function(e){
            var p = this.form.resumeTask(e);
            if (p){
                p.then(function(){
                    e.setText( MWF.xApplication.process.Xform.LP.pause);
                    e.options.action = "pauseTask";

                    var img = e.picNode.getElement("img");
                    var src = img.get("src");
                    src = src.substr(0, src.lastIndexOf("/"));
                    src = src+"/pause.png";
                    img.set("src", src);

                }.bind(this), function(){});
            }
        },
        goBack: function(e){
            this.form.goBack(e);
        },

        terminate: function(e, ev){
            this.form.terminateWork(e, ev);
        }

    });

results matching

    No results matching ''