单据开发-业务单据Edit界面代码下篇(GUI端)
5人赞赏了该文章
658次浏览
编辑于2022年04月15日 11:44:56
关注公众号获取更多金蝶EAS开发方面的内容
因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接
https://mp.weixin.qq.com/s/97qvyGYUNzxcxyn3jATnvw
本篇文档介绍业务单据Edit界面与后端Bean的交互
01
根据单据状态控制按钮状态
//根据单据状态,设置按钮属性 protected void setButtonStatus() { //获取当前界面的打开状态 boolean isEdit = BaseUtil.isEmpty(getOprtState())||getOprtState().equalsIgnoreCase("edit")||getOprtState().equalsIgnoreCase("addnew"); boolean isWFlow = false; if(editData!=null&&editData.getId()!=null){ billStateEnum se = editData.getBillState(); //根据单据状态判断 审核和反审核按钮是否可用 btnAudit.setEnabled(se.equals(billStateEnum.SUBMIT)); btnUnAudit.setEnabled(se.equals(billStateEnum.AUDIT)); try { //判断单据是否在流程中 isWFlow = BaseUtil.checkBillInWorkflow(editData.getId().toString()); if (!"VIEW".equals(getOprtState())) { btnEdit.setEnabled(!(se.equals(billStateEnum.AUDIT) || isWFlow)); } else { btnEdit.setEnabled(!(se.equals(billStateEnum.AUDIT))); } if(isWFlow){ btnEdit.setEnabled(false); btnAudit.setEnabled(false); btnUnAudit.setEnabled(false); } btnSave.setEnabled(!btnUnAudit.isEnabled()); btnSubmit.setEnabled(!btnUnAudit.isEnabled()); btnRemove.setEnabled(!btnUnAudit.isEnabled()); } catch (BOSException e) { e.printStackTrace(); } }else{ btnEdit.setEnabled(false); btnAudit.setEnabled(false); btnUnAudit.setEnabled(false); } if(isWFlow) isEdit = false; actionEdit.setEnabled(isEdit); actionRemove.setEnabled(isEdit); }
说明:
在实际业务单据中,经常用到,根据单据的状态去判断按钮状态是否可用。如:在工作流中或已审批的单据不允许修改、提交等其他操作。单据新增时不允许直接审核等等。
02
动态设置按钮状态
/** * 修改按钮事件 */ public void actionEdit_actionPerformed(ActionEvent arg0) throws Exception { super.actionEdit_actionPerformed(arg0); setOprtState(STATUS_EDIT); setButtonStatus(); } /** * 提交按钮事件 */ public void actionSubmit_actionPerformed(ActionEvent e) throws Exception { super.actionSubmit_actionPerformed(e); setButtonStatus(); }
03
审核反审核调用后台方法
/** * 审核按钮事件 */ public void actionAudit_actionPerformed(ActionEvent e) throws Exception { billAuditUnAudit(true); } /** * 反审核按钮事件 */ public void actionUnAudit_actionPerformed(ActionEvent e) throws Exception { billAuditUnAudit(false); } //审核反审核 private void billAuditUnAudit(boolean audit) throws Exception{ if(editData!=null&&editData.getId()!=null){ try{ IExpenseBill iExpenseBill = ExpenseBillFactory.getRemoteInstance(); ObjectUuidPK pk = new ObjectUuidPK(editData.getId().toString()); if(audit){ iExpenseBill.passAudit(pk,editData); }else{ iExpenseBill.unpassAudit(pk,editData); } setOprtState(STATUS_VIEW); }catch (Exception ex) { BaseUtil.showMesg(BaseUtil.MSG_ERROR, ex.getMessage(), true); } } setButtonStatus(); }
说明:
调用后台bean中的方法,主要是通过工厂类ExpenseBillFactory的调用后台的方法。
getRemoteInstance():前台UI类或工具栏中调用后台。
getLocalInstance(ctx):后台之间的相互调用
本文转载自:微信
作者:黑白
原文链接:https://mp.weixin.qq.com/s/97qvyGYUNzxcxyn3jATnvw
赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读