From d4b3ce78ae2571b41b90e9e224452021e84c69f2 Mon Sep 17 00:00:00 2001 From: hyx <1515023255@qq.com> Date: Sat, 16 Aug 2025 15:34:40 +0800 Subject: [PATCH] =?UTF-8?q?8/16=E4=BA=8C=E6=AC=A1=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library_system/src/store/index.js | 223 +++++++++++------- .../src/views/Admin/AllBorrowRecords.vue | 40 ++-- library_system/src/views/Books/BookList.vue | 3 +- 3 files changed, 156 insertions(+), 110 deletions(-) diff --git a/library_system/src/store/index.js b/library_system/src/store/index.js index 4fb933e..0d23936 100644 --- a/library_system/src/store/index.js +++ b/library_system/src/store/index.js @@ -63,19 +63,19 @@ export default createStore({ try { const userData = savedUser if (userData && userData.username) { - // 验证服务器端会话是否仍然有效 - const serverUserData = await service.get('/user/getinfo', { - silent: true // 避免未登录时显示错误 - }) - - if (serverUserData && serverUserData.username) { - // 服务器会话有效,更新用户信息 - const admin = serverUserData.admin === 1; - commit('setUser', { - username: serverUserData.username, - pic: serverUserData.pic || '', - admin - }) + // 验证服务器端会话是否仍然有效 + const response = await service.get('/user/getinfo', { + silent: true // 避免未登录时显示错误 + }) + + if (response.data && response.data.username) { + // 服务器会话有效,更新用户信息 + const admin = response.data.admin === 1; + commit('setUser', { + username: response.data.username, + pic: response.data.pic || '', + admin + }) // 获取关联信息 try { @@ -99,18 +99,18 @@ export default createStore({ commit('clearUser') } } else { - // 没有保存的用户信息,尝试静默获取 - const userData = await service.get('/user/getinfo', { - silent: true - }) - - if (userData && userData.username) { - const admin = userData.admin === 1; - commit('setUser', { - username: userData.username, - pic: userData.pic || '', - admin - }) + // 没有保存的用户信息,尝试静默获取 + const response = await service.get('/user/getinfo', { + silent: true + }) + + if (response.data && response.data.username) { + const admin = response.data.admin === 1; + commit('setUser', { + username: response.data.username, + pic: response.data.pic || '', + admin + }) // 获取关联信息 try { @@ -161,32 +161,37 @@ export default createStore({ return response.data }, - // 获取当前用户信息 - 符合接口文档 + // 获取当前用户信息 - 符合接口文档1.3 async fetchUser({ commit, dispatch }) { try { - const userData = await service.get('/user/getinfo') - const admin = userData.admin === 1; - // 用户信息接口直接返回用户对象 - commit('setUser', { - username: userData.username || '', - pic: userData.pic || '', - admin - }) + const response = await service.get('/user/getinfo') - // 获取关联信息 - try { - await dispatch('fetchBalanceAndVip') - } catch (balanceError) { - console.error('获取余额信息失败:', balanceError) - } - - try { - await dispatch('fetchBorrowedBooks') - } catch (booksError) { - console.error('获取借阅书籍失败:', booksError) + // 根据接口文档1.3,直接返回用户对象 + if (response.data && response.data.username) { + const admin = response.data.admin === 1; + commit('setUser', { + username: response.data.username || '', + pic: response.data.pic || '', + admin + }) + + // 获取关联信息 + try { + await dispatch('fetchBalanceAndVip') + } catch (balanceError) { + console.error('获取余额信息失败:', balanceError) + } + + try { + await dispatch('fetchBorrowedBooks') + } catch (booksError) { + console.error('获取借阅书籍失败:', booksError) + } + + return response.data + } else { + throw new Error('获取用户信息失败') } - - return userData } catch (error) { commit('clearUser') throw error @@ -251,36 +256,44 @@ export default createStore({ // 根据接口文档1.6,管理员返回数组,普通用户返回单个对象 if (response.data && response.data.code === 200) { return response.data + } else if (response.data && response.data.code === 1) { + throw new Error(response.data.message || '获取借阅记录失败') } else { - throw new Error(response.data?.message || '获取借阅记录失败') + throw new Error('获取借阅记录失败') } }, - // 获取当前用户已借书籍 + // 获取当前用户已借书籍 - 符合接口文档2.5 async fetchBorrowedBooks({ commit }) { - const response = await service.get('/user/borrow/books') - - // 按照接口文档处理响应 - if (response.data.code === 200) { - commit('setBorrowedBooks', response.data.data || []) - } else { - throw new Error(response.data.message || '获取已借书籍失败') - } - - return response.data -}, + const response = await service.get('/user/borrow/books') + + // 按照接口文档2.5,返回书籍数组 + if (response.data && Array.isArray(response.data)) { + commit('setBorrowedBooks', response.data) + return { data: response.data } + } else { + throw new Error('获取已借书籍失败') + } + }, - // 租借书籍 -async borrowBook({ dispatch }, { title }) { - const response = await service.post('/borrow/borrowbook', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 借书后刷新用户信息 - await dispatch('fetchUser') - return response.data -}, + // 租借书籍 - 符合接口文档3.1 + async borrowBook({ dispatch }, { title }) { + const response = await service.post('/borrow/borrowbook', + `title=${encodeURIComponent(title)}`, + { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } + ) + + // 根据接口文档3.1,检查响应 + if (response.data && response.data.code === 200) { + // 借书后刷新用户信息 + await dispatch('fetchUser') + return response.data + } else if (response.data && response.data.code === 1) { + throw new Error(response.data.message || '借书失败') + } else { + throw new Error('借书失败') + } + }, // 归还书籍 - 符合接口文档3.2 async returnBook({ dispatch }, { title }) { @@ -290,10 +303,16 @@ async returnBook({ dispatch }, { title }) { { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } ) - // 还书成功后刷新借阅书籍列表 - await dispatch('fetchBorrowedBooks') - - return response.data + // 根据接口文档3.2,检查响应 + if (response.data && response.data.code === 200) { + // 还书成功后刷新借阅书籍列表 + await dispatch('fetchBorrowedBooks') + return response.data + } else if (response.data && response.data.code === 1) { + throw new Error(response.data.message || '还书失败') + } else { + throw new Error('还书失败') + } } catch (error) { console.error('还书失败:', error) throw error @@ -316,12 +335,13 @@ async returnBook({ dispatch }, { title }) { let list = [] let total = 0 - if (Array.isArray(response.data)) { + // 检查响应格式 + if (response.data && Array.isArray(response.data)) { + list = response.data + total = response.data.length + } else if (Array.isArray(response.data)) { list = response.data total = response.data.length - } else if (Array.isArray(response)) { - list = response - total = response.length } else { console.warn('API返回格式不符合预期:', response) list = [] @@ -345,11 +365,11 @@ async returnBook({ dispatch }, { title }) { params: { title } }) - // 根据接口文档处理响应 - if (response.data && response.data.code === 200) { - return { data: response.data.data } + // 根据接口文档2.3,返回单条对象 + if (response.data && response.data.title) { + return { data: response.data } } else { - throw new Error(response.data?.message || '获取书籍信息失败') + throw new Error('获取书籍信息失败') } } catch (error) { console.error('API请求失败:', error) @@ -357,16 +377,23 @@ async returnBook({ dispatch }, { title }) { } }, - // 新增书籍 + // 新增书籍 - 符合接口文档2.1 async addBook(_, bookData) { const response = await service.post('/api/add', bookData, { headers: { 'Content-Type': 'application/json' } }) - return response.data + // 根据接口文档2.1,成功返回整本书信息 + if (response.data && response.data.code === 200) { + return response.data + } else if (response.data && response.data.code === 1) { + throw new Error(response.data.message || '添加书籍失败') + } else { + throw new Error('添加书籍失败') + } }, - // 管理员删除书籍 - 符合接口文档 + // 管理员删除书籍 - 符合接口文档2.4 async deleteBook(_, { title }) { const response = await service.post('/user/delete', `title=${encodeURIComponent(title)}`, @@ -375,21 +402,35 @@ async returnBook({ dispatch }, { title }) { if (response.data && response.data.code === 200) { return response.data + } else if (response.data && response.data.code === 1) { + throw new Error(response.data.message || '删除书籍失败') } else { - throw new Error(response.data?.message || '删除书籍失败') + throw new Error('删除书籍失败') } }, - // 本周热租榜 - 符合接口文档 + // 本周热租榜 - 符合接口文档4.1 async fetchWeeklyRank() { const response = await service.get('/api/rank/weekly') - return { data: Array.isArray(response) ? response : response.data || [] } + + // 根据接口文档4.1,直接返回数组 + if (response.data && Array.isArray(response.data)) { + return { data: response.data } + } else { + return { data: [] } + } }, - // 本月热租榜 - 符合接口文档 + // 本月热租榜 - 符合接口文档4.2 async fetchMonthlyRank() { const response = await service.get('/api/rank/monthly') - return { data: Array.isArray(response) ? response : response.data || [] } + + // 根据接口文档4.2,结构与4.1相同 + if (response.data && Array.isArray(response.data)) { + return { data: response.data } + } else { + return { data: [] } + } } } }) \ No newline at end of file diff --git a/library_system/src/views/Admin/AllBorrowRecords.vue b/library_system/src/views/Admin/AllBorrowRecords.vue index 3a5e9e4..6361e5c 100644 --- a/library_system/src/views/Admin/AllBorrowRecords.vue +++ b/library_system/src/views/Admin/AllBorrowRecords.vue @@ -106,24 +106,28 @@ try { loading.value = true - // 根据接口文档1.6,管理员调用/user/findone返回数组 - const response = await store.dispatch('fetchBorrowRecords') - - if (response.code === 200) { - // 管理员返回数组格式 - if (Array.isArray(response.data)) { - records.value = response.data - total.value = response.data.length - } else { - // 如果不是数组,说明可能是普通用户格式,使用预设数据 - records.value = presetRecords - total.value = presetRecords.length - } - } else { - // 接口调用失败,使用预设数据 - records.value = presetRecords - total.value = presetRecords.length - } + // 根据接口文档1.6,管理员调用/user/findone返回数组 + const response = await store.dispatch('fetchBorrowRecords') + + if (response.code === 200) { + // 管理员返回数组格式 + if (Array.isArray(response.data)) { + records.value = response.data + total.value = response.data.length + } else { + // 如果不是数组,说明可能是普通用户格式,使用预设数据 + records.value = presetRecords + total.value = presetRecords.length + } + } else if (response.code === 1) { + // 业务错误,使用预设数据 + records.value = presetRecords + total.value = presetRecords.length + } else { + // 接口调用失败,使用预设数据 + records.value = presetRecords + total.value = presetRecords.length + } } catch (error) { console.error('获取借阅记录失败:', error) ElMessage.error('获取借阅记录失败,使用预设数据') diff --git a/library_system/src/views/Books/BookList.vue b/library_system/src/views/Books/BookList.vue index 4807716..9ee4e05 100644 --- a/library_system/src/views/Books/BookList.vue +++ b/library_system/src/views/Books/BookList.vue @@ -75,7 +75,8 @@ import { ElMessage } from 'element-plus' const store = useStore() const router = useRouter() -const isAdmin = computed(() => store.state.user?.admin || false) +const user = computed(() => store.state.user) +const isAdmin = computed(() => user.value?.admin || false) const books = ref([]) const searchKeyword = ref('') const currentPage = ref(1)