# 物业管理系统 - 项目架构图

## 🏗️ 整体架构

```
┌─────────────────────────────────────────────────────────────┐
│                        前端应用层                            │
├─────────────────────────────────────────────────────────────┤
│  Vue 2 + Element UI + Vue Router + Vuex + Axios            │
├─────────────────────────────────────────────────────────────┤
│                        业务逻辑层                            │
├─────────────────────────────────────────────────────────────┤
│  用户管理 │ 社区管理 │ 费用管理 │ 工单管理 │ 设备管理        │
├─────────────────────────────────────────────────────────────┤
│                        数据访问层                            │
├─────────────────────────────────────────────────────────────┤
│  HTTP 请求 │ 本地存储 │ 权限验证 │ 错误处理                │
├─────────────────────────────────────────────────────────────┤
│                        后端服务层                            │
└─────────────────────────────────────────────────────────────┘
```

## 📁 目录结构详解

### 1. 源码目录 (src/)

```
src/
├── api/                    # API 接口层
│   ├── community/         # 社区管理接口
│   ├── fee/              # 费用管理接口
│   ├── work/             # 工单管理接口
│   ├── user/             # 用户管理接口
│   ├── room/             # 房屋管理接口
│   ├── owner/            # 业主管理接口
│   ├── resource/         # 资源管理接口
│   ├── system/           # 系统管理接口
│   └── ...
├── components/            # 公共组件库
│   ├── common/           # 通用组件
│   ├── fee/              # 费用相关组件
│   ├── room/             # 房屋相关组件
│   ├── upload/           # 上传组件
│   └── ...
├── views/                 # 页面组件
│   ├── index/            # 首页仪表板
│   ├── layout/           # 主布局框架
│   ├── user/             # 用户相关页面
│   ├── community/        # 社区管理页面
│   ├── fee/              # 费用管理页面
│   ├── work/             # 工单管理页面
│   └── ...
├── router/                # 路由配置
│   ├── index.js          # 主路由配置
│   ├── feeRouter.js      # 费用管理路由
│   ├── workRouter.js     # 工单管理路由
│   └── ...
├── i18n/                  # 国际化配置
│   ├── index.js          # 国际化主配置
│   ├── commonLang.js     # 通用语言包
│   ├── feeI18n.js        # 费用管理语言包
│   └── ...
├── utils/                 # 工具函数
│   ├── request.js        # HTTP 请求封装
│   ├── dateUtil.js       # 日期工具函数
│   ├── moneyUtil.js      # 金额工具函数
│   └── ...
├── conf/                  # 配置文件
│   └── config.js         # 应用配置
├── App.vue               # 根组件
└── main.js               # 应用入口
```

### 2. 配置文件

```
项目根目录/
├── package.json          # 项目依赖配置
├── vue.config.js         # Vue CLI 配置
├── .eslintrc.js          # ESLint 配置
├── .gitignore            # Git 忽略文件
└── README.md             # 项目说明
```

## 🔄 数据流架构

### 1. 单向数据流

```
用户操作 → 组件事件 → API 调用 → 数据更新 → 视图渲染
    ↓           ↓         ↓         ↓         ↓
  触发事件   事件处理   后端接口   状态变更   响应式更新
```

### 2. 组件通信

```
父组件 ←→ 子组件
   ↓         ↓
Props    Events
   ↓         ↓
数据传递   事件通知
```

### 3. 状态管理

```
组件内部状态 (data) ←→ 全局状态 (Vue.prototype)
        ↓                      ↓
   响应式数据             全局方法/属性
        ↓                      ↓
   自动更新视图           权限检查/工具函数
```

## 🌐 网络架构

### 1. 请求流程

```
前端组件 → Axios 实例 → 请求拦截器 → 后端 API → 响应拦截器 → 组件
    ↓           ↓           ↓           ↓           ↓         ↓
  发起请求   统一配置   添加认证头   处理业务   统一处理   更新状态
```

### 2. 代理配置

```javascript
// vue.config.js
proxy: {
  '/app': {
    target: 'http://demo.homecommunity.cn/app',
    changeOrigin: true,
    pathRewrite: { '^/app': '' }
  },
  '/callComponent': {
    target: 'http://demo.homecommunity.cn/callComponent',
    changeOrigin: true,
    pathRewrite: { '^/callComponent': '' }
  }
}
```

