# 数科H5签章技术说明文档

# 1.说明

H5签章主要用于自由协同标准正文、CAP4表单、CAP3表单、和公文文单中进行专业签章的盖章,效果如图。

以CAP4表单为例:

1725868968928.png

# 2.相关文档

数科对接文档: 【金山文档 | WPS云文档】 数科HTML5签章 https://kdocs.cn/l/cdNw87UPf30f提供了和数科对接的前后端接口信息。

# 3.对接交互

1725869136993.png

# 4.关键代码

文单签章代码原来在apps-common ,V9.0SP1迁移到apps-office-plugins-front工程。

前端代码工程:apps-office-plugins-front
后端代码工程:apps-office-plugins

1725869291539.png

# 4.1 前端代码

apps-office-plugins-front\desktop-front\src\isignaturehtml\js\isignaturehtml.js

改造前是用的金格控件,相关操作都是在这个js中,目前对接数科也是在这个js中。业务引入的js和调用方法不变。

# 4.1.1 数科H5插件

定义了一个闭包对象,用来和数科对接。数科的插件代码, **PC端:**可以在isignaturehtml.js文件内部,搜索“数科插件”,标记start 到end区间代码为数科代码(数科有修改则替换这一部分)。 1725869432949.png

**移动端:**对应mplus-front工程中m3iSignature-debug.js文件,其中数科插件代码为shuke-html-signature.js文件 1725869453570.png

# 4.1.2 定义方法

定义了一个方法为SuWellH5Signature

var SuWellH5Signature={
...
}
内部属性:
sealWebPlugins 数科H5插件对象,数科的方法都是通过这个对象来操作
options 定义的文单签章相关参数

# 4.1.3 初始签章

(1)业务进入页面需要加载印章。原有的金格业务不变增加数科新的逻辑。可参考已有逻辑

//数科签章初始化
    var suwellOptions = {
        documentId: documentId,
        menuDeleteSign: isShowDeleteSign(),
        data: null,
        domId: signaturePosition
    };
SuWellH5Signature.init(suwellOptions);

1、init方法先发送oa请求获取当前数据的印章信息。然后调用数科H5插件渲染印章

(2)初始数科H5插件和菜单权限。

var config = {
            sealDomId: this.options.domId,
            autoX: 0,//相对于定位元素偏移量
            autoY: 0,
            isMove: true,// 盖上之后是否默认支持拖动
            allMove: true,// 全局是否支持拖动
            isDeleteSeal: this.options.menuDeleteSign,//是否有删除按钮
            InterfaceManagement: "childPage",
            requestUrl: this.webRoot + "/rest",//定义oa请求地址前缀
            watchDeleteSeal: function (item, list) {
                _this.count = list.length;
            }
        };
this.sealWebPlugins.setMenuList(config);

(3)渲染已经存在的印章

1、调用oa接口: "/rest/elsh5sign/h5sign/selectSignList",获取盖章记录
2、调用数科H5插件渲染:this.sealWebPlugins.renderingSeal //渲染印章

1725869628621.png

# 4.1.4 盖章弹框

SuWellH5Signature.sign可以打开数科盖章弹框

SuWellH5Signature.sign({documentId:h5DocumentId,data:newdata});

在sign中调用数科的
this.sealWebPlugins.sealDialog({...})打开数科弹框,参数见数科文档。

# 4.2 后端代码

参照文档开头数科提供的接口文档 SuwellH5SignResource.java

# 4.2.1 中转数科请求

数科H5插件和数科签章服务对接中转接口。该接口是为数科H5插件中发起请求数科签章服务的请求,参数和返回值oa不做关注,只做转发处理。

接口 POST: /rest/elsh5sign/h5sign

1725869848786.png

# 4.2.2 获取签章记录

oa保存数科盖章的信息后,下次打开需要加载出印章信息。

接口 GET: /rest/elsh5sign/h5sign

1725869908397.png

# 4.2.3 增加盖章记录

oa保存数科盖章的信息后。

接口 POST: /rest/elsh5sign/addSign

1725869952932.png

创建人:liangyd
修改人:het、liangyd