From 47d263d9141407fece61a95bbec0c758ef7ae690 Mon Sep 17 00:00:00 2001
From: wangxiaoxian <1094175543@qq.com>
Date: Wed, 22 Apr 2026 14:51:18 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E6=8E=A5=E5=8F=A3=E8=BF=94?=
=?UTF-8?q?=E5=9B=9E=E6=A0=BC=E5=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/request.js | 20 +++++++++++++------
src/layouts/MainLayout.vue | 8 ++++----
src/views/apartment/List.vue | 9 ++++++---
src/views/bill/Add.vue | 4 ++--
src/views/bill/List.vue | 6 ++++--
src/views/bill/MeterReadingList.vue | 8 ++++----
src/views/rental/Detail.vue | 30 ++++++++++++++++------------
src/views/rental/List.vue | 13 ++++++------
src/views/rental/RentalArchive.vue | 6 ++++--
src/views/rental/WaterArchive.vue | 6 ++++--
src/views/renter/List.vue | 11 ++++------
src/views/room/List.vue | 31 ++++++++---------------------
src/views/room/Status.vue | 2 +-
13 files changed, 79 insertions(+), 75 deletions(-)
diff --git a/src/api/request.js b/src/api/request.js
index 65394c4..b117ce5 100644
--- a/src/api/request.js
+++ b/src/api/request.js
@@ -51,12 +51,14 @@ export async function request(url, options = {}) {
headers
});
+ // 解析响应数据
+ const data = await response.json();
+
// 处理 401 未授权
if (response.status === 401) {
- const errorData = await response.json();
// 检查是否是认证失败(如用户名密码错误)
- if (errorData.code === 401 && errorData.message) {
- throw new Error(errorData.message);
+ if (data.code === 401 && data.message) {
+ throw new Error(data.message);
}
// 其他 401 情况(如 token 过期)
clearAuth()
@@ -67,11 +69,17 @@ export async function request(url, options = {}) {
throw new Error('登录已过期,请重新登录')
}
- if (!response.ok) {
- throw new Error(`HTTP error! status: ${response.status}`);
+ // 根据后端统一响应格式处理
+ // 成功响应: { code: 200, message: 'xxx', data: xxx }
+ if (data.code === 200) {
+ return data;
}
+
+ // 业务错误(如参数错误、权限不足等)
+ // 后端格式: { code: 400/403/404/500, message: 'xxx', data: null }
+ const errorMessage = data.message || '操作失败';
+ throw new Error(errorMessage);
- return await response.json();
} catch (error) {
console.error('API request error:', error);
throw error;
diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue
index 903e4a8..7fe3240 100644
--- a/src/layouts/MainLayout.vue
+++ b/src/layouts/MainLayout.vue
@@ -251,10 +251,10 @@ export default {
handleUserCommand(command) {
switch (command) {
case 'profile':
- this.$router.push('/user/profile')
+ this.$router.push('/profile')
break
case 'password':
- this.$router.push('/user/profile?tab=password')
+ this.$router.push('/profile?tab=password')
break
case 'logout':
this.logout()
@@ -303,10 +303,10 @@ export default {
handleNotificationCommand(command) {
switch (command) {
case 'expired':
- this.$router.push('/rental?subStatus=expired')
+ this.$router.push('/room/status?searchRentalStatus=expired')
break
case 'soonExpire':
- this.$router.push('/rental?subStatus=soon_expire')
+ this.$router.push('/room/status?searchRentalStatus=soon_expire')
break
}
},
diff --git a/src/views/apartment/List.vue b/src/views/apartment/List.vue
index afc0936..7e376c8 100644
--- a/src/views/apartment/List.vue
+++ b/src/views/apartment/List.vue
@@ -134,10 +134,13 @@ export default {
// 加载公寓数据
const apartmentsResponse = await apartmentApi.getAll(params)
- this.apartments = apartmentsResponse.data
- this.total = apartmentsResponse.total
+
+ // 适配分页数据格式: { data: { list: [], total: n, page: n, pageSize: n } }
+ this.apartments = apartmentsResponse.data.list
+ this.total = apartmentsResponse.data.total
} catch (error) {
- this.$message.error('加载数据失败')
+ console.error('加载数据失败:', error)
+ this.$message.error('加载数据失败: ' + (error.message || '未知错误'))
} finally {
this.isLoading = false
}
diff --git a/src/views/bill/Add.vue b/src/views/bill/Add.vue
index d0ff2d0..e4afa46 100644
--- a/src/views/bill/Add.vue
+++ b/src/views/bill/Add.vue
@@ -65,7 +65,7 @@
@@ -176,7 +176,7 @@ export default {
this.roomRentals = []
if (roomId) {
try {
- const response = await rentalApi.getAll({ roomId, status: 'active' })
+ const response = await rentalApi.list({ roomId, status: 'active' })
this.roomRentals = response.data || []
} catch (error) {
console.error('加载租约列表失败:', error)
diff --git a/src/views/bill/List.vue b/src/views/bill/List.vue
index 35af8cc..391d2d8 100644
--- a/src/views/bill/List.vue
+++ b/src/views/bill/List.vue
@@ -248,8 +248,10 @@ export default {
}
const response = await billApi.getAll(params)
- this.bills = response.data || []
- this.total = response.total || 0
+
+ // 适配分页数据格式: { data: { list: [], total: n, page: n, pageSize: n } }
+ this.bills = response.data.list
+ this.total = response.data.total
} catch (error) {
this.$message.error('加载数据失败')
console.error(error)
diff --git a/src/views/bill/MeterReadingList.vue b/src/views/bill/MeterReadingList.vue
index 40e355a..657990c 100644
--- a/src/views/bill/MeterReadingList.vue
+++ b/src/views/bill/MeterReadingList.vue
@@ -264,10 +264,10 @@ export default {
}
const response = await meterReadingApi.getAll(params)
- if (response.data) {
- this.meterReadings = response.data
- this.total = response.total
- }
+
+ // 适配分页数据格式: { data: { list: [], total: n, page: n, pageSize: n } }
+ this.meterReadings = response.data.list
+ this.total = response.data.total
} catch (error) {
this.$message.error('加载数据失败')
} finally {
diff --git a/src/views/rental/Detail.vue b/src/views/rental/Detail.vue
index b97cef8..968608b 100644
--- a/src/views/rental/Detail.vue
+++ b/src/views/rental/Detail.vue
@@ -279,7 +279,7 @@
详情
-
+
编辑
@@ -305,7 +305,7 @@
@@ -348,10 +348,10 @@
-
+
编辑
-
+
删除
@@ -412,10 +412,10 @@
-
+
收款
-
+
编辑
@@ -1107,7 +1107,8 @@ export default {
const roomId = this.$route.params.id
// 获取账单统计
const billRes = await billApi.getAll({ roomId, page: 1, pageSize: 9999 })
- const bills = billRes.data || []
+ const pageData = billRes.data || {}
+ const bills = pageData.list || []
this.stats.totalRent = bills
.filter(b => b.category === 'rent')
@@ -1136,8 +1137,9 @@ export default {
page: this.currentPage,
pageSize: this.pageSize
})
- this.rentalHistory = res.data || []
- this.total = res.total || 0
+ const pageData = res.data || {}
+ this.rentalHistory = pageData.list || []
+ this.total = pageData.total || 0
// 找到当前在租的记录
this.currentRental = this.rentalHistory.find(r => r.status === 'active')
@@ -1159,8 +1161,9 @@ export default {
page: this.meterCurrentPage,
pageSize: this.meterPageSize
})
- this.meterReadings = res.data || []
- this.meterTotal = res.total || 0
+ const pageData = res.data || {}
+ this.meterReadings = pageData.list || []
+ this.meterTotal = pageData.total || 0
} catch (error) {
this.$message.error('加载抄表记录失败')
console.error(error)
@@ -1179,8 +1182,9 @@ export default {
page: this.billCurrentPage,
pageSize: this.billPageSize
})
- this.bills = res.data || []
- this.billTotal = res.total || 0
+ const pageData = res.data || {}
+ this.bills = pageData.list || []
+ this.billTotal = pageData.total || 0
// 筛选未结清账单
this.unpaidBills = this.bills.filter(b => b.status !== 'paid')
diff --git a/src/views/rental/List.vue b/src/views/rental/List.vue
index af8f9fb..71a28af 100644
--- a/src/views/rental/List.vue
+++ b/src/views/rental/List.vue
@@ -513,16 +513,16 @@ export default {
async loadApartments() {
try {
- const res = await apartmentApi.getAll()
+ const res = await apartmentApi.list()
this.apartments = res.data || res || []
} catch (error) {
console.error('加载公寓列表失败:', error)
}
},
-
+
async loadRooms() {
try {
- const res = await roomApi.getAll({ pageSize: 9999 })
+ const res = await roomApi.list()
this.rooms = res.data || res || []
} catch (error) {
console.error('加载房间列表失败:', error)
@@ -543,9 +543,10 @@ export default {
}
const res = await rentalApi.getAll(params)
- // 后端直接返回 { data, total, page, pageSize }
- this.rentalList = res.data || []
- this.total = res.total || 0
+ // 后端返回 { data: { list: [], total: n, page: n, pageSize: n } }
+ const pageData = res.data || {}
+ this.rentalList = pageData.list || []
+ this.total = pageData.total || 0
} catch (error) {
this.$message.error('加载数据失败')
console.error(error)
diff --git a/src/views/rental/RentalArchive.vue b/src/views/rental/RentalArchive.vue
index fd6020c..0bf9784 100644
--- a/src/views/rental/RentalArchive.vue
+++ b/src/views/rental/RentalArchive.vue
@@ -309,8 +309,10 @@ export default {
}
const response = await rentalApi.getAll(params)
- this.rentalList = response.data || response
- this.total = response.total || 0
+
+ // 适配分页数据格式: { data: { list: [], total: n, page: n, pageSize: n } }
+ this.rentalList = response.data.list
+ this.total = response.data.total
} catch (error) {
this.$message.error('加载数据失败')
} finally {
diff --git a/src/views/rental/WaterArchive.vue b/src/views/rental/WaterArchive.vue
index 0da6895..d9ed24c 100644
--- a/src/views/rental/WaterArchive.vue
+++ b/src/views/rental/WaterArchive.vue
@@ -318,8 +318,10 @@ export default {
}
const response = await waterBillApi.getAll(params)
- this.waterBillList = response.data || response
- this.total = response.total || 0
+
+ // 适配分页数据格式: { data: { list: [], total: n, page: n, pageSize: n } }
+ this.waterBillList = response.data.list
+ this.total = response.data.total
} catch (error) {
this.$message.error('加载数据失败')
} finally {
diff --git a/src/views/renter/List.vue b/src/views/renter/List.vue
index 972d70a..cca9f21 100644
--- a/src/views/renter/List.vue
+++ b/src/views/renter/List.vue
@@ -157,13 +157,10 @@ export default {
}
const response = await renterApi.getAll(params)
- if (response.data && response.data.list) {
- this.renters = response.data.list
- this.total = response.data.pagination.total
- } else {
- this.renters = response.data || []
- this.total = response.total || 0
- }
+
+ // 适配分页数据格式: { data: { list: [], total: n, page: n, pageSize: n } }
+ this.renters = response.data.list
+ this.total = response.data.total
} catch (error) {
this.$message.error('加载数据失败')
} finally {
diff --git a/src/views/room/List.vue b/src/views/room/List.vue
index 264f776..37e043f 100644
--- a/src/views/room/List.vue
+++ b/src/views/room/List.vue
@@ -48,7 +48,7 @@
style="width: 100%"
v-loading="isLoading"
>
-
+
@@ -82,7 +82,7 @@