# 项目管理需求卡

## 目录

- [REQ-PROJ-001 菜单入口](#req-proj-001-菜单入口)
- [REQ-PROJ-002 列表与分页](#req-proj-002-列表与分页)
- [REQ-PROJ-003 条件查询与重置](#req-proj-003-条件查询与重置)
- [REQ-PROJ-004 列表状态与操作](#req-proj-004-列表状态与操作)
- [REQ-PROJ-005 新建立项](#req-proj-005-新建立项)
- [REQ-PROJ-006 项目基础字段](#req-proj-006-项目基础字段)
- [REQ-PROJ-007 项目主要内容](#req-proj-007-项目主要内容)
- [REQ-PROJ-008 客户信息选择](#req-proj-008-客户信息选择)
- [REQ-PROJ-009 下游承运商选择](#req-proj-009-下游承运商选择)
- [REQ-PROJ-010 项目情况说明](#req-proj-010-项目情况说明)
- [REQ-PROJ-011 项目附件](#req-proj-011-项目附件)
- [REQ-PROJ-012 附件材料要求](#req-proj-012-附件材料要求)
- [REQ-PROJ-013 保存草稿与临时生效](#req-proj-013-保存草稿与临时生效)
- [REQ-PROJ-014 提交审批](#req-proj-014-提交审批)
- [REQ-PROJ-015 审批通过](#req-proj-015-审批通过)
- [REQ-PROJ-016 审批驳回与撤回](#req-proj-016-审批驳回与撤回)
- [REQ-PROJ-017 重大项目补录](#req-proj-017-重大项目补录)
- [REQ-PROJ-018 客户额度校验](#req-proj-018-客户额度校验)
- [REQ-PROJ-019 编辑立项](#req-proj-019-编辑立项)
- [REQ-PROJ-020 查看立项](#req-proj-020-查看立项)
- [REQ-PROJ-021 删除草稿立项](#req-proj-021-删除草稿立项)
- [REQ-PROJ-022 作废立项](#req-proj-022-作废立项)
- [REQ-PROJ-023 发起变更立项](#req-proj-023-发起变更立项)
- [REQ-PROJ-024 变更项目信息](#req-proj-024-变更项目信息)
- [REQ-PROJ-025 变更内容与原因](#req-proj-025-变更内容与原因)
- [REQ-PROJ-026 变更审批与生效](#req-proj-026-变更审批与生效)
- [REQ-PROJ-027 变更记录](#req-proj-027-变更记录)
- [REQ-PROJ-028 选择关联项目](#req-proj-028-选择关联项目)
- [REQ-PROJ-029 导出立项列表](#req-proj-029-导出立项列表)
- [REQ-PROJ-030 权限与审计](#req-proj-030-权限与审计)
- [通用规则](#通用规则)

---

### REQ-PROJ-001 菜单入口

- 功能点：
  - 项目管理模块归属于“项目管理”主菜单。
  - 在“项目管理”菜单下提供“项目管理”入口。
  - 用户进入项目管理页面后，可进行查询、新建立项、重大项目补录、编辑、提交、查看、删除、变更、作废、导出等操作。

- 异常与边界：
  - 无菜单权限时不展示“项目管理”入口。
  - 有菜单权限但无按钮权限时，仅展示允许访问的页面和操作。
  - 菜单或列表加载失败时提示失败原因，不影响其他模块访问。

- 反例：
  - 不允许把项目管理挂到非项目管理主菜单下。
  - 不允许无权限用户通过 URL 直接进入项目管理页面。
  - 不允许菜单入口存在但页面无法加载。

---

### REQ-PROJ-002 列表与分页

- 功能点：
  - 默认展示当前用户权限范围内的项目立项数据。
  - 列表展示序号、立项申请单号、项目编号、项目名称、项目类型、客户名称、下游承运商、承办部门、项目负责人、审批状态、当前节点、当前处理人、生效类型、审核通过时间、操作等字段。
  - 审批状态和操作列固定在右侧，不随横向滚动条滑动。
  - 默认按创建时间或立项申请时间降序展示。
  - 支持分页展示，默认10条/页，支持20/50/100条/页。

- 异常与边界：
  - 查询无数据时展示空状态。
  - 当前页数据因删除、提交、撤回、审批、变更等操作发生变化后，应刷新列表并保持分页逻辑正确。
  - 列表加载失败时保留当前查询条件和分页条件，提示用户重新查询。

- 反例：
  - 不允许审批状态或操作列被横向滚动隐藏。
  - 不允许列表字段展示用户 ID 代替用户姓名。
  - 不允许分页后丢失当前查询条件。

---

### REQ-PROJ-003 条件查询与重置

- 功能点：
  - 支持按立项申请单号、项目名称、承办部门、项目负责人、项目类型、审批状态、生效类型等条件组合查询。
  - 立项申请单号、项目名称使用输入框，支持模糊查询。
  - 承办部门、项目负责人使用输入或搜索选择控件。
  - 项目类型、审批状态、生效类型使用下拉单选控件。
  - 点击查询后按当前条件刷新列表。
  - 点击重置后清空所有查询条件，恢复默认列表。
  - 查询条件较多时支持展开和收起。

- 异常与边界：
  - 查询条件为空时点击查询，按默认规则展示全部权限范围内数据。
  - 查询结果为空时展示空状态，不清空用户已输入条件。
  - 重置后页码恢复第一页，并重新加载列表。

- 反例：
  - 不允许重置后仍保留隐藏查询条件。
  - 不允许只按单个条件查询而忽略其他已选择条件。
  - 不允许查询后改变列表字段或操作范围。

---

### REQ-PROJ-004 列表状态与操作

- 功能点：
  - 审批状态包含草稿、审批中、已撤回、审批通过、已驳回、变更审批中、变更驳回、变更审批通过等状态。
  - 生效类型包含临时、正式。
  - 草稿状态展示编辑、提交、删除操作。
  - 审批中状态展示查看操作。
  - 已撤回状态展示编辑、查看、删除操作。
  - 已驳回状态展示编辑、查看、删除操作。
  - 审批通过且正式生效的项目展示查看、变更等操作。
  - 变更审批中状态展示查看操作。
  - 变更驳回状态展示编辑、查看操作。
  - 操作按钮展示受项目状态和用户权限共同控制。

- 异常与边界：
  - 操作执行前需重新校验项目最新状态，避免列表状态过期导致误操作。
  - 状态为空或未知时限制编辑、提交、删除、变更等高风险操作。
  - 状态变更成功后刷新列表，展示最新状态和可执行操作。

- 反例：
  - 不允许审批中项目继续删除。
  - 不允许已审批通过项目按草稿规则编辑基础信息。
  - 不允许仅根据前端展示状态跳过后端状态校验。

---

### REQ-PROJ-005 新建立项

- 功能点：
  - 点击列表顶部“新建”按钮后打开新建立项页面或弹窗。
  - 新建立项页面包含项目基本信息、项目主要内容、客户信息、承运商信息、项目情况说明、项目材料等区域。
  - 立项申请单号和项目编号由系统保存草稿后自动生成，只读不可编辑。
  - 新建立项支持保存草稿、提交审批、关闭。
  - 普通项目和重大项目按项目类型区分审批流程。
  - 重大项目如果金额超过8000万，需走物流领导审批流程。

- 异常与边界：
  - 新建页面打开失败时提示失败原因，不改变列表数据。
  - 项目类型、项目名称、项目简称、业务部门、承办部门、客户名称、下游承运商、资金和回款相关必填字段为空时阻止提交审批。
  - 保存草稿时仅校验基本信息必填项，不强制上传附件。
  - 重复点击保存或提交时应防止重复生成项目单据。

- 反例：
  - 不允许用户手工填写或修改立项申请单号、项目编号。
  - 不允许缺少项目类型时保存有效项目。
  - 不允许金额超过8000万的重大项目走普通审批流程。

---

### REQ-PROJ-006 项目基础字段

- 功能点：
  - 项目类型为必填字段，使用下拉单选控件，枚举包含普通项目、重大项目。
  - 立项申请单号为只读文本，由系统保存单据后自动生成，用于追踪立项申请流程。
  - 项目编号为只读文本，由系统自动生成，全局唯一，示例格式为 LX-2026-000001。
  - 项目名称为必填字段，使用单行输入框，最多50个汉字，且不可重复。
  - 项目简称为必填字段，使用单行输入框，最多20个汉字。
  - 业务部门为必填字段，使用下拉单选控件，关联用户所属部门。
  - 承办部门为必填字段，使用下拉单选控件，来源为组织部门树。
  - 项目由来使用下拉单选控件，默认商务洽谈。
  - 项目由来说明使用大文本域，最多300字。

- 异常与边界：
  - 项目名称为空、超过50字或重复时阻止提交并提示。
  - 项目简称为空或超过20字时阻止提交并提示。
  - 业务部门或承办部门为空时阻止提交并提示。
  - 立项申请单号或项目编号生成失败时阻止保存并提示。

- 反例：
  - 不允许两个项目使用完全相同的项目名称。
  - 不允许把立项申请单号或项目编号作为可编辑输入项。
  - 不允许承办部门脱离组织部门树随意录入。

---

### REQ-PROJ-007 项目主要内容

- 功能点：
  - 项目资金使用额度为必填数字字段，单位万元，表示实际业务回款周期内付款额度，需大于等于0并保留2位小数。
  - 项目应收账款额度为必填数字字段，单位万元，表示回款周期内最大应收账款额度，需大于等于0并保留2位小数。
  - 应收账款回款期限为必填数字字段，单位天，范围为0到999的整数。
  - 回款账期为必填数字字段，单位天，范围为0到999的整数。
  - 货物类型使用弹窗选择控件，来源为数据字典或货物类型档案，非必填。
  - 预估货物数量使用文本输入框，最多100字。
  - 业务周期使用日期范围控件，格式为 yyyy-MM-dd 到 yyyy-MM-dd。
  - 运输线路使用单行输入框，最多100字。
  - 运输类型使用下拉单选控件，枚举包含汽运、铁路、海运等运输方式。
  - 业务类型使用下拉单选控件，枚举包含一类规模业务、二类规模业务等。
  - 项目规模、预计利润、资金需求均为数字字段，单位万元，需大于等于0并保留2位小数。
  - 结算方式使用下拉单选控件，枚举包含先票后款、先款后票等。
  - 项目经办人和项目负责人为必填字段，使用人员搜索选择控件，默认当前用户，可重新选择。

- 异常与边界：
  - 项目应收账款额度大于项目资金使用额度时阻止提交并提示。
  - 天数字段不是0到999整数时阻止提交并提示。
  - 金额类字段小于0或小数位超过2位时阻止提交并提示。
  - 业务周期开始日期晚于结束日期时阻止提交并提示。

- 反例：
  - 不允许项目应收账款额度超过项目资金使用额度。
  - 不允许回款账期填写负数或1000天。
  - 不允许项目经办人、项目负责人为空后提交审批。

---

### REQ-PROJ-008 客户信息选择

- 功能点：
  - 客户名称为必填字段，使用弹窗搜索选择控件，从客商档案选择上游合作客户。
  - 支持多选客户，至少选择1家客户。
  - 选择客户后，系统自动在客户信息表格生成客户行。
  - 客户信息表格展示客户、客户信用额度、企业性质、法定代表人、联系地址、联系人、联系方式等字段。
  - 删除客户行时需保证至少保留1条客户记录。

- 异常与边界：
  - 未选择客户时阻止提交审批并提示。
  - 客商档案中客户已停用或不存在时阻止选择。
  - 仅剩1条客户记录时，删除按钮置灰或隐藏。
  - 多选客户确认后应实时刷新客户信息表格。

- 反例：
  - 不允许手工输入客户名称代替客商档案选择。
  - 不允许删除所有客户记录后提交。
  - 不允许选择非客户类型的客商作为客户。

---

### REQ-PROJ-009 下游承运商选择

- 功能点：
  - 下游承运商为必填字段，使用弹窗搜索选择控件，从客商档案选择物流承运商。
  - 支持多选承运商，至少选择1家承运商。
  - 选择承运商后，系统自动在承运商信息表格生成承运商行。
  - 承运商信息表格展示承运商、企业性质、法定代表人、联系地址、联系人、联系方式等字段。
  - 删除承运商行时需保证至少保留1条承运商记录。

- 异常与边界：
  - 未选择下游承运商时阻止提交审批并提示。
  - 客商档案中承运商已停用或不存在时阻止选择。
  - 仅剩1条承运商记录时，删除按钮置灰或隐藏。
  - 多选承运商确认后应实时刷新承运商信息表格。

- 反例：
  - 不允许手工输入承运商名称代替客商档案选择。
  - 不允许删除所有承运商记录后提交。
  - 不允许选择非承运商类型的客商作为下游承运商。

---

### REQ-PROJ-010 项目情况说明

- 功能点：
  - 项目情况说明区域包含项目简介、盈利模式及利润测算情况说明、项目风险点、风险防范措施及应急预案等大文本字段。
  - 各说明字段用于补充项目背景、利润来源、风险识别和风控预案。
  - 大文本字段支持多行录入，保存草稿时可不完整，提交审批时按项目类型和流程要求校验。

- 异常与边界：
  - 大文本字段超过系统限制时阻止提交并提示。
  - 提交审批时若流程要求必填但未填写，应阻止提交并提示用户补齐。
  - 用户关闭页面前存在未保存说明内容时，应提示确认离开。

- 反例：
  - 不允许超长文本绕过前端限制提交。
  - 不允许提交审批时丢失已填写说明内容。
  - 不允许查看状态下修改项目情况说明。

---

### REQ-PROJ-011 项目附件

- 功能点：
  - 项目材料区域支持上传附件。
  - 附件列表展示序号、附件类型、文件名、附件描述、文件大小、上传人、上传时间、操作等字段。
  - 附件类型使用下拉选择控件。
  - 附件描述支持录入和编辑。
  - 支持上传 pdf、bmp、jpeg、png、jpg、doc、docx、ppt、pptx、xlsx、xls、eml、msg、zip 等格式文件。
  - 单个文件大小限制500M。
  - 上传成功后自动新增附件表格行，展示文件名、大小、上传人、上传时间。
  - 支持删除未提交或允许编辑状态下的附件。
  - 支持按项目材料要求批量下载附件。

- 异常与边界：
  - 文件格式不支持或大小超过500M时阻止上传并提示。
  - 上传失败时保留当前附件列表并提示失败原因。
  - 已提交审批的单据附件删除按钮按权限和状态隐藏或置灰。
  - 删除附件前需二次确认，确认后同步删除附件记录和服务器文件。

- 反例：
  - 不允许上传无附件类型的有效附件。
  - 不允许上传超过500M的文件。
  - 不允许删除附件后仅移除前端行而服务器文件仍保留有效引用。

---

### REQ-PROJ-012 附件材料要求

- 功能点：
  - 普通项目或中小项目提交审批前需上传利润测算表、单一来源供应商申请表或三方比价表、合同模板、项目操作说明、项目分析报告、项目考察报告。
  - 重大项目提交审批前需上传会议纪要、评审表决票、利润测算表、单一来源供应商申请表或三方比价表、项目操作说明、项目分析报告、项目考察报告、合同模板、上游尽职调查报告、下游尽职调查报告、业务承诺函。
  - 页面应根据项目类型展示对应附件材料清单，并标识未上传材料。
  - 保存草稿时附件可不上传。
  - 提交审批时按项目类型校验附件是否齐全。

- 异常与边界：
  - 附件材料缺失时阻止提交审批，并提示缺失的附件类型。
  - 用户切换项目类型后，附件材料清单需同步切换，已上传且仍适用的附件保留。
  - 同一附件类型支持上传多个文件时，应按业务规则合并校验是否满足要求。

- 反例：
  - 不允许重大项目按普通项目附件清单提交审批。
  - 不允许保存草稿时强制上传全部附件。
  - 不允许缺少合同模板仍提交审批。

---

### REQ-PROJ-013 保存草稿与临时生效

- 功能点：
  - 新增或变更页面点击保存后，临时保存当前页面填写内容。
  - 新建立项保存草稿后，审批状态保持草稿，生效类型默认为临时。
  - 临时生效项目允许合同选择该项目。
  - 临时生效项目不能执行结算流程。
  - 保存草稿只要求基本信息满足最小必填校验，附件可不上传。

- 异常与边界：
  - 基本信息必填项缺失时阻止保存草稿并提示。
  - 保存失败时保留用户已填写内容，方便修正后重新保存。
  - 草稿项目被删除或无权限编辑时，不允许继续保存。

- 反例：
  - 不允许草稿临时项目执行结算。
  - 不允许保存草稿后丢失已上传附件或表格信息。
  - 不允许保存草稿触发审批流程。

---

### REQ-PROJ-014 提交审批

- 功能点：
  - 草稿、已撤回、已驳回状态的立项单据支持提交审批。
  - 提交审批前校验全部必填字段、客户信息、承运商信息、项目材料和业务规则。
  - 不同项目类型、项目金额和变更类型走不同审批流程。
  - 提交成功后审批状态更新为审批中。
  - 提交审批后应实时推送待办消息给当前审批人。

- 异常与边界：
  - 必填字段、客户或承运商信息、附件材料缺失时阻止提交并提示。
  - 审批流程发起失败时保持原状态，并保留用户输入内容。
  - 项目金额或项目类型变更导致审批流不匹配时，应按最新数据重新匹配审批流。
  - 重复点击提交时应防止重复发起审批。

- 反例：
  - 不允许资料未完善的项目进入审批中。
  - 不允许不同金额重大项目使用错误审批流。
  - 不允许提交失败后仍把状态改为审批中。

---

### REQ-PROJ-015 审批通过

- 功能点：
  - 当前审批节点处理人可对审批中单据执行审批通过。
  - 审批全部通过后，立项审批状态更新为审批通过。
  - 首次审批通过后，项目生效类型自动由临时变为正式。
  - 正式项目可在合同、运单、结算等下游业务中按权限选择和使用。
  - 审批通过时间记录最终审批通过时间。

- 异常与边界：
  - 非当前审批节点处理人不允许审批通过。
  - 审批过程中项目数据被删除或作废时，不允许继续审批。
  - 审批通过状态更新失败时需提示原因，并保持审批前状态。

- 反例：
  - 不允许未走完审批流程的项目变为正式项目。
  - 不允许临时项目执行结算流程。
  - 不允许非审批人代替当前处理人审批通过。

---

### REQ-PROJ-016 审批驳回与撤回

- 功能点：
  - 当前审批节点处理人可对审批中单据执行审批驳回。
  - 驳回后审批状态更新为已驳回，并将驳回意见反馈给立项发起人。
  - 申请人可对审批中单据执行撤回。
  - 撤回后审批状态更新为已撤回，并清空流程待办节点。
  - 已驳回或已撤回的单据允许编辑后重新提交审批。

- 异常与边界：
  - 非申请人不允许撤回审批单据。
  - 非当前审批节点处理人不允许驳回。
  - 撤回或驳回失败时保持原审批状态，并提示失败原因。
  - 重新提交审批时需按最新内容重新校验必填和附件。

- 反例：
  - 不允许审批通过后的立项单据继续撤回。
  - 不允许驳回时丢失驳回意见。
  - 不允许撤回后审批待办仍停留在审批人列表。

---

### REQ-PROJ-017 重大项目补录

- 功能点：
  - 列表顶部支持“重大项目补录”入口。
  - 补录用于录入历史或线下已完成审批的重大项目。
  - 补录重大项目无需走系统审批流程。
  - 只要完善全部项目信息并满足附件材料要求，补录提交后立即生效。
  - 补录生效后的项目审批状态展示为审批通过或补录生效口径，生效类型为正式。
  - 补录生效后的项目可执行合同、运单、结算等正式项目流程。

- 异常与边界：
  - 补录时若必填字段或重大项目附件材料缺失，应阻止提交。
  - 补录项目名称重复时阻止提交并提示。
  - 无重大项目补录权限时不展示入口。

- 反例：
  - 不允许补录重大项目资料不完整却直接生效。
  - 不允许普通项目从重大项目补录入口提交。
  - 不允许无权限用户补录重大项目。

---

### REQ-PROJ-018 客户额度校验

- 功能点：
  - 客户存在多个项目时，系统需校验当前客户关联项目是否超过客户信用额度或授信额度。
  - 校验范围包含当前客户已生效项目、临时生效草稿项目以及本次新建或变更项目的项目资金使用额度。
  - 若超过客户额度，系统进行提示，提醒用户确认风险。
  - 客户额度提示不替代审批校验，提交审批时仍需按流程判断是否允许继续。

- 异常与边界：
  - 客户额度为空或无法获取时，应提示额度信息缺失，并允许按权限继续保存草稿。
  - 多客户项目应分别校验每个客户额度。
  - 客户额度校验服务失败时，应提示用户稍后重试或联系管理员。

- 反例：
  - 不允许只校验当前项目金额而忽略同一客户其他项目占用额度。
  - 不允许多客户项目只校验第一家客户。
  - 不允许超过额度时无任何提示。

---

### REQ-PROJ-019 编辑立项

- 功能点：
  - 草稿、已撤回、已驳回状态的立项单据支持编辑。
  - 编辑页面回显项目完整信息，项目编号只读不可编辑。
  - 编辑后可保存草稿或重新提交审批。
  - 已提交审批的单据在审批中状态不允许直接编辑。

- 异常与边界：
  - 编辑前需校验当前单据状态仍允许编辑。
  - 编辑的数据已不存在时提示数据不存在，并刷新列表。
  - 修改项目类型后，应重新匹配附件材料要求和审批流程。
  - 保存或提交失败时保留用户修改内容。

- 反例：
  - 不允许审批中单据绕过撤回直接编辑。
  - 不允许编辑时修改项目编号。
  - 不允许编辑后产生重复项目名称。

---

### REQ-PROJ-020 查看立项

- 功能点：
  - 支持通过列表行操作查看项目详情。
  - 查看页面展示项目基本信息、项目主要内容、客户信息、承运商信息、项目情况说明、项目附件、审批信息和变更记录。
  - 查看状态下所有字段只读。
  - 支持查看附件和审批流转信息。

- 异常与边界：
  - 数据已删除、作废或无权限查看时提示无法查看。
  - 附件加载失败时不影响其他项目字段展示。
  - 历史变更记录加载失败时提示失败原因，不影响当前项目信息展示。

- 反例：
  - 不允许在查看状态下保存修改。
  - 不允许查看时自动切换到编辑状态。
  - 不允许隐藏已生效变更记录。

---

### REQ-PROJ-021 删除草稿立项

- 功能点：
  - 草稿、已撤回、已驳回且未被业务引用的立项单据支持删除。
  - 点击删除后弹出二次确认弹窗。
  - 删除前需校验是否存在关联合同、运单、结算单据和历史变更记录。
  - 删除成功后刷新列表。

- 异常与边界：
  - 存在业务关联单据时不允许删除，并提示无法删除原因。
  - 存在历史变更记录时不允许删除，并提示无法删除。
  - 删除时状态已变化为审批中或审批通过时，应阻止删除并刷新列表。

- 反例：
  - 不允许删除审批中或审批通过项目。
  - 不允许存在合同、运单、结算单据时删除项目。
  - 不允许跳过二次确认直接删除。

---

### REQ-PROJ-022 作废立项

- 功能点：
  - 审批通过的正式项目支持按权限执行作废。
  - 作废前需弹出二次确认提示。
  - 作废后禁止基于该项目新建合同、运单、结算单据。
  - 作废不影响历史已生成业务单据。
  - 作废操作需永久保留审计日志。

- 异常与边界：
  - 非审批通过项目不允许作废。
  - 作废失败时保持原项目状态并提示失败原因。
  - 作废后如已有页面缓存该项目，应在选择时提示项目已作废不可使用。

- 反例：
  - 不允许作废后继续新建合同、运单或结算单。
  - 不允许作废操作影响历史业务数据。
  - 不允许作废记录不留审计日志。

---

### REQ-PROJ-023 发起变更立项

- 功能点：
  - 审批通过的正式项目支持发起变更立项。
  - 点击变更后打开变更项目页面，自动带入原立项全部历史填写数据。
  - 变更页面新增变更内容、变更原因和变更记录相关区域。
  - 原立项数据作为变更基础数据展示，允许按变更规则修改。
  - 变更类型包含项目变更、项目调整备案，并根据变更类型走不同审批流程。

- 异常与边界：
  - 非正式生效项目不允许发起变更。
  - 存在未完成变更审批时，不允许重复发起新的变更。
  - 原项目已作废或无权限变更时不允许发起变更。

- 反例：
  - 不允许草稿或临时项目发起变更立项。
  - 不允许变更页面为空白而不带入原项目数据。
  - 不允许同一项目同时存在多个审批中的变更单。

---

### REQ-PROJ-024 变更项目信息

- 功能点：
  - 变更项目页面包含项目基本信息、项目主要内容、客户信息、承运商信息、项目情况说明、项目材料、变更内容、变更原因等区域。
  - 变更类型为必填字段，使用下拉单选控件。
  - 项目编号只读不可编辑。
  - 项目类型、项目名称、项目简称、业务部门、承办部门、客户信息、承运商信息、资金和回款相关字段按变更规则回显并允许修改。
  - 变更页面支持保存、提交、关闭。

- 异常与边界：
  - 变更类型为空时阻止保存或提交并提示。
  - 变更时如修改项目类型或金额，应重新匹配审批流程和附件材料要求。
  - 变更保存失败时保留用户修改内容。
  - 关闭前存在未保存内容时，应提示确认是否放弃填写。

- 反例：
  - 不允许变更时修改项目编号。
  - 不允许变更类型为空后提交审批。
  - 不允许变更保存失败后清空用户已填写内容。

---

### REQ-PROJ-025 变更内容与原因

- 功能点：
  - 变更内容为必填大文本字段，用于填写本次调整前后的全部修改内容，最多2000字。
  - 变更原因为必填大文本字段，用于填写本次变更原因，最多2000字。
  - 文本框实时统计输入字数，超过上限时禁止继续输入或提交。
  - 草稿和驳回状态下可编辑变更内容与变更原因。

- 异常与边界：
  - 提交审批时变更内容或变更原因为空，应阻止提交并提示。
  - 文本超过2000字时阻止提交并提示。
  - 查看历史变更记录时，变更内容和变更原因只读展示。

- 反例：
  - 不允许变更内容为空后发起变更审批。
  - 不允许超过2000字的变更说明提交。
  - 不允许查看历史记录时修改变更原因。

---

### REQ-PROJ-026 变更审批与生效

- 功能点：
  - 变更单提交后，项目审批状态更新为变更审批中。
  - 变更审批通过后，变更内容正式覆盖原项目信息，并新增一条变更记录。
  - 变更审批驳回后，项目状态更新为变更驳回，允许编辑后重新提交。
  - 项目调整备案和项目变更按不同流程审批。
  - 变更不改变项目原有生效类型，正式项目变更后仍为正式。

- 异常与边界：
  - 变更审批未通过前，不得覆盖原正式项目信息。
  - 审批过程中项目被作废时，不允许继续完成变更审批。
  - 变更审批失败时保持原项目数据不变，并提示失败原因。

- 反例：
  - 不允许变更草稿内容直接影响正式项目。
  - 不允许审批未通过却生成正式变更记录。
  - 不允许变更后把正式项目退回临时生效。

---

### REQ-PROJ-027 变更记录

- 功能点：
  - 项目详情和变更页面展示变更记录列表。
  - 变更记录展示序号、变更日期、变更类型、经办人、变更内容、变更原因、状态、操作等字段。
  - 草稿或驳回状态的变更记录支持编辑。
  - 审批中或已通过状态的变更记录支持查看流程或查看详情。
  - 变更记录需归集客户、承运商等全部变更内容，保留变更前后字段。

- 异常与边界：
  - 变更记录加载失败时提示失败原因，不影响查看项目基础信息。
  - 查看历史变更记录时全字段只读。
  - 变更记录与项目不匹配时不展示，并提示数据异常。

- 反例：
  - 不允许删除已审批通过的变更记录。
  - 不允许变更记录只保存部分字段导致无法追溯。
  - 不允许跨项目展示变更记录。

---

### REQ-PROJ-028 选择关联项目

- 功能点：
  - 支持打开“选择关联项目”弹窗。
  - 弹窗支持按项目编号、项目名称进行模糊查询。
  - 弹窗列表展示选择、序号、项目编号、项目名称、关联项目、所属部门等字段。
  - 支持分页展示关联项目候选数据。
  - 用户勾选项目后点击确定，关联项目回填到当前立项或变更单。
  - 点击取消或关闭弹窗时不回填数据。

- 异常与边界：
  - 查询无数据时展示空状态。
  - 已作废项目不可作为有效关联项目选择。
  - 无权限查看的项目不出现在候选列表中。
  - 重复选择同一项目时应自动去重。

- 反例：
  - 不允许选择已作废项目作为关联项目。
  - 不允许取消弹窗后仍回填关联项目。
  - 不允许关联项目重复展示或重复保存。

---

### REQ-PROJ-029 导出立项列表

- 功能点：
  - 列表顶部支持导出立项列表。
  - 点击导出后，导出当前查询条件下的项目基础信息、客户、承运商、变更记录和附件清单等数据到 Excel 文件。
  - 导出文件字段与列表和详情展示字段保持一致。
  - 数据量较大时页面展示加载或导出中提示。

- 异常与边界：
  - 当前查询条件下无数据时允许导出空文件或提示无可导出数据。
  - 导出失败时提示失败原因，不改变当前列表状态。
  - 无导出权限时不展示导出按钮。

- 反例：
  - 不允许无权限用户导出项目数据。
  - 不允许导出时忽略当前查询条件。
  - 不允许导出文件展示用户 ID 代替姓名。

---

### REQ-PROJ-030 权限与审计

- 功能点：
  - 根据用户权限控制查询、新建、重大项目补录、编辑、提交、查看、删除、变更、作废、导出、审批等操作入口。
  - 列表、详情、导出、审批流中用户可见字段优先展示姓名，不直接展示用户 ID。
  - 新增、编辑、提交、审批、撤回、驳回、删除、作废、变更、导出等关键操作需记录操作日志。
  - 审计信息应包含操作人、操作时间、操作类型和关键业务对象。

- 异常与边界：
  - 无按钮权限时不展示对应按钮，通过 URL 或接口绕过时也应拒绝。
  - 操作日志记录失败时不得影响用户已成功的业务操作，但需保留可排查信息。
  - 数据权限限制下，用户只能查看和操作授权范围内项目。

- 反例：
  - 不允许无权限用户执行项目审批或作废。
  - 不允许列表展示创建人、更新人等用户 ID。
  - 不允许关键状态变更没有审计记录。

---

## 通用规则

- 项目管理用于维护企业运输业务项目立项、审批、生效、变更和作废全过程，归属于“项目管理”主菜单。
- 项目类型包含普通项目、重大项目；重大项目金额超过8000万时需走物流领导审批流程。
- 立项申请单号和项目编号由系统自动生成，全局唯一，只读不可编辑。
- 项目名称必填且不可重复，项目简称必填。
- 保存草稿后项目审批状态为草稿，生效类型为临时；临时项目可被合同选择，但不可执行结算流程。
- 完善全部项目信息并审批通过后，项目生效类型转为正式；正式项目可执行结算流程。
- 重大项目补录无需走系统审批，完善全部信息并提交后即正式生效。
- 客户名称和下游承运商均需从客商档案选择，至少各选择1条。
- 客户存在多个项目时，应校验客户额度占用，超过额度需提示风险。
- 普通项目或中小项目、重大项目按各自附件材料清单校验提交审批所需附件；保存草稿时附件可不上传。
- 金额字段需大于等于0并保留2位小数，天数字段需为0到999的整数。
- 项目应收账款额度不得大于项目资金使用额度。
- 变更项目需按变更类型走对应审批流程，审批通过后才覆盖原正式项目信息并生成变更记录。
- 删除项目前需校验无关联合同、运单、结算单据和历史变更记录。
- 作废项目禁止新建合同、运单、结算单据，历史已产生业务数据不受影响。
- 列表、详情、导出、审批等用户可见场景优先展示姓名字段，不直接展示用户 ID。
- 新增、编辑、提交、审批、撤回、驳回、删除、作废、变更、导出后均需刷新相关列表或详情状态。
