已审核,进入单据详细修改字段,退出时提示“已修改是否保存”原创
4人赞赏了该文章
2,015次浏览
编辑于2022年12月13日 16:28:20
关键词:退出保存,审核
一、需求
正常情况下,已审核单据不可以修改字段。一般只有新增单据才会提示退出是否保存。但是往往有项目需求,有些字段和控件只有审核通过后才可见,才能修改,这样退出提示是否保存的功能就显得很重要了
二、思路与方案
2.1分析思路
需要监听退出按钮操作
2.2实现方案
通过beforeitemclick事件监听,这里不能监听beforeclose事件,因为弹出框回调会和这里循环调用。
三、实现过程:
1、放开单据的审核锁定开关
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();//点击确认就退出当前单据 } } }
四、效果图
五、开发环境版本
V5.0.002
六、注意事项
有增加确认提示框,就有取消确认提示框的需求,代码比较简单如下
public void beforeClosed(BeforeClosedEvent e) { // TODO Auto-generated method stub super.beforeClosed(e); e.setCheckDataChange(false);//取消修改确认弹框,默认为true }
七、参考资料
八、源代码
项目中的源码,可以按方法名搜索代码定位
源码与元数据页面.zip(27.73KB)
赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读