# Elink消息模板审批流程 - 页面改动说明

## 文档信息

| 属性 | 值 |
|------|-----|
| 文档版本 | v2.1 |
| 更新日期 | 2026-07-06 |

### 版本更新记录

| 版本 | 日期 | 更新内容 |
|------|------|----------|
| v2.1 | 2026-07-06 | 1. 新增「已驳回」状态：红色标签、查看驳回原因弹窗、编辑后自动回到草稿<br>2. 可见性和合规承诺移至提交审核确认弹窗，编辑弹窗只保留内容相关字段<br>3. 去掉「创建新版本」，已发布/停用模板统一用「复制」按钮<br>4. 已停用模板新增「删除」操作<br>5. 操作按钮按 TAB × 状态 × 角色 三维定义，「撤回」和「审批」在不同Tab互斥显示 |
| v2.0 | 2026-07-06 | 初版。列表页改造、审批弹窗、停用确认弹窗、提交审核确认弹窗、复制模板 |

---

## 1. 改动概述

基于PRD（Elink消息模板审批流程-PRD.md），需对现有原型页面进行改动，实现模板审批流程、可见性控制、复制模板等功能。

| 页面 | 改动类型 | 说明 |
|------|----------|------|
| 消息模板管理.html | 重大修改 | 列表页新增列/筛选/Tab/操作、新增审批弹窗、停用确认弹窗 |

---

## 2. 消息模板管理.html 详细改动

### 2.1 列表页改动

#### 2.1.1 新增列

| 列名 | 宽度 | 说明 |
|------|------|------|
| 序号 | 50px | 不变 |
| 模板编码 | 110px | 不变 |
| 模板名称 | — | 不变 |
| 关联规则 | 170px | 规则名称+编号 |
| 审批状态 | 100px | 草稿/已驳回/待审核/已发布/已发布(停用) |
| 可见性 | 80px | 公开/私有 |
| 创建人 | 100px | 模板创建人姓名 |
| 最近审批人 | 100px | 最近一次审批的管理员姓名 |
| 最近审批时间 | 160px | 最近一次审批的时间 |
| 操作 | — | 根据状态和权限动态显示 |

#### 2.1.2 审批状态标签

- **草稿**：灰色标签
- **已驳回**：红色标签
- **待审核**：橙色标签
- **已发布**：绿色标签
- **已发布(停用)**：灰色标签

#### 2.1.3 Tab切换

管理员视图：
- 「全部模板」— 显示所有模板
- 「我创建的」— 只显示当前用户创建的模板
- 「待审核 N」— 红色数字角标，只显示待审核模板，状态下拉框自动隐藏

普通用户视图：
- 「全部模板」— 显示当前用户的模板 + 已发布且公开的模板
- 「我创建的」— 只显示当前用户创建的模板

#### 2.1.4 筛选项

| 筛选项 | 类型 | 说明 |
|--------|------|------|
| 关键字 | 文本输入 | 搜索模板名称、规则编号 |
| 审批状态 | 下拉单选 | 全部/草稿/已驳回/待审核/已发布/已发布(停用) |

> 选中「待审核」Tab时，状态下拉框自动隐藏（避免重复筛选）。

#### 2.1.5 操作列按钮

操作按钮根据 **TAB × 模板状态 × 用户角色** 三个维度决定显示哪些。

**管理员视图：**

| TAB | 模板状态 | 操作按钮 |
|-----|---------|---------|
| 全部模板 | 草稿 | 提交审核、编辑、删除 |
| 全部模板 | 已驳回 | 查看驳回原因、编辑、删除 |
| 全部模板 | 待审核 | 审批、预览 |
| 全部模板 | 已发布 | 复制、停用、预览 |
| 全部模板 | 已发布(停用) | 复制、启用、删除、预览 |
| 我创建的 | 草稿 | 提交审核、编辑、删除 |
| 我创建的 | 已驳回 | 查看驳回原因、编辑、删除 |
| 我创建的 | 待审核 | 撤回、预览 |
| 我创建的 | 已发布 | 复制、停用、预览 |
| 我创建的 | 已发布(停用) | 复制、启用、删除、预览 |
| 待审核 | 待审核（所有） | 审批、预览 |

**普通用户视图：**

| TAB | 模板状态 | 操作按钮 |
|-----|---------|---------|
| 全部模板 | 自己的草稿 | 提交审核、编辑、删除 |
| 全部模板 | 自己的已驳回 | 查看驳回原因、编辑、删除 |
| 全部模板 | 自己的待审核 | 撤回、预览 |
| 全部模板 | 自己的已发布 | 复制、停用、预览 |
| 全部模板 | 自己的已停用 | 复制、启用、删除、预览 |
| 全部模板 | 别人的已发布(公开) | 复制、预览 |
| 我创建的 | 同上"自己的"部分 | — |

