NC65新增按钮

NC65新增按钮

基于用友NC65标准功能单据不能满足业务需求,需要客开按钮,本章提供傻瓜式NC65新增按钮教程。从前台配置,到后台代码,应有尽有。

前台操作步骤

本次演示以非产品发货单,增加运单信息按钮演示
1、在功能注册,找到非产品发货单功能节点
在这里插入图片描述

在这里插入图片描述
2、点击参数注册找到BeanConfigFilePath对应的xml的文件以及xml文件对应的路径
在这里插入图片描述
3、创建在eclipse创建模块开发的项目
在这里插入图片描述
4、选中项目中的src/client创建一个包。包路径和上面BeanConfigFilePath对应的xml路径一致,文件名为PluginBeanConfigFilePath_ 加自定义名称
在这里插入图片描述
在这里插入图片描述
5、配置按钮xml代码如下

<?xml version="1.0" encoding="GBK"?>
 
<!DOCTYPE beans PUBLIC ".//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    
    
    <!--新增按钮配置-->
    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
    <!--actionsOfCard 表示按钮会出现在卡片状态下,actionsOfList表示会出现在列表状态下-->
    <property name="actionContainer" ref="actionsOfCard" />
    <!--notedit表示当前单据为非编辑状态下才会出现,edit表示编辑状态下才可以出现-->
    <property name="actionType" value="notedit" />
    <!--printActionGroup参数是根据BeanConfigFilePath对应的xml中找到的,作用是加载当前单据哪个按钮周围,根据名称我将按钮加在打印按钮组周围-->
    <property name="target" ref="printActionGroup" />
    <!--before表示加载打印按钮组之前,如果填写after表示加在打印按钮组之后-->
    <property name="pos" value="before" />
    <!--NonProdShipAction客开的按钮的id-->
    <property name="action" ref="NonProdShipAction" /> 
    </bean>

   <!--新增按钮-->
    <bean class="nc.ui.pubapp.plugin.action.InsertActionInfo">
    <property name="actionContainer" ref="actionsOfList" />
    <property name="actionType" value="notedit" />
    <property name="target" ref="printActionGroup" />
    <property name="pos" value="before" />
    <property name="action" ref="NonProdShipAction" /> 
    </bean>



    <!--自定义按钮nc.ui.so.m30.billui.action.NonProdShipAction表示类的全路径-->
    <bean id="NonProdShipAction" class="nc.ui.so.m30.billui.action.NonProdShipAction">
        <property name="model" ref="manageAppModel" />
        <property name="editor" ref="billFormEditor" />
        <!--code按钮编码-->
        <property name="code" value="NonProdShipAction" />
    </bean>
    
</beans>

6、配置按钮对应的java代码
(1)生成xml对应的java代码
选中PluginBeanConfigFilePath_lcwy.xml右键,选中SpringXml to Java
在这里插入图片描述
生成结果如下

package nc.ui.so.m30.billui.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import nc.ui.uif2.factory.AbstractJavaBeanDefinition;

public class PluginBeanConfigFilePath_lcwy extends AbstractJavaBeanDefinition {
	private Map<String, Object> context = new HashMap();

	public nc.ui.pubapp.plugin.action.InsertActionInfo getInsertActionInfo_0() {
		if (context.get("nc.ui.pubapp.plugin.action.InsertActionInfo#0") != null)
			return (nc.ui.pubapp.plugin.action.InsertActionInfo) context
					.get("nc.ui.pubapp.plugin.action.InsertActionInfo#0");
		nc.ui.pubapp.plugin.action.InsertActionInfo bean = new nc.ui.pubapp.plugin.action.InsertActionInfo();
		context.put("nc.ui.pubapp.plugin.action.InsertActionInfo#0", bean);
		bean.setActionContainer((nc.ui.uif2.actions.IActionContainer) findBeanInUIF2BeanFactory("actionsOfCard"));
		bean.setActionType("edit");
		bean.setTarget((javax.swing.Action) findBeanInUIF2BeanFactory("editLinkActionGroup"));
		bean.setPos("after");
		bean.setAction(getNonProdShipAction());
		setBeanFacotryIfBeanFacatoryAware(bean);
		invokeInitializingBean(bean);
		return bean;
	}

