1.概要

在表单方案中,目前有一些现在定义的按钮,用户可以自己编写按钮事件响应代码。用户还可以自定义自己的按钮,那么本文介绍一下目前的按钮功能和开发自己的按钮。

2.按钮定义

我们以打开表单的按钮定义为例,在平台中按钮定义如下:

{
    name:"打印",
    method:"openCustomForm",
    style:"default",
    idx_: 3,
    needConfig:false,
    type:"openCustomForm",
    config:{formAlias:"",formName:"",formConfig:"",boDefId:""},
    preDef:true,
    default:true}

说明

名称 说明
name 按钮名称
method 按钮方法名称
style 按钮样式
needConfig 是否需要配置 ,为 true 打开表单需要做配置,为false,比如启动流程,这个就不需要定义什么参数
config 按钮的配置,这个需要根据具体的情况而定,这些配置在点击按钮的时候进行使用
preDef 预定义,表示方法名称不能更改

如果 needConfig 为true,那么程序就会显示配置按钮。

点击配置按钮处理方法如下:

configButton(row){
    let type=row.type;
    let key="func_" + type;
    if(!this[key]){
        let msg=`请定义[${key}]方法`
        this.$message.warning(msg);
        return;
    }
    this[key](row);
}

我们可以看到点击配置按钮时,他会在实例中去查找 func_类型名称的方法,比如:

func_custom(row){
            let config=row.config;
            let oldBoDefId=this.form.getFieldValue("bodefId");
            let conf = {curVm: this, widthHeight: ['800px', '550px'],data:{action:config.action,boDefId:oldBoDefId}};
            DialogBox.openButtonFunConfig(conf,function(data){
                config.action=data.action;
            })
        }

row.config 存放配置数据。

3.在表单方案中按钮响应代码如下

在表单方案中,我们可以看到:

<a-button-group>
    <a-button :type="btn.type"
    :ref="btn.method"
    v-for="btn in buttons"
    @click="handMethod(btn)" :loading="btn.loading"
    :key="btn.name">{{ btn.name }}
    </a-button>
    </a-button-group>

其中点击响应代码如下:

handMethod(btn) {
        //表单方法
        if(btn.type=="formMethod"){
            var method = "func_" + btn.method;
            var formVm = this.$refs.rxForm.formVm;
            if (formVm && formVm[method]) {
            formVm[method](formVm);
        }
        return;
    }
    //自定义方法
    if(btn.type=="custom"){
        this["func_" + btn.method] = function () {
            let formJson = this.$refs.rxForm.getData();
            let rxAjax = this.$refs.rxForm.rxAjax;
            let config=btn.config;
            eval(config.action);
        };
        this["func_" + btn.method]();
        return;
    }
    //调用预定义方法。
    this[btn.method](btn);

}

在这里我们可以看到:

1.按钮可以调用表单定义的方法。

http://doc.redxun.cn/docs/jpaas/btnCustomFunction

2.编写自定义按钮方法。

http://doc.redxun.cn/docs/jpaas/btnDev

3.按钮调用预定义方法。

文档更新时间: 2021-10-08 10:09   作者:zyg