NC65弹窗中字段的编辑后事件

354 篇文章 100 订阅

项目场景:

弹窗编辑后事件,输入当前字段时控制另一个字段是否可用
当前示例的弹窗模板页签在表头

主要代码:

/**
 * 编辑后事件
 */
@Override
public void afterEdit(BillEditEvent arg0) {
	//获取当前操作的字段
	String getkey=arg0.getKey();
	//选择生成方式
	if ("scfs".equals(arg0.getKey())||"scfs".equals(arg0.getKey())) {
		try {
			Object scfsobj = getPanel().getHeadItem("scfs").getValueObject();
			String scfs=String.valueOf(scfsobj);
			if ("".equals(scfs)||"null".equals(scfs)) {
				return;
			}
			//选择序列化生成方式,拆分数量输入框设置禁用
			else if (scfs.equals("序列化拆分")) {
				getPanel().getHeadItem("aslcf").setEnabled(false);
				getPanel().getHeadItem("aslcf").setFillEnabled(false);
			}
		} catch (Exception e1) {
			ExceptionUtils.wrappBusinessException("生成方式后事件问题");
		}
	}
}

弹窗全代码示例

package nc.ui.pu.m23.action;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;

import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.itf.pu.m23.arriveitf.IArriveService;
import nc.itf.uap.IVOPersistence;
import nc.ui.pub.ClientEnvironment;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.UIButton;
import nc.ui.pub.beans.UIDialog;
import nc.ui.pub.beans.UIPanel;
import nc.ui.pub.beans.UIRefPane;
import nc.ui.pub.bill.BillCardBeforeEditListener;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pub.bill.BillEditEvent;
import nc.ui.pub.bill.BillEditListener;
import nc.ui.pub.bill.BillEditListener2;
import nc.ui.pub.bill.BillItem;
import nc.ui.pub.bill.BillItemEvent;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.vo.pu.m23.check.CheckEditBodyDlgVO;
import nc.vo.pu.m23.check.UFDateAddDateTool;
import nc.vo.pu.m23.entity.ArriveItemVO;
import nc.vo.pu.m23.entity.ArriveVO;
import nc.vo.pu.m23.entity.ArriveViewVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.CircularlyAccessibleValueObject;
import nc.vo.pub.VOStatus;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDouble;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;