	public nc.ui.pubapp.plugin.action.InsertActionInfo getInsertActionInfo_1() {
		if (context.get("nc.ui.pubapp.plugin.action.InsertActionInfo#1") != null)
			return (nc.ui.pubapp.plugin.action.InsertActionInfo) context
					.get("nc.ui.pubapp.plugin.action.InsertActionInfo#1");
		nc.ui.pubapp.plugin.action.InsertActionInfo bean = new nc.ui.pubapp.plugin.action.InsertActionInfo();
		context.put("nc.ui.pubapp.plugin.action.InsertActionInfo#1", bean);
		bean.setActionContainer((nc.ui.uif2.actions.IActionContainer) findBeanInUIF2BeanFactory("actionsOfList"));
		bean.setActionType("notedit");
		bean.setTarget((javax.swing.Action) findBeanInUIF2BeanFactory("printActionGroup"));
		bean.setPos("before");
		bean.setAction(getNonProdShipAction());
		setBeanFacotryIfBeanFacatoryAware(bean);
		invokeInitializingBean(bean);
		return bean;
	}

	public nc.ui.so.m30.billui.action.NonProdShipAction getNonProdShipAction() {
		if (context.get("NonProdShipAction") != null)
			return (nc.ui.so.m30.billui.action.NonProdShipAction) context
					.get("NonProdShipAction");
		nc.ui.so.m30.billui.action.NonProdShipAction bean = new nc.ui.so.m30.billui.action.NonProdShipAction();
		context.put("NonProdShipAction", bean);
		bean.setModel((nc.ui.uif2.model.AbstractAppModel) findBeanInUIF2BeanFactory("manageAppModel"));
		bean.setEditor((nc.ui.pubapp.uif2app.view.BillForm) findBeanInUIF2BeanFactory("billFormEditor"));
		bean.setCode("NonProdShipAction");
		setBeanFacotryIfBeanFacatoryAware(bean);
		invokeInitializingBean(bean);
		return bean;
	}

}

注意:如果生成失败,需要检查xml配置是否正确

生成目录如下
在这里插入图片描述
(2)编写客开动作类,需要继承nc.ui.uif2.NCAction类具体代码如下:

package nc.ui.so.m30.billui.action;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.ArrayList;

import nc.vo.querytemplate.TemplateInfo;
import nc.vo.so.m30.entity.SaleOrderHVO;
import nc.vo.so.m30.entity.SaleOrderVO;
import nc.vo.so.m4331.entity.DeliveryHVO;
import nc.vo.so.m4331.entity.DeliveryVO;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.hr.utils.PubEnv;
import nc.itf.uap.IUAPQueryBS;
import nc.jdbc.framework.processor.BeanListProcessor;
import nc.jdbc.framework.processor.ColumnProcessor;
import nc.ui.trade.query.HYQueryConditionDLG;
import nc.ui.uif2.NCAction;
import nc.ui.uif2.UIState;
import nc.ui.uif2.model.AbstractAppModel;
import nc.ui.brmm.dlg.SaledetaileDlg;
import nc.ui.pub.ClientEnvironment;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.pf.BillSourceDLG;
import nc.ui.pub.pf.BillSourceVar;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.vo.arap.receivable.AggReceivableBillVO;
import nc.vo.arap.receivable.ReceivableBillVO;
import nc.vo.fc.firststzj.FirstHVO;
import nc.ui.pubapp.uif2app.actions.RefreshSingleAction;
import nc.ui.querytemplate.QueryConditionDLG;

public class NonProdShipAction extends NCAction {
	private BillForm editor;
	private AbstractAppModel model;

	public NonProdShipAction() {
		super.setBtnName("运单信息");
		super.setCode("NonProdShipAction");
	}

	public BillForm getEditor() {
		return editor;
	}

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

	public AbstractAppModel getModel() {
		return model;
	}

	public void setModel(AbstractAppModel model) {
		this.model = model;
		model.addAppEventListener(this);
	}

	@Override
	protected boolean isActionEnable() {
		UIState uiState = model.getUiState();
		return true;
	}

	@Override
	public void doAction(ActionEvent paramActionEvent) throws Exception {

		
			MessageDialog.showHintDlg(editor, "提示", "客开按钮点击成功");
		}
	}

}

注意:NonProdShipAction的全路径和xml中的NonProdShipAction全路径保持一致,必须有get和set方法。
代码结构图如下:
在这里插入图片描述
效果图如下:

在这里插入图片描述
在这里插入图片描述

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值