App.vue 3.0 KB

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