app.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. useHead({
  11. link: [
  12. { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
  13. ],
  14. script: [
  15. {
  16. src: 'https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit',
  17. type:'text/javascript',
  18. async: true,
  19. body: true,
  20. },
  21. ]
  22. })
  23. const setHead = () => {
  24. get('v3/system/front/setting/getSettings?names=gz_code').then(res=>{
  25. if(!res.data[0] || res.data[0] == ''){
  26. return
  27. }
  28. useHead({
  29. script: [
  30. {
  31. src: "https://www.googletagmanager.com/gtm.js?id="+ res.data[0],
  32. type:'text/javascript',
  33. async: true,
  34. },
  35. ]
  36. })
  37. })
  38. }
  39. setHead()
  40. provide(ID_INJECTION_KEY, {
  41. prefix: 100,
  42. current: 0,
  43. })
  44. const googleTranslateInit = () => {
  45. let checkIfGoogleLoaded = setInterval(() => {
  46. if (google.translate.TranslateElement != null) {
  47. clearInterval(checkIfGoogleLoaded);
  48. googleTranslateElement('google_translate_element');
  49. }
  50. }, 1000);
  51. }
  52. const googleTranslateElement = (id) => {
  53. new google.translate.TranslateElement({pageLanguage: 'en',layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, id);
  54. }
  55. onMounted(() => {
  56. nextTick(()=>{
  57. googleTranslateInit()
  58. })
  59. })
  60. </script>