Some checks failed
Docker Build & Deploy / Build Docker Image (push) Waiting to run
Docker Build & Deploy / Deploy to Production (push) Has been cancelled
Docker Build & Deploy / Cleanup Dangling Images (push) Has been cancelled
Docker Build & Deploy / WeChat Notification (push) Has been cancelled
4.0 KiB
4.0 KiB
ADDED Requirements
Requirement: 统一弹窗组件提供底部弹出式容器
系统 SHALL 提供统一的弹窗组件 PopupContainer,支持底部弹出式布局,用于展示表单、列表、详情等内容。
Scenario: 基础弹窗展示
- WHEN 用户触发弹窗打开
- THEN 系统显示底部弹出的弹窗容器,带有圆角和关闭按钮
- THEN 弹窗高度可配置(默认 80%)
Scenario: 弹窗头部固定内容可滚动
- WHEN 弹窗内容超出可视区域
- THEN 弹窗头部保持固定,内容区域可滚动
- THEN 底部页脚(如有)保持固定不可滚动
Requirement: 统一弹窗组件支持标题和副标题
系统 SHALL 允许配置弹窗的标题和副标题,副标题用于显示统计信息或辅助说明。
Scenario: 显示标题和副标题
- WHEN 弹窗配置了标题和副标题
- THEN 标题显示在弹窗头部,字体大小 16px,加粗
- THEN 副标题显示在标题下方,字体大小 14px,居中显示
Scenario: 无副标题时的头部布局
- WHEN 弹窗只配置了标题,未配置副标题
- THEN 标题居中显示
- THEN 如果有操作按钮,操作按钮显示在标题右侧
Requirement: 统一弹窗组件支持头部操作按钮插槽
系统 SHALL 提供 header-actions 插槽,允许在弹窗头部插入自定义操作按钮。
Scenario: 插入头部操作按钮
- WHEN 父组件使用
header-actions插槽 - THEN 操作按钮显示在弹窗头部的合适位置(有副标题时在右侧,无副标题时与标题同行右侧)
Requirement: 统一弹窗组件支持底部固定页脚
系统 SHALL 提供固定底部的页脚区域,用于放置确认、取消等操作按钮。
Scenario: 显示底部页脚
- WHEN 父组件使用
footer插槽 - THEN 页脚固定显示在弹窗底部,内容区域可滚动
- THEN 页脚区域有上边框分隔,背景色与头部一致
Requirement: 统一弹窗组件支持双向绑定
系统 SHALL 使用 v-model:show 或 v-model 控制弹窗的显示/隐藏状态。
Scenario: 通过 v-model 控制弹窗显示
- WHEN 父组件修改 v-model 绑定的值为 true
- THEN 弹窗打开并显示内容
- WHEN 用户点击关闭按钮或弹窗外部区域
- THEN 弹窗关闭,v-model 绑定的值更新为 false
Requirement: 统一弹窗组件支持关闭按钮配置
系统 SHALL 允许通过 closeable prop 配置是否显示关闭按钮。
Scenario: 禁用关闭按钮
- WHEN closeable 设置为 false
- THEN 弹窗不显示关闭按钮
- THEN 用户只能通过 v-model 关闭弹窗或点击弹窗外部区域
Requirement: 统一弹窗组件支持点击外部关闭
系统 SHALL 支持点击弹窗外部区域关闭弹窗(继承自 Vant UI 的 van-popup)。
Scenario: 点击外部区域关闭
- WHEN 用户点击弹窗外部区域
- THEN 弹窗关闭,v-model 绑定的值更新为 false
Requirement: 统一弹窗组件支持表单验证场景
系统 SHALL 支持在弹窗内容区域放置表单,并提供表单验证功能。
Scenario: 表单弹窗提交
- WHEN 用户填写表单并点击页脚的提交按钮
- THEN 父组件可以访问表单数据进行验证和提交
- THEN 验证失败时,弹窗保持打开状态
Requirement: 统一弹窗组件使用 Vant UI 主题变量
系统 SHALL 使用 Vant UI 的 CSS 变量(如 --van-text-color、--van-border-color、--van-background 等)保持与现有设计系统一致。
Scenario: 主题适配
- WHEN 应用切换主题(深色/浅色)
- THEN 弹窗组件自动适配主题颜色
Requirement: 统一弹窗组件支持 teleport 到 body
系统 SHALL 将弹窗挂载到 body 元素,避免被父组件的样式或层级影响。
Scenario: 弹窗层级正确
- WHEN 弹窗在嵌套组件中打开
- THEN 弹窗正确显示在最顶层,不被父组件的 z-index 影响