diff --git a/library_system/src/store/index.js b/library_system/src/store/index.js index 0d23936..07d1cea 100644 --- a/library_system/src/store/index.js +++ b/library_system/src/store/index.js @@ -252,28 +252,22 @@ export default createStore({ // 查询个人借书记录 - 符合接口文档1.6 async fetchBorrowRecords() { const response = await service.get('/user/findone') + return response.data - // 根据接口文档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('获取借阅记录失败') - } }, // 获取当前用户已借书籍 - 符合接口文档2.5 async fetchBorrowedBooks({ commit }) { 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 } + // 按照接口文档处理响应 + if (response.data.code === 200) { + commit('setBorrowedBooks', response.data.data || []) } else { - throw new Error('获取已借书籍失败') + throw new Error(response.data.message || '获取已借书籍失败') } + + return response.data }, // 租借书籍 - 符合接口文档3.1 @@ -319,7 +313,8 @@ async returnBook({ dispatch }, { title }) { } }, - // 查询全部书籍 - 符合接口文档2.2 + + // 查询全部书籍 - 符合接口文档 async fetchBooks(_, params = {}) { const config = { params: { @@ -330,22 +325,24 @@ async returnBook({ dispatch }, { title }) { } const response = await service.get('/api/select', config) - - // 根据接口文档2.2,直接返回数组 + console.log('请求书籍:', route.params.title) + console.log('API响应:', response) + // 处理不同响应格式 let list = [] let total = 0 - // 检查响应格式 - if (response.data && Array.isArray(response.data)) { - list = response.data - total = response.data.length + if (Array.isArray(response)) { + list = response + total = response.length } else if (Array.isArray(response.data)) { list = response.data total = response.data.length - } else { - console.warn('API返回格式不符合预期:', response) - list = [] - total = 0 + } else if (response.data && Array.isArray(response.data.data)) { + list = response.data.data + total = response.data.total || response.data.data.length + } else if (response.data && Array.isArray(response.data.list)) { + list = response.data.list + total = response.data.total || response.data.list.length } return { @@ -395,19 +392,20 @@ async returnBook({ dispatch }, { title }) { // 管理员删除书籍 - 符合接口文档2.4 async deleteBook(_, { title }) { - const response = await service.post('/user/delete', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - 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('删除书籍失败') - } - }, + const response = await service.post('/user/delete', + `title=${encodeURIComponent(title)}`, + { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } + ) + + // 根据接口文档修改响应处理 + if (response.data && response.data.code === 200) { + return response.data + } else { + // 统一处理错误消息 + const errorMsg = response.data?.message || '删除书籍失败' + throw new Error(errorMsg) + } +}, // 本周热租榜 - 符合接口文档4.1 async fetchWeeklyRank() { @@ -431,6 +429,11 @@ async returnBook({ dispatch }, { title }) { } else { return { data: [] } } - } + }, + + + + + } }) \ No newline at end of file diff --git a/library_system/src/utils/request.js b/library_system/src/utils/request.js index d24e273..f3dbe43 100644 --- a/library_system/src/utils/request.js +++ b/library_system/src/utils/request.js @@ -24,49 +24,21 @@ service.interceptors.request.use( // 响应拦截器 service.interceptors.response.use( response => { - // 处理成功响应 - const res = response.data - - // 处理业务错误 (code !== 200) - if (res && typeof res === 'object' && res.code !== undefined && res.code !== 200) { - // 检查是否为静默请求 - if (!response.config.silent) { - ElMessage.error(res.message || '请求失败') - } - return Promise.reject(new Error(res.message || 'Error')) + // 统一处理成功响应 + if (response.data && response.data.code === 200) { + return response.data + } else { + // 处理业务逻辑错误 + const errorMsg = response.data?.message || '请求处理失败' + return Promise.reject(new Error(errorMsg)) } - - // 返回整个响应对象,确保组件可以访问响应头等信息 - return response }, error => { // 处理HTTP错误 - if (error.response) { - switch (error.response.status) { - case 401: - // 只有在非静默请求时才显示错误信息 - if (!error.config?.silent) { - store.dispatch('logout') - router.push('/login') - ElMessage.error('请先登录') - } - break - case 403: - if (!error.config?.silent) { - ElMessage.error('没有操作权限') - } - break - default: - if (!error.config?.silent) { - ElMessage.error(error.response.data?.message || '请求失败') - } - } - } else { - if (!error.config?.silent) { - ElMessage.error('网络错误,请检查连接') - } - } - return Promise.reject(error) + const errorMsg = error.response?.data?.message || + error.message || + '网络请求失败' + return Promise.reject(new Error(errorMsg)) } ) diff --git a/library_system/src/views/Admin/AllBorrowRecords.vue b/library_system/src/views/Admin/AllBorrowRecords.vue index 6361e5c..f4be8d8 100644 --- a/library_system/src/views/Admin/AllBorrowRecords.vue +++ b/library_system/src/views/Admin/AllBorrowRecords.vue @@ -103,41 +103,21 @@ }) const fetchAllRecords = async () => { - 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 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('获取借阅记录失败,使用预设数据') - - records.value = presetRecords - total.value = presetRecords.length - } finally { - loading.value = false - } + try { + loading.value = true + + // 获取借书记录 + const recordsData = await store.dispatch('fetchBorrowRecords') + } catch (error) { + console.error('获取借阅记录失败:', error) + ElMessage.error('获取借阅记录失败,使用预设数据') + + records.value = presetRecords + total.value = presetRecords.length + } finally { + loading.value = false } +} const handlePageChange = (page) => { currentPage.value = page diff --git a/library_system/src/views/Admin/BookManagement.vue b/library_system/src/views/Admin/BookManagement.vue index a87cdc6..5ccfb6e 100644 --- a/library_system/src/views/Admin/BookManagement.vue +++ b/library_system/src/views/Admin/BookManagement.vue @@ -117,31 +117,65 @@ // } const fetchBooks = async () => { - try { - loading.value = true - const params = { - page: currentPage.value, - pageSize: pageSize.value, - keyword: searchKeyword.value - } - - const response = await store.dispatch('fetchBooks', params) + try { + loading.value = true + const params = { + page: currentPage.value, + pageSize: pageSize.value, + title: searchKeyword.value // 使用 title 而不是 keyword + } + + // 调用 Vuex action 获取书籍列表 + const response = await store.dispatch('fetchBooks', params) + + // 处理响应数据 + if (response.data && Array.isArray(response.data.list)) { books.value = response.data.list total.value = response.data.total - } catch (error) { - console.error('获取书籍列表失败:', error) - ElMessage.error('获取书籍列表失败,使用预设数据') - books.value = [ - { id: 1, title: '三体', url: 'https://picsum.photos/id/24/200/300', money: 5, number: 12, state: '正常', content: '科幻' }, - { id: 2, title: '人类简史', url: 'https://picsum.photos/id/25/200/300', money: 4, number: 10, state: '正常', content: '历史' }, - { id: 3, title: '百年孤独', url: 'https://picsum.photos/id/26/200/300', money: 6, number: 0, state: '维护中', content: '文学' }, - ] + } else { + // 处理非标准响应格式 + console.warn('非标准响应格式:', response) + books.value = response.data || [] total.value = books.value.length - } finally { - loading.value = false } + } catch (error) { + console.error('获取书籍列表失败:', error) + ElMessage.error('获取书籍列表失败') + // 使用预设数据作为回退 + books.value = [ + { + id: 1, + title: '三体', + url: 'https://picsum.photos/id/24/200/300', + money: 5, + number: 12, + state: '正常', + content: '科幻' + }, + { + id: 2, + title: '人类简史', + url: 'https://picsum.photos/id/25/200/300', + money: 4, + number: 10, + state: '正常', + content: '历史' + }, + { + id: 3, + title: '百年孤独', + url: 'https://picsum.photos/id/26/200/300', + money: 6, + number: 0, + state: '维护中', + content: '文学' + }, + ] + total.value = books.value.length + } finally { + loading.value = false } - +} const handlePageChange = (page) => { currentPage.value = page fetchBooks()