Newer
Older
CloudBrainNew / src / main.js
StephanieGitHub on 4 Feb 2021 3 KB first commit
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
// element css
import '@/theme/index.css'

import '@/assets/css/base.scss'
import '@/assets/font/font.css'
import '@/assets/iconfont/iconfont.css'
import '@/assets/iconfont/iconfont.js'
import '@/utils/rem.js'

import { mockXHR } from './mock'

// 全局公共组件
import NoData from '@/components/NoData'
import MenuItem from '@/components/menu/MenuItem'
import PanelTitle1 from '@/components/title/PanelTitle1'
import TitleThree from '@/components/title/TitleThree'
import request from './utils/request'
import Container from '@/components/layout/Container'
import ModularLayout from '@/components/layout/ModularLayout'
import PanelContainer from '@/components/layout/PanelContainer'
import ChartLayout from '@/components/layout/chartLayout'
import Corner1 from '@/components/corner/Corner1'
import qs from 'qs'

// 滚动条插件
import vuescroll from 'vuescroll/dist/vuescroll-native'
import 'vuescroll/dist/vuescroll.css'

// echart
import echarts from 'echarts'
// 百度地图
// import 'echarts/extension/bmap/bmap.js'

// 注册dataV组件
import dataV from '@jiaminghi/data-view'
// 引入animate.css
import animate from 'animate.css'
// 高德地图
// import VueAMap from 'vue-amap'
// Vue.use(VueAMap)

// elementUI
import ElementUI from 'element-ui'
Vue.use(dataV)
Vue.use(animate)
Vue.use(ElementUI)

// import { mapActions } from 'vuex'

// 开启模拟数据
// if (process.env.NODE_ENV === 'development') {
//   mockXHR()
// }
Vue.component('NoData', NoData)
Vue.component('MenuItem', MenuItem)
Vue.component('PanelTitle1', PanelTitle1)
Vue.component('TitleThree', TitleThree)
Vue.component('container', Container)
Vue.component('modularLayout', ModularLayout)
Vue.component('panelContainer', PanelContainer)
Vue.component('chartLayout', ChartLayout)
Vue.component('corner1', Corner1)
Vue.prototype.request = request
Vue.prototype.qs = qs
Vue.use(vuescroll, {
  ops: {
    bar: {
      showDelay: 1000,
      keepShow: false,
      background: '#cecece',
      opacity: 0.3,
      size: '.03rem',
      /** 是否只在滚动的时候现实滚动条 */
      onlyShowBarOnScroll: false
    }
  }
})
Vue.prototype.$echarts = echarts

// websocket
let ws = new WebSocket(store.state.websocketUrl)
Vue.prototype.$ws = ws
ws.onmessage = function (msg) { // 接收消息触发
  let data = msg.data.replace(/\{/g, '')
  console.log(data)
  // 如果是双屏,则触发doubleChange
  // 其他字符替换括号转空,引号转空
  data = data.replace(/\}/g, '')
  data = data.replace(/\"/g, '')
  if (data.includes('doubleScreen')) {
    store.dispatch('changeDoubleScreen', data.split(':')[1])
  } else {
    let component = data.split(',')[0].split(':')[1]
    let curStatus = data.split(',')[1].split(':')[1]
    if (component && curStatus) {
      store.dispatch('changeStatus', {component, curStatus: Number(curStatus)})
    }
  }
}
ws.onopen = function () { // 连接成功触发
  console.log('WebSocket连接成功')
  ws.send('WebSocket,hello!') // 向服务端发送数据
}
ws.onerror = function () { // 连接失败触发
  console.log('WebSocket连接失败')
}
ws.onclose = function () { // 关闭连接触发
  console.log('WebSocket连接关闭')
}
setInterval(() => {
  ws.send('WebSocket,refresh!') // 向服务端发送数据
}, 50000)

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})