8/16二次更新

hyx_brand
hyx 3 months ago
parent 6afa988017
commit d4b3ce78ae

@ -63,19 +63,19 @@ export default createStore({
try { try {
const userData = savedUser const userData = savedUser
if (userData && userData.username) { if (userData && userData.username) {
// 验证服务器端会话是否仍然有效 // 验证服务器端会话是否仍然有效
const serverUserData = await service.get('/user/getinfo', { const response = await service.get('/user/getinfo', {
silent: true // 避免未登录时显示错误 silent: true // 避免未登录时显示错误
}) })
if (serverUserData && serverUserData.username) { if (response.data && response.data.username) {
// 服务器会话有效,更新用户信息 // 服务器会话有效,更新用户信息
const admin = serverUserData.admin === 1; const admin = response.data.admin === 1;
commit('setUser', { commit('setUser', {
username: serverUserData.username, username: response.data.username,
pic: serverUserData.pic || '', pic: response.data.pic || '',
admin admin
}) })
// 获取关联信息 // 获取关联信息
try { try {
@ -99,18 +99,18 @@ export default createStore({
commit('clearUser') commit('clearUser')
} }
} else { } else {
// 没有保存的用户信息,尝试静默获取 // 没有保存的用户信息,尝试静默获取
const userData = await service.get('/user/getinfo', { const response = await service.get('/user/getinfo', {
silent: true silent: true
}) })
if (userData && userData.username) { if (response.data && response.data.username) {
const admin = userData.admin === 1; const admin = response.data.admin === 1;
commit('setUser', { commit('setUser', {
username: userData.username, username: response.data.username,
pic: userData.pic || '', pic: response.data.pic || '',
admin admin
}) })
// 获取关联信息 // 获取关联信息
try { try {
@ -161,32 +161,37 @@ export default createStore({
return response.data return response.data
}, },
// 获取当前用户信息 - 符合接口文档 // 获取当前用户信息 - 符合接口文档1.3
async fetchUser({ commit, dispatch }) { async fetchUser({ commit, dispatch }) {
try { try {
const userData = await service.get('/user/getinfo') const response = await service.get('/user/getinfo')
const admin = userData.admin === 1;
// 用户信息接口直接返回用户对象 // 根据接口文档1.3,直接返回用户对象
commit('setUser', { if (response.data && response.data.username) {
username: userData.username || '', const admin = response.data.admin === 1;
pic: userData.pic || '', commit('setUser', {
admin username: response.data.username || '',
}) pic: response.data.pic || '',
admin
})
// 获取关联信息 // 获取关联信息
try { try {
await dispatch('fetchBalanceAndVip') await dispatch('fetchBalanceAndVip')
} catch (balanceError) { } catch (balanceError) {
console.error('获取余额信息失败:', balanceError) console.error('获取余额信息失败:', balanceError)
} }
try { try {
await dispatch('fetchBorrowedBooks') await dispatch('fetchBorrowedBooks')
} catch (booksError) { } catch (booksError) {
console.error('获取借阅书籍失败:', booksError) console.error('获取借阅书籍失败:', booksError)
} }
return userData return response.data
} else {
throw new Error('获取用户信息失败')
}
} catch (error) { } catch (error) {
commit('clearUser') commit('clearUser')
throw error throw error
@ -251,36 +256,44 @@ export default createStore({
// 根据接口文档1.6,管理员返回数组,普通用户返回单个对象 // 根据接口文档1.6,管理员返回数组,普通用户返回单个对象
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(response.data?.message || '获取借阅记录失败') throw new Error('获取借阅记录失败')
} }
}, },
// 获取当前用户已借书籍 // 获取当前用户已借书籍 - 符合接口文档2.5
async fetchBorrowedBooks({ commit }) { async fetchBorrowedBooks({ commit }) {
const response = await service.get('/user/borrow/books') 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 // 按照接口文档2.5,返回书籍数组
}, if (response.data && Array.isArray(response.data)) {
commit('setBorrowedBooks', response.data)
return { data: response.data }
} else {
throw new Error('获取已借书籍失败')
}
},
// 租借书籍 // 租借书籍 - 符合接口文档3.1
async borrowBook({ dispatch }, { title }) { async borrowBook({ dispatch }, { title }) {
const response = await service.post('/borrow/borrowbook', const response = await service.post('/borrow/borrowbook',
`title=${encodeURIComponent(title)}`, `title=${encodeURIComponent(title)}`,
{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
) )
// 借书后刷新用户信息 // 根据接口文档3.1,检查响应
await dispatch('fetchUser') if (response.data && response.data.code === 200) {
return response.data // 借书后刷新用户信息
}, 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 // 归还书籍 - 符合接口文档3.2
async returnBook({ dispatch }, { title }) { async returnBook({ dispatch }, { title }) {
@ -290,10 +303,16 @@ async returnBook({ dispatch }, { title }) {
{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
) )
// 还书成功后刷新借阅书籍列表 // 根据接口文档3.2,检查响应
await dispatch('fetchBorrowedBooks') if (response.data && response.data.code === 200) {
// 还书成功后刷新借阅书籍列表
return response.data 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) { } catch (error) {
console.error('还书失败:', error) console.error('还书失败:', error)
throw error throw error
@ -316,12 +335,13 @@ async returnBook({ dispatch }, { title }) {
let list = [] let list = []
let total = 0 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 list = response.data
total = response.data.length total = response.data.length
} else if (Array.isArray(response)) {
list = response
total = response.length
} else { } else {
console.warn('API返回格式不符合预期:', response) console.warn('API返回格式不符合预期:', response)
list = [] list = []
@ -345,11 +365,11 @@ async returnBook({ dispatch }, { title }) {
params: { title } params: { title }
}) })
// 根据接口文档处理响应 // 根据接口文档2.3,返回单条对象
if (response.data && response.data.code === 200) { if (response.data && response.data.title) {
return { data: response.data.data } return { data: response.data }
} else { } else {
throw new Error(response.data?.message || '获取书籍信息失败') throw new Error('获取书籍信息失败')
} }
} catch (error) { } catch (error) {
console.error('API请求失败:', error) console.error('API请求失败:', error)
@ -357,16 +377,23 @@ async returnBook({ dispatch }, { title }) {
} }
}, },
// 新增书籍 // 新增书籍 - 符合接口文档2.1
async addBook(_, bookData) { async addBook(_, bookData) {
const response = await service.post('/api/add', bookData, { const response = await service.post('/api/add', bookData, {
headers: { 'Content-Type': 'application/json' } 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 }) { async deleteBook(_, { title }) {
const response = await service.post('/user/delete', const response = await service.post('/user/delete',
`title=${encodeURIComponent(title)}`, `title=${encodeURIComponent(title)}`,
@ -375,21 +402,35 @@ async returnBook({ dispatch }, { title }) {
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(response.data?.message || '删除书籍失败') throw new Error('删除书籍失败')
} }
}, },
// 本周热租榜 - 符合接口文档 // 本周热租榜 - 符合接口文档4.1
async fetchWeeklyRank() { async fetchWeeklyRank() {
const response = await service.get('/api/rank/weekly') 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() { async fetchMonthlyRank() {
const response = await service.get('/api/rank/monthly') 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: [] }
}
} }
} }
}) })

@ -106,24 +106,28 @@
try { try {
loading.value = true loading.value = true
// 1.6/user/findone // 1.6/user/findone
const response = await store.dispatch('fetchBorrowRecords') const response = await store.dispatch('fetchBorrowRecords')
if (response.code === 200) { if (response.code === 200) {
// //
if (Array.isArray(response.data)) { if (Array.isArray(response.data)) {
records.value = response.data records.value = response.data
total.value = response.data.length total.value = response.data.length
} else { } else {
// 使 // 使
records.value = presetRecords records.value = presetRecords
total.value = presetRecords.length total.value = presetRecords.length
} }
} else { } else if (response.code === 1) {
// 使 // 使
records.value = presetRecords records.value = presetRecords
total.value = presetRecords.length 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('获取借阅记录失败,使用预设数据')

@ -75,7 +75,8 @@ import { ElMessage } from 'element-plus'
const store = useStore() const store = useStore()
const router = useRouter() 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 books = ref([])
const searchKeyword = ref('') const searchKeyword = ref('')
const currentPage = ref(1) const currentPage = ref(1)

Loading…
Cancel
Save