三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

泛微OA手写签名功能配置与二次开发指南

泛微OA手写签名功能配置与二次开发指南

1. 泛微OA手写签名功能实现指南

在OA系统日常使用中,手写签名功能是审批流程电子化的重要环节。作为国内主流OA产品,泛微系统通过集成HTML5 Canvas技术实现了原笔迹签批功能。本文将基于泛微E9版本,详细解析从系统配置到实际应用的全流程实现方案。

提示:不同泛微版本(E8/E9/云OA)的配置路径存在差异,本文操作以E9标准版为例,其他版本可参考对应模块位置。

1.1 基础环境准备

首先确认系统环境满足以下条件:

  • 服务器端已安装最新补丁包(建议SP3以上)
  • 客户端浏览器支持HTML5(Chrome 85+/Edge 88+)
  • 已开通流程表单的设计权限

常见版本差异说明:

  • E8版本需手动加载signature_pad.js库文件
  • E9版本已内置签名组件
  • 云OA需通过应用市场安装"电子签章"插件

2. 签名功能配置全流程

2.1 后台系统参数设置

登录系统管理员账号,按以下路径配置:

  1. 进入"系统配置 → 参数设置 → 流程参数"
  2. 启用"允许手写签名"开关(参数编码:wf_sign_enable)
  3. 设置签名图片存储路径(建议使用相对路径:/signature/)
  4. 配置签名图片格式(PNG/JPG,推荐PNG保持透明背景)

关键参数说明:

# 签名清晰度调节(1-5级,默认3) wf_sign_quality = 3 # 签名区域默认尺寸(宽*高) wf_sign_width = 300 wf_sign_height = 150

2.2 流程表单设计

以采购审批单为例,添加签名字段:

  1. 打开流程表单设计器
  2. 在"控件库"中选择"手写签名"组件
  3. 设置控件属性:
    • 字段名:approve_sign
    • 显示标签:审批签名
    • 必填选项:是/否
    • 签名颜色:支持RGB值(默认#000000)

重要:字段类型必须选择"图片存储",不可使用普通文本字段。

2.3 前端页面调优

通过CSS自定义签名区域样式:

.weaver-signature-pad { border: 1px dashed #ccc; background-color: #f9f9f9; border-radius: 5px; margin: 10px auto; } .weaver-signature-clear-btn { background-color: #f44336; color: white; }

3. 二开扩展方案

3.1 数据库存储结构

签名数据主要涉及三张表:

  • workflow_formdetail:存储字段定义
  • workflow_requestbase:流程实例表
  • workflow_requestlog:审批日志记录

关键SQL查询示例:

-- 获取某流程的签名记录 SELECT fieldvalue FROM workflow_requestlog WHERE requestid = '12345' AND fieldname = 'approve_sign'

3.2 非标功能扩展

如需实现以下高级功能,需进行二次开发:

  1. 签名验真:通过接口调用CA证书验证
  2. 批量签署:修改wf_doaction.jsp文件
  3. 移动端优化:重写touch事件处理逻辑

典型补丁包修改示例:

// 在SignAction.java中增加分辨率适配 if(isMobile){ signWidth = 250; signHeight = 120; }

4. 常见问题排查

4.1 签名无法显示

排查步骤:

  1. 检查nginx/Apache目录权限
    chmod -R 755 /usr/local/weaver/signature
  2. 验证数据库字段类型
    SELECT fieldtype FROM workflow_formdetail WHERE fieldname = 'approve_sign'
  3. 清除浏览器缓存(Ctrl+Shift+Del)

4.2 移动端兼容问题

解决方案:

  1. 在weaver.properties中添加:
    mobile.sign.support=true mobile.sign.scale=0.8
  2. 修改/resource/mobile/js/sign.js:
    document.addEventListener('touchmove',function(e){ e.preventDefault(); },{ passive: false });

5. 最佳实践建议

  1. 性能优化

    • 签名图片超过100KB时自动压缩
    • 采用懒加载方式显示历史签名
    • 设置定时任务清理临时文件
  2. 安全增强

    // 在SignServlet中添加水印 BufferedImage watermark = ImageIO.read(new File("watermark.png")); graphics.drawImage(watermark, x, y, null);
  3. 用户体验

    • 增加撤销重写按钮
    • 添加签名预览浮窗
    • 支持压力感应(需数位板)

实际部署中发现,当并发签名用户超过50人时,建议:

  • 单独部署签名图片服务器
  • 启用Redis缓存签名模板
  • 调整Tomcat线程池大小

对于需要法律效力的场景,建议集成第三方电子签章服务(如法大大、e签宝),通过泛微的OpenAPI实现系统对接。这需要额外开发鉴权模块和存证接口,但能显著提升签名的法律有效性。

← 返回列表