home.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <div class="home" v-if="showPage">
  3. <headComponent></headComponent>
  4. <div class="home-page" v-show="pageType == 1">
  5. <div class="top-max-big-box">
  6. <videoComponent ref="videoComponent"></videoComponent>
  7. <overviewComponent></overviewComponent>
  8. <usageRateComponent></usageRateComponent>
  9. </div>
  10. <div class="bottom-max-big-box">
  11. <mapComponent ref="mapComponent"></mapComponent>
  12. <subComponent ref="subComponent"></subComponent>
  13. </div>
  14. </div>
  15. <mediaAnnouncementComponent v-if="pageType == 2"
  16. :mediaAnnouncementComponentData="mediaAnnouncementComponentData"
  17. ref="mediaAnnouncementComponent">
  18. </mediaAnnouncementComponent>
  19. </div>
  20. </template>
  21. <script>
  22. import { login } from "@/api/login";
  23. import { loginYiLi } from "@/api/yiLi";
  24. import { getConfigByType } from "@/api/index";
  25. import { setToken,setTokenYiLi } from '@/utils/auth'
  26. import { Encrypt,Decrypt} from '@/utils/secret'
  27. //首页组件
  28. import headComponent from './components/headComponent.vue'
  29. import videoComponent from './components/videoComponent.vue'
  30. import overviewComponent from './components/overviewComponent.vue'
  31. import usageRateComponent from './components/usageRateComponent.vue'
  32. import mapComponent from './components/mapComponent.vue'
  33. import subComponent from './components/subComponent.vue'
  34. //通知公告
  35. import mediaAnnouncementComponent from './components/mediaAnnouncementComponent.vue'
  36. export default {
  37. name: 'home',
  38. components: {
  39. headComponent,
  40. videoComponent,
  41. overviewComponent,
  42. usageRateComponent,
  43. mapComponent,
  44. subComponent,
  45. mediaAnnouncementComponent,
  46. },
  47. data () {
  48. return {
  49. //页面开关
  50. showPage:false,
  51. //展示状态
  52. pageType:1,
  53. mediaAnnouncementComponentData:null,
  54. }
  55. },
  56. created(){
  57. },
  58. mounted(){
  59. this.login();
  60. this.getToken();
  61. },
  62. methods:{
  63. login(){
  64. Promise.all([
  65. this.getToken(),
  66. this.getTokenYiLi(),
  67. this.getExploitConfig()
  68. ]).then((result)=>{
  69. this.$set(this,'showPage',true);
  70. }).catch((error) => {})
  71. },
  72. //获取token
  73. getToken(){
  74. login().then(res1 => {
  75. setToken(res1.data.token)
  76. });
  77. },
  78. //获取YiLi-token
  79. getTokenYiLi(){
  80. loginYiLi().then(res2 => {
  81. setTokenYiLi(res2.access_token);
  82. });
  83. },
  84. //获取开发配置
  85. getExploitConfig(){
  86. getConfigByType({ category: 2, configType: 5 }).then(response => {
  87. let obj = JSON.parse(response.data.configValue)
  88. //判定http或者https
  89. let urlText = window.location.href.split('://')[0]+'://';
  90. let outerNet = window.location.href.indexOf(obj.ipIdentify) == -1//true外网 false 内网
  91. if(outerNet){//外网
  92. //MQTT地址
  93. localStorage.setItem('mqttUrl','wss://'+Decrypt(obj.mqttExtranetUrl))
  94. //MQTT账号
  95. localStorage.setItem('mqttUser',Decrypt(obj.mqttExtranetUser))
  96. //MQTT密码
  97. localStorage.setItem('mqttPassword',Decrypt(obj.mqttExtranetPassword))
  98. //文件浏览环境
  99. localStorage.setItem('fileBrowseEnvironment',window.location.href.split('://')[0]+'://'+Decrypt(obj.fileBrowseEnvironmentExtranet))
  100. }else{
  101. //MQTT地址
  102. localStorage.setItem('mqttUrl','ws://'+Decrypt(obj.mqttIntranetUrl))
  103. //MQTT账号
  104. localStorage.setItem('mqttUser',Decrypt(obj.mqttIntranetUser))
  105. //MQTT密码
  106. localStorage.setItem('mqttPassword',Decrypt(obj.mqttIntranetPassword))
  107. //文件浏览环境
  108. localStorage.setItem('fileBrowseEnvironment',window.location.href.split('://')[0]+'://'+Decrypt(obj.fileBrowseEnvironment))
  109. }
  110. });
  111. },
  112. //通知组件数据给予
  113. setNoticeData(item,type){
  114. let self = this;
  115. if(type == 1){
  116. this.$set(this,'pageType',1);
  117. }if(type == 2){
  118. this.$set(this,'mediaAnnouncementComponentData',item);
  119. setTimeout(function() {
  120. //获取报警信息
  121. self.$set(self,'pageType',2);
  122. },500)
  123. }if(type == 3){
  124. this.$set(this,'pageType',2);
  125. }
  126. },
  127. //房间组件数据给予
  128. setRoomData(item){
  129. this.$refs.subComponent.getSubData(item);
  130. },
  131. //视频组件数据给予
  132. setVideoData(item){
  133. this.$refs.videoComponent.initialize(item);
  134. },
  135. //实验室详情开启
  136. setSubInfoType(){
  137. this.$refs.mapComponent.subInfoTypeFunction();
  138. },
  139. // 关闭map组件报警
  140. setOffAlarm(){
  141. this.$refs.mapComponent.offAlarm();
  142. },
  143. setOffSubAlarm(){
  144. this.$refs.subComponent.setOffAlarm();
  145. },
  146. },
  147. beforeDestroy() {
  148. },
  149. destroyed() {
  150. }
  151. }
  152. </script>
  153. <style scoped lang="scss">
  154. .home{
  155. height:100%;
  156. background: no-repeat;
  157. background-color: #002055;
  158. .home-page{
  159. height:100%;
  160. .top-max-big-box{
  161. height:543px;
  162. display: flex;
  163. }
  164. .bottom-max-big-box{
  165. height:467px;
  166. display: flex;
  167. }
  168. }
  169. }
  170. </style>