public class SplitArriveDlg extends UIDialog implements ActionListener,
		BillEditListener, BillEditListener2, BillCardBeforeEditListener {

	private BillCardPanel panel = null;// 卡片布局
	private UIButton button_cancel = null;// 取消按钮
	private UIButton button_save = null;// 确定按钮
	private UIButton button_delete = null;// 删除按钮
	private UIPanel m_mainPanel = null;// 界面总装
	private UIPanel buttonpanel = null;// 按钮组
	private BillForm editor = null;
	private ArriveVO arriveVO=null;
	private ArriveItemVO arriveItemVO=null;
	private HashMap<String, String> dataMap=null;

	public ArriveVO getArriveVO() {
		return arriveVO;
	}

	public void setArriveVO(ArriveVO arriveVO) {
		this.arriveVO = arriveVO;
	}

	public ArriveItemVO getArriveItemVO() {
		return arriveItemVO;
	}

	public void setArriveItemVO(ArriveItemVO arriveItemVO) {
		this.arriveItemVO = arriveItemVO;
	}

	public HashMap<String, String> getDataMap() {
		return dataMap;
	}

	public void setDataMap(HashMap<String, String> dataMap) {
		this.dataMap = dataMap;
	}

	public HashMap<String, String> getDateMap() {
		return dataMap;
	}

	public void setDateMap(HashMap<String, String> dataMap) {
		this.dataMap = dataMap;
	}

	/**
	 * 加载模板时初始化
	 */
	public SplitArriveDlg() {
		this.panel = getPanel();
		this.buttonpanel = getButtonpanel();
		this.setTitle("拆分合格证");
		this.setSize(new java.awt.Dimension(400, 300));
		initialize();
		addListenerEvent();
		
	}

	/**
	 * 加载模板时初始化
	 * @param dateMap
	 */
	public SplitArriveDlg(HashMap<String, String> dateMap) {
		// 初始化弹窗数据信息
		setDateMap(dateMap);
		// initialize();
		this.panel = getPanel();
		this.buttonpanel = getButtonpanel();
		this.setTitle("拆分合格证");
		this.setSize(new java.awt.Dimension(400, 300));
		initialize();
		addListenerEvent();
		
	}

	/**
	 * 设置监听
	 */
	private void addListenerEvent() {
		// 设置可编辑,设置字段可编辑
		this.getM_mainPanel().setEnabled(true);// 面板可编辑
		this.getPanel().setEnabled(true);// 设置面板可编辑
		// 将某个字段设置成可编辑
		// this.getPanel().getBodyItem("").setEdit(true);
		// 将按钮和面板加入监听
		this.getPanel().addEditListener(this);
		this.getButton_cancel().addActionListener(this);
//		this.getButton_delete().addActionListener(this);
		this.getButton_save().addActionListener(this);
		this.getPanel().addBillEditListenerHeadTail(this);
		this.getPanel().addEditListener(this);
		this.getPanel().addBodyEditListener2(this);
	}

	private void initialize() {
		setName("UIDialog");
		setDefaultCloseOperation(2);
		setSize(400, 300);
		setModal(true);
		setContentPane(getM_mainPanel());
		initConnections();
		setResizable(false);
		setUIDialogUndecorationStyle(this);
	}

	/**
	 * 模板设置
	 * 
	 * @return
	 */
	public BillCardPanel getPanel() {
		if (panel == null) {
			panel = new BillCardPanel();
			panel.setPreferredSize(new java.awt.Dimension(400, 300));
			panel.setName("bodypanel");
			// 给模板指定 单据模板类型,初始化时载入对应模板弹窗 模板编码 单据模板类型
			panel.loadTemplet("dhdcfdlg01", null, ClientEnvironment
					.getInstance().getUser().getPrimaryKey(), ClientEnvironment
					.getInstance().getGroupId());
			// panel.loadTemplet("40040802",null,ClientEnvironment.getInstance().getUser().getPrimaryKey(),ClientEnvironment.getInstance().getGroupId());
			panel.setBodyMultiSelect(true);
			panel.getBillCardBeforeEditListener();
			HashMap<String, String> dataMap=getDateMap();
//			if (getDateMap()!=null) {
			panel.getHeadItem("sm").setValue(getDateMap().get("sm"));
//			}
		}
		return panel;
	}

	/**
	 * 设置模板
	 * 
	 * @return
	 */
	public UIPanel getM_mainPanel() {
		if (m_mainPanel == null) {
			m_mainPanel = new UIPanel();
			m_mainPanel.setPreferredSize(new java.awt.Dimension(400, 300));
			m_mainPanel.setName("mainPanel");
			m_mainPanel.setLayout(new BorderLayout());
			m_mainPanel.add(getPanel(), BorderLayout.CENTER);
			m_mainPanel.add(getButtonpanel(), BorderLayout.SOUTH);
		}
		return m_mainPanel;
	}

	public void setPanel(BillCardPanel panel) {
		this.panel = panel;
	}

	public UIButton getButton_cancel() {
		if (button_cancel == null) {
			button_cancel = new UIButton();
			button_cancel.setName("button_cancel");
			button_cancel.setText("取消");
		}
		return button_cancel;
	}

	public void setButton_cancel(UIButton button_cancel) {
		this.button_cancel = button_cancel;
	}

	public UIButton getButton_save() {
		if (button_save == null) {
			button_save = new UIButton();
			button_save.setName("button_save");
			button_save.setText("保存");
		}
		return button_save;
	}

	public void setButton_save(UIButton button_save) {
		this.button_save = button_save;
	}

	public UIButton getButton_delete() {
		if (button_delete == null) {
			button_delete = new UIButton();
			button_delete.setName("button_delete");
			button_delete.setText("关闭");
		}
		return button_delete;
	}

	public void setButton_delete(UIButton button_delete) {
		this.button_delete = button_delete;
	}

	public void setM_mainPanel(UIPanel m_mainPanel) {
		this.m_mainPanel = m_mainPanel;
	}

	/**
	 * 设置模板的按钮组
	 * 
	 * @return
	 */
	public UIPanel getButtonpanel() {
		if (buttonpanel == null) {
			buttonpanel = new UIPanel();
			buttonpanel.setName("buttonpanel");
			buttonpanel.add(getButton_save(), getButton_save().getName());
			buttonpanel.add(getButton_cancel(), getButton_cancel().getName());
//			buttonpanel.add(getButton_delete(), getButton_delete().getName());
		}
		return buttonpanel;
	}

	public void setButtonpanel(UIPanel buttonpanel) {
		this.buttonpanel = buttonpanel;
	}

	public BillForm getEditor() {
		return editor;
	}

	public void setEditor(BillForm editor) {
		this.editor = editor;
	}

	private void initConnections() {
		addWindowListener(this);
		addKeyListener(this);
	}

	/**
	 * 编辑后事件
	 */
	@Override
	public void afterEdit(BillEditEvent arg0) {
		//获取当前操作的字段
		String getkey=arg0.getKey();
		//选择生成方式
		if ("scfs".equals(arg0.getKey())||"scfs".equals(arg0.getKey())) {
			try {
				Object scfsobj = getPanel().getHeadItem("scfs").getValueObject();
				String scfs=String.valueOf(scfsobj);
				if ("".equals(scfs)||"null".equals(scfs)) {
					return;
				}
				//选择序列化生成方式,拆分数量输入框设置禁用
				else if (scfs.equals("序列化拆分")) {
					getPanel().getHeadItem("aslcf").setEnabled(false);
					getPanel().getHeadItem("aslcf").setFillEnabled(false);
				}
			} catch (Exception e1) {
				ExceptionUtils.wrappBusinessException("生成方式后事件问题");
			}
		}
	}

	@Override
	public void bodyRowChange(BillEditEvent arg0) {
		// TODO Auto-generated method stub

	}

	/**
	 * 弹窗按钮动作执行方法
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		// 判断当前执行的按钮
		// 点击取消按钮
		if (e.getSource() == getButton_cancel()) {
			this.close();
			return;
		}
		// 点击删除按钮
		else if (e.getSource() == getButton_delete()) {
			this.close();
			return;
		}
		// 点击保存按钮
		else if (e.getSource() == getButton_save()) {
			//获取弹窗模板数据信息、按数量拆分和拆分方式
			String scfsobj = getPanel().getHeadItem("scfs").getValueObject()==null?null:getPanel().getHeadItem("scfs").getValueObject().toString();
			String aslcfobj = getPanel().getHeadItem("aslcf").getValueObject()==null?null:getPanel().getHeadItem("aslcf").getValueObject().toString();
			//到货单拆分业务处理接口
			IArriveService arrService=NCLocator.getInstance().lookup(IArriveService.class);
			//原表体VO
			ArriveItemVO itemvo=this.getArriveItemVO();
			//原表体数量
			Integer bodynum=Integer.valueOf(itemvo.getNnum().toString());
			//校验选中的拆分方式
			//序列化拆分
			if (scfsobj!=null && scfsobj.equals("序列化拆分")) {
				try {
					//调业务接口进行拆分、scfs 0 序列化拆分、表体VO、null
					HashMap<String,String> redata = arrService.splitArriveOrderService(0,itemvo,null);
//					if(redata!=null){
						MessageDialog.showHintDlg(null,"提示信息","到货单序列化拆分成功");
//					}
				} catch (Exception e1) {
					MessageDialog.showErrorDlg(null,"提示信息","序列化拆分时异常:"+e1.getMessage());
					return ;
				}
			}
			//按数量拆分
			else if(scfsobj!=null && scfsobj.equals("按数量拆分")){
				//校验输入规则是否正确
				if (aslcfobj==null || !aslcfobj.contains(";")) {
					MessageDialog.showErrorDlg(null,"提示信息","请按正确的规则输入要拆分的数量,用英文分号“;”区分多个");
					return ;
				}
				//将输入的拆分数量转化为数组,按分号;拆分
				String[] aslcfs = aslcfobj.split(";");
				ArrayList<Integer> sllist=new ArrayList<Integer>();
				//计算拆分数量数否满足原表体行数量
				Integer sum=0;
				for (int i = 0; i < aslcfs.length; i++) {
					Integer sl=Integer.valueOf(aslcfs[i]);
					sum=sum+sl;
					sllist.add(sl);
				}
				if (sum.compareTo(bodynum)!=0) {
					MessageDialog.showErrorDlg(null,"提示信息","输入的拆分数量超出或不满足原到货数量,请修改数量后重新保存");
					return ;
				}
				try {
					//调业务接口进行拆分、scfs 1 按数量拆分、表体VO、aslcfs拆分数量数组
					HashMap<String,String> redata = arrService.splitArriveOrderService(1,itemvo,sllist);
					MessageDialog.showHintDlg(null,"提示信息","到货单按数量拆分成功");
				} catch (Exception e1) {
					MessageDialog.showErrorDlg(null,"提示信息","按数量拆分时异常:"+e1.getMessage());
					// ExceptionUtils.wrappBusinessException("保存拆分信息失败");
					return ;
				}
				
			}else{
				MessageDialog.showErrorDlg(null,"提示信息","请选择到货单拆分方式后再进行保存操作");
				// ExceptionUtils.wrappBusinessException("保存拆分信息失败");
				return ;
			}
			
			this.close();
			return;
		}

	}

	/**
	 * 获取当前卡片态的值
	 * 
	 * @return
	 */
	private CheckEditBodyDlgVO getSelectVO() {
		// 获取所有的表头卡片 的字段项,模板字段
		BillItem[] headItems = this.getPanel().getHeadItems();
		CheckEditBodyDlgVO reDlgvo = new CheckEditBodyDlgVO();
		for (int i = 0; i < headItems.length; i++) {
			Object key = headItems[i].getKey();
			Object valueObject = headItems[i].getValueObject();
			reDlgvo.setAttributeValue(key.toString(), valueObject);
			String i1 = "";
		}
		// 根据项目主键获取对应的value,card模板表头取值
		// Object valueObject =
		// this.getPanel().getHeadItem("pk_supplier").getValueObject();
		// CheckEditBodyDlgVO selVO=this.getPanel().getHeadItem();
		return reDlgvo;
	}

	@Override
	public boolean beforeEdit(BillItemEvent paramBillItemEvent) {

		return true;
	}

	@Override
	public boolean beforeEdit(BillEditEvent paramBillEditEvent) {

		return true;
	}

}



原文链接:https://blog.csdn.net/mrsubo/article/details/126000344

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值