图书馆小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

114 lines
3.8 KiB

<script>
import { FetchLibcodeBycode,FetchInitFondsList } from '@/api/user'
export default {
globalData: {
appid: '',
libcode: '', // 全局libcode
fondsName: '' // 新增:馆藏名称,全局使用
},
onLaunch() {
this.initAppIdAndLibcode()
},
methods: {
// 初始化:拿appid → 请求接口拿libcode,存入globalData
async initAppIdAndLibcode() {
// #ifdef MP-WEIXIN
try {
// 1、全局获取appid
const accountInfo = wx.getAccountInfoSync()
const appid = accountInfo.miniProgram.appId
this.globalData.appid = appid
// 优先读本地缓存libcode,减少接口请求
let cacheLibcode = uni.getStorageSync('GLOBAL_LIBCODE')
if(cacheLibcode){
this.globalData.libcode = cacheLibcode
console.log('使用缓存libcode:', cacheLibcode)
// ✅ 缓存有libcode,直接去拿 fondsName
await this.getFondsName(cacheLibcode)
return
}
// 2、调用接口 FetchLibcodeBycode,传入appid获取libcode
const res = await FetchLibcodeBycode({
code: 'vx_mini_appId',
value: appid
})
if(res.code === 200 && res.data){
const libcode = res.data
this.globalData.libcode = libcode
uni.setStorageSync('GLOBAL_LIBCODE', libcode)
console.log('接口获取全局libcode成功:', libcode)
// ✅拿到libcode之后,调用FetchInitFondsList获取馆藏名称
await this.getFondsName(libcode)
}else{
console.error('FetchLibcodeBycode 获取libcode失败', res)
}
} catch(e){
console.error('初始化appid/libcode异常', e)
}
// #endif
},
/**
* 根据libcode获取馆藏名称 fondsName
*/
async getFondsName(libcode) {
try {
// 优先读缓存
let cacheFondsName = uni.getStorageSync('GLOBAL_FONDS_NAME')
if (cacheFondsName) {
this.globalData.fondsName = cacheFondsName
console.log('使用缓存 fondsName:', cacheFondsName)
return
}
// 调用接口,传入libcode
const fondRes = await FetchInitFondsList({
'fondsNo': libcode
})
// console.log('FetchInitFondsList返回结果', fondRes)
if (fondRes.code === 200 && fondRes.data) {
const fondsName = fondRes.data.fondsName || ''
this.globalData.fondsName = fondsName
uni.setStorageSync('GLOBAL_FONDS_NAME', fondsName)
console.log('获取馆藏名称成功:', fondsName)
} else {
console.error('FetchInitFondsList 获取馆藏失败', fondRes)
}
} catch (err) {
console.error('getFondsName异常', err)
}
},
// 退出登录 待用
// logout(){
// // 1. 清除登录缓存
// uni.removeStorageSync('wx_login_code')
// uni.removeStorageSync('READER_CARD_LIST')
// uni.removeStorageSync('CURRENT_READER_CARD')
// // 2.清除libcode缓存,强制重新拉取
// uni.removeStorageSync('GLOBAL_LIBCODE')
// uni.removeStorageSync('GLOBAL_FONDS_NAME') // 也要清空馆藏缓存
// getApp().globalData.libcode = ''
// getApp().globalData.fondsName = ''
// // 跳转登录页
// uni.reLaunch({url:'/pages/login/login'})
// }
// 刷新libcode 待用
// refreshLibcode(){
// uni.removeStorageSync('GLOBAL_LIBCODE')
// uni.removeStorageSync('GLOBAL_FONDS_NAME') // 清空馆藏
// getApp().globalData.libcode = ''
// getApp().globalData.fondsName = ''
// uni.showToast({title:"已重置libcode,将重新获取",icon:"none"})
// // 重新执行App.vue里面的初始化方法
// getApp().$options.methods.initAppIdAndLibcode()
// }
}
}
</script>