867 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# REV-005 财务后台发票管理前端设计
**Feature**: `002-rev005-invoice-flow`
**Date**: 2026-05-12
**Audience**: 财务经办、财务主管、客服协同、系统管理员
**Purpose**: 在既有 REV-005 发票业务流正式工件基础上,补充面向财务人员的前端页面、菜单层级、字段组织、状态模型与跳转关系设计,作为 `water-frontend` 页面实现的直接输入。
---
## 1. 设计目标
本设计聚焦 `SYS-002 > REV-005 发票管理` 后台前端,服务对象为财务人员,遵循以下目标:
1. 采用现有仓库已验证的前端页面模板,不引入新的页面组织范式。
2. 以财务批量处理为主、单笔处理为辅,保证高频操作路径最短。
3. 以缴费记录作为发票开具主数据源,以客户汇总作为大客户辅助视图,账单维度仅作为特殊补充能力。
4. 将红冲、作废、异常从普通查询中独立出来,形成可追踪、可授权、可审计的任务池页面。
5. 让财务人员进入页面后优先看到金额、状态、号码与失败原因,降低筛选和定位成本。
---
## 2. 设计范围
本轮仅覆盖 `REV-005` 财务后台前端,不扩展到:
- `CS-004` 客户侧电子发票服务
- `WECHAT-004` 微网厅电子发票服务
- `SYS-008` 发票服务子系统自身后台
- 发票物理打印页面
- 复杂自由拆票规则配置页面
本设计作为 `REV-005` 前端实现补充,不替代既有 `spec.md``plan.md``tasks.md``contracts/``data-model.md` 的正式业务口径。
---
## 3. 用户与职责边界
### 3.1 目标用户
- **财务经办**:待开票记录筛选、批量开票、查看结果
- **财务主管**:红冲、作废、大额合并开票、异常处理
- **客服协同**:只读查询、查看发票状态、查看开票信息
- **系统管理员**:全量权限、配置联调与问题核查
### 3.2 高风险动作
以下动作必须单独授权,不能仅因拥有列表查看权限而自动获得:
- 客户汇总合并开票
- 红冲处理
- 作废处理
- 异常改派
- 账单维度补充开票
- 大额批量开票
- 人工强制重试
---
## 4. 页面模板选型
### 4.1 主模板
采用 `water-frontend` 既有 **标准列表查询页** 模板,参考:
- `src/views/infra/config/index.vue`
- `src/views/settings/config/invoiceTaxRate/index.vue`
适用于以下页面:
- 发票开具
- 发票查询
- 红冲处理
- 作废处理
- 异常处理
### 4.2 辅模板
- **详情展示页**:发票详情页
- **弹窗表单页**:开票信息维护、批量开票确认、红冲原因、作废原因、异常日志
### 4.3 不采用的模式
本轮不采用新的“首页工作台”或“多栏组合工作台”模式,避免偏离现有模板体系。
---
## 5. 菜单层级设计
### 5.1 菜单树
- **一级菜单**:营收业务
- **二级菜单**:发票管理
- **三级菜单**
1. 发票开具
2. 发票查询
3. 红冲处理
4. 作废处理
5. 异常处理
### 5.2 菜单命名原则
- 名称面向财务人员理解,不使用技术化名称。
- 菜单名称直接对应主要任务,不采用“管理中心”“作业平台”等泛化命名。
- 红冲、作废、异常分别独立,不与“发票查询”混合。
---
## 6. 总体交互原则
1. 财务主入口固定为 **发票开具**
2. 发票开具默认展示 **缴费记录视图**,并在页内切换到 **客户汇总视图**
3. 发票查询作为历史结果与后续处理入口页。
4. 红冲、作废、异常均按“任务池”组织,优先突出待处理量和失败原因。
5. 所有高风险动作都需要二次确认。
6. 所有列表页均支持批量操作、导出与列配置。
---
## 7. 数据源口径
### 7.1 主数据源:缴费记录待开票
适用于:
- 居民用户电子普票
- 中小客户单笔开票
- 后台财务批量开票
- 特殊开账缴费后的开票
页面表现:
- 发票开具页默认视图
- 一笔缴费记录是一个待开票对象
- 支持同一客户多笔缴费记录批量开票
### 7.2 辅助数据源:客户汇总待开票
适用于:
- 大客户
- 政企客户
- 需要合并开票的集团户
- 专票场景
页面表现:
- 仅在发票开具页内切换视图
- 先看客户聚合,再展开客户下的待开票缴费记录
### 7.3 备用数据源:账单维度待开票
仅用于极特殊场景,不作为常规菜单或默认视图:
- 预付费特殊口径
- 协议先票后款
- 历史遗留修复
页面表现:
- 不提供独立菜单
- 仅通过特殊权限入口进入
---
## 8. 页面设计
## 8.1 发票开具页
### 页面定位
财务主作业页,用于待开票记录筛选、批量开票、单笔开票、查看开票信息。
### 页面结构
1. **查询区**
- 缴费日期范围
- 缴费单号
- 客户编号
- 客户名称
- 用户类型
- 开票状态
- 发票类型
- 营业网点 / 水司
- 收费渠道
- 是否大客户
- 特殊开账标识
2. **统计条区**
- 待开票笔数
- 待开票金额
- 今日新增待开票
- 大客户待开票金额
3. **工具栏区**
- 查询
- 重置
- 批量开票
- 批量校验
- 导出
- 切换视图(缴费记录 / 客户汇总)
4. **表格区**
- 默认:缴费记录待开票表
- 切换:客户汇总待开票表
### 缴费记录视图字段
- 选择框
- 缴费日期
- 缴费单号
- 客户编号
- 客户名称
- 户号
- 水表号
- 账期
- 缴费金额
- 可开票金额
- 费用类型
- 发票类型
- 开票抬头
- 税号
- 开票状态
- 特殊开账标识
- 收费渠道
- 收费员
- 操作
### 客户汇总视图字段
- 选择框
- 客户编号
- 客户名称
- 客户类型
- 税号
- 未开票笔数
- 未开票金额
- 默认发票类型
- 默认开票信息完整度
- 最近开票日期
- 操作(展开明细 / 合并开票)
### 行内动作
- 查看明细
- 查看开票信息
- 单笔开票
### 批量动作
- 批量开票
- 批量校验
- 批量导出
### 页面内视图切换要求
- 默认进入缴费记录视图
- 切换至客户汇总视图时,保留已输入的共用筛选条件
- 客户汇总视图下的开票动作仍落到缴费记录级别明细校验
---
## 8.2 发票查询页
### 页面定位
历史发票归档、结果核验与后续处理入口页。
### 页面结构
1. **查询区**
- 开票日期范围
- 发票号码
- 发票代码
- 客户名称
- 客户编号
- 发票类型
- 发票状态
- 推送状态
- 红冲状态
- 作废状态
- 开票人
2. **工具栏区**
- 查询
- 重置
- 导出
- 批量下载
- 批量重推送
- 批量打印(后续可选)
3. **表格区**
- 发票主记录列表
### 表格字段
- 发票号码
- 发票代码
- 客户名称
- 税号
- 开票日期
- 发票金额
- 关联缴费笔数
- 发票状态
- 推送状态
- 下载状态
- 红冲状态
- 作废状态
- 开票人
- 操作
### 行内动作
- 详情
- 下载
- 重推送
- 发起红冲
- 发起作废
---
## 8.3 红冲处理页
### 页面定位
红字发票任务池,用于对已开具发票进行冲销处理。
### 页面结构
1. **查询区**
- 红冲申请日期
- 原发票号码
- 客户名称
- 红冲状态
- 退款状态
- 申请人
2. **工具栏区**
- 查询
- 重置
- 批量提交红冲
- 批量重试
- 导出
3. **表格区**
- 待红冲 / 红冲中 / 红冲成功 / 红冲失败
### 表格字段
- 原发票号码
- 原发票代码
- 客户名称
- 红冲申请时间
- 红冲原因
- 关联退款金额
- 红冲状态
- 失败原因
- 申请人
- 审核人
- 操作
### 行内动作
- 查看原发票
- 查看退款关联
- 提交红冲
- 重试
- 查看失败原因
---
## 8.4 作废处理页
### 页面定位
作废任务池,用于对满足条件的发票进行作废。
### 页面结构
1. **查询区**
- 作废申请日期
- 发票号码
- 客户名称
- 作废状态
- 申请人
2. **工具栏区**
- 查询
- 重置
- 批量作废
- 批量重试
- 导出
3. **表格区**
- 待作废 / 作废中 / 作废成功 / 作废失败
### 表格字段
- 发票号码
- 客户名称
- 作废申请时间
- 作废原因
- 发票金额
- 作废状态
- 失败原因
- 申请人
- 操作
### 行内动作
- 查看发票详情
- 提交作废
- 重试
- 查看失败原因
---
## 8.5 异常处理页
### 页面定位
集中处理开票失败、回执异常、推送异常、下载异常与对账异常的任务池页面。
### 页面结构
1. **查询区**
- 异常日期
- 异常类型
- 业务单号
- 客户名称
- 当前状态
- 是否已重试
- 异常节点
2. **工具栏区**
- 查询
- 重置
- 批量重试
- 批量改派
- 导出
3. **表格区**
- 开票失败
- 回执异常
- 下载异常
- 推送异常
- 对账异常
### 表格字段
- 异常类型
- 业务单号
- 客户名称
- 发票号码
- 金额
- 异常节点
- 异常原因
- 重试次数
- 最新处理时间
- 当前状态
- 操作
### 行内动作
- 查看详情
- 重试
- 查看日志
- 改派处理
- 标记人工处理完成
---
## 8.6 发票详情页
### 页面定位
作为独立只读详情页,承载完整发票业务轨迹,不使用普通小弹窗替代。
### 页面结构
1. 基本信息区
2. 关联缴费记录区
3. 开票与推送轨迹区
4. 红冲 / 作废 / 异常日志区
### 推荐字段分组
#### 基本信息
- 发票代码
- 发票号码
- 发票类型
- 发票金额
- 开票日期
- 发票状态
- 开票人
#### 开票对象
- 客户编号
- 客户名称
- 发票抬头
- 纳税人识别号
- 地址电话
- 开户行
- 银行账号
- 邮箱
- 手机号
#### 关联业务
- 关联缴费笔数
- 关联缴费单号列表
- 账期范围
- 费用类型
- 特殊开账标识
#### 处理轨迹
- 推送状态
- 下载状态
- 红冲状态
- 作废状态
- 外部回执号
- 最近处理时间
- 失败原因
- 重试次数
---
## 9. 弹窗设计边界
### 9.1 开票信息弹窗
用于查看 / 维护:
- 发票抬头
- 税号
- 地址电话
- 开户行
- 银行账号
- 邮箱
- 手机号
- 发票类型
### 9.2 批量开票确认弹窗
用于确认:
- 本次勾选笔数
- 本次开票总金额
- 发票类型
- 抬头归属
- 校验通过/失败摘要
### 9.3 红冲原因弹窗
用于录入:
- 红冲原因
- 退款说明
- 备注
- 附件说明(后续可扩展)
### 9.4 作废原因弹窗
用于录入:
- 作废原因
- 备注
### 9.5 异常日志弹窗
用于快速查看:
- 异常节点
- 原始错误信息
- 外部回执
- 重试记录
- 最新处理结果
---
## 10. 页面跳转关系
### 10.1 主链路:批量开票
`发票开具页`
→ 勾选缴费记录
`批量开票确认弹窗`
→ 提交开票
→ 成功后可跳转 `发票查询页`
### 10.2 大客户链路:客户汇总合并开票
`发票开具页`
→ 切换到客户汇总视图
→ 选择客户
→ 展开明细 / 进入客户待开票记录
`批量开票确认弹窗`
→ 提交开票
`发票查询页`
### 10.3 后处理链路:红冲 / 作废
`发票查询页`
→ 发起红冲 / 发起作废
→ 跳转 `红冲处理页` / `作废处理页`
→ 原票详情查看 / 填原因 / 提交处理
→ 结果回写 `发票查询页`
### 10.4 补救链路:异常处理
`异常处理页`
→ 查看失败原因
→ 重试 / 改派 / 人工处理
→ 回到对应业务页复核
---
## 11. 权限模型建议
### 11.1 菜单权限
- 发票开具
- 发票查询
- 红冲处理
- 作废处理
- 异常处理
### 11.2 按钮权限
#### 发票开具页
- 查询
- 导出
- 查看明细
- 查看开票信息
- 单笔开票
- 批量开票
- 批量校验
#### 发票查询页
- 查询
- 导出
- 详情
- 下载
- 重推送
- 发起红冲
- 发起作废
#### 红冲处理页
- 查询
- 导出
- 提交红冲
- 批量红冲
- 重试
- 查看失败原因
#### 作废处理页
- 查询
- 导出
- 提交作废
- 批量作废
- 重试
#### 异常处理页
- 查询
- 导出
- 重试
- 改派
- 查看日志
- 标记人工完成
### 11.3 特殊动作权限
以下权限建议独立控制:
- 客户汇总合并开票
- 红冲
- 作废
- 异常改派
- 账单维度补充开票
- 大额批量开票
- 人工强制重试
---
## 12. 状态模型建议
## 12.1 开票状态(发票开具页主状态)
- 待开票
- 校验失败
- 开票中
- 开票成功
- 开票失败
## 12.2 发票生命周期状态(发票查询页主展示)
- 已开具
- 已推送
- 部分推送失败
- 红冲中
- 已红冲
- 作废中
- 已作废
- 状态异常
## 12.3 异常类型(异常处理页)
- 开票失败
- 回执异常
- 推送异常
- 下载异常
- 红冲失败
- 作废失败
- 对账异常
## 12.4 展示原则
- 开票状态、推送状态、红冲状态、作废状态分别展示,不合并成单一总状态。
- 列表页状态标签必须能直接支持财务筛选,不要求用户进入详情后再判断。
---
## 13. 字段优先级建议
### 13.1 A 级(默认必须可见)
- 客户名称
- 缴费单号 / 发票号码
- 金额
- 状态
- 发票类型
- 日期
- 失败原因 / 异常状态
- 操作
### 13.2 B 级(默认展示,可折叠)
- 客户编号
- 税号
- 收费渠道
- 营业网点
- 特殊开账标识
- 开票人
- 推送状态
### 13.3 C 级(列配置按需打开)
- 水表号
- 户号
- 账期
- 商品税收分类编码
- 下载状态
- 最近重试时间
- 外部回执号
- 供应商名称
---
## 14. 字段语义分组建议
### 14.1 业务来源组
- 缴费单号
- 账单号
- 客户编号
- 客户名称
- 户号
- 水表号
- 账期
- 特殊开账标识
- 收费渠道
- 营业网点
### 14.2 开票主体组
- 发票抬头
- 纳税人识别号
- 地址电话
- 开户行
- 银行账号
- 邮箱
- 手机号
- 发票类型
### 14.3 金额税务组
- 缴费金额
- 可开票金额
- 发票金额
- 税率
- 税额
- 不含税金额
- 商品税收分类编码
- 费用类型
### 14.4 状态轨迹组
- 开票状态
- 推送状态
- 下载状态
- 红冲状态
- 作废状态
- 异常类型
- 失败原因
- 最近处理时间
- 重试次数
### 14.5 审计留痕组
- 开票人
- 开票时间
- 申请人
- 审核人
- 操作时间
- 外部发票号码
- 外部回执号
- 处理备注
---
## 15. 财务视角下的最终方案
`REV-005` 前端采用“**标准列表入口 + 五个三级菜单页**”的财务后台模型:
- `发票开具`:主作业页,默认缴费记录视图,可切客户汇总视图
- `发票查询`:历史结果页与后处理入口页
- `红冲处理`:红字发票任务池
- `作废处理`:作废任务池
- `异常处理`:失败和异常集中处理池
整体原则如下:
1. 批量处理优先于单笔处理。
2. 缴费记录优先于客户汇总,客户汇总优先于账单补充。
3. 高风险动作单独授权。
4. 状态拆分展示,避免财务误判。
5. 详情页承载全量轨迹,弹窗只承接局部动作。
---
## 16. 与既有正式工件的关系
本文件补充的是 **前端财务页面与导航设计**,应与以下正式工件一起使用:
- `specs/002-rev005-invoice-flow/spec.md`
- `specs/002-rev005-invoice-flow/plan.md`
- `specs/002-rev005-invoice-flow/tasks.md`
- `specs/002-rev005-invoice-flow/data-model.md`
- `specs/002-rev005-invoice-flow/contracts/if-rev-008-invoice-application.md`
- `specs/002-rev005-invoice-flow/contracts/if-rev-009-invoice-query.md`
若后续进入 `water-frontend` 实现阶段,本文件可直接作为:
- 路由与菜单拆分输入
- 页面目录结构输入
- 查询区与列表字段输入
- 权限点拆分输入
- 页面模板选型输入
---
## 17. 未纳入本轮的事项
以下内容明确不在本轮设计范围内:
- 客户侧电子发票入口页面设计
- 微信端电子发票入口页面设计
- 供应商税控配置页面
- 发票打印模板设计
- 发票审批流页面
- 发票统计分析看板
后续若扩展 `CS-004``WECHAT-004``SYS-008`,应分别建立独立设计补充,不在本文件中混合扩展。