docs: add quick actions bar design spec

This commit is contained in:
Your Name 2026-04-01 11:28:27 +08:00
parent aebf40b7e7
commit eacdcb42a5

View File

@ -0,0 +1,207 @@
# 快捷对话按钮栏设计文档
**日期**: 2026-04-01
**状态**: 待审查
**作者**: Claude
## 概述
在 AI 聊天页面底部输入框上方添加快捷对话按钮栏,提供 4 个常用功能的快速入口,用户点击后自动发送预设消息给 AI。
## 功能需求
### 核心功能
1. 在图片预览区域和输入框之间显示快捷按钮栏
2. 提供 4 个快捷按钮:我的账单、我要报修、工单查询、社区服务
3. 点击按钮后自动发送预设的详细问题给 AI
4. 快捷按钮栏始终显示,不受聊天状态影响
### 按钮内容映射
| 按钮文字 | 发送消息内容 |
|---------|------------|
| 我的账单 | 请帮我查询我的账单信息 |
| 我要报修 | 我要报修 |
| 工单查询 | 请帮我查询我的工单 |
| 社区服务 | 请提供社区服务信息 |
## 设计方案
### 1. 布局结构
```
.chat-input-area
├─ .image-preview-area (条件显示selectedImages.length > 0)
├─ .quick-actions-bar (始终显示) ← 新增
└─ .input-container
├─ input (message-input)
├─ button (upload-button)
└─ button (send-button)
```
### 2. 数据结构
```typescript
interface QuickAction {
label: string // 按钮显示文字
message: string // 点击后发送的消息内容
}
const quickActions: QuickAction[] = [
{ label: '我的账单', message: '请帮我查询我的账单信息' },
{ label: '我要报修', message: '我要报修' },
{ label: '工单查询', message: '请帮我查询我的工单' },
{ label: '社区服务', message: '请提供社区服务信息' }
]
```
### 3. 交互逻辑
```typescript
// 处理快捷按钮点击
const handleQuickAction = (action: QuickAction) => {
inputMessage.value = action.message
handleSendMessage()
}
```
### 4. 样式设计
#### 快捷按钮栏容器 (`.quick-actions-bar`)
- 布局flex row自动换行
- 间距:上下 16rpx padding
- 对齐:居左或居中
- 背景:透明(继承父容器)
#### 快捷按钮 (`.quick-action-btn`)
- 尺寸:高度 64rpx宽度自适应内容
- 内边距16rpx 24rpx
- 背景色:#ffffff(白色)
- 边框1px solid #e5e5e5(浅灰色)
- 圆角12rpx
- 字体大小26rpx
- 字体颜色:#333333(深灰)
- 字体粗细normal400
- 间距:左右按钮之间 16rpx gap
- 过渡动画transform 0.2s ease
- 点击态scale(0.98),背景色 #f8f8f8
### 5. 代码修改位置
**文件**: `/src/pages/ai/chat.vue`
#### 模板修改(第 172-173 行之间)
```vue
<!-- 图片预览区域 -->
<view v-if="selectedImages.length > 0" class="image-preview-area">
<!-- 现有内容 -->
</view>
<!-- 快捷按钮栏 - 新增 -->
<view class="quick-actions-bar">
<view
v-for="(action, index) in quickActions"
:key="index"
class="quick-action-btn"
@click="handleQuickAction(action)"
>
<text>{{ action.label }}</text>
</view>
</view>
<!-- 输入框容器 -->
<view class="input-container">
<!-- 现有内容 -->
</view>
```
#### 脚本修改(在 setup 中添加)
```typescript
// 快捷按钮数据定义
const quickActions: QuickAction[] = [
{ label: '我的账单', message: '请帮我查询我的账单信息' },
{ label: '我要报修', message: '我要报修' },
{ label: '工单查询', message: '请帮我查询我的工单' },
{ label: '社区服务', message: '请提供社区服务信息' }
]
// 处理快捷按钮点击
const handleQuickAction = (action: QuickAction) => {
inputMessage.value = action.message
handleSendMessage()
}
```
#### 样式修改(在 style 中添加)
```scss
.quick-actions-bar {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
padding: 16rpx 0;
}
.quick-action-btn {
height: 64rpx;
padding: 0 24rpx;
background-color: #ffffff;
border: 1px solid #e5e5e5;
border-radius: 12rpx;
font-size: 26rpx;
color: #333333;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s ease;
white-space: nowrap;
&:active {
transform: scale(0.98);
background-color: #f8f8f8;
}
text {
display: block;
}
}
```
## 实现要点
1. **不删除任何文件**:仅在现有 chat.vue 文件中添加代码
2. **保持现有功能**:不影响现有的图片上传、消息发送等功能
3. **响应式布局**:按钮横向排列,宽度不足时自动换行
4. **用户体验**:点击反馈动画,发送消息时显示 loading 状态
5. **代码风格一致**:遵循现有代码的命名规范和结构
## 测试要点
1. 快捷按钮始终显示
2. 点击按钮后消息正确发送
3. 按钮布局正常(不同屏幕宽度)
4. 点击动画效果正常
5. 发送消息时 loading 状态正常
6. 与现有功能无冲突(图片上传、输入框等)
## 实现范围
**包含**
- 在 chat.vue 中添加快捷按钮栏 UI
- 实现点击快捷按钮发送消息的逻辑
- 添加快捷按钮的样式
**不包含**
- 修改后端 API
- 修改其他页面
- 提取快捷按钮为独立组件
- 添加快捷按钮配置功能
## 设计自检
- ✅ 无占位符或 TBD 内容
- ✅ 无内部矛盾
- ✅ 范围明确且聚焦
- ✅ 需求清晰无歧义
- ✅ 布局位置明确(图片预览和输入框之间)
- ✅ 样式规格完整
- ✅ 代码修改位置明确