简录签 SimRecSign 是一个多租户电子签署与流程审批系统:把纸质表单变成 PDF 电子模板,配置字段与多步签署流程后在线流转,最终生成带数字签名与防篡改审计记录的 PDF 文档。支持 PC 管理端与手机端(H5)双入口。
一句话:上传 PDF → 配置填写/签署字段 → 定义多步流程 → 在线流转签署 → 下载带数字签名的成品 PDF。
适用场景:需要多方逐级填写、审批、签署的表单类文档——如申请表、审批单、承诺书、检验记录、交接单等。
| 角色 | 主要工作 | 常用入口 |
|---|---|---|
| 系统管理员 | 管理租户、用户、部门、角色、CA、审计 | PC 端「系统管理」 |
| 模板管理员 | 上传 PDF、设计字段与流程、发布模板 | PC 端「模板库 / 编辑模板」 |
| 普通用户 | 发起文档、填写、签署、查看进度 | PC 端或手机端均可 |
- 后端:Go(Gin + GORM + SQLite,单文件部署时前端页面与中文字体全部内嵌进一个可执行文件)
- PC 端:Vue 3 + Element Plus;手机端:Vue 3 + Vant(H5,部署后访问
/m/) - 数字签名:自研 PDF 签名库(CMS 签名、增量更新、时间戳),配合平台自建 CA
- 上传 PDF 自动识别已有表单域(AcroForm),也可从空白拖拽添加
- 10 种字段类型:单行文本、多行文本、数字、日期、勾选框、单选、下拉、图片上传、签名、审批意见;支持字段分组与行容器排版
- 字段校验:必填、正则、数值范围、选项
- 模板状态管理:草稿 → 发布 → 停用;发布时可指定「允许发起的人员范围」
- 模板分类管理,便于归类检索
- 多步骤流程:每步可指定办理人(具体用户 / 部门 / 整个机构,或由上一步指定)
- 字段按步骤分配权限:本步可编辑哪些字段、对其他步骤隐藏哪些字段
- 文档状态流转:发起 → 流转中 → 完成;支持驳回(终止)、撤回(回到草稿重新发起)、退回上一步
- 每步提交后内容实时渲染进 PDF;签署步生成数字签名(多方签署互不覆盖)
- 签署密码:独立于登录密码,用于解锁个人签署私钥
- 手写签名板(手机端体验最佳)或上传签名图片,签名图加密存储
- 平台自建 CA:用户在线申请证书 → 管理员审批 → 签署时自动使用;也支持上传外部证书
- 证书吊销、CRL 下载
- 为某一步生成一次性交接链接,发给没有账号的外部人员
- 对方打开链接、登录(或注册)后自动绑定该步骤办理权
- 全操作审计日志(登录、模板变更、文档流转、签署、交接…),哈希链防篡改,可一键校验链条完整性、导出 CSV
- 细粒度权限:内置超管/租户管理员/模板编辑员/普通用户四类角色,权限码可自定义分配
- 多租户数据隔离;演示模式(只读+签署)用于对外展示
- 站内通知:文档到达待办、流程事件;未读角标、一键全部已读
- 演示地址: https://sign.qnhelp.top/
- 默认账号: test@test.com
- 默认密码: test123
- 运行:任意能跑 Go 程序的环境(Linux/Windows/Docker)
- 开发调试:Go 1.25+、Node.js 18+
JWT_SECRET=请换成强随机字符串 docker compose up -d启动后访问 http://服务器IP:8080(PC 端)或 http://服务器IP:8080/m/(手机端)。数据自动持久化在 Docker 卷中。
# Windows 上执行(自动构建前端并交叉编译 Linux 单文件)
server_build.bat
# 产物 bin/simrecsign-server 上传到服务器,直接运行单文件已内嵌 PC 端、手机端与中文字体,无需再部署任何 Web 服务器。
server_run.bat # 后端,监听 8080
web_run.bat # PC 端,http://localhost:5173
moblie_run.bat # 手机端,http://localhost:5173/m/(Linux 环境对应 server_run.sh / server_build.sh)
程序自动完成:建库(默认 SQLite)→ 创建默认租户与超管账号 → 初始化权限数据,并在日志中打印初始账号。
初始管理员:
admin@simrecsign.local/admin12345—— 登录后请立即修改密码。
以下按「首次登录 → 管理员初始化 → 做模板 → 发起办理 → 签署 → 交接 → 手机端 → 审计」的完整链路讲解。
- 打开系统地址,进入登录页。
- 输入初始超管账号
admin@simrecsign.local/admin12345。 - 登录后进入工作台:顶部三张统计卡(待我签署 / 已完成 / 活动模板数),下方是待办与最近文档列表。
- 第一件事:进入「个人设置 → 修改密码」,改掉初始密码。
多租户说明:登录页会展示可用租户列表;超管登录后管理的是整个平台,普通用户登录后归属其所在租户。
以超管或租户管理员身份进入左侧「系统管理」,按以下顺序完成初始化:
① 组织架构(部门管理)
- 「系统管理 → 部门管理」中建立部门树(支持多级),后续模板指派步骤办理人、用户归属都依赖部门。
② 用户管理
- 「系统管理 → 用户管理」创建用户:邮箱(登录账号)、姓名、所属部门、状态。
- 用户初始密码由管理员设置,用户首次登录后自行修改。
③ 角色与权限
- 内置角色:
super_admin(超管)、org_admin(租户管理员)、template_editor(模板编辑员)、user(普通用户)。 - 如需自定义角色(例如"只允许查看审计"),「系统管理 → 角色管理」新建角色并勾选权限码(如
audit:read、template:publish等),再分配给用户。 - 权限在服务端路由与前端页面/按钮两层同时生效,未授权的菜单自动隐藏。
④ 模板分类(可选)
- 「系统管理 → 模板分类」维护分类(如"行政类""检验类"),供模板归类。
⑤ 自建 CA(推荐,签署前完成)
- 「系统管理 → 自建 CA」点击初始化 CA:系统为租户生成根证书与私钥(私钥文件路径、口令见
config.toml的[ca]段,务必备份)。 - 初始化后,用户即可在个人设置中申请签署证书(见下文签署章节)。
- 同页提供:证书列表、吊销、CRL 下载、证书申请审批。
⑥ 租户管理(仅超管)
- 平台级超管在「系统管理 → 租户管理」创建/停用租户、为租户指定管理员、重置租户管理员密码。
这是本系统最核心的配置环节,分四步:上传 → 画字段 → 配步骤 → 发布。
① 上传 PDF
- 「模板库 → 上传 PDF 创建模板」,填写模板名称(必填)、选择分类(可选)、上传 PDF。
- 若 PDF 本身带 AcroForm 表单域,系统自动识别并导入为字段;否则进入编辑器手动添加。
② 可视化编辑字段
-
打开模板进入编辑器:左侧为 PDF 页面预览,右侧为字段面板。
-
从字段面板拖拽字段到页面目标位置,支持 10 种类型:
类型 用途 单行/多行文本 普通填写项 数字 可设最小/最大值 日期 日期选择 勾选框 / 单选 / 下拉 选项类字段(单选/下拉需配置选项列表) 图片上传 现场照片、扫描件 签名 手写签名/数字签署位置 审批意见 意见批注栏 -
用字段分组 / 行容器把相关字段组织成块,编辑与配置时整块操作。
-
选中字段后在属性面板设置:字段名、是否必填、正则校验、数值范围、选项等。
-
字段位置可拖动、可微调大小;页面可缩放定位。
③ 配置流程步骤
- 切换到「步骤配置」页签,默认有步骤 1,可添加/删除/上下移动步骤。
- 每个步骤配置三件事:
- 步骤名称:如"申请人填写""科长审批""主任签署"。
- 指派方式:
- 设计期指派——负责人目标选「具体用户」「部门」或「整个机构」;
- 由上一步指定——上一步办理人在提交时现场选择下一步办理人(适合灵活派单)。
- 可编辑字段:勾选本步骤允许填写/签署的字段(按分组块整块勾选,已被前面步骤占用的字段不可重复分配);如需对某步骤隐藏部分字段,使用隐藏字段配置。
- 若某步骤勾选了签名字段,提交该步时将执行数字签署(页面会提示"该步骤包含签名字段,提交时将执行签署")。
④ 保存与发布
- 编辑过程中随时保存(模板保持草稿状态,草稿可反复修改)。
- 点击发布:确认对话框中选择发起范围(允许哪些人用此模板发起文档,留空 = 整个机构所有人)。
- 发布后模板进入「已发布」状态,即可发起流程;如需修改,先取消发布回到草稿。
- 已发布模板也可停用,停用后不能再发起新文档,历史文档不受影响。
发起文档
- 「模板库」找到目标模板(可按名称/分类搜索),状态须为已发布,点击行内发起。
- 输入文档标题,确认后系统自动生成文档编号,进入第 1 步流转。
- 若第 1 步就是你的填写步骤,直接进入填写页。
办理我的待办
- 工作台「待我签署」卡片与待办列表、或「我的文档」中状态为流转中的文档,点开进入填写页。
- 填写页左侧为 PDF 实时预览(已填内容即时渲染到页面上),右侧/下方为本步可编辑字段。
- 字段校验(必填、格式、范围)不通过时无法提交。
- 填写完成后点击提交,文档自动流转到下一步,下一步办理人收到站内通知。
流程操作
- 退回:当前步骤办理人可将文档退回上一步(上一步办理人修改后重新提交)。
- 驳回:终止整个文档(状态变为 terminated)。
- 撤回:发起人在流转中可撤回文档回到草稿,修改后重新发起。
- 查看进度:文档详情页展示步骤条(每步状态:待处理/进行中/已完成/已退回)、各步办理人与时间、字段填写历史。
完成
- 末步提交后文档状态变为已完成,可在详情页预览/下载最终 PDF:包含全部字段内容与各签署方的数字签名。
签署前需要完成一次性准备(个人设置中):
准备签署材料(一次性)
- 「个人设置 → 签名密码」:设置签署密码。它与登录密码相互独立,用于加密保护你的签署私钥——每次签署时输入的是它。
- 「个人设置 → 我的签名」:手写或上传签名图片(加密存储,可设为默认签名)。
- 「个人设置 → 我的证书」二选一:
- 申请平台证书(推荐):点击申请(可填用途说明)→ 管理员在「系统管理 → 自建 CA → 证书申请」中审批 → 通过后自动可用;
- 上传外部证书:上传已有证书文件。
执行签署
- 办理到含签名字段的步骤时,点击签署,弹出签署对话框。
- 输入签署密码。
- 选择签名来源:使用已保存的默认签名,或在弹出的签名板中现场手写(手机端体验最佳);也可勾选"保存为我的签名"。
- 确认后系统完成:签名图片落到 PDF 签名位 → 生成 CMS 数字签名(增量更新,不破坏之前其他人的签名)→ 文档进入下一步。
若该步骤同时是最后一步,签署即完成整个文档。
当某一步的办理人不在系统内(如外部专家、合作方):
- 有「交接生成」权限的用户在文档操作中选择生成交接令牌,得到一条一次性链接(可设有效期,可吊销)。
- 把链接发给外部人员(微信/邮件均可)。
- 对方打开链接:若未登录会提示先登录/注册;登录后系统自动把该步骤办理权绑定给对方。
- 对方随即在手机端或 PC 端正常办理该步骤(填写/签署)。
令牌状态可在交接管理中查看:待绑定 / 已绑定 / 已吊销 / 已过期。
- 浏览器访问
http://服务器地址:8080/m/(开发模式为http://localhost:5173/m/),登录同一账号。 - 手机端专为办理优化:
- 工作台:待办优先展示,点开即办;
- 填写页:字段按分组块流式排版,适配小屏;
- 签名板:全屏手写,笔迹平滑处理;
- PDF 查看:在线预览文档与签署效果;
- 通知 / 我的:待办提醒、个人设置(含签署密码、签名、证书管理)。
- 交接链接在手机浏览器打开即可直接使用。
审计日志(管理员)
- 「系统管理 → 审计日志」:按时间/操作人/动作/对象检索全部操作记录,含操作前后快照、IP、终端信息。
- 链条校验:点击校验可验证整条日志哈希链未被篡改(每条日志的哈希由前一条哈希+本条内容计算而来)。
- 导出 CSV:用于存档或报送。
通知中心(所有用户)
- 顶栏铃铛显示未读数;列表页可单条或全部标记已读。
- 典型通知:文档到达你的步骤、文档被退回/驳回/完成等事件。
配置文件 config.toml(首次启动自动生成),同名环境变量优先于文件。常用项:
| 配置 | 环境变量 | 默认 | 说明 |
|---|---|---|---|
http_addr |
HTTP_ADDR |
:8080 |
监听地址 |
db.driver / db.dsn |
DB_DRIVER / DB_DSN |
sqlite | 数据库(当前实际仅 SQLite 生效) |
jwt.secret |
JWT_SECRET |
dev 值 | 生产必改 |
jwt.ttl_minutes |
JWT_TTL_MINUTES |
1440 | 登录有效期(分钟) |
storage.base_path |
STORAGE_BASEPATH |
./storage |
上传文件存储目录 |
seed.* |
SEED_* |
见文件 | 首次启动种子账号(仅首次生效) |
font_path |
FONT_PATH |
内嵌 | PDF 中文渲染字体 |
ca.key_path / ca.key_password |
CA_KEY_PATH / CA_KEY_PASSWORD |
./ca/ca-key.pem |
CA 私钥与口令,务必备份 |
生产上线检查清单
- 修改初始超管密码
-
JWT_SECRET换为强随机串 - 备份 CA 私钥并设置私钥口令
- 规划数据备份:数据库文件 +
storage/目录 + CA 私钥 - 外网访问须前置 HTTPS(签署场景强制要求)
| 机制 | 说明 |
|---|---|
| 登录 | JWT 令牌;登录口令 bcrypt 哈希存储 |
| 签署密码 | Argon2id 派生密钥(抗暴力破解) |
| 私钥与签名图 | AES-256-GCM 加密落库,签署时仅在内存短暂解密 |
| 租户隔离 | 所有业务数据强制租户过滤 |
| 权限 | 服务端路由校验 + 前端按钮级控制双层防线 |
| 审计 | 哈希链防篡改,可独立校验 |
| CMS 数字签名 + 增量更新 + 可选时间戳,多方签署可分别验证 |
Q:忘记签署密码怎么办? A:签署密码无法找回(私钥由它加密)。需在「个人设置 → 签名密码」重新设置签署密码,并重新上传/申请签署材料(历史签署不受影响)。
Q:模板发布后还能改吗? A:不能直接改。先「取消发布」回到草稿修改再重新发布。已发起的文档使用发起时刻的模板快照,不受模板后续修改影响。
Q:文档走到一半发现第 1 步填错了? A:当前步骤办理人可「退回」上一步逐级退回修改;或由发起人「撤回」回到草稿重新发起。
Q:外部人员没有账号怎么签? A:使用交接链接(见教程第 6 节);对方注册账号后经链接绑定即可办理。
Q:签署后的 PDF 在哪下载? A:文档详情页(已完成状态)预览并下载最终 PDF;签署有效性可被 Adobe Acrobat 等标准 PDF 阅读器验证。
简录签 SimRecSign · 多租户电子签署与流程审批系统