# smoke-record-dialog 组件
## 📦 组件说明
抽烟记录弹框组件,用于记录抽烟或抵抗记录。从底部弹出,半屏展示。
## 🎯 组件特性
- ✅ 符合 uni-app/微信小程序规范的组件结构
- ✅ 使用 Options API(兼容性更好)
- ✅ 从底部弹出动画效果
- ✅ 半屏展示,优化用户体验
- ✅ 支持两种模式:抽烟记录 / 忍住记录
- ✅ 完整的表单功能
- ✅ 已配置 easycom 自动导入
## 📁 文件结构
```
components/
└── smoke-record-dialog/
├── smoke-record-dialog.vue # 组件主文件
└── README.md # 组件文档
```
## 🚀 快速使用
组件已配置 easycom 自动导入,无需手动 import:
```vue
```
## 📝 Props
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| show | Boolean | false | 控制弹框显示/隐藏(支持 v-model) |
| type | String | 'smoke' | 记录类型:'smoke'(抽烟) 或 'resisted'(忍住) |
## 🎪 Events
| 事件名 | 参数 | 说明 |
|--------|------|------|
| update:show | Boolean | 弹框状态改变时触发(v-model 绑定) |
| submit | Object | 提交表单时触发 |
## 📤 提交数据格式
```javascript
{
smoke_time: "2025-01-25", // 日期
smoke_at: "2025-01-25 14:30:00", // 完整时间
remark: "压力大", // 备注(可选)
level: 2, // 烟瘾等级 1-5
num: 3 // 数量(忍住时为0)
}
```
## 💡 使用示例
### 示例 1:记录抽烟
```vue
```
### 示例 2:记录忍住
```vue
```
## 🎨 样式说明
- 弹框背景:半透明黑色遮罩
- 容器样式:纯白背景,顶部圆角
- 主题色:#10B981(翡翠绿)
- 动画效果:0.3s 缓入缓出过渡
## ⚙️ 配置说明
组件已在 `pages.json` 中配置 easycom:
```json
{
"easycom": {
"autoscan": true,
"custom": {
"^smoke-record-dialog$": "@/components/smoke-record-dialog/smoke-record-dialog.vue"
}
}
}
```
## 🔧 技术栈
- Vue 2 Options API
- uni-app 组件规范
- 微信小程序兼容
## ⚠️ 注意事项
1. 组件使用 Options API 而非 Composition API,以确保更好的兼容性
2. 组件名使用小写加连字符(kebab-case),符合 uni-app 规范
3. 已配置 easycom,无需手动导入
4. 提交后弹框会自动关闭
5. 表单数据会在打开时自动初始化为当前时间