# RentEase App 功能页面设计规范 ## 一、项目概述 ### 1.1 产品定位 RentEase 是一款面向房东和物业管理人员的智能租赁管理移动应用,支持 App 和微信小程序双端运行。 ### 1.2 技术栈 - **框架**: uni-app (Vue 3) - **UI组件**: uni-ui - **样式**: SCSS + CSS变量 - **状态管理**: 全局存储 + Vuex - **网络请求**: 封装 uni.request ### 1.3 设计原则 - **移动端优先**: 所有设计以手机端体验为核心 - **简洁高效**: 减少操作步骤,提高管理效率 - **视觉一致**: 统一的蓝色主题 (#2563EB) - **反馈及时**: 操作后有明确的视觉和交互反馈 --- ## 二、页面架构设计 ### 2.1 页面清单 | 模块 | 页面路径 | 功能描述 | 优先级 | |------|----------|----------|--------| | **认证** | pages/login/login | 用户登录 | P0 | | **认证** | pages/register/register | 用户注册 | P0 | | **首页** | pages/home/home | 仪表盘、快捷入口 | P0 | | **房源** | pages/properties/properties | 房源列表 | P0 | | **房源** | pages/property-add/property-add | 添加/编辑房源 | P0 | | **房源** | pages/property-detail/property-detail | 房源详情 | P0 | | **房间** | pages/rooms/rooms | 房间列表 | P1 | | **房间** | pages/room-detail/room-detail | 房间详情 | P1 | | **租客** | pages/tenants/tenants | 租客列表 | P1 | | **租客** | pages/tenant-detail/tenant-detail | 租客详情 | P1 | | **租客** | pages/tenant-add/tenant-add | 添加/编辑租客 | P1 | | **租赁** | pages/rentals/rentals | 租赁记录列表 | P0 | | **租赁** | pages/rental-detail/rental-detail | 租赁详情 | P0 | | **租赁** | pages/rental-add/rental-add | 新增租赁 | P0 | | **租赁** | pages/rental-renew/rental-renew | 续租办理 | P1 | | **账单** | pages/bills/bills | 账单列表 | P1 | | **账单** | pages/bill-detail/bill-detail | 账单详情 | P1 | | **抄表** | pages/meter-readings/meter-readings | 抄表记录 | P2 | | **抄表** | pages/meter-reading-add/meter-reading-add | 添加抄表 | P2 | | **统计** | pages/stats/stats | 数据统计 | P1 | | **我的** | pages/profile/profile | 个人中心 | P0 | | **通用** | pages/add-record/add-record | 快捷添加 | P0 | ### 2.2 TabBar 结构 ``` ┌─────────┬─────────┬─────────┬─────────┬─────────┐ │ 首页 │ 房源 │ 添加 │ 统计 │ 我的 │ │ home │property │ + │ stats │ profile │ └─────────┴─────────┴─────────┴─────────┴─────────┘ ``` --- ## 三、API 接口绑定 ### 3.1 现有 API 模块 ```javascript // api/index.js const api = { auth, // 认证相关 apartment, // 公寓/房源管理 room, // 房间管理 tenant, // 租客管理 rental, // 租赁管理 statistics // 统计分析 } ``` ### 3.2 需要新增的 API 模块 ```javascript // api/bill.js - 账单管理 export default { getList(params) {}, // 获取账单列表 getDetail(id) {}, // 获取账单详情 create(data) {}, // 创建账单 update(id, data) {}, // 更新账单 delete(id) {}, // 删除账单 markPaid(id) {}, // 标记已支付 getStatistics(params) {} // 获取账单统计 } // api/meterReading.js - 抄表管理 export default { getList(params) {}, // 获取抄表列表 getDetail(id) {}, // 获取抄表详情 create(data) {}, // 创建抄表记录 update(id, data) {}, // 更新抄表记录 delete(id) {}, // 删除抄表记录 getByRoom(roomId) {}, // 获取房间抄表历史 getLatest(roomId) {} // 获取最新读数 } // api/renter.js - 租客管理(补充) export default { getList(params) {}, getDetail(id) {}, create(data) {}, update(id, data) {}, delete(id) {}, getOptions(params) {} // 获取租客下拉选项 } ``` --- ## 四、核心页面设计 ### 4.1 首页 (pages/home/home) **功能模块:** - 顶部导航栏:位置选择、通知入口 - 欢迎卡片:用户信息、快捷统计(房源数/租客数/待办数) - 快捷功能:房源管理、租客管理、合同管理、账单管理 - 待办事项:合同到期、待收租金、维修申请 - 最近动态:租金收入、新租客入住、合同续签 **API 绑定:** ```javascript // 加载仪表盘数据 this.$api.statistics.getDashboard() // 数据映射 { apartmentCount: data.apartmentCount, // 房源数 tenantCount: data.tenantCount, // 租客数 pendingTaskCount: data.pendingTaskCount // 待办数 } ``` --- ### 4.2 房源列表 (pages/properties/properties) **功能模块:** - 自定义导航栏:标题、筛选、添加按钮 - 搜索栏:按名称/地址搜索 - 统计栏:全部/已出租/空置中 - 筛选标签:全部/已出租/空置中/即将到期 - 房源卡片网格:图片、状态标签、地址、租客、到期日、水电单价、租金 - 加载更多 **API 绑定:** ```javascript // 获取房源列表 apartmentApi.getList({ page: this.page, pageSize: this.pageSize, name: this.searchKeyword }) // 数据映射 { id: item.id, name: item.name, address: item.address, status: item.status || 'vacant', statusText: item.status === 'rented' ? '已出租' : '空置中', waterPrice: item.waterPrice || 5.00, electricityPrice: item.electricityPrice || 1.00, rent: item.rent || 0, tenant: item.tenant, dueDate: item.dueDate, images: item.images } ``` --- ### 4.3 房源详情 (pages/property-detail/property-detail) **功能模块:** - 自定义导航栏:返回、编辑 - 房源图片轮播 - 基本信息:名称、标签、地址 - 费用标准卡片:水费单价、电费单价 - 租金信息卡片:月租金、租客、到期日 - 房源描述 - 操作按钮:编辑、删除 - 房间列表(子模块) **API 绑定:** ```javascript // 获取房源详情 apartmentApi.getDetail(id) // 获取房源下的房间列表 roomApi.getList({ apartmentId: id }) ``` --- ### 4.4 租赁记录列表 (pages/rentals/rentals) ⭐ 新增 **功能模块:** - 自定义导航栏:标题、筛选、搜索 - 筛选栏:公寓选择、状态筛选(在租/已到期/已终止) - 统计卡片:在租数/即将到期/已到期 - 租赁卡片列表: - 公寓名称 + 房间号 - 租客姓名 + 电话 - 租期(开始-结束) - 付租方式标签 - 月租金 - 状态标签 - 即将到期警告(7天内) - 操作按钮:详情、续租、退租 **API 绑定:** ```javascript // 获取租赁列表 rentalApi.getList({ page: this.page, pageSize: this.pageSize, apartmentId: this.filterApartmentId, status: this.filterStatus, renterName: this.searchKeyword }) // 数据映射 { id: item.id, apartmentName: item.Room?.Apartment?.name || '--', roomNumber: item.Room?.roomNumber || '--', renterName: item.Renter?.name || '--', renterPhone: item.Renter?.phone || '--', startDate: item.startDate, endDate: item.endDate, paymentType: item.paymentType, paymentTypeText: this.getPaymentTypeText(item.paymentType), rent: item.rent, deposit: item.deposit || 0, status: item.status, statusText: this.getStatusText(item.status), isExpiringSoon: this.isExpiringSoon(item.endDate) && item.status === 'active' } // 付租方式映射 paymentTypeMap: { monthly: { text: '月租', color: 'info' }, quarterly: { text: '季租', color: 'warning' }, half_year: { text: '半年租', color: '' }, yearly: { text: '年租', color: 'success' } } // 状态映射 statusMap: { active: { text: '在租', color: 'success' }, expired: { text: '已到期', color: 'info' }, terminated: { text: '已终止', color: 'danger' } } ``` --- ### 4.5 租赁详情 (pages/rental-detail/rental-detail) ⭐ 新增 **功能模块:** - 自定义导航栏:返回、编辑 - 租赁状态卡片:状态标签、租期进度条 - 房源信息:公寓、房间号 - 租客信息:姓名、电话、身份证号 - 租赁信息: - 付租方式 - 开始日期 - 结束日期 - 月租金 - 押金 - 水表起始读数 - 电表起始读数 - 操作按钮: - 在租状态:续租、退租 - 其他状态:仅查看 **API 绑定:** ```javascript // 获取租赁详情 rentalApi.getDetail(id) // 续租 rentalApi.create({ roomId: this.rental.roomId, renterId: this.rental.renterId, startDate: renewForm.startDate, endDate: renewForm.endDate, rent: renewForm.rent, deposit: this.rental.deposit, paymentType: this.rental.paymentType, remark: renewForm.remark }) // 然后更新原租约状态 rentalApi.update(this.rental.id, { status: 'expired' }) // 退租 rentalApi.terminate(this.rental.id, { waterMeterEnd: terminateForm.waterMeterEnd, electricityMeterEnd: terminateForm.electricityMeterEnd, refundDeposit: terminateForm.refundDeposit, remark: terminateForm.remark }) ``` --- ### 4.6 新增租赁 (pages/rental-add/rental-add) ⭐ 新增 **功能模块:** - 自定义导航栏:返回、保存 - 分步表单: - 步骤1:选择房源和房间 - 步骤2:选择或添加租客 - 步骤3:填写租赁信息 - 表单字段: - 公寓(下拉选择) - 房间(级联下拉) - 租客(搜索选择或新增) - 付租方式(月租/季租/半年租/年租) - 开始日期 - 结束日期 - 月租金 - 押金 - 水表起始读数 - 电表起始读数 - 备注 **API 绑定:** ```javascript // 获取公寓列表(用于选择) apartmentApi.getList({ pageSize: 999 }) // 获取房间列表(根据公寓筛选) roomApi.getList({ apartmentId: selectedApartmentId, pageSize: 999 }) // 获取租客选项 renterApi.getOptions({ keyword: searchKeyword }) // 创建租赁 rentalApi.create({ roomId: form.roomId, renterId: form.renterId, paymentType: form.paymentType, startDate: form.startDate, endDate: form.endDate, rent: form.rent, deposit: form.deposit, waterMeterStart: form.waterMeterStart, electricityMeterStart: form.electricityMeterStart, remark: form.remark }) // 或创建租赁同时创建租客 rentalApi.createWithRenter({ roomId: form.roomId, paymentType: form.paymentType, startDate: form.startDate, endDate: form.endDate, rent: form.rent, deposit: form.deposit, renter: { name: form.renterName, phone: form.renterPhone, idCard: form.renterIdCard }, remark: form.remark }) ``` --- ### 4.7 租客列表 (pages/tenants/tenants) ⭐ 新增 **功能模块:** - 自定义导航栏:标题、搜索、添加 - 搜索栏:按姓名/电话搜索 - 租客卡片列表: - 头像(默认头像) - 姓名 - 电话 - 身份证号(脱敏显示) - 在租房间数 - 租赁历史数 - 操作:查看详情、编辑、删除 **API 绑定:** ```javascript // 获取租客列表 renterApi.getList({ page: this.page, pageSize: this.pageSize, keyword: this.searchKeyword }) // 数据映射 { id: item.id, name: item.name, phone: item.phone, idCard: this.maskIdCard(item.idCard), avatar: item.avatar || '/static/default-avatar.png', activeRentals: item.activeRentals || 0, totalRentals: item.totalRentals || 0 } ``` --- ### 4.8 账单列表 (pages/bills/bills) ⭐ 新增 **功能模块:** - 自定义导航栏:标题、筛选、统计 - 筛选栏:月份选择、状态筛选(未付/已付/逾期) - 统计卡片:本月应收/已收/未收 - 账单卡片列表: - 账单月份 - 房源/房间信息 - 租客姓名 - 账单金额 - 账单类型(租金/水费/电费/其他) - 状态标签 - 到期日 - 操作:标记已付、查看详情、发送提醒 **API 绑定:** ```javascript // 获取账单列表 billApi.getList({ page: this.page, pageSize: this.pageSize, month: this.selectedMonth, status: this.filterStatus }) // 获取账单统计 billApi.getStatistics({ month: this.selectedMonth }) // 标记已支付 billApi.markPaid(billId) // 数据映射 { id: item.id, month: item.month, apartmentName: item.Room?.Apartment?.name || '--', roomNumber: item.Room?.roomNumber || '--', renterName: item.Renter?.name || '--', amount: item.amount, type: item.type, typeText: this.getBillTypeText(item.type), status: item.status, statusText: this.getBillStatusText(item.status), dueDate: item.dueDate } ``` --- ### 4.9 抄表记录 (pages/meter-readings/meter-readings) ⭐ 新增 **功能模块:** - 自定义导航栏:标题、添加 - 筛选栏:公寓选择、月份选择 - 抄表卡片列表: - 房源/房间信息 - 抄表日期 - 水表读数(本期/上期/用量) - 电表读数(本期/上期/用量) - 费用计算 - 操作:查看详情、编辑 **API 绑定:** ```javascript // 获取抄表列表 meterReadingApi.getList({ page: this.page, pageSize: this.pageSize, apartmentId: this.filterApartmentId, month: this.selectedMonth }) // 数据映射 { id: item.id, apartmentName: item.Room?.Apartment?.name || '--', roomNumber: item.Room?.roomNumber || '--', readingDate: item.readingDate, waterCurrent: item.waterCurrent, waterPrevious: item.waterPrevious, waterUsage: item.waterCurrent - item.waterPrevious, waterCost: (item.waterCurrent - item.waterPrevious) * item.waterPrice, electricityCurrent: item.electricityCurrent, electricityPrevious: item.electricityPrevious, electricityUsage: item.electricityCurrent - item.electricityPrevious, electricityCost: (item.electricityCurrent - item.electricityPrevious) * item.electricityPrice } ``` --- ### 4.10 统计页面 (pages/stats/stats) **功能模块:** - 自定义导航栏:标题 - 时间筛选:本月/本季度/本年 - 收入统计卡片: - 总租金收入 - 水电费收入 - 其他收入 - 收入趋势图 - 房源统计: - 房源总数 - 出租率 - 空置房源数 - 租客统计: - 在租租客数 - 即将到期数 - 新入住数 - 图表展示: - 收入趋势折线图 - 房源状态饼图 - 收支对比柱状图 **API 绑定:** ```javascript // 获取仪表盘统计 statisticsApi.getDashboardStats() // 获取租金统计 statisticsApi.getRentStatistics() // 获取房间状态统计 statisticsApi.getRoomStatus() // 获取公寓房间状态 statisticsApi.getApartmentRoomStatusStats() // 获取即将到期房间 statisticsApi.getSoonExpireRoomsByApartment() ``` --- ### 4.11 快捷添加 (pages/add-record/add-record) **功能模块:** - 自定义导航栏:标题 - 快捷入口网格: - 添加房源 - 添加房间 - 添加租客 - 办理入住(新增租赁) - 录入抄表 - 生成账单 - 最近操作记录 **API 绑定:** ```javascript // 页面跳转处理 navigateTo(page) { const routes = { property: '/pages/property-add/property-add', room: '/pages/room-add/room-add', tenant: '/pages/tenant-add/tenant-add', rental: '/pages/rental-add/rental-add', meter: '/pages/meter-reading-add/meter-reading-add', bill: '/pages/bill-generate/bill-generate' } uni.navigateTo({ url: routes[page] }) } ``` --- ### 4.12 个人中心 (pages/profile/profile) **功能模块:** - 用户信息卡片:头像、姓名、手机号 - 功能菜单列表: - 我的房源 - 我的租客 - 账单管理 - 抄表记录 - 设置 - 关于我们 - 帮助与反馈 - 退出登录 **API 绑定:** ```javascript // 获取用户信息 authApi.getUserInfo() // 退出登录 authApi.logout() ``` --- ## 五、组件设计规范 ### 5.1 通用组件 #### EmptyState 空状态组件 ```vue ``` #### LoadingState 加载状态组件 ```vue ``` #### StatusTag 状态标签组件 ```vue ``` ### 5.2 业务组件 #### PropertyCard 房源卡片 ```vue ``` #### RentalCard 租赁卡片 ```vue ``` --- ## 六、样式规范 ### 6.1 颜色系统 ```css :root { /* 主色调 */ --primary: #2563EB; --primary-light: #3B82F6; --primary-dark: #1D4ED8; --primary-gradient: linear-gradient(135deg, #2563EB 0%, #1D4ED8 100%); /* 功能色 */ --success: #10B981; --warning: #F59E0B; --error: #EF4444; --info: #64748B; /* 中性色 */ --background: #F8FAFC; --surface: #FFFFFF; --text-primary: #1E293B; --text-secondary: #64748B; --text-muted: #94A3B8; --border: #E2E8F0; /* 阴影 */ --shadow: 0 4rpx 20rpx rgba(37, 99, 235, 0.1); --shadow-lg: 0 8rpx 40rpx rgba(37, 99, 235, 0.15); } ``` ### 6.2 间距系统 ```css /* 基础单位 4rpx */ --space-1: 4rpx; --space-2: 8rpx; --space-3: 12rpx; --space-4: 16rpx; --space-5: 20rpx; --space-6: 24rpx; --space-8: 32rpx; --space-10: 40rpx; --space-12: 48rpx; ``` ### 6.3 圆角系统 ```css --radius-sm: 12rpx; --radius-md: 20rpx; --radius-lg: 32rpx; --radius-full: 9999rpx; ``` ### 6.4 字体系统 ```css /* 字号 */ --text-xs: 22rpx; --text-sm: 24rpx; --text-base: 28rpx; --text-lg: 32rpx; --text-xl: 36rpx; --text-2xl: 40rpx; --text-3xl: 48rpx; /* 字重 */ --font-normal: 400; --font-medium: 500; --font-semibold: 600; --font-bold: 700; ``` --- ## 七、交互规范 ### 7.1 页面转场 ```css /* 页面进入动画 */ .page-enter { animation: slideIn 0.3s ease-out; } @keyframes slideIn { from { opacity: 0; transform: translateX(30rpx); } to { opacity: 1; transform: translateX(0); } } /* 列表项进入动画 */ .list-item-enter { animation: fadeInUp 0.4s ease-out; animation-fill-mode: both; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(20rpx); } to { opacity: 1; transform: translateY(0); } } ``` ### 7.2 按钮状态 ```css /* 默认状态 */ .btn { transition: all 0.2s ease; } /* 按下状态 */ .btn:active { transform: scale(0.98); opacity: 0.9; } /* 禁用状态 */ .btn:disabled { opacity: 0.5; cursor: not-allowed; } /* 加载状态 */ .btn-loading { position: relative; color: transparent; } .btn-loading::after { content: ''; position: absolute; width: 32rpx; height: 32rpx; border: 2rpx solid transparent; border-top-color: currentColor; border-radius: 50%; animation: spin 0.8s linear infinite; } ``` ### 7.3 列表加载 ```javascript // 加载更多逻辑 loadMore() { if (this.loadStatus === 'noMore') return this.loadStatus = 'loading' this.page++ this.loadData().then(() => { this.loadStatus = this.hasMore ? 'more' : 'noMore' }) } ``` --- ## 八、数据流设计 ### 8.1 页面数据流 ``` 用户操作 → 调用API → 数据处理 → 更新视图 → 本地缓存(可选) ``` ### 8.2 状态管理 ```javascript // store/user.js - 用户状态 export const userStore = { state: { token: uni.getStorageSync('token'), userInfo: uni.getStorageSync('userInfo') }, mutations: { setToken(state, token) { state.token = token uni.setStorageSync('token', token) }, setUserInfo(state, userInfo) { state.userInfo = userInfo uni.setStorageSync('userInfo', userInfo) } } } // store/cache.js - 数据缓存 export const cacheStore = { state: { apartments: [], lastUpdate: null }, mutations: { setApartments(state, list) { state.apartments = list state.lastUpdate = Date.now() } } } ``` --- ## 九、性能优化 ### 9.1 列表优化 ```javascript // 虚拟列表(长列表) // 分页加载 pagination: { page: 1, pageSize: 20, hasMore: true } ``` ### 9.2 图片优化 ```vue ``` ### 9.3 请求优化 ```javascript // 防抖搜索 import { debounce } from '@/utils/index.js' onSearch: debounce(function(keyword) { this.searchKeyword = keyword this.page = 1 this.loadData() }, 300) // 请求缓存 const cacheKey = `api_${url}_${JSON.stringify(params)}` const cached = uni.getStorageSync(cacheKey) if (cached && Date.now() - cached.time < 5 * 60 * 1000) { return Promise.resolve(cached.data) } ``` --- ## 十、开发规范 ### 10.1 文件命名 - 页面文件: `pages/page-name/page-name.vue` - 组件文件: `components/component-name/component-name.vue` - API文件: `api/module-name.js` - 工具文件: `utils/util-name.js` ### 10.2 代码规范 ```javascript // 组件命名: 大驼峰 export default { name: 'RentalCard' } // 方法命名: 小驼峰 methods: { handleSearch() {}, loadData() {}, onRefresh() {} } // 数据命名: 语义化 data() { return { rentalList: [], // 列表数据 isLoading: false, // 加载状态 hasMore: true // 是否有更多 } } ``` ### 10.3 注释规范 ```javascript /** * 获取租赁列表 * @param {Object} params - 查询参数 * @param {number} params.page - 页码 * @param {number} params.pageSize - 每页数量 * @returns {Promise} 返回租赁列表数据 */ async getRentalList(params) { // 实现代码 } ``` --- ## 十一、页面路由配置 ### 11.1 pages.json 完整配置 ```json { "pages": [ { "path": "pages/login/login", "style": { "navigationStyle": "custom" } }, { "path": "pages/register/register", "style": { "navigationStyle": "custom" } }, { "path": "pages/home/home", "style": { "navigationStyle": "custom" } }, { "path": "pages/properties/properties", "style": { "navigationStyle": "custom" } }, { "path": "pages/property-add/property-add", "style": { "navigationStyle": "custom" } }, { "path": "pages/property-detail/property-detail", "style": { "navigationStyle": "custom" } }, { "path": "pages/rooms/rooms", "style": { "navigationStyle": "custom" } }, { "path": "pages/room-detail/room-detail", "style": { "navigationStyle": "custom" } }, { "path": "pages/tenants/tenants", "style": { "navigationStyle": "custom" } }, { "path": "pages/tenant-detail/tenant-detail", "style": { "navigationStyle": "custom" } }, { "path": "pages/tenant-add/tenant-add", "style": { "navigationStyle": "custom" } }, { "path": "pages/rentals/rentals", "style": { "navigationStyle": "custom" } }, { "path": "pages/rental-detail/rental-detail", "style": { "navigationStyle": "custom" } }, { "path": "pages/rental-add/rental-add", "style": { "navigationStyle": "custom" } }, { "path": "pages/rental-renew/rental-renew", "style": { "navigationStyle": "custom" } }, { "path": "pages/bills/bills", "style": { "navigationStyle": "custom" } }, { "path": "pages/bill-detail/bill-detail", "style": { "navigationStyle": "custom" } }, { "path": "pages/meter-readings/meter-readings", "style": { "navigationStyle": "custom" } }, { "path": "pages/meter-reading-add/meter-reading-add", "style": { "navigationStyle": "custom" } }, { "path": "pages/stats/stats", "style": { "navigationStyle": "custom" } }, { "path": "pages/profile/profile", "style": { "navigationStyle": "custom" } }, { "path": "pages/add-record/add-record", "style": { "navigationStyle": "custom" } } ], "tabBar": { "color": "#94A3B8", "selectedColor": "#2563EB", "backgroundColor": "#FFFFFF", "borderStyle": "white", "list": [ { "pagePath": "pages/home/home", "text": "首页", "iconPath": "static/tabbar/home.png", "selectedIconPath": "static/tabbar/home-active.png" }, { "pagePath": "pages/properties/properties", "text": "房源", "iconPath": "static/tabbar/property.png", "selectedIconPath": "static/tabbar/property-active.png" }, { "pagePath": "pages/add-record/add-record", "text": "添加", "iconPath": "static/tabbar/add.png", "selectedIconPath": "static/tabbar/add-active.png" }, { "pagePath": "pages/stats/stats", "text": "统计", "iconPath": "static/tabbar/stats.png", "selectedIconPath": "static/tabbar/stats-active.png" }, { "pagePath": "pages/profile/profile", "text": "我的", "iconPath": "static/tabbar/profile.png", "selectedIconPath": "static/tabbar/profile-active.png" } ] } } ``` --- ## 十二、实现优先级 ### P0 - 核心功能(必须实现) 1. ✅ 登录/注册 2. ✅ 首页仪表盘 3. ✅ 房源列表/添加/详情 4. ⭐ 租赁记录列表/详情/添加 5. ✅ 快捷添加页面 6. ✅ 个人中心 ### P1 - 重要功能(建议实现) 1. ⭐ 租客管理(列表/详情/添加) 2. ⭐ 账单管理(列表/详情) 3. ⭐ 统计报表 4. 房间管理(列表/详情) ### P2 - 扩展功能(可选实现) 1. 抄表记录 2. 续租/退租流程 3. 消息通知 4. 数据导出 --- ## 十三、总结 本设计规范涵盖了 RentEase App 的完整功能架构,包括: 1. **22个功能页面** 的详细设计 2. **6个API模块** 的接口绑定 3. **统一的视觉规范**(颜色、间距、字体、圆角) 4. **完整的交互规范**(动画、状态、手势) 5. **性能优化方案**(列表、图片、请求) 所有页面采用 **自定义导航栏** 设计,保持视觉一致性。API 接口已根据现有后端设计进行绑定,可直接使用。 标记 ⭐ 的页面为需要新增的页面,其他页面已有基础实现需要完善。