MicroCommunityWeb/docs/开发者快速上手指南.md

324 lines
7.7 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.

# HC物业管理系统 - 开发者快速上手指南
## 📖 项目概述
**项目名称**: 物业管理系统 (MicroCommunityWeb)
**技术栈**: Vue 2 + Element UI + Vue Router + Vuex + Axios
**项目类型**: 企业级物业管理 Web 应用
**版本**: v1.9
这是一个基于 Vue 2 的物业管理系统,提供完整的物业管理功能,包括业主管理、费用管理、工单管理、设备管理等。
## 🚀 快速开始
### 环境要求
- Node.js >= 12.0.0
- npm >= 6.0.0
- Vue CLI >= 4.5.0
### 安装依赖
```bash
# 安装项目依赖
npm install
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
```
### 开发服务器配置
- 端口: 3000
- 自动打开浏览器: 是
- 代理配置: 已配置后端 API 代理
## 🏗️ 项目架构
### 目录结构
```
src/
├── api/ # API 接口层
├── components/ # 公共组件
├── conf/ # 配置文件
├── i18n/ # 国际化配置
├── router/ # 路由配置
├── utils/ # 工具函数
├── views/ # 页面组件
├── App.vue # 根组件
└── main.js # 入口文件
```
### 核心模块
- **用户管理**: 员工、角色、权限管理
- **社区管理**: 小区、楼栋、房屋管理
- **业主管理**: 业主信息、家庭成员、车辆管理
- **费用管理**: 物业费、水电费、停车费管理
- **工单管理**: 维修、投诉、巡检工单
- **设备管理**: 门禁、监控、充电桩管理
- **报表统计**: 各类数据统计和报表
## 🛠️ 技术特性
### 前端技术栈
- **Vue 2.6.14**: 渐进式 JavaScript 框架
- **Element UI 2.15.6**: 基于 Vue 的组件库
- **Vue Router 3.5.1**: 官方路由管理器
- **Axios 0.21.1**: HTTP 客户端
- **Vue I18n 8.26.7**: 国际化插件
- **ECharts 5.6.0**: 数据可视化图表库
### 开发工具
- **Vue CLI 4.5.0**: Vue 项目脚手架
- **ESLint**: 代码质量检查
- **Sass**: CSS 预处理器
- **Babel**: JavaScript 编译器
## 📱 页面结构
### 主要页面模块
```
views/
├── index/ # 首页仪表板
├── user/ # 用户登录相关
├── layout/ # 主布局框架
├── staff/ # 员工管理
├── community/ # 社区管理
├── room/ # 房屋管理
├── owner/ # 业主管理
├── fee/ # 费用管理
├── work/ # 工单管理
├── resource/ # 资源管理
├── system/ # 系统管理
├── report/ # 报表统计
└── ...
```
### 路由配置
项目使用模块化路由配置,主要路由文件:
- `src/router/index.js` - 主路由配置
- `src/router/feeRouter.js` - 费用管理路由
- `src/router/workRouter.js` - 工单管理路由
- `src/router/communityRouter.js` - 社区管理路由
## 🔧 开发规范
### 组件命名规范
- 页面组件: 使用 PascalCase`RoomList.vue`
- 公共组件: 使用 PascalCase`RoomTree.vue`
- 组件名: 使用 kebab-case`room-list`
### 文件命名规范
- 页面文件: 以 `List.vue`、`Detail.vue`、`Add.vue` 等结尾
- API 文件: 以 `Api.js` 结尾
- 语言文件: 以 `Lang.js` 结尾
### 代码风格
- 使用 ESLint 进行代码检查
- 遵循 Vue 官方风格指南
- 使用 2 空格缩进
- 使用单引号
## 🌐 国际化支持
### 多语言配置
项目支持中英文双语,语言文件位于 `src/i18n/` 目录:
- `commonLang.js` - 通用语言包
- `feeI18n.js` - 费用管理语言包
- `workI18n.js` - 工单管理语言包
- 等等...
### 使用方式
```javascript
// 在模板中使用
{{ $t('common.save') }}
// 在 JavaScript 中使用
this.$t('common.save')
```
## 🔌 API 接口
### 接口配置
- 基础 URL: 通过代理配置到后端服务
- 超时时间: 15 秒
- 请求拦截器: 自动添加认证头信息
- 响应拦截器: 统一错误处理
### 接口调用示例
```javascript
import { getDict } from '@/api/community/communityApi'
// 获取字典数据
const data = await getDict('tableName', 'columnName')
```
### 常用 API 模块
- `communityApi.js` - 社区相关接口
- `feeApi.js` - 费用相关接口
- `workApi.js` - 工单相关接口
- `userApi.js` - 用户相关接口
## 🎨 UI 组件使用
### Element UI 组件
项目大量使用 Element UI 组件,常用组件:
- `el-table` - 数据表格
- `el-form` - 表单组件
- `el-dialog` - 对话框
- `el-select` - 下拉选择器
- `el-button` - 按钮组件
### 自定义组件
项目包含多个自定义组件:
- `RoomTree` - 房屋树形选择器
- `UploadImage` - 图片上传组件
- `ChooseOrgTree` - 组织树选择器
## 📊 数据管理
### 状态管理
- 使用 Vue 的响应式数据管理
- 局部状态存储在组件内部
- 全局状态通过 Vue.prototype 挂载
### 数据流
1. 组件调用 API 接口
2. 接口返回数据
3. 组件更新本地状态
4. 视图自动更新
## 🔐 权限控制
### 权限检查
```javascript
// 检查用户权限
if (this.hasPrivilege('502020082453087940')) {
// 有权限的操作
}
```
### 权限配置
权限通过后端接口返回,存储在 localStorage 中:
- `hc_staff_privilege`: 用户权限列表
- `user`: 用户信息
## 🚨 常见问题
### 1. 下拉框不显示内容
**问题**: `el-select` 下拉选项不显示
**解决**: 检查数据格式,确保 `key``value` 属性一致
### 2. 表格选择功能不工作
**问题**: `el-table``type="selection"` 不工作
**解决**: 添加 `@selection-change` 事件处理
### 3. 路由跳转失败
**问题**: 页面跳转后显示空白
**解决**: 检查路由配置和组件导入路径
### 4. API 请求失败
**问题**: 接口调用返回错误
**解决**: 检查网络代理配置和接口地址
## 📝 开发流程
### 1. 创建新页面
```bash
# 在 src/views/ 下创建新目录
mkdir src/views/newModule
# 创建页面组件
touch src/views/newModule/NewModuleList.vue
```
### 2. 配置路由
在对应的路由文件中添加新路由:
```javascript
{
path: '/views/newModule/newModuleList',
name: 'NewModuleList',
component: () => import('@/views/newModule/NewModuleList.vue')
}
```
### 3. 创建 API 接口
`src/api/` 下创建对应的 API 文件:
```javascript
import request from '@/utils/request'
export function getNewModuleList(params) {
return request({
url: '/newModule/list',
method: 'get',
params
})
}
```
### 4. 添加国际化支持
在对应的语言文件中添加翻译:
```javascript
export const messages = {
zh: {
newModule: {
title: '新模块管理',
add: '新增'
}
}
}
```
## 🎯 最佳实践
### 1. 组件设计
- 保持组件单一职责
- 合理使用 props 和 emit
- 避免组件间过度耦合
### 2. 性能优化
- 使用 `v-if``v-show` 合理控制显示
- 避免在模板中使用复杂表达式
- 合理使用计算属性和监听器
### 3. 错误处理
- 添加 try-catch 错误捕获
- 提供用户友好的错误提示
- 记录错误日志便于调试
### 4. 代码复用
- 提取公共逻辑到 mixins
- 创建可复用的工具函数
- 使用公共组件减少重复代码
## 📚 学习资源
### Vue 2 官方文档
- [Vue 2 指南](https://v2.vuejs.org/v2/guide/)
- [Vue 2 API 参考](https://v2.vuejs.org/v2/api/)
### Element UI 文档
- [Element UI 组件库](https://element.eleme.cn/#/zh-CN)
### 项目相关
- 查看现有组件代码了解项目风格
- 参考相似功能的页面实现
- 阅读 API 接口文档
## 🤝 团队协作
### 代码提交
- 使用清晰的提交信息
- 提交前进行代码检查
- 及时同步最新代码
### 问题反馈
- 遇到问题先查看本文档
- 搜索现有 issue 避免重复
- 提供详细的错误信息和复现步骤
---
**祝您开发愉快!** 🎉
如有问题,请查看项目文档或联系团队成员。