Files
YGChatCS/pages/order/components/RefundPopup/README.md
2025-08-07 20:03:03 +08:00

158 lines
4.3 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.

# RefundPopup 退款弹窗组件
## 组件概述
`RefundPopup` 是一个用于处理订单退款相关操作的弹窗组件,支持多种退款场景和状态展示。
## 功能需求分析
### 界面设计规范
1. **弹窗容器**
- 使用圆角矩形容器,背景色为白色
- 弹窗宽度适中,居中显示
- 支持遮罩层,点击遮罩可关闭弹窗
2. **头部区域**
- 显示可爱的花朵卡通形象作为视觉元素
- 卡通形象位于弹窗顶部中央位置
3. **内容区域**
- 主标题:根据不同场景显示相应提示文字
- 副标题:显示详细的退款规则和说明
- 金额显示:突出显示可退金额(橙色字体)
- 退款政策:详细列出各种退款条件和规则
4. **按钮区域**
- 双按钮布局:左侧为次要操作,右侧为主要操作
- 按钮样式:圆角矩形,左侧蓝色,右侧橙色
- 按钮文字:根据场景显示不同的操作文字
### 交互功能
1. **弹窗显示/隐藏**
- 支持通过方法调用显示弹窗
- 支持点击遮罩层关闭弹窗
- 支持点击按钮后关闭弹窗
2. **退款场景处理**
- **不予退款场景**:显示"不予退款12小时以内取消或未入住不予退款"
- **免费取消场景**:显示"免费取消提前48小时以上全额退还房费"
- **部分退款场景**:显示退款政策详情和可退金额
- **商品限制场景**:显示"该商品未使用随时可退"
3. **按钮交互**
- 左侧按钮:"退订政策"或"退订政策"(查看详情)
- 右侧按钮:"我知道了"或"点击退款"(确认操作)
- 支持按钮点击事件回调
4. **数据展示**
- 动态显示可退金额
- 展示详细的退款规则列表
- 支持不同退款类型的文案切换
### 技术要求
1. **组件架构**
- 使用 Vue 3 Composition API
- 支持 TypeScript可选
- 使用 uni-popup 作为弹窗基础组件
2. **样式处理**
- 使用 SASS 预处理器
- 支持响应式设计
- 遵循设计规范的颜色和字体
3. **性能优化**
- 懒加载弹窗内容
- 合理使用计算属性
- 避免不必要的重渲染
4. **代码规范**
- 清晰的组件结构
- 详细的注释说明
- 统一的命名规范
### 样式规范
1. **颜色规范**
- 主色调:蓝色 #007AFF(左侧按钮)
- 强调色:橙色 #FF9500(右侧按钮、金额)
- 文字色:黑色 #000000(主要文字)
- 辅助色:灰色 #666666(辅助文字)
- 背景色:白色 #FFFFFF
2. **字体规范**
- 主标题16px加粗
- 副标题14px常规
- 金额18px加粗橙色
- 按钮文字16px加粗
- 说明文字12px常规
3. **间距规范**
- 弹窗内边距20px
- 元素间距12px
- 按钮间距12px
- 按钮高度44px
### 组件接口
#### Props
```typescript
interface RefundPopupProps {
// 弹窗显示状态
visible: boolean
// 退款类型:'no_refund' | 'free_cancel' | 'partial_refund' | 'anytime_refund'
refundType: string
// 可退金额
refundAmount?: number
// 退款规则列表
refundRules?: string[]
// 自定义标题
title?: string
// 自定义描述
description?: string
}
```
#### Events
```typescript
interface RefundPopupEvents {
// 弹窗关闭事件
'update:visible': (visible: boolean) => void
// 查看政策按钮点击
'policy-click': () => void
// 确认按钮点击
'confirm-click': () => void
// 弹窗关闭事件
'close': () => void
}
```
#### Methods
```typescript
interface RefundPopupMethods {
// 显示弹窗
show(): void
// 隐藏弹窗
hide(): void
}
```
### 使用场景
1. **订单详情页面**:用户查看退款政策
2. **退款申请流程**:确认退款操作
3. **客服咨询场景**:展示退款规则
4. **订单管理后台**:处理退款申请
### 文件结构
```
RefundPopup/
├── index.vue # 主组件文件
├── styles/
│ └── index.scss # 样式文件
├── demo.vue # 演示页面
└── README.md # 组件文档
```
### 开发注意事项
1. 确保弹窗在不同屏幕尺寸下的适配
2. 处理长文本的换行和显示
3. 考虑无障碍访问支持
4. 添加适当的动画效果
5. 确保组件的可复用性和可扩展性