> **关键规则**：
> - 「撤回」只在「全部模板」和「我创建的」Tab中显示，「待审核」Tab不显示
> - 「审批」只在「全部模板」和「待审核」Tab中显示，「我创建的」Tab不显示
> - 已发布模板不可编辑，只能通过"复制"生成新模板

---

### 2.2 新增/编辑模板弹窗

#### 2.2.1 弹窗字段

| 字段 | 类型 | 说明 |
|------|------|------|
| 模板编码 | 只读 | 新增时显示"系统自动生成"，编辑草稿时显示原编码 |
| 模板名称 | 文本输入 | 必填 |
| 关联规则 | 下拉选择 | 必填，选择后显示规则关联的变量列表 |
| 模板内容 | 文本域 | 必填，支持插入变量 |
| 变量验证 | 验证区域 | 点击"立即验证"检查变量是否匹配 |

> 注意：可见性和合规承诺不在编辑弹窗中，而是在提交审核确认弹窗中选择。

#### 2.2.2 弹窗底部按钮

- **新增/编辑草稿**：取消、保存草稿、提交审核

#### 2.2.3 复制模板

点击已发布模板的"复制"时：
- 弹窗标题："新增消息模板（复制自：TPL001）"
- 编号显示新编号
- 名称追加"（副本）"后缀
- 关联规则、模板内容从原模板克隆（不含可见性）

#### 2.2.4 提交审核流程

**第一步：校验**（在编辑弹窗中）
1. 模板名称不能为空
2. 必须选择关联规则
3. 模板内容不能为空
4. 变量验证必须通过

**第二步：确认弹窗**（校验通过后弹出）
- 选择可见性：公开（默认）/ 私有
- 勾选合规承诺："我确认模板内容不含反动、粗俗、淫秽等违规用语"（必勾选）
- 点击「确认提交」

> 两个提交入口（编辑弹窗内、列表直接提交）都走确认弹窗。

---

### 2.3 审批弹窗

管理员点击"审批"按钮时弹出：

**展示信息**：
- 模板名称、关联规则、提交人、提交时间、可见性、模板内容

**操作**：
- 审批意见输入框（驳回时必填，通过时选填）
- 驳回原因快捷选项：内容包含违规用语、模板内容不完整、变量使用有误
- 「驳回」和「通过」按钮

---

### 2.4 停用确认弹窗

点击"停用"时：
- 查询模板使用情况（被多少个场景使用）
- 未被使用：直接停用
- 被使用：弹窗提示使用数量，确认后停用

---

### 2.5 变量验证区域

编辑弹窗中，模板内容下方新增验证区域：

**布局**：
```
┌─────────────────────────────────────────────────┐
│ 变量验证          [未验证]        [立即验证]      │
│ 模板编辑完成后，点击"立即验证"检查变量是否匹配     │
│ （验证结果显示区域）                              │
└─────────────────────────────────────────────────┘
```

**验证结果**：
- 通过：绿色提示"验证通过，所有变量均可匹配"
- 失败：红色提示"以下变量在该规则中不存在：{var1} {var2}"

---

## 3. 数据结构

### 3.1 模板数据

```javascript
const templateData = {
    'TPL001': {
        code: 'TPL001',
        name: '差旅费报销审核驳回通知',
        ruleId: 'GZ202604000000001',
        auditStatus: 'published',       // draft/rejected/pending/published/disabled
        visibility: 'public',           // public/private（提交审核时设置）
        creatorId: 'admin_001',
        creatorName: '管理员',
        submitterName: '管理员',
        submitTime: '2026-07-01 10:00',
        approverName: '管理员',
        approveTime: '2026-07-01 10:30',
        rejectReason: '',               // 驳回原因（已驳回状态时有值）
        validated: true,
        createdAt: '2025-10-15 09:30:00',
        content: '【差旅费报销单审核驳回】\n您提交的差旅费报销单未通过审核...'
    }
};
```

> 注意：无 parentId、无 currentVersion、无 versions 数组。每个模板完全独立。可见性在提交审核时设置，草稿阶段不设置可见性。

---

## 4. 改动优先级

| 优先级 | 改动项 | 说明 |
|--------|--------|------|
| P0 | 列表页新增列（审批状态、可见性、创建人、审批人、审批时间） | 核心展示 |
| P0 | Tab切换（全部模板、我创建的、待审核） | 核心交互 |
| P0 | 操作按钮调整（提交审核、撤回、审批、复制、停用/启用） | 核心交互 |
| P0 | 审批弹窗 | 核心功能 |
| P0 | 编辑弹窗改造（变量验证）+ 提交确认弹窗（可见性、合规承诺） | 核心功能 |
| P1 | 复制模板功能 | 重要功能 |
| P1 | 停用确认弹窗 | 重要功能 |
| P1 | 可见范围过滤逻辑 | 重要功能 |
| P2 | 存量数据迁移脚本 | 上线准备 |
