编辑 | blame | 历史 | 原始文档

合同编号支持自定义 - 前端联调方案

涉及页面

  • CRM - 合同管理 - 新增合同弹窗
  • CRM - 合同管理 - 编辑合同弹窗

变更概述

"合同编号"字段由"系统自动生成、不可编辑"改为"支持手工录入",新增和编辑两种模式均可编辑:

  • 新增时留空 → 后端自动生成(HT 前缀,与原行为一致)
  • 新增时填写 → 使用用户填写的编号
  • 编辑时留空 → 保持原编号不变
  • 编辑时填写 → 使用用户填写的编号(后端校验唯一性)

API

方法 路径 说明
POST /crm/contract/create 新增合同,请求体新增 no 字段
PUT /crm/contract/update 更新合同,no 字段可修改
GET /crm/contract/get 查询合同详情,响应本就含 no 字段(未变)

请求参数(POST /crm/contract/create、PUT /crm/contract/update):

参数 类型 必填 说明
no String 否 合同编号,最长 100 字符;新增时留空(或不传)由后端自动生成,更新时留空保持原编号

其余参数与现状一致,此处不再列出。

响应(未变更):

{
  "code": 0,
  "data": 123,
  "msg": ""
}

data 为新建合同的 ID。

前端修改点

1. 合同编号字段(新增弹窗 + 编辑弹窗)

事项 现状 需改为
disabled 新增禁用、编辑禁用 两种模式均可编辑(去掉禁用)
placeholder 保存时自动生成 新增:留空则自动生成;编辑:留空则保持原编号
其他 — 可清空、最大长度 100

2. 保存时提交该字段

新增/编辑保存时,需要把用户在"合同编号"中填写的值一并提交给后端。

3. 编辑弹窗的其他字段

除合同编号外,编辑弹窗其余字段保持不变。

字段展示规则

字段 展示位置 说明
合同编号 新增弹窗 用户可填写;留空则由后端生成
合同编号 编辑弹窗 用户可修改;留空则保持原编号
合同编号 详情、列表 展示后端实际保存的编号

业务规则说明

场景 规则
新增时填写了编号 使用用户填写的编号,首尾空格会被自动去掉
新增时留空或只填空格 后端自动生成 HT 前缀编号
编辑时填写了编号 使用用户填写的编号,首尾空格会被自动去掉
编辑时留空或只填空格 保持原编号不变
新增/编辑时修改的编号与已有合同重复 保存失败,提示:合同编号【xxx】已存在,请更换后重试
编辑时未改动编号 正常保存,不会误报重复
自动生成的编号重复(极小概率) 保存失败,提示:生成合同序列号重复,请重试(重新保存即可)
编号超过 100 字符 保存失败,提示:合同编号长度不能超过 100 个字符
由报价单转合同 不受影响,仍自动生成编号
Excel 导入合同 不受影响,导入本身已支持自定义编号

注意事项

  • 新增接口返回的是合同 ID,不包含最终编号。若新增后需要在界面上显示实际编号,请在保存成功后调用 GET /crm/contract/get?id={id} 获取,或直接使用用户自己填写的值。
  • 编号唯一性由后端校验,前端无需额外查重;编辑时后端查重会排除合同自身,因此原样提交不会误报重复。
  • 编号长度上限 100 字符,前端可做输入长度限制以改善体验。
  • 不做前端校验也不影响正确性:新增留空走自动生成、编辑留空保持原值,重复会被后端拦截并返回明确提示。
  • 合同编号的变更会计入合同操作日志(更新记录中体现"合同编号:原值 → 新值")。