From 058aa4333dafe21310029f1a5456ded95318f62c Mon Sep 17 00:00:00 2001 From: wangxiaoxian <1094175543@qq.com> Date: Thu, 5 Mar 2026 23:34:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 12 --- src/router/index.js | 32 ------ src/views/Dashboard.vue | 81 +++++++++----- src/views/apartment/Add.vue | 7 +- src/views/apartment/Edit.vue | 7 +- src/views/contract/Add.vue | 139 ------------------------ src/views/contract/Edit.vue | 152 -------------------------- src/views/contract/List.vue | 171 ------------------------------ src/views/house/Add.vue | 125 ---------------------- src/views/house/Edit.vue | 138 ------------------------ src/views/house/List.vue | 200 ----------------------------------- src/views/region/Add.vue | 7 +- src/views/region/Edit.vue | 7 +- src/views/rental/Add.vue | 28 ++--- src/views/rental/Detail.vue | 40 ++++--- src/views/rental/Edit.vue | 8 -- src/views/rental/List.vue | 2 +- src/views/tenant/Add.vue | 93 ---------------- src/views/tenant/Edit.vue | 108 ------------------- src/views/tenant/List.vue | 151 -------------------------- 20 files changed, 99 insertions(+), 1409 deletions(-) delete mode 100644 src/views/contract/Add.vue delete mode 100644 src/views/contract/Edit.vue delete mode 100644 src/views/contract/List.vue delete mode 100644 src/views/house/Add.vue delete mode 100644 src/views/house/Edit.vue delete mode 100644 src/views/house/List.vue delete mode 100644 src/views/tenant/Add.vue delete mode 100644 src/views/tenant/Edit.vue delete mode 100644 src/views/tenant/List.vue diff --git a/src/App.vue b/src/App.vue index d14ca26..a37892f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -35,14 +35,6 @@ 租房管理 - - - 租客档案 - - - - 合同档案 - 租金统计 @@ -83,10 +75,6 @@ export default { 'room-add': '/room/add', 'rental-list': '/rental/list', 'rental-add': '/rental/add', - 'tenant-list': '/tenant/list', - 'tenant-add': '/tenant/add', - 'contract-list': '/contract/list', - 'contract-add': '/contract/add', 'rent-statistics': '/statistics/rent', 'room-statistics': '/statistics/room' } diff --git a/src/router/index.js b/src/router/index.js index 0131745..c73018a 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -78,38 +78,6 @@ const routes = [ name: 'RentalDetail', component: () => import('../views/rental/Detail.vue') }, - // 租客管理 - { - path: '/tenant/list', - name: 'TenantList', - component: () => import('../views/tenant/List.vue') - }, - { - path: '/tenant/add', - name: 'TenantAdd', - component: () => import('../views/tenant/Add.vue') - }, - { - path: '/tenant/edit/:id', - name: 'TenantEdit', - component: () => import('../views/tenant/Edit.vue') - }, - // 合同管理 - { - path: '/contract/list', - name: 'ContractList', - component: () => import('../views/contract/List.vue') - }, - { - path: '/contract/add', - name: 'ContractAdd', - component: () => import('../views/contract/Add.vue') - }, - { - path: '/contract/edit/:id', - name: 'ContractEdit', - component: () => import('../views/contract/Edit.vue') - }, // 统计分析 { path: '/statistics/rent', diff --git a/src/views/Dashboard.vue b/src/views/Dashboard.vue index 2cec65c..f4a7604 100644 --- a/src/views/Dashboard.vue +++ b/src/views/Dashboard.vue @@ -2,7 +2,7 @@

欢迎使用租房管理系统

-

本系统提供区域管理、房源管理、租客管理、合同管理和统计分析等功能

+

本系统提供区域管理、房源管理、租房管理和统计分析等功能

