# change: 合同方案表单「签约模式/签署模式」精简选项 — 待前端处理

**日期**: 2026-04-28
**类型**: 产品决策（精简选项）— **后端零改动**
**影响端**: 管理后台 (admin) — 系统管理 → 合同方案 → 新增/编辑弹窗
**反馈来源**: 用户当面指示，截图圈出要删除的 3 个 radio 选项

---

## 改动要求

合同方案弹窗（`编辑合同方案` / `新增合同方案`）里**删除以下 3 个 radio**：

### 「签约模式」 contractMode

| 当前 value | 当前 label | 处理 |
|---|---|---|
| STANDARD | 电子签约 | ✅ 保留（且作为唯一选项） |
| SYNC | 线下报备 | ❌ **删除** |

### 「签署模式」 signatoryMode

| 当前 value | 当前 label | 处理 |
|---|---|---|
| 1 | 短信签署 | ✅ 保留（且作为唯一选项） |
| 2 | 现场签署 | ❌ **删除** |
| 3 | 线下签署 | ❌ **删除** |

删除后两个 radio group 都只剩单一选项，建议直接改成只读展示文字或保留单 radio（默认选中且 disabled）。

---

## 修改位置

**文件**: `hl-ui/src/views/contract/scheme/components/SchemeEditModal.vue`

```vue
<!-- 当前 line 47-51 -->
<n-form-item label="签约模式" path="contractMode">
  <n-radio-group v-model:value="formData.contractMode">
    <n-radio value="STANDARD">电子签约</n-radio>
    <n-radio value="SYNC">线下报备</n-radio>     <!-- 删除这行 -->
  </n-radio-group>
</n-form-item>

<!-- 当前 line 54-60 -->
<n-form-item label="签署模式" path="signatoryMode">
  <n-radio-group v-model:value="formData.signatoryMode">
    <n-radio value="1">短信签署</n-radio>
    <n-radio value="2">现场签署</n-radio>          <!-- 删除这行 -->
    <n-radio value="3">线下签署</n-radio>          <!-- 删除这行 -->
  </n-radio-group>
</n-form-item>
```

默认值（`line 167-168`）已经是 `'STANDARD'` 和 `'1'`，无需调整。

---

## 兼容性提醒

后端 **不会** 删除 `ContractMode.SYNC` 枚举值和 `signatoryMode=2/3` 的支持，原因：

1. 12301 平台规范本身定义了 `signatory.mode` 取值 1=短信 / 2=现场 / 3=线下，是上游协议字段
2. v1 历史数据 / contract_scheme 表 / contract 表里**可能存在** value=`SYNC` 或 signatoryMode=2/3 的旧记录
3. 后端 `ContractMode.java` / `dict_business_enums.sql` 里的字典/枚举原样保留

⚠️ **前端处理回显的兼容**：编辑老方案时 `detail.contractMode === 'SYNC'` 或 `detail.signatoryMode === 2/3` 的情况下，radio group 会找不到匹配项导致显示空白。建议前端任选一种处理：

- 方案 A：渲染前若检测到旧值，自动回填到剩余的有效值（`STANDARD` / `'1'`），用户保存时自动迁移
- 方案 B：旧值场景额外渲染一个 disabled radio 显示原值，但禁止重新选择

推荐方案 A（迁移更彻底）。

---

## 验证清单

- [ ] 「签约模式」radio 只剩 `电子签约`
- [ ] 「签署模式」radio 只剩 `短信签署`
- [ ] 编辑历史方案（`contractMode=SYNC` 或 `signatoryMode=2/3`）时回显不报错
- [ ] 新增/编辑保存后，提交给后端的 contractMode 始终是 `STANDARD`，signatoryMode 始终是 `1`
- [ ] 「合同方案列表」里历史 `SYNC`/`2`/`3` 数据展示是否仍正常（这个文件不动表格列，只动弹窗）

---

## 关联

- 后端 ContractMode 枚举: `hl-order-service-v2/src/main/java/com/hulalv/contract/enums/ContractMode.java`
- 后端 ContractSchemeVO: `hl-order-service-v2/src/main/java/com/hulalv/contract/vo/ContractSchemeVO.java:43-47`
- 12301 协议字段映射: `signatory.mode` (12301 申报合同 API)
