Suzhou-SafetyToolsWarning-WX/PROJECT_GUIDE.md

348 lines
8.5 KiB
Markdown
Raw Permalink 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.

# 安全工器具预警小程序 - 项目说明
## 📋 项目概述
这是一个基于微信小程序原生开发的**安全工器具预警管理系统**,主要用于施工过程中使用的安全工器具的管理、维保和预警。
### 核心功能
- ✅ 设备台账管理(查看、添加、编辑、删除)
- ✅ 多维度筛选和搜索
- ✅ 检测预警和提醒
- ✅ 统计分析
- ✅ 个人中心
## 🏗️ 技术栈
- **框架**:微信小程序原生开发
- **UI组件库**TDesign Miniprogram
- **开发语言**JavaScript + WXML + WXSS
- **基础库版本**3.6.3
## 📁 项目结构
```
miniprogram-1/
├── app.js # 小程序入口
├── app.json # 全局配置
├── app.wxss # 全局样式
├── project.config.json # 项目配置
├── pages/ # 页面目录
│ ├── index/ # 首页(工作台)
│ │ ├── index.wxml # 页面结构
│ │ ├── index.js # 页面逻辑
│ │ ├── index.wxss # 页面样式
│ │ └── index.json # 页面配置
│ │
│ ├── device/ # 设备管理模块
│ │ ├── list/ # 设备列表
│ │ ├── detail/ # 设备详情
│ │ └── add/ # 添加/编辑设备
│ │
│ ├── statistics/ # 统计分析模块
│ │ └── index/ # 统计首页
│ │
│ ├── warning/ # 预警中心模块
│ │ ├── list/ # 预警列表
│ │ └── settings/ # 预警设置
│ │
│ └── profile/ # 个人中心模块
│ └── index/ # 个人中心首页
├── components/ # 自定义组件
├── utils/ # 工具函数
├── assets/ # 静态资源
└── miniprogram_npm/ # npm包TDesign组件库
```
## 🎯 功能模块详解
### 1. 首页(工作台)
**路径**`pages/index/index`
**功能**
- 设备总览统计(总数、预警数、到期数)
- 预警提醒列表显示前3条
- 快捷入口(设备台账、添加设备、统计分析、扫码查询)
- 最近操作记录
**数据结构**
```javascript
{
totalDevices: 156, // 设备总数
warningDevices: 12, // 预警设备数
expiredDevices: 3, // 已到期设备数
warningList: [...], // 预警列表
recentList: [...] // 最近操作
}
```
### 2. 设备台账
**路径**`pages/device/list/list`
**功能**
- 设备列表展示
- 搜索功能(设备名称、编号、型号)
- 状态筛选(全部、正常、预警、已到期)
- 高级筛选(设备类型、使用单位)
- 跳转到设备详情
**数据结构**
```javascript
{
id: "设备ID",
deviceName: "设备名称",
deviceCode: "设备编号",
deviceType: "设备类型",
specification: "规格型号",
useUnit: "使用单位",
belongUnit: "所属单位",
lastInspectionDate: "上次检验日期",
nextInspectionDate: "下次检验日期",
status: "设备状态normal/warning/expired",
daysLeft: 7 // 距离到期天数
}
```
### 3. 设备详情
**路径**`pages/device/detail/detail`
**功能**
- 查看设备完整信息
- 编辑设备
- 删除设备
### 4. 添加/编辑设备
**路径**`pages/device/add/add`
**功能**
- 添加新设备
- 编辑现有设备
- 表单验证
- 日期选择器
- 下拉选择器
**必填字段**
- 设备名称
- 设备编号
- 使用单位
- 上次检验日期
- 下次检验日期
### 5. 统计分析
**路径**`pages/statistics/index/index`
**功能**
- 设备总览统计
- 预警率统计
- 设备类型分布(图表 - 待开发)
- 单位设备统计(图表 - 待开发)
### 6. 预警中心
**路径**`pages/warning/list/list`
**功能**
- 预警列表展示
- 按时间筛选全部、7天内、15天内、已到期
- 预警等级标识
- 跳转到设备详情
### 7. 预警设置
**路径**`pages/warning/settings/settings`
**功能**
- 设置提前预警天数
- 消息推送设置(待开发)
### 8. 个人中心
**路径**`pages/profile/index/index`
**功能**
- 用户信息展示
- 单位管理(待开发)
- 预警设置
- 数据导出(待开发)
- 关于我们
- 帮助中心(待开发)
## 🚀 快速开始
### 1. 环境准备
- 安装微信开发者工具
- Node.js 环境(用于 npm 包管理)
### 2. 安装依赖
```bash
# 在微信开发者工具中点击"工具" -> "构建 npm"
# 或者在命令行执行
npm install
```
### 3. 运行项目
1. 使用微信开发者工具打开项目目录
2. 点击"编译"按钮
3. 在模拟器或真机中预览
### 4. TabBar 图标配置(可选)
当前项目使用纯文字 TabBar。如需添加图标
1. 准备图标文件81px * 81pxPNG格式
2. 将图标放入 `assets/icons/` 目录
3.`app.json` 中配置图标路径:
```json
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "assets/icons/home.png",
"selectedIconPath": "assets/icons/home-active.png"
}
```
所需图标:
- home.png / home-active.png
- device.png / device-active.png
- chart.png / chart-active.png
- warning.png / warning-active.png
- user.png / user-active.png
## 📊 数据管理
### 当前状态
项目目前使用**模拟数据Mock Data**,所有数据都在页面的 JS 文件中硬编码。
### 后续开发建议
#### 方案一:微信云开发(推荐)
```javascript
// 初始化云开发
wx.cloud.init({
env: 'your-env-id'
});
// 查询设备列表
const db = wx.cloud.database();
db.collection('devices').get({
success: res => {
console.log(res.data);
}
});
```
#### 方案二:本地存储
```javascript
// 保存数据
wx.setStorageSync('devices', deviceList);
// 读取数据
const devices = wx.getStorageSync('devices');
```
#### 方案三后端API
```javascript
// 请求后端接口
wx.request({
url: 'https://your-api.com/devices',
method: 'GET',
success: res => {
console.log(res.data);
}
});
```
## 🔧 待开发功能
### 高优先级
- [ ] 数据持久化云开发或后端API
- [ ] 用户登录和权限管理
- [ ] 消息推送(订阅消息)
- [ ] 扫码功能完善(生成设备二维码)
### 中优先级
- [ ] 统计图表(使用 echarts-for-weixin
- [ ] 数据导出Excel
- [ ] 批量导入设备
- [ ] 设备照片上传
### 低优先级
- [ ] 单位管理
- [ ] 操作日志
- [ ] 帮助文档
- [ ] 深色模式优化
## 🎨 UI组件使用
项目使用 TDesign Miniprogram 组件库,已在 `app.json` 中全局注册常用组件:
```javascript
// 已注册的组件
t-button // 按钮
t-icon // 图标
t-cell // 单元格
t-cell-group // 单元格组
t-tag // 标签
t-badge // 徽章
t-search // 搜索框
t-tabs // 标签页
t-tab-panel // 标签页面板
t-empty // 空状态
t-loading // 加载
t-dialog // 对话框
t-message // 消息
t-toast // 轻提示
t-input // 输入框
t-picker // 选择器
t-date-time-picker // 日期时间选择器
```
更多组件请参考:[TDesign 小程序文档](https://tdesign.tencent.com/miniprogram/overview)
## 📝 开发规范
### 命名规范
- 页面文件:小写字母,使用连字符(如:`device-list`
- 变量命名:驼峰命名法(如:`deviceList`
- 常量命名:大写字母+下划线(如:`MAX_COUNT`
### 代码注释
```javascript
// 单行注释
/**
* 多行注释
* @param {string} id - 设备ID
* @returns {Object} 设备信息
*/
```
### 样式规范
- 使用 rpx 作为尺寸单位(响应式)
- 颜色使用变量(参考 `app.wxss`
- 避免使用 !important
## 🐛 常见问题
### 1. 编译报错:找不到 TDesign 组件
**解决方案**:点击"工具" -> "构建 npm"
### 2. TabBar 不显示
**原因**:图标文件不存在
**解决方案**:参考上文"TabBar 图标配置"
### 3. 页面跳转失败
**检查**
- 页面路径是否正确
- 是否在 `app.json` 中注册
- TabBar 页面使用 `wx.switchTab`,非 TabBar 页面使用 `wx.navigateTo`
## 📞 联系方式
如有问题,请联系开发团队。
---
**版本**v1.0.0
**最后更新**2024-05-27