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 @@