s-HR Cloud基于已有视图二开扩展添加一个按钮demo原创
金蝶云社区-杨天罡
杨天罡
5人赞赏了该文章 935次浏览 未经作者许可,禁止转载编辑于2023年12月26日 14:34:43

背景:s-HR Cloud基于已有视图进行二开扩展添加一个按钮demo


视图举例:com.kingdee.shr.batchAffair.empBatchHire.dynamicList

一、视图配置

如下图,基于标准视图的扩展,增加一个demo按钮,视图配置调整4步

1、进行handler扩展,将标准handler进行注释,新增配置<handler class="com.kingdee.shr.batchAffair.web.handler.EmpBatchMaintainHireListHandlerExt" />

2、对js进行扩展,标准js保留,新增配置<script src="${appPath}/customer/web/js/shr/batchAffair/empBatchHireListExt.js" />

3、对js类进行扩展,标准js类注释,新增配置<jsClass name="shr.batchAffair.EmpBatchHireListExt" />

4、新增按钮配置,<button name="demo" caption="演示按钮"  />

image.png


二、扩展js,注意js的类名,继承等


/**
 * 员工转正列表扩展
 */
shr.defineClass("shr.batchAffair.EmpBatchHireListExt", shr.batchAffair.EmpBatchHireList, {
	initalizeDOM: function() {
		shr.batchAffair.EmpBatchHireListExt.superClass.initalizeDOM.call(this);
	},
	demoAction:function(){
		var _self = this;
		//组装参数,根据需求组装
		var data ={};
		_self.doRemoteAction({
			method: 'demo',//请求handler的方法,注意,这里的method值,能带Action,只能是demo,对应后端就是请求demoAction方法
			param:data
		});
	},
});

image.png


三、扩展handler,注意继承体系

package com.kingdee.shr.batchAffair.web.handler;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.ui.ModelMap;

import com.kingdee.shr.base.syssetting.exception.SHRWebException;

public class EmpBatchMaintainHireListHandlerExt extends EmpBatchMaintainHireListHandler {

    public String demoAction(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) throws SHRWebException {
        //add your logic here
        return null;
    }
}


image.png


四、部署

注意,s-HR的web端工程代码,和服务端代码部署需要区分开来,在开发时候,服务端的模块工程和web端模块工程需要分开,方便jar包制作和开发编码

如上面的Eclipse工程截图中,s-HR的web工程为:customer,字符集UTF-8;服务端工程为shr_custom,字符集GBK


s-HR web端工程,java的编码需要以UTF-8编码进行开发, java代码构建输出生成的jar包放入如下目录{安装目录}\eas\server\lib\addon\customer\lib\customer.jar,如图

image.png


js代码放到{安装目录}\eas\server\deploy\easweb.ear\shr_web.war\addon\customer\web\js下,如图

image.png

如果包含服务端代码(带有元数据的工程)需要部署,服务端代码工程需要以GBK编码进行开发

java的jar包放到{安装目录}/eas/server/lib/sp下

元数据的jar包放到{安装目录}/eas/server/metas/sp下


五、如果是直接二开的页面扩展,在原基础上修改扩展,不需要对js和handler进行新建扩展,视图只需要新增按钮配置,<button name="demo" caption="演示按钮"  />

在原js中增加方法demoAction,方法内容可以参考上面

在原handler中增加方法demoAction,方法内容可以参考上面


六、调试


前端js调试,如果在url中没参数debug=true,系统的js文件是压缩模式,无法调试,需要在url中增加此参数进行调试

通过调试模式,看到js源代码,可以参考标准功能js来调整二开的js


后端调试入口com.kingdee.shr.base.syssetting.web.dynamic.controller.DynamicController.executeAction(HttpServletRequest, HttpServletResponse, ModelMap)


http://ip:port/shr/ces.jsp工具可以查看系统信息,补丁信息,类加载信息,下载apusic日志等

image.png

赞 5