App.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <div id="app">
  3. <!-- IOS机器会跳转两次到其他路由,当from路由被缓存时,原因未知 -->
  4. <keep-alive >
  5. <!-- <transition name="fade"> -->
  6. <router-view v-if="$route.meta.keepAlive"></router-view>
  7. <!-- </transition> -->
  8. </keep-alive>
  9. <router-view v-if="!$route.meta.keepAlive"></router-view>
  10. <div class="loadingShadow" v-show="loading">
  11. <div class="loadData">
  12. <img src="https://skyforest.static.elaber.cn/detail/loading.gif" alt="" />
  13. <div class="loadingMsg">{{loadingMsg}}</div>
  14. </div>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. import {
  20. setStorage,
  21. getStorage,
  22. pxoveItem
  23. } from '@/utils/localStorage';
  24. export default {
  25. name: "App",
  26. // provide() {
  27. // return {
  28. // reload: this.reload,
  29. // };
  30. // },
  31. data() {
  32. return {
  33. themeColor: "rgba(0,97,232,1)",
  34. themeColor2: "rgba(0,97,232,0.2)",
  35. isRouterAlive: true,
  36. showAccountView: false, //是否显示用户账号列表
  37. acountList: [], //弹出层账号列表数据
  38. selectAccount: null, //选中的账号
  39. isIOS: false,
  40. include: []
  41. };
  42. },
  43. created() {
  44. let userId = this.$route.query.leavePhoneCustomerId ? this.$route.query.leavePhoneCustomerId : '129130';
  45. let xcxHouseId = this.$route.query.xcxHouseId ? this.$route.query.xcxHouseId : $config.xcxHouseId;
  46. let query = this.$route.query;
  47. // let xcxHouseId = '100296';
  48. if (userId) { //如果存在用户id
  49. this.$store.dispatch('setUserId', userId);
  50. }
  51. if (xcxHouseId) { //如果存在houseid
  52. this.$store.dispatch('setHouseId', xcxHouseId);
  53. }
  54. if (query) { //如果存在入参
  55. setStorage('queryObj', query);
  56. }
  57. let isIOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
  58. this.isIOS = isIOS;
  59. window.addEventListener('error', (error) => {
  60. // 区分是否是js错误
  61. if (error.message) {
  62. alert("error" + message)
  63. } else {
  64. alert('监测到E1004错误' + error);
  65. }
  66. }, true)
  67. window.addEventListener('beforeunload', function(event) {
  68. // 检查内存使用情况
  69. if (performance.memory.usedJSHeapSize >= performance.memory.jsHeapSizeLimit) {
  70. // 内存不足,执行重新加载页面的逻辑
  71. event.preventDefault();
  72. // window.location.reload();
  73. alert("**内存不足,页面重新载入**")
  74. }
  75. });
  76. // 监听页面隐藏事件
  77. window.addEventListener('pagehide', function(event) {
  78. // 判断页面是否因为内存不足而被卸载或隐藏
  79. if (event.persisted) {
  80. // 页面被卸载或隐藏,可以执行一些重载操作
  81. alert("**内存不足,页面重新载入ios**")
  82. }
  83. });
  84. // window.onerror = function(message,source,line,column,error) {
  85. // };
  86. },
  87. watch: {
  88. loading: {
  89. handler(newVal) {
  90. if (!newVal) {
  91. this.$store.state.loadingMsg = ''
  92. }
  93. }
  94. },
  95. },
  96. computed: {
  97. loading() {
  98. return this.$store.state.loading;
  99. },
  100. loadingMsg() {
  101. if (this.$store.state.loadingMsg) {
  102. return this.$store.state.loadingMsg;
  103. } else {
  104. return "正在查询,请耐心等待";
  105. }
  106. }
  107. },
  108. mounted() {
  109. // 禁止图片单机事件,防止出现图片点击浏览器自动预览功能
  110. document.body.addEventListener("click", function(e) {
  111. if (e.target.nodeName.toLowerCase() == "img") {
  112. e.preventDefault();
  113. }
  114. });
  115. },
  116. methods: {
  117. },
  118. };
  119. </script>
  120. <style>
  121. #app {
  122. font-family: Avenir, Helvetica, Arial, sans-serif;
  123. -webkit-font-smoothing: antialiased;
  124. -moz-osx-font-smoothing: grayscale;
  125. /* text-align: center;
  126. color: #2c3e50;
  127. margin-top: 60px; */
  128. }
  129. body {
  130. background: #181C28;
  131. }
  132. .el-tooltip__popper .popper__arrow,
  133. .el-tooltip__popper .popper__arrow::after {
  134. border-style: none !important;
  135. }
  136. .el-picker-panel__body .el-date-picker__header .el-picker-panel__icon-btn {
  137. color: #FFFFFF;
  138. }
  139. .el-picker-panel__body .el-date-picker__header .el-date-picker__header-label {
  140. color: #FFFFFF;
  141. }
  142. .el-picker-panel__body .el-picker-panel__content .el-date-table th {
  143. color: #FFFFFF;
  144. }
  145. </style>
  146. <style lang="scss" scoped>
  147. @import "./assets/common.scss";
  148. </style>