# Demo示例

# demo-1 表单设计与流程管理分权

# 需求

表单管理员可以做表单设计、操作设置和应用绑定的切换,流程管理员被表单管理员授权制作流程,但不能设计表单,设计器界面对流程管理员来说需要做表单设计的相关屏蔽处理。

# 解决方法

流程管理员进入表单设计器首个页面时只能预览

window.formDesignerExtend = {
    config: {
        baseCfg: {
            supportDesign: false //是否支持设计器编辑
        }
    }
};

配合URL参数onlyEditWF(仅流程管理员有)解析

# 效果

# demo-2 带条件隐藏表格

# 需求

根据不同的条件隐藏相应的表格(主表区域、明细表)。

# 分析与解决

1.标准产品默认不支持条件格式设置,需要配置对应能力(supportConditionFormat)

2.设置条件后需要选取对应表格,默认不支持主表块的识别(主表区域的唯一名称),故还需要配置设置主表名的能力(supportMasterTbName)

window.formDesignerExtend = {
    config: {
        settingArea: {
            //表单属性设置
            formSetting: {
                supportConditionFormat: true //是否支持条件格式设置
            },
            //控件属性设置
            ctrlSetting: {
                supportMasterTbName: true //是否支持主表名设置
            }
        }
    },
    event: {
        onConditionFormatClick: onConditionFormatClick
    }
};

3.添加条件格式设置窗逻辑

function onConditionFormatClick(data) {
    var defId = data.formId;//表单ID
   var viewId = data.currentView.id;
   if(viewId ==  ""){
    $.alert("请先保存表单");
    return false;
   }
   var plat = data.currentView.plat;
   dialogCondSet = $.dialog({
    width:620,
    height:450,
    targetWindow:getCtpTop(),
    transParams: {
              transData: data,
              winObj : window
          },
    url:_ctxPath + "/ext/formCond.do?method=formConditionHidden&formId="+defId+"&hideType=table&viewId="+viewId+"&plat="+plat,
       title : "视图条件格式设置",
       buttons : [{
         text : $.i18n('common.button.ok.label'),
         id:"doOk",
         isEmphasize: true,
         handler : function() {
          var retValue = dialogCondSet.getReturnValue({"operationId":"doOk"});
          var cssObj = $("<i class='icon CAP cap-icon-duigou' style='color: rgb(126, 211, 33);'></i>");
          if(!$("#formdesign-frame").contents().find(".form-setting-button:eq(2)").find(".cap-icon-duigou").length > 0){
           $("#formdesign-frame").contents().find(".form-setting-button:eq(2)").append(cssObj);
          }
         }
       },{
          text : $.i18n('common.button.empty.label'),
          id:"deleteAndExit",
       isEmphasize: true,
          handler : function() {
           var retValue = dialogCondSet.getReturnValue({"operationId":"deleteAndExit"});
           $("#formdesign-frame").contents().find(".form-setting-button:eq(2)").find(".cap-icon-duigou").remove();
          }
        },{
         text : $.i18n('common.button.cancel.label'),
         handler : function() {
          dialogCondSet.close();
         }
       } ]
   });
}

# 效果

# demo-3 带条件隐藏明细表列

# 需求

根据不同的条件隐藏某个明细表的指定列。

# 分析与解决

1.默认不支持列隐藏设置,需要配置对应能力(supportColumnHide)

2.对于已设置列隐藏后的明细表,选中时需要标识是否已经设置过,即在表格选中事件(viewTableSelected)触发时更新其样式

window.formDesignerExtend = {
    config: {
        settingArea: {
            //控件属性设置
            ctrlSetting: {
                supportColumnHide: true //是否支持列隐藏设置
            }
        }
    },
    event: {
     viewTableSelected: viewTableSelectedFn
        onTableColumnHideClick: onTableColumnHideClick
    }
};

3.onTableColumnHideClick中实现列隐藏设置逻辑,viewTableSelectedFn中添加列隐藏按钮样式更新逻辑

function viewTableSelectedFn(data,obj){
    var cssObj = $("<i class='icon CAP cap-icon-duigou' style='color: rgb(126, 211, 33);'></i>");
    var formId = data.formId;
    var viewId ="";
    var platForm="";
    if(obj && "tabSwitch" == obj){
        viewId = data.toView.id;
        platForm = data.toView.plat;
    }else{
        viewId = data.currentView.id;
        platForm = data.currentView.plat;
    }
    //是否已经设置隐藏列
    callBackendMethod("capExtendManager","getCssSet",formId,viewId,platForm,"","",{
        success : function(returnList){
         var $btn = $("#formdesign-frame").contents().find(".form-setting-button:eq(2)");
            if(returnList.columnHidden == "true"){
                $btn.append(cssObj);
            }else if(returnList.columnHidden == "false"){
                $btn.find(".cap-icon-duigou").remove();
            }
        }
    });
}

function onTableColumnHideClick(data){
    var defId = data.formId;//表单ID
    var viewId = data.currentView.id;
    var detailTableName = data.currentTable.tableName;
    if(viewId ==  ""){
        $.alert("请先保存表单");
        return false;
    }
    var colArray = data.currentTable.cells;
    if(colArray.length > 0 && colArray[0].rowIndex == 1){
        $.alert("请先设置表头信息");
        return false;
    }
    var plat = data.currentView.plat;
    dialogCondSet = $.dialog({
        width:620,
        height:450,
        targetWindow:getCtpTop(),
        transParams: {
            transData: data,
            winObj : window
        },
        url:_ctxPath + "/ext/formCond.do?method=formConditionHidden&formId="+defId+"&hideType=column&" +
            "viewId="+viewId+"&plat="+plat+"&detailTableName="+detailTableName,
        title : "隐藏列设置",
        buttons : [{
            text : $.i18n('common.button.ok.label'),
            handler : function() {
                var retValue = dialogCondSet.getReturnValue({"operationId":"doOk"});
                var cssObj = $("<i class='icon CAP cap-icon-duigou' style='color: rgb(126, 211, 33);'></i>");
                if(!$("#formdesign-frame").contents().find(".ctrl-setting-button").find(".cap-icon-duigou").length > 0){
                    $("#formdesign-frame").contents().find(".ctrl-setting-button").append(cssObj);
                }
            }
        },{
            text : $.i18n('common.button.empty.label'),
            id:"deleteAndExit",
            isEmphasize: true,
            handler : function() {
                var retValue = dialogCondSet.getReturnValue({"operationId":"deleteAndExit"});
                $("#formdesign-frame").contents().find(".ctrl-setting-button").find(".cap-icon-duigou").remove();
            }
        },{
            text : $.i18n('common.button.cancel.label'),
            handler : function() {
                dialogCondSet.close();
            }
        } ]
    });
}

# 效果

# 示例源码下载

[附件][[源码下载|path:../../../code/demo-extend.zip]]

创建人:yinyanting