# 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. 表单数据会在打开时自动初始化为当前时间