hyx_brand
hyx 3 months ago
parent d4b3ce78ae
commit 7533450cc6

@ -252,28 +252,22 @@ export default createStore({
// 查询个人借书记录 - 符合接口文档1.6 // 查询个人借书记录 - 符合接口文档1.6
async fetchBorrowRecords() { async fetchBorrowRecords() {
const response = await service.get('/user/findone') const response = await service.get('/user/findone')
// 根据接口文档1.6,管理员返回数组,普通用户返回单个对象
if (response.data && response.data.code === 200) {
return response.data return response.data
} else if (response.data && response.data.code === 1) {
throw new Error(response.data.message || '获取借阅记录失败')
} else {
throw new Error('获取借阅记录失败')
}
}, },
// 获取当前用户已借书籍 - 符合接口文档2.5 // 获取当前用户已借书籍 - 符合接口文档2.5
async fetchBorrowedBooks({ commit }) { async fetchBorrowedBooks({ commit }) {
const response = await service.get('/user/borrow/books') const response = await service.get('/user/borrow/books')
// 按照接口文档2.5,返回书籍数组 // 按照接口文档处理响应
if (response.data && Array.isArray(response.data)) { if (response.data.code === 200) {
commit('setBorrowedBooks', response.data) commit('setBorrowedBooks', response.data.data || [])
return { data: response.data }
} else { } else {
throw new Error('获取已借书籍失败') throw new Error(response.data.message || '获取已借书籍失败')
} }
return response.data
}, },
// 租借书籍 - 符合接口文档3.1 // 租借书籍 - 符合接口文档3.1
@ -319,7 +313,8 @@ async returnBook({ dispatch }, { title }) {
} }
}, },
// 查询全部书籍 - 符合接口文档2.2
// 查询全部书籍 - 符合接口文档
async fetchBooks(_, params = {}) { async fetchBooks(_, params = {}) {
const config = { const config = {
params: { params: {
@ -330,22 +325,24 @@ async returnBook({ dispatch }, { title }) {
} }
const response = await service.get('/api/select', config) const response = await service.get('/api/select', config)
console.log('请求书籍:', route.params.title)
// 根据接口文档2.2,直接返回数组 console.log('API响应:', response)
// 处理不同响应格式
let list = [] let list = []
let total = 0 let total = 0
// 检查响应格式 if (Array.isArray(response)) {
if (response.data && Array.isArray(response.data)) { list = response
list = response.data total = response.length
total = response.data.length
} else if (Array.isArray(response.data)) { } else if (Array.isArray(response.data)) {
list = response.data list = response.data
total = response.data.length total = response.data.length
} else { } else if (response.data && Array.isArray(response.data.data)) {
console.warn('API返回格式不符合预期:', response) list = response.data.data
list = [] total = response.data.total || response.data.data.length
total = 0 } else if (response.data && Array.isArray(response.data.list)) {
list = response.data.list
total = response.data.total || response.data.list.length
} }
return { return {
@ -400,14 +397,15 @@ async returnBook({ dispatch }, { title }) {
{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
) )
// 根据接口文档修改响应处理
if (response.data && response.data.code === 200) { if (response.data && response.data.code === 200) {
return response.data return response.data
} else if (response.data && response.data.code === 1) {
throw new Error(response.data.message || '删除书籍失败')
} else { } else {
throw new Error('删除书籍失败') // 统一处理错误消息
const errorMsg = response.data?.message || '删除书籍失败'
throw new Error(errorMsg)
} }
}, },
// 本周热租榜 - 符合接口文档4.1 // 本周热租榜 - 符合接口文档4.1
async fetchWeeklyRank() { async fetchWeeklyRank() {
@ -431,6 +429,11 @@ async returnBook({ dispatch }, { title }) {
} else { } else {
return { data: [] } return { data: [] }
} }
} },
} }
}) })

@ -24,49 +24,21 @@ service.interceptors.request.use(
// 响应拦截器 // 响应拦截器
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
// 处理成功响应 // 统一处理成功响应
const res = response.data if (response.data && response.data.code === 200) {
return response.data
// 处理业务错误 (code !== 200) } else {
if (res && typeof res === 'object' && res.code !== undefined && res.code !== 200) { // 处理业务逻辑错误
// 检查是否为静默请求 const errorMsg = response.data?.message || '请求处理失败'
if (!response.config.silent) { return Promise.reject(new Error(errorMsg))
ElMessage.error(res.message || '请求失败')
}
return Promise.reject(new Error(res.message || 'Error'))
} }
// 返回整个响应对象,确保组件可以访问响应头等信息
return response
}, },
error => { error => {
// 处理HTTP错误 // 处理HTTP错误
if (error.response) { const errorMsg = error.response?.data?.message ||
switch (error.response.status) { error.message ||
case 401: '网络请求失败'
// 只有在非静默请求时才显示错误信息 return Promise.reject(new Error(errorMsg))
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)
} }
) )

@ -106,28 +106,8 @@
try { try {
loading.value = true loading.value = true
// 1.6/user/findone //
const response = await store.dispatch('fetchBorrowRecords') const recordsData = 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) { } catch (error) {
console.error('获取借阅记录失败:', error) console.error('获取借阅记录失败:', error)
ElMessage.error('获取借阅记录失败,使用预设数据') ElMessage.error('获取借阅记录失败,使用预设数据')
@ -137,7 +117,7 @@
} finally { } finally {
loading.value = false loading.value = false
} }
} }
const handlePageChange = (page) => { const handlePageChange = (page) => {
currentPage.value = page currentPage.value = page

@ -122,26 +122,60 @@
const params = { const params = {
page: currentPage.value, page: currentPage.value,
pageSize: pageSize.value, pageSize: pageSize.value,
keyword: searchKeyword.value title: searchKeyword.value // 使 title keyword
} }
// Vuex action
const response = await store.dispatch('fetchBooks', params) const response = await store.dispatch('fetchBooks', params)
//
if (response.data && Array.isArray(response.data.list)) {
books.value = response.data.list books.value = response.data.list
total.value = response.data.total total.value = response.data.total
} else {
//
console.warn('非标准响应格式:', response)
books.value = response.data || []
total.value = books.value.length
}
} catch (error) { } catch (error) {
console.error('获取书籍列表失败:', error) console.error('获取书籍列表失败:', error)
ElMessage.error('获取书籍列表失败,使用预设数据') ElMessage.error('获取书籍列表失败')
// 使退
books.value = [ 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: 1,
{ id: 3, title: '百年孤独', url: 'https://picsum.photos/id/26/200/300', money: 6, number: 0, state: '维护中', content: '文学' }, 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 total.value = books.value.length
} finally { } finally {
loading.value = false loading.value = false
} }
} }
const handlePageChange = (page) => { const handlePageChange = (page) => {
currentPage.value = page currentPage.value = page
fetchBooks() fetchBooks()

Loading…
Cancel
Save