App.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <script setup>
  2. import { onMounted, ref } from 'vue'
  3. import { RouterLink, RouterView } from 'vue-router'
  4. import Header from './views/header.vue';
  5. import axios from 'axios';
  6. import { userInfoStore } from './stores/counter'
  7. const store = userInfoStore()
  8. const userName = ref('')
  9. const admin = ref(false)
  10. const isLogin = ref(false)
  11. onMounted(() => {
  12. console.log(11, store)
  13. // 通过 grant_code 获取登录信息
  14. let isGrantCode = getUrlParam(window.location.href, 'grant_code')
  15. axios.defaults.headers = { 'content-type': 'application/json;charset=utf-8' }
  16. if (isGrantCode) {
  17. let params = {
  18. grantCode: isGrantCode,
  19. redirectUri: "https://cloud.cocorobo.cn/testapi"
  20. }
  21. axios.post('//cloud.cocorobo.cn/api/getAccessToken', JSON.stringify(params)).then(res => {
  22. console.log(res)
  23. let accessTokenParams = {
  24. accessToken: res.data.data.accessToken
  25. }
  26. axios.post('//cloud.cocorobo.cn/api/getUserInfo', JSON.stringify(accessTokenParams)).then(r => {
  27. console.log(r,r.data.code,r.data.data)
  28. if (r.data.code == 0) {
  29. isLogin.value = true
  30. userName.value = r.data.data.userName
  31. let userInfo = r.data.data
  32. if (userInfo.currentRole == "areaAdministrator" || userInfo.currentRole == "userAdministrator" || userInfo.currentRole == "securityAuditor" || userInfo.currentRole == "schoolAdministrator" || userInfo.currentRole == "schoolSecurityAuditor" || userInfo.currentRole == "teacher") {
  33. admin.value = true
  34. }
  35. store.user = r.data.data
  36. } else {
  37. }
  38. })
  39. })
  40. }
  41. })
  42. const getUrlParam = (urlStr, urlKey) => {
  43. const url = new URL(urlStr) // 字符串转换成url格式
  44. const paramsStr = url.search.slice(1) // 获取'?'后面的参数字符串
  45. const paramsArr = paramsStr.split('&') // 分割'&'字符 获得参数数组
  46. for (let i = 0; i < paramsArr.length; i++) {
  47. const tempArr = paramsArr[i].split('=')
  48. if (tempArr[0] === urlKey) {
  49. return tempArr[1]
  50. }
  51. }
  52. }
  53. </script>
  54. <template>
  55. <Header :admin="admin" :isLogin="isLogin" :userName="userName"></Header>
  56. <keep-alive>
  57. <router-view></router-view>
  58. </keep-alive>
  59. </template>
  60. <style scoped></style>