图书馆小程序
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.

71 lines
2.3 KiB

5 months ago
  1. <script>
  2. import { FetchLibcodeBycode } from '@/api/user'
  3. export default {
  4. globalData: {
  5. appid: '',
  6. libcode: '', // 全局libcode,所有页面 getApp().globalData.libcode 访问
  7. },
  8. onLaunch() {
  9. this.initAppIdAndLibcode()
  10. },
  11. methods: {
  12. // 初始化:拿appid → 请求接口拿libcode,存入globalData
  13. async initAppIdAndLibcode() {
  14. // #ifdef MP-WEIXIN
  15. try {
  16. // 1、全局获取appid
  17. const accountInfo = wx.getAccountInfoSync()
  18. const appid = accountInfo.miniProgram.appId
  19. this.globalData.appid = appid
  20. // 优先读本地缓存libcode,减少接口请求
  21. let cacheLibcode = uni.getStorageSync('GLOBAL_LIBCODE')
  22. if(cacheLibcode){
  23. this.globalData.libcode = cacheLibcode
  24. console.log('使用缓存libcode:', cacheLibcode)
  25. return
  26. }
  27. // 2、调用接口 FetchLibcodeBycode,传入appid获取libcode
  28. const res = await FetchLibcodeBycode({
  29. code: 'vx_mini_appId',
  30. value: appid
  31. })
  32. if(res.code === 200 && res.data){
  33. const libcode = res.data
  34. this.globalData.libcode = libcode
  35. uni.setStorageSync('GLOBAL_LIBCODE', libcode)
  36. console.log('接口获取全局libcode成功:', libcode)
  37. }else{
  38. console.error('FetchLibcodeBycode 获取libcode失败', res)
  39. }
  40. } catch(e){
  41. console.error('初始化appid/libcode异常', e)
  42. }
  43. // #endif
  44. },
  45. // 退出登录 待用
  46. // logout(){
  47. // // 1. 清除登录缓存
  48. // uni.removeStorageSync('wx_login_code')
  49. // uni.removeStorageSync('READER_CARD_LIST')
  50. // uni.removeStorageSync('CURRENT_READER_CARD')
  51. // // 2.清除libcode缓存,强制重新拉取
  52. // uni.removeStorageSync('GLOBAL_LIBCODE')
  53. // getApp().globalData.libcode = ''
  54. // // 跳转登录页
  55. // uni.reLaunch({url:'/pages/login/login'})
  56. // }
  57. // 刷新libcode 待用
  58. // refreshLibcode(){
  59. // uni.removeStorageSync('GLOBAL_LIBCODE')
  60. // getApp().globalData.libcode = ''
  61. // uni.showToast({title:"已重置libcode,将重新获取",icon:"none"})
  62. // // 重新执行App.vue里面的初始化方法
  63. // getApp().$options.methods.initAppIdAndLibcode()
  64. // }
  65. }
  66. }
  67. </script>