操作校验中确认弹窗的三种实现方式

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

操作校验中确认弹窗的三种实现方式

1 业务背景

在项目实战中经常有这样的需求,用户点击界面某个操作按钮,系统会经过一系列的校验,最后弹窗提示用户,“xx操作存在某项问题,是否继续操作!”,在用户点击确认之后,操作继续,或者用户点击取消,操作取消。


2 实现方案

这个需求相对来说比较普遍,在苍穹中也有多种方式来实现。下面将一一介绍。

1  在界面插件中通过showConfirm来实现

社区上已有案例,可参考文档:

https://developer.kingdee.com/article/222757573441666048?productLineId=29&isKnowledge=2&lang=zh-CN

2  通过操作配置来实现

    校验级别选择 警告,允许忽略即可。


校验是配置提交操作上,在提交的时候,系统提示如下图。

同时在列表上的操作也会校验并弹窗。


3  通过操作插件来实现

在操作上配置插件,插件代码如下:

public class TestOP extends AbstractOperationServicePlugIn {
     
    public void onAddValidators(AddValidatorsEventArgs e) {
        AbstractValidator validator =new ReqSubmitValidator();
        e.addValidator(validator);
    }
}

class ReqSubmitValidator extends AbstractValidator {
    @Override
    public void validate() {
        String key=this.getEntityKey();
        ExtendedDataEntity[] entitys=this.dataEntities;
        for (int i = 0; i < entitys.length; i++) {
            ExtendedDataEntity entity=entitys[i];
            //业务实际校验
             this.addWarningMessage(entity ,"操作插件校验!");
        }

    }
}


效果如下图:   


3 场景选择

上面介绍的方案都可以实现,但是却是有差异的。

1  界面插件实现的只能在当前页面生效,如果配置想要在单据和单据列表都生效,就需要配置两次插件,无法通用。

2  通过操作配置实现的可以在单据和单据列表复用,配置实现的只能实现简单的校验。不能实现复杂的跨单据校验场景。

3  通过操作插件可以实现复杂的校验场景,需要现场有二开能力。

4  两种操作(操作配置,操作插件)都可以通过OperationServiceHelper.executeOperate方法去调用生效,

如果想要忽略弹窗校验,可以参考下面代码。

OperateOption operateOption = OperateOption.create();operateOption.setVariableValue("ignorewarn", String.valueOf(true));
OperationResult result = OperationServiceHelper.executeOperate("submit", "testBill", new DynamicObject[] { billObj2 }, operateOption );










操作校验中确认弹窗的三种实现方式

1 业务背景在项目实战中经常有这样的需求,用户点击界面某个操作按钮,系统会经过一系列的校验,最后弹窗提示用户,“xx操作存在某项问题...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息