app.vue 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <template>
  2. <div class="container">
  3. <NuxtLayout>
  4. <NuxtPage/>
  5. </NuxtLayout>
  6. </div>
  7. </template>
  8. <script setup>
  9. import { ID_INJECTION_KEY } from 'element-plus'
  10. import { useFiltersStore } from "@/store/filter.js";
  11. const filtersStore = useFiltersStore();
  12. useHead({
  13. link: [
  14. { rel: 'icon', type: 'image/x-icon', href: '/favicon.png' },
  15. ],
  16. script: [
  17. {
  18. src: 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit',
  19. type:'text/javascript',
  20. async: true,
  21. body: true,
  22. },
  23. ]
  24. })
  25. const setHead = () => {
  26. get('v3/system/front/setting/getSettings?names=gz_code').then(res=>{
  27. if(!res.data[0] || res.data[0] == ''){
  28. return
  29. }
  30. useHead({
  31. script: [
  32. {
  33. src: "https://www.googletagmanager.com/gtm.js?id="+ res.data[0],
  34. type:'text/javascript',
  35. async: true,
  36. },
  37. ]
  38. })
  39. })
  40. }
  41. setHead()
  42. provide(ID_INJECTION_KEY, {
  43. prefix: 100,
  44. current: 0,
  45. })
  46. const googleTranslateInit = () => {
  47. let checkIfGoogleLoaded = setInterval(() => {
  48. if (window.google && window.google.translate?.TranslateElement != null) {
  49. filtersStore.setGoogleTanslateStatus('1')
  50. clearInterval(checkIfGoogleLoaded);
  51. googleTranslateElement('google_translate_element');
  52. }
  53. }, 1000);
  54. }
  55. const googleTranslateElement = (id) => {
  56. new window.google.translate.TranslateElement({pageLanguage: 'en',layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, id);
  57. }
  58. onMounted(() => {
  59. nextTick(()=>{
  60. googleTranslateInit()
  61. })
  62. window.addEventListener('storage', function (e) {
  63. if (e.key === 'isLoggedIn') {
  64. location.reload(); // 其他页面刷新
  65. }
  66. });
  67. })
  68. </script>