@@ -39,28 +39,7 @@
- - -
- -
-
{{ tenantCount }}
-
租客数量
-
-
-
-
- - -
- -
-
{{ contractCount }}
-
合同数量
-
-
-
-
+
@@ -83,6 +62,28 @@
+ + +
+ +
+
{{ soonExpireRoomCount }}
+
即将到期
+
+
+
+
+ + +
+ +
+
{{ expiredRoomCount }}
+
已到期
+
+
+
+
@@ -113,7 +114,7 @@ 区域公寓房间状态分布
- + @@ -138,10 +139,10 @@ export default { regionCount: 0, apartmentCount: 0, roomCount: 0, - tenantCount: 0, - contractCount: 0, emptyRoomCount: 0, rentedRoomCount: 0, + soonExpireRoomCount: 0, + expiredRoomCount: 0, collectedRentAmount: 0, collectedWaterAmount: 0, regionApartmentHouseStats: [] @@ -166,16 +167,40 @@ export default { this.regionCount = dashboardStats.regionCount this.apartmentCount = dashboardStats.apartmentCount this.roomCount = dashboardStats.roomCount - this.tenantCount = dashboardStats.tenantCount - this.contractCount = dashboardStats.contractCount this.emptyRoomCount = dashboardStats.emptyRoomCount this.rentedRoomCount = dashboardStats.rentedRoomCount + this.soonExpireRoomCount = dashboardStats.soonExpireRoomCount + this.expiredRoomCount = dashboardStats.expiredRoomCount this.collectedRentAmount = dashboardStats.collectedRentAmount this.collectedWaterAmount = dashboardStats.collectedWaterAmount this.regionApartmentHouseStats = regionApartmentHouseStatsResponse } catch (error) { this.$message.error('加载数据失败') } + }, + getSummary(param) { + const { columns, data } = param; + const sums = []; + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = '合计'; + return; + } + if (index === 1) { + sums[index] = ''; + return; + } + const values = data.map(item => Number(item[column.property]) || 0); + if (values.every(value => !isNaN(value))) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr) || 0; + return prev + value; + }, 0); + } else { + sums[index] = ''; + } + }); + return sums; } } } diff --git a/src/views/apartment/Add.vue b/src/views/apartment/Add.vue index 1bdbdc8..ba91b8f 100644 --- a/src/views/apartment/Add.vue +++ b/src/views/apartment/Add.vue @@ -46,12 +46,7 @@ export default { { required: true, message: '请选择区域', trigger: 'blur' } ], name: [ - { required: true, message: '请输入公寓名称', trigger: 'blur' }, - { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' } - ], - address: [ - { required: true, message: '请输入公寓地址', trigger: 'blur' }, - { min: 5, max: 100, message: '长度在 5 到 100 个字符', trigger: 'blur' } + { required: true, message: '请输入公寓名称', trigger: 'blur' } ] } } diff --git a/src/views/apartment/Edit.vue b/src/views/apartment/Edit.vue index 44c4f91..8c2d6ed 100644 --- a/src/views/apartment/Edit.vue +++ b/src/views/apartment/Edit.vue @@ -47,12 +47,7 @@ export default { { required: true, message: '请选择区域', trigger: 'blur' } ], name: [ - { required: true, message: '请输入公寓名称', trigger: 'blur' }, - { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' } - ], - address: [ - { required: true, message: '请输入公寓地址', trigger: 'blur' }, - { min: 5, max: 100, message: '长度在 5 到 100 个字符', trigger: 'blur' } + { required: true, message: '请输入公寓名称', trigger: 'blur' } ] } } diff --git a/src/views/contract/Add.vue b/src/views/contract/Add.vue deleted file mode 100644 index eb45275..0000000 --- a/src/views/contract/Add.vue +++ /dev/null @@ -1,139 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/contract/Edit.vue b/src/views/contract/Edit.vue deleted file mode 100644 index 21d3b08..0000000 --- a/src/views/contract/Edit.vue +++ /dev/null @@ -1,152 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/contract/List.vue b/src/views/contract/List.vue deleted file mode 100644 index fb84969..0000000 --- a/src/views/contract/List.vue +++ /dev/null @@ -1,171 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/house/Add.vue b/src/views/house/Add.vue deleted file mode 100644 index 49aa562..0000000 --- a/src/views/house/Add.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/house/Edit.vue b/src/views/house/Edit.vue deleted file mode 100644 index 8ed8c2d..0000000 --- a/src/views/house/Edit.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/house/List.vue b/src/views/house/List.vue deleted file mode 100644 index ac72bd7..0000000 --- a/src/views/house/List.vue +++ /dev/null @@ -1,200 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/region/Add.vue b/src/views/region/Add.vue index 2000819..9137809 100644 --- a/src/views/region/Add.vue +++ b/src/views/region/Add.vue @@ -36,12 +36,7 @@ export default { }, rules: { name: [ - { required: true, message: '请输入区域名称', trigger: 'blur' }, - { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' } - ], - description: [ - { required: true, message: '请输入区域描述', trigger: 'blur' }, - { min: 5, max: 100, message: '长度在 5 到 100 个字符', trigger: 'blur' } + { required: true, message: '请输入区域名称', trigger: 'blur' } ] } } diff --git a/src/views/region/Edit.vue b/src/views/region/Edit.vue index 5dcde96..e4be0c1 100644 --- a/src/views/region/Edit.vue +++ b/src/views/region/Edit.vue @@ -37,12 +37,7 @@ export default { }, rules: { name: [ - { required: true, message: '请输入区域名称', trigger: 'blur' }, - { min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' } - ], - description: [ - { required: true, message: '请输入区域描述', trigger: 'blur' }, - { min: 5, max: 100, message: '长度在 5 到 100 个字符', trigger: 'blur' } + { required: true, message: '请输入区域名称', trigger: 'blur' } ] } } diff --git a/src/views/rental/Add.vue b/src/views/rental/Add.vue index e62e5ac..76b4fb7 100644 --- a/src/views/rental/Add.vue +++ b/src/views/rental/Add.vue @@ -21,12 +21,6 @@ - - - - - - 合同信息
-

