已审核,进入单据详细修改字段,退出时提示“已修改是否保存”原创
金蝶云社区-技术支持与赋能部_ZH
技术支持与赋能部_ZH
4人赞赏了该文章 1358次浏览 未经作者许可,禁止转载编辑于2022年12月13日 16:28:20

关键词:退出保存,审核

一、需求

正常情况下,已审核单据不可以修改字段。一般只有新增单据才会提示退出是否保存。但是往往有项目需求,有些字段和控件只有审核通过后才可见,才能修改,这样退出提示是否保存的功能就显得很重要了

二、思路与方案

2.1分析思路

需要监听退出按钮操作

2.2实现方案

通过beforeitemclick事件监听,这里不能监听beforeclose事件,因为弹出框回调会和这里循环调用。

三、实现过程:

1、放开单据的审核锁定开关

image.png

2、编写插件,自定义提示框

public void beforeItemClick(BeforeItemClickEvent evt) {
    String key = evt.getItemKey();
    if(key.equals("bar_close")) {

			String billstatus = (String) this.getModel().getValue("billstatus");
			
			if(billstatus.equals("C")) {
				
				boolean dataChanged = this.getView().getModel().getDataChanged();//判断是否已更新单据
				
				if(dataChanged) {
					
			//作废操作前让用户选择是否继续作废操作,在用户点击确认框上的按钮后,系统会调用confirmCallBack方法
		            ConfirmCallBackListener confirmCallBackListener = new ConfirmCallBackListener("bar_close", this);
		            //设置页面确认框,参数为:标题,选项框类型,回调监听
		            this.getView().showConfirm("检测到您有更改内容,是否不保存直接退出?", MessageBoxOptions.YesNo, confirmCallBackListener);
		            evt.setCancel(true);//取消关闭操作
					
				}
			}

		}

}
        //弹框回调
	public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
		// TODO Auto-generated method stub
		super.confirmCallBack(messageBoxClosedEvent);
		
		 //判断是否是对应确认框的点击回调事件
        if (StringUtils.equals("bar_close", messageBoxClosedEvent.getCallBackId())) {
            if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {               
            	this.getView().close();//点击确认就退出当前单据	
                
            } 
        }
		
	}	

四、效果图

image.png

五、开发环境版本

V5.0.002

六、注意事项

有增加确认提示框,就有取消确认提示框的需求,代码比较简单如下

	public void beforeClosed(BeforeClosedEvent e) {
		// TODO Auto-generated method stub
		super.beforeClosed(e);
		
		e.setCheckDataChange(false);//取消修改确认弹框,默认为true
	  
	}

七、参考资料

开发平台

学习成长中心

八、源代码

项目中的源码,可以按方法名搜索代码定位


赞 4