# 常用线路需求卡

## 目录

- [REQ-CYXL-001 列表与分页](#req-cyxl-001-列表与分页)
- [REQ-CYXL-002 条件查询与重置](#req-cyxl-002-条件查询与重置)
- [REQ-CYXL-003 查看常用线路](#req-cyxl-003-查看常用线路)
- [REQ-CYXL-004 新增常用线路](#req-cyxl-004-新增常用线路)
- [REQ-CYXL-005 编辑常用线路](#req-cyxl-005-编辑常用线路)
- [REQ-CYXL-006 线路编号与地址联动规则](#req-cyxl-006-线路编号与地址联动规则)
- [REQ-CYXL-007 批量导出](#req-cyxl-007-批量导出)
- [REQ-CYXL-008 单条删除](#req-cyxl-008-单条删除)
- [REQ-CYXL-009 批量删除](#req-cyxl-009-批量删除)
- [REQ-CYXL-010 组织权限与审计](#req-cyxl-010-组织权限与审计)
- [通用规则](#通用规则)

---

### REQ-CYXL-001 列表与分页

- 功能点：

  - 默认展示当前组织全部常用线路数据，列表按更新时间降序排列。
  - 展示组织、线路编号、线路名称、发货地、发货地址、收货地、收货地址、创建人、更新时间、创建时间、操作等字段。
  - 支持勾选多行数据用于批量导出、批量删除。
  - 操作列固定展示查看、编辑、删除，具体显示受权限控制。
  - 普通用户默认仅看当前组织数据，列表顶部不提供“当前组织/全部组织”切换。
  - 分页默认 10 条/页，支持 20/50/100 条/页。

- 异常与边界：

  - 查询无数据时展示空状态。
  - 当前页删除后无数据时自动回退页码并刷新列表。
  - 列表、分页和导出均按当前组织权限范围生效。
  - 列表加载失败时保留当前筛选与分页条件。

- 反例：
  - 不允许默认按更新时间以外的字段覆盖排序规则。
  - 不允许通过列表顶部组织范围切换查看全部组织数据。
  - 不允许分页后丢失当前查询条件。

---

### REQ-CYXL-002 条件查询与重置

- 功能点：

  - 筛选条件仅保留线路名称、线路编号、发货地、发货地址、收货地、收货地址、组织，按该顺序展示。
  - 线路名称、发货地、发货地址、收货地、收货地址支持模糊查询。
  - 线路编号支持精确匹配。
  - 组织默认带出当前用户所属组织。
  - 点击查询后按条件展示数据。
  - 点击重置后清空所有条件并恢复默认列表。

- 异常与边界：

  - 查询条件为空时点击查询，按默认规则展示当前组织全部数据。
  - 查询结果为空时展示空状态，不清空用户已输入条件。
  - 重置后页码恢复第一页，并按更新时间降序重新加载。

- 反例：
  - 不允许重置后仍保留隐藏条件。
  - 不允许只按单一条件查询而忽略组合条件。
  - 不允许展示联系人、联系方式、经纬度、备注、审计字段等额外筛选条件。

---

### REQ-CYXL-003 查看常用线路

- 功能点：

  - 支持通过行操作查看常用线路详情。
  - 详情展示所有业务字段，字段全部置灰不可编辑。
  - 查看弹窗底部仅显示关闭按钮。

- 异常与边界：

  - 数据已删除或不存在时提示数据不存在，并刷新列表。
  - 详情加载失败时提示失败原因，不影响列表现状。

- 反例：
  - 不允许在查看状态下保存修改。
  - 不允许查看时切换组织范围并修改数据。
  - 不允许查看弹窗出现提交按钮。

---

### REQ-CYXL-004 新增常用线路

- 功能点：

  - 支持新增常用线路，用于运单创建时发货地址与收货地址的快速选择来源。
  - 线路编号由系统自动生成，规则为 XL + 5 位流水号自增，保存后全局唯一。
  - 线路名称使用文本输入框，必填，长度不超过 100 字符，并在新增弹窗中单独占一整行展示。
  - 发货地址和收货地址按地址行展示：左侧自动回填发货地/收货地，中间自动回填详细地址，最右侧使用 List 图标按钮打开“选择常用地址”弹窗。
  - 选择常用地址弹窗筛选区字段固定为地址名称、地址类型、详细地址、组织，并提供查询、重置按钮。
  - 选择常用地址弹窗表格字段固定为序号、地址名称、地址编号、类型、站点编码、详细地址、操作；操作列提供“选择”，底部提供关闭、确认按钮。
  - 选择地址后，系统自动带出地址名称、详细地址、经度、纬度，并回填到发货或收货地址关联字段。
  - 发货联系人、发货联系方式、收货联系人、收货联系方式使用文本输入框，长度不超过 50 字符。
  - 备注使用文本输入框，长度不超过 500 字符。
  - 保存成功后刷新列表。

- 异常与边界：

  - 线路名称为空时阻止提交并提示。
  - 同一组织内线路名称重复时阻止提交并提示“同一组织内线路名称不允许重复”。
  - 发货地址或收货地址为空时阻止提交并提示。
  - 发货地址和收货地址组合在同一组织内重复时阻止提交并提示。
  - 发货联系方式、收货联系方式不符合手机号或固定电话格式时阻止提交并提示。
  - 发货联系人、收货联系人超过 50 字符时阻止提交并提示。
  - 发货联系方式、收货联系方式超过 50 字符时阻止提交并提示。
  - 备注超过 500 字符时阻止提交并提示。
  - 选择地址后未能正确回填地址名称、详细地址时阻止提交。
  - 提交失败时保留用户已填写内容，方便修正后重新提交。

- 反例：
  - 不允许新增手工填写线路编号。
  - 不允许在未选择发货地址或收货地址时保存。
  - 不允许同一组织内存在同名线路。
  - 不允许同一组织内存在相同发货地址与收货地址组合的线路。

---

### REQ-CYXL-005 编辑常用线路

- 功能点：

  - 支持编辑已存在的常用线路。
  - 线路编号在编辑状态下置灰不可编辑。
  - 线路名称可编辑，校验规则与新增一致，并在编辑弹窗中单独占一整行展示。
  - 发货地址、收货地址可通过右侧 List 图标按钮重新从常用地址弹窗中选择，校验规则与新增一致。
  - 发货联系人、发货联系方式、收货联系人、收货联系方式、备注可编辑。
  - 保存成功后刷新列表。

- 异常与边界：

  - 同一组织内线路名称修改后仍需保持唯一。
  - 同一组织内发货地址与收货地址组合修改后仍需保持唯一。
  - 线路编号为空或被篡改时阻止提交。
  - 编辑的数据已不存在时提示数据不存在，并刷新列表。
  - 提交失败时保留用户修改内容。

- 反例：
  - 不允许编辑时修改线路编号。
  - 不允许编辑后产生同名线路。
  - 不允许编辑后产生重复起讫点组合。

---

### REQ-CYXL-006 线路编号与地址联动规则

- 功能点：

  - 线路编号由系统按 XL + 5 位流水号自增自动生成。
  - 线路编号在系统中全局唯一。
  - 发货地址与收货地址通过常用地址库弹窗选择。
  - 选择地址后自动回填地址名称、详细地址、经度、纬度。
  - 切换发货地址或收货地址时，相关回填信息同步更新。

- 异常与边界：

  - 编码生成失败时阻止保存并提示。
  - 已存在相同线路编号时阻止保存并提示。
  - 地址选择返回的地址名称或详细地址不完整时阻止保存。
  - 发货地址与收货地址任一项变更后应重新校验重复组合。

- 反例：
  - 不允许手动编辑线路编号。
  - 不允许地址未回填经纬度仍保存。
  - 不允许沿用旧地址信息而不重新校验。

---

### REQ-CYXL-007 批量导出

- 功能点：

  - 支持勾选多行数据后批量导出 Excel 文件。
  - 未勾选数据时点击批量导出，默认导出当前查询条件下的全部数据。
  - 导出字段与列表显示字段一致。

- 异常与边界：

  - 当前条件下无数据时允许导出空文件或提示无可导出数据。
  - 导出失败时提示失败原因，不改变当前勾选状态。

- 反例：
  - 不允许只导出当前页数据。
  - 不允许未筛选时导出非当前查询条件数据。

---

### REQ-CYXL-008 单条删除

- 功能点：

  - 支持通过行操作删除单条常用线路。
  - 点击删除弹出二次确认弹窗，提示删除后不可恢复。
  - 删除成功后刷新列表，并提示“删除成功”。

- 异常与边界：

  - 删除前必须校验是否已被运单、合同等业务数据引用。
  - 已被引用时不允许删除，并提示“该线路已被业务引用，不可删除”。
  - 数据不存在时提示数据不存在，并刷新列表。

- 反例：
  - 不允许跳过二次确认直接删除。
  - 不允许删除已被业务引用的常用线路。

---

### REQ-CYXL-009 批量删除

- 功能点：

  - 支持勾选多行常用线路后批量删除。
  - 点击批量删除弹出二次确认弹窗。
  - 删除前逐一校验所选数据是否被业务引用。
  - 已引用记录从删除队列剔除并单独提示。
  - 删除成功后刷新列表，并提示“删除成功 XX 条，因引用跳过 XX 条”。

- 异常与边界：

  - 未勾选数据时点击批量删除，应提示先选择需要删除的数据。
  - 所选数据全部被引用时不执行删除，并提示全部跳过原因。
  - 部分删除失败时应提示成功数量和跳过数量。

- 反例：
  - 不允许批量删除已被业务引用的记录。
  - 不允许因为部分记录被引用而影响可删除记录的正常删除。
  - 不允许删除后不刷新列表。

---

### REQ-CYXL-010 组织权限与审计

- 功能点：

  - 组织列作为数据权限字段，普通用户默认仅可查看当前组织数据。
  - 列表顶部不提供“当前组织/全部组织”切换。
  - 根据权限配置控制查看、编辑、删除、导出等操作入口。
  - 创建人、创建时间、更新时间由系统自动记录。

- 异常与边界：

  - 无权限用户访问时提示权限不足。
  - 不允许通过前端组织范围切换越权查看或操作全部组织数据。
  - 列表、详情、导出等用户可见场景优先展示创建人姓名，不直接展示用户 ID。

- 反例：
  - 不允许普通用户通过手动构造组织条件越权修改数据。
  - 不允许手动维护创建人、创建时间、更新时间。
  - 不允许删除或篡改审计信息。

---

## 通用规则

- 常用线路用于记录企业内高频使用的运输线路，作为运单创建时发货地址与收货地址的快速选择来源。
- 线路编号由系统自动生成，规则为 XL + 5 位流水号自增，且全局唯一。
- 同一组织内线路名称不允许重复。
- 同一组织内相同的发货地址与收货地址组合不允许重复创建。
- 新增、编辑弹窗中线路名称单独占一整行展示。
- 发货地址与收货地址必须通过常用地址弹窗选择，地址行左侧自动回填发货地/收货地，中间自动回填详细地址，最右侧使用 List 图标按钮打开弹窗。
- 选择常用地址弹窗筛选字段固定为地址名称、地址类型、详细地址、组织，列表字段固定为序号、地址名称、地址编号、类型、站点编码、详细地址、操作。
- 选择地址后必须自动回填地址名称、详细地址、经度、纬度。
- 列表顶部不提供“当前组织/全部组织”切换。
- 发货联系方式、收货联系方式需校验手机号或固定电话格式。
- 备注最多 500 字符。
- 删除前必须校验业务引用，已引用线路不允许删除。
- 新增、编辑、导出成功后均需刷新列表。
