单据开发-业务单据Edit界面代码下篇(GUI端)
金蝶云社区-黒白
黒白
5人赞赏了该文章 658次浏览 未经作者许可,禁止转载编辑于2022年04月15日 11:44:56

关注公众号获取更多金蝶EAS开发方面的内容

公众号.jpg

因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接

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人打赏
还没有人打赏,快来当第一个打赏的人吧!