## 🔐 权限架构

### 1. 权限控制流程

```
用户登录 → 获取权限列表 → 存储到 localStorage → 组件权限检查 → 功能控制
    ↓           ↓              ↓              ↓           ↓
  身份验证   后端返回权限    本地缓存权限    调用 hasPrivilege   显示/隐藏
```

### 2. 权限检查实现

```javascript
Vue.prototype.hasPrivilege = function(_privaleges) {
  const privilegesToCheck = Array.isArray(_privaleges) ? _privaleges : [_privaleges];
  let userPrivileges = localStorage.getItem('hc_staff_privilege');
  
  if (userPrivileges) {
    userPrivileges = userPrivileges.split(',');
  } else {
    return false;
  }
  
  return privilegesToCheck.some(item => userPrivileges.includes(item));
}
```

## 🎨 UI 架构

### 1. 组件层次结构

```
App.vue (根组件)
    ↓
Layout.vue (主布局)
    ↓
Router View (路由视图)
    ↓
页面组件 (如 RoomList.vue)
    ↓
业务组件 (如 RoomTree.vue)
    ↓
Element UI 组件 (如 el-table, el-form)
```

### 2. 样式架构

```
全局样式 (App.vue)
    ↓
Element UI 主题样式
    ↓
页面级样式 (scoped)
    ↓
组件级样式 (scoped)
```

## 📱 响应式架构

### 1. 移动端适配

- 使用 Element UI 的响应式栅格系统
- 媒体查询适配不同屏幕尺寸
- 触摸友好的交互设计

### 2. 浏览器兼容性

- 支持现代浏览器 (Chrome, Firefox, Safari, Edge)
- 使用 Babel 转译 ES6+ 语法
- Polyfill 支持旧版本浏览器

## 🚀 性能优化架构

### 1. 代码分割

```javascript
// 路由懒加载
component: () => import('@/views/room/roomList.vue')

// 组件懒加载
components: {
  RoomTree: () => import('@/components/room/roomTree.vue')
}
```

### 2. 资源优化

- 图片懒加载
- CSS/JS 压缩
- 静态资源 CDN 加速
- 浏览器缓存策略

### 3. 运行时优化

- Vue 虚拟 DOM 优化
- 计算属性缓存
- 事件委托
- 防抖节流处理

## 🔧 开发工具架构

### 1. 构建工具

```
Vue CLI 4.5.0
    ↓
Webpack 4
    ↓
Babel + ESLint + Sass
    ↓
开发/生产环境构建
```

### 2. 代码质量

- ESLint: 代码规范检查
- Prettier: 代码格式化
- Git Hooks: 提交前检查
- 代码审查流程

### 3. 调试工具

- Vue DevTools: Vue 组件调试
- Chrome DevTools: 浏览器调试
- 控制台日志: 开发调试
- 网络面板: API 调试

## 📊 监控架构

### 1. 错误监控

```javascript
// 全局错误处理
Vue.config.errorHandler = function(err, vm, info) {
  console.error('Vue Error:', err, info);
  // 上报错误信息
}
```

### 2. 性能监控

- 页面加载时间
- API 响应时间
- 用户交互响应时间
- 内存使用情况

### 3. 用户行为监控

- 页面访问统计
- 功能使用统计
- 错误操作统计
- 用户反馈收集

## 🔄 部署架构

### 1. 开发环境

```
本地开发 → 热重载 → 代理转发 → 后端服务
    ↓         ↓         ↓         ↓
  npm run dev  实时更新   本地代理   测试环境
```

### 2. 生产环境

```
代码构建 → 资源优化 → 静态部署 → CDN 加速
    ↓         ↓         ↓         ↓
  npm run build  压缩优化   服务器部署   全球加速
```

### 3. 环境配置

```javascript
// 环境变量配置
NODE_ENV=development  // 开发环境
NODE_ENV=production   // 生产环境

// API 地址配置
BASE_API=http://localhost:8008  // 开发环境
BASE_API=https://api.example.com  // 生产环境
```

---

这个架构图展示了项目的整体结构和技术实现，帮助开发者快速理解项目的组织方式和各个模块之间的关系。 