{{ room.Apartment.name }} - {{ room.roomNumber }}

+

{{ room.Apartment ? room.Apartment.name : '' }} - {{ room.roomNumber }}

面积: @@ -161,12 +161,6 @@ - - - - - - @@ -245,8 +239,6 @@ export default { id: '', roomId: '', tenantName: '', - tenantPhone: '', - tenantIdCard: '', startDate: '', endDate: '', rent: '', @@ -338,8 +330,7 @@ export default { const data = response.data || response this.rentalHistory = data.map(rental => { return { - ...rental, - tenantName: rental.Tenant ? rental.Tenant.name : '' + ...rental } }) @@ -431,6 +422,11 @@ export default { }) }, async handleCheckout() { + if (!this.room.id) { + this.$message.error('房间信息加载失败,无法进行退房操作') + return + } + this.$confirm('确定要退房吗?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', @@ -439,7 +435,7 @@ export default { try { // 找到当前房间的租房记录 const roomId = this.$route.params.id - const rental = this.rentals.find(r => r.roomId == roomId && r.status === 'active') + const rental = this.rentalHistory.find(r => r.roomId == roomId && r.status === 'active') if (rental) { // 更新租房记录状态 @@ -454,7 +450,8 @@ export default { this.$message.error('未找到活跃的租房记录') } } catch (error) { - this.$message.error('退房失败') + console.error('退房失败:', error) + this.$message.error('退房失败:' + (error.message || '未知错误')) } }).catch(() => { // 取消退房 @@ -635,11 +632,26 @@ export default { type: 'danger' }).then(async () => { try { + // 先获取租赁记录的详细信息 + const rental = this.rentalHistory.find(r => r.id == id) + + // 删除租赁记录 await rentalApi.delete(id) this.$message.success('租赁记录删除成功') + + // 如果是在租状态,更新房间状态为空房 + if (rental && rental.status === 'active' && rental.roomId) { + await roomApi.update(rental.roomId, { + status: 'empty', + subStatus: 'normal' + }) + this.$message.success('房间状态已更新为空房') + } + this.loadData() } catch (error) { - this.$message.error('删除失败') + console.error('删除失败:', error) + this.$message.error('删除失败:' + (error.message || '未知错误')) } }).catch(() => { // 取消删除 diff --git a/src/views/rental/Edit.vue b/src/views/rental/Edit.vue index 8dc3c69..51e78c8 100644 --- a/src/views/rental/Edit.vue +++ b/src/views/rental/Edit.vue @@ -21,12 +21,6 @@ - - - - - - 合同信息
-

租客: {{ room.Rentals[0].Tenant.name }}

+

租客: {{ room.Rentals[0].tenantName }}

租期: {{ room.Rentals[0].startDate }} 至 {{ room.Rentals[0].endDate }}

diff --git a/src/views/tenant/Add.vue b/src/views/tenant/Add.vue deleted file mode 100644 index a62825b..0000000 --- a/src/views/tenant/Add.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/tenant/Edit.vue b/src/views/tenant/Edit.vue deleted file mode 100644 index fbfca12..0000000 --- a/src/views/tenant/Edit.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/tenant/List.vue b/src/views/tenant/List.vue deleted file mode 100644 index c82b052..0000000 --- a/src/views/tenant/List.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - - - \ No newline at end of file