6.8 KiB
6.8 KiB
合同起草功能使用指南
功能概述
合同起草功能允许用户基于预定义的合同模板,通过填写占位符快速生成新的合同文档。
核心功能
✅ 已实现功能:
- 创建草稿:从合同模板创建新的草稿
- 占位符填写:通过表单填写合同信息
- 一键替换:批量替换文档中的占位符
- 实时预览:在线编辑和预览文档
- 保存草稿:随时保存当前填写状态
- 完成起草:标记草稿为已完成
使用流程
1. 浏览合同模板
访问合同模板列表页:/contract-template
2. 选择模板并起草
- 点击模板进入详情页
- 点击"起草合同"按钮
- 输入合同标题(系统会生成默认标题)
- 点击确定创建草稿
3. 填写合同信息
进入起草页面后:
- 左侧:文档预览区(60%)- 实时显示文档内容
- 右侧:占位符表单(40%)- 分组显示需要填写的字段
填写步骤:
- 按分组填写字段(甲方信息、乙方信息、合同条款等)
- 必填字段标注红色星号(*)
- 支持的字段类型:
- 文本(text)
- 数字(number)
- 日期(date)
- 电话(tel)
- 多行文本(textarea)
4. 一键替换占位符
点击"一键替换占位符"按钮:
- 系统会将表单中的值批量替换到文档中
- 显示替换进度和结果
- 替换完成后自动保存
5. 手动编辑(可选)
替换后可以继续手动编辑文档:
- 使用 Collabora Online 编辑器
- 支持所有 Word 文档编辑功能
- 缩放:Ctrl + 鼠标滚轮
6. 保存草稿
随时点击"保存草稿"按钮保存当前状态
7. 完成起草
确认无误后点击"完成起草"按钮:
- 系统会检查必填字段是否都已填写
- 完成后草稿状态变更为"已完成"
- 自动跳转回模板列表页
占位符规范
占位符格式
在模板文档中使用双花括号标记占位符:
{{占位符名称}}
示例:
甲方(以下简称甲方):{{甲方名称}}
地址:{{甲方地址}}
法定代表人:{{甲方法定代表人}}
联系电话:{{甲方联系电话}}
乙方(以下简称乙方):{{乙方名称}}
地址:{{乙方地址}}
法定代表人:{{乙方法定代表人}}
联系电话:{{乙方联系电话}}
合同金额:{{合同金额}}元
签订日期:{{签订日期}}
常用占位符
基本信息:
{{合同编号}}{{合同标题}}
甲方信息:
{{甲方名称}}{{甲方地址}}{{甲方法定代表人}}{{甲方联系电话}}
乙方信息:
{{乙方名称}}{{乙方地址}}{{乙方法定代表人}}{{乙方联系电话}}
合同条款:
{{合同金额}}{{签订日期}}{{履行期限}}{{付款方式}}
模板管理员指南
配置模板占位符
管理员需要为每个模板配置 placeholder_schema 字段,定义占位符表单结构。
配置示例
UPDATE contract_templates
SET placeholder_schema = '{
"fields": [
{
"key": "甲方名称",
"label": "甲方名称",
"type": "text",
"required": true,
"group": "甲方信息",
"placeholder": "请输入甲方名称"
},
{
"key": "合同金额",
"label": "合同金额(元)",
"type": "number",
"required": true,
"group": "合同条款",
"placeholder": "请输入金额"
},
{
"key": "签订日期",
"label": "签订日期",
"type": "date",
"required": true,
"group": "合同条款"
}
]
}'::jsonb
WHERE id = 1;
字段配置说明
- key: 占位符键名(必须与文档中的占位符一致,不含花括号)
- label: 表单显示标签
- type: 字段类型(text, number, date, tel, email, textarea)
- required: 是否必填(true/false)
- group: 分组名称(用于表单分组显示)
- placeholder: 输入提示(可选)
- defaultValue: 默认值(可选)
制作模板文档
- 使用 Word 创建合同模板
- 在需要填写的位置插入占位符:
{{占位符名称}} - 保存为 .docx 格式
- 上传到系统
- 配置
placeholder_schema
占位符命名规范
- 使用中文名称,直观易懂
- 避免特殊字符
- 保持命名简洁
- 同一信息使用统一命名
技术说明
数据库表结构
drafted_contracts(起草合同表)
| 字段 | 类型 | 说明 |
|---|---|---|
| id | SERIAL | 主键ID |
| template_id | INTEGER | 关联的模板ID |
| file_path | TEXT | 起草后的文件路径 |
| title | TEXT | 合同标题 |
| placeholder_values | JSONB | 占位符填充值 |
| status | TEXT | 状态(draft/completed/archived) |
| created_by | INTEGER | 创建人ID |
| created_at | TIMESTAMPTZ | 创建时间 |
| updated_at | TIMESTAMPTZ | 更新时间 |
contract_templates 扩展字段
| 字段 | 类型 | 说明 |
|---|---|---|
| placeholder_schema | JSONB | 占位符配置Schema |
API 接口
1. 创建草稿
POST /api/contracts/draft
请求:
{
"templateId": 123,
"title": "采购合同-20250104"
}
响应:
{
"id": 456,
"filePath": "drafts/contract_123_1_1704355200000.docx",
"title": "采购合同-20250104",
"templateId": 123
}
2. 保存占位符值
PUT /api/contracts/draft/:id/placeholders
请求:
{
"placeholders": {
"甲方名称": "广东省烟草专卖局",
"合同金额": "500000"
}
}
响应:
{
"success": true
}
3. 完成起草
POST /api/contracts/draft/:id/complete
响应:
{
"success": true
}
常见问题
Q: 占位符没有被替换?
A: 可能的原因:
- 占位符格式不正确(必须是
{{名称}}) - placeholder_schema 中的 key 与文档中的占位符不一致
- 字段值为空(只替换有值的字段)
Q: 如何检查模板中有哪些占位符?
A:
- 在 Word 中打开模板文档
- 使用查找功能(Ctrl+F)搜索
{{ - 记录所有占位符名称
Q: 可以自定义占位符分组吗?
A: 可以。在 placeholder_schema 中通过 group 字段自定义分组名称。
Q: 替换后还能继续编辑吗?
A: 可以。替换只是批量修改文档内容,之后仍可使用 Collabora 编辑器手动编辑。
Q: 草稿保存在哪里?
A: 草稿文件保存在 MinIO 的 drafts/ 目录下,数据库记录保存在 drafted_contracts 表中。
后续规划
🔲 待实现功能:
- 草稿列表页面
- 草稿历史版本
- 草稿搜索和筛选
- 批量起草
- 模板变量智能推荐
- 导出为 PDF
- 审批流程集成
- 电子签名集成
支持与反馈
如有问题或建议,请联系技术支持团队。