App.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <a-config-provider :locale="locale">
  3. <a-style-provider hash-priority="high">
  4. <router-view />
  5. </a-style-provider>
  6. </a-config-provider>
  7. </template>
  8. <script setup>
  9. import { RouterView } from 'vue-router';
  10. import { onBeforeMount, ref } from 'vue';
  11. import http from "@/utils/auth-api";
  12. import zhCN from 'ant-design-vue/es/locale/zh_CN';
  13. import dayjs from 'dayjs';
  14. import { message } from 'ant-design-vue';
  15. import { useUserStore } from '@/stores';
  16. import { setLocalStorageWithExpiry, getLocalStorageWithExpiry } from '@/utils/store.js'
  17. import 'dayjs/locale/zh-cn';
  18. dayjs.locale('zh-cn');
  19. const locale = ref(zhCN)
  20. const store = useUserStore();
  21. onBeforeMount(() => {
  22. document.title = window?.AppGlobalConfig?.system?.name || '';
  23. })
  24. const route = useRoute();
  25. const router = useRouter();
  26. const foundHandle = () => {
  27. router.push({
  28. name: '404'
  29. })
  30. }
  31. const ticketStr = ref()
  32. const getUrlParamByToken = () => {
  33. if (!window?.AppGlobalConfig?.isAuth) return;
  34. const routePath = route.path
  35. if (routePath.indexOf('404') !== -1) { return }
  36. const isLogin = getLocalStorageWithExpiry("_isLogin")
  37. if(isLogin === '1') return
  38. var urlStr = window.location.href
  39. var arr = urlStr.split('?')
  40. if (arr.length === 1) {
  41. foundHandle()
  42. return
  43. }
  44. var paramStr = arr[1]
  45. var paramArr = paramStr.split('&')
  46. var paramMap = {}
  47. paramArr.forEach(item => {
  48. var arr = item.split('=')
  49. paramMap[arr[0]] = arr[1]
  50. })
  51. if (paramMap["debugger"] == "1") {
  52. return;
  53. }
  54. if (!paramMap.hasOwnProperty('sykjzlptv2_ticket')) {
  55. foundHandle()
  56. return
  57. }
  58. ticketStr.value = paramMap['sykjzlptv2_ticket']
  59. const storeTicketStr = localStorage.getItem('_sykjzlptv2_ticket')
  60. if (storeTicketStr) {
  61. if (storeTicketStr === paramMap['sykjzlptv2_ticket']) {
  62. return
  63. }
  64. }
  65. localStorage.removeItem('sykjzlptv2_ticket')
  66. getCommonToken()
  67. }
  68. const getCommonToken = async () => {
  69. if (!ticketStr.value) { return }
  70. const urlApi = `/auth/ticket`
  71. var p = { ticket: ticketStr.value };
  72. http.get(urlApi, p, this, false).then(async (resultData) => {
  73. if (!resultData || resultData['error_code']) {
  74. message.error('用户不合法,请核实用户信息!')
  75. foundHandle()
  76. return
  77. }
  78. if (resultData['error']) {
  79. message.error(resultData['error'])
  80. foundHandle()
  81. return
  82. }
  83. if(resultData['syUser']){
  84. const syUserObj = resultData["syUser"];
  85. store.updateUser({
  86. syUser: syUserObj
  87. })
  88. setLocalStorageWithExpiry("_isLogin", "1", 3600000);
  89. localStorage.setItem("_sykjzlptv2_ticket", ticketStr.value);
  90. }
  91. });
  92. }
  93. getUrlParamByToken()
  94. </script>
  95. <style lang="scss" scoped>
  96. ::v-deep(div.ant-popconfirm) {
  97. min-width: 200px;
  98. }
  99. </style>