Newer
Older
robot_dog_patrol_front / src / main.ts
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
// import print from 'vue3-print-nb'
import axios from 'axios'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import dayjs from 'dayjs'
import App from './App.vue'
import pinia from './store'
import router from './router'
import useSettingsStore from './store/modules/settings'
import request from '@/api/index'
import indexDB from '@/utils/indexDB'
import '@/utils/getLocation'
// 引入音频文件
import alarmAudio from '@/assets/audio/alarm1.mp3'
// 自定义指令
import { dragHeight } from '@/directives/drag-height/index'
import { dragWidth } from '@/directives/drag-width/index'
// 自定义指令
import directive from '@/utils/directive'
// 加载 svg 图标
import 'virtual:svg-icons-register'
// 全局样式
import '@/assets/styles/globals.scss'
// 加载 iconify 图标(element plus)
import { downloadAndInstall } from '@/iconify-ep'
import { hasPermission } from '@/utils/composables/permission'
import buttonPerm from '@/utils/buttonPerm'
if (useSettingsStore().app.iconifyOfflineUse) {
  downloadAndInstall()
}
// 引入音频文件
const audio = new Audio(alarmAudio)
// 设置音频循环播放
audio.loop = true
axios
  .get('./config/config.json', {
    headers: {
      'Cache-Control': 'no-cache',
    },
  })
  .then((result) => {
    const app = createApp(App)
    console.log('get config')
    console.log(
      window.localStorage.getItem('browser-type-bj-well'),
      'mian中获取浏览器类型',
    )
    console.log(result)
    window.localStorage.setItem('BaseUrl', result.data.baseUrl)
    window.localStorage.setItem('aMapSecret', result.data.aMapSecret)
    window.localStorage.setItem('aMapKey', result.data.aMapKey)
    console.log('aMapSecret', result.data.aMapSecret)
    console.log('aMapKey', result.data.aMapKey)
    console.log('dogWalkTime', result.data.dogWalkTime)
    // axios.get(`${window.localStorage.getItem('xuntengMap') as string}/L16/R00006105/C0000d2ba.png?ts=${new Date().getTime()}`).then(() => {
    //   console.log('请求通了')
    //   window.sessionStorage.setItem('ping-xunteng-layer', '1')
    // }).catch((error) => {
    //   console.log('请求不通')
    //   window.sessionStorage.setItem('ping-xunteng-layer', '')
    //   if (error.message) {
    //     console.log('网络异常')
    //     window.sessionStorage.setItem('ping-xunteng-layer', '')
    //   }
    // })
    request.defaults.baseURL = result.data.baseUrl // 设置默认请求网址
    app.config.globalProperties.config = result.data
    app.config.globalProperties.hasPerm = hasPermission
    app.config.globalProperties.buttonPerm = buttonPerm
    app.config.globalProperties.dayjs = dayjs
    console.log(`当前系统版本:${result.data.version}`)
    indexDB
      .init()
      .then(() => {
        console.log('Database initialized successfully!')
      })
      .catch(() => {
        console.log('Database initialization failed!')
      })

    // ============================音频===========================
    // 注册全局播放音频事件
    app.config.globalProperties.$playAudio = () => {
      audio.play().catch((error) => {
        console.error('播放音频时出错:', error)
      })
    }

    // 注册全局停止播放音频事件
    app.config.globalProperties.$stopAudio = () => {
      audio.pause()
      audio.currentTime = 0
    }
    // ============================音频===========================
    // app.use(print)
    app.use(ElementPlus)
    app.use(pinia)
    app.use(router)
    for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
      app.component(key, component)
    }
    // 加载自定义指令
    app.directive('drag-height', (el, binding) => {
      dragHeight(el, binding)
    })
    app.directive('drag-width', (el, binding) => {
      dragWidth(el, binding)
    })
    directive(app)
    app.mount('#app')
  })
  .catch((error) => {
    console.error(`get baseConfig error...${error}`)
  })