App.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div id="app">
  3. <router-view class="router-view" />
  4. <vue-picture-viewer
  5. v-if="showPreviewImg"
  6. :img-data="previewImgs"
  7. :select-index="previewIndex"
  8. @close-viewer="showPreviewImg = false"
  9. />
  10. <xr-import
  11. v-if="showFixImport"
  12. :process-status="crmImportStatus"
  13. @click.native="fixImportClick"
  14. />
  15. <VideoPlayer ref="VideoPlayer" />
  16. </div>
  17. </template>
  18. <script>
  19. /** 常用图片预览创建组件 */
  20. import VuePictureViewer from "@/components/VuePictureViewer/index";
  21. import XrImport from "@/components/XrImport";
  22. import XrImportMixins from "@/components/XrImport/XrImportMixins";
  23. import { mapGetters, mapMutations } from "vuex";
  24. import cache from "@/utils/cache";
  25. export default {
  26. name: "App",
  27. components: {
  28. VuePictureViewer,
  29. XrImport,
  30. VideoPlayer: () => import("@/components/VideoPlayer"),
  31. },
  32. mixins: [XrImportMixins],
  33. data() {
  34. return {
  35. showPreviewImg: false,
  36. previewIndex: 0,
  37. previewImgs: [],
  38. };
  39. },
  40. computed: {
  41. ...mapGetters(["activeIndex", "userInfo"]),
  42. },
  43. watch: {
  44. $route(to, from) {
  45. this.showPreviewImg = false; // 切换页面隐藏图片预览
  46. if (this.$refs["VideoPlayer"]) {
  47. this.$refs["VideoPlayer"].close();
  48. }
  49. },
  50. },
  51. created() {
  52. let isBBDomain = false;
  53. if (
  54. process.env.IS_ALPHA === "0" &&
  55. location.host !== "kap.shenzhoubb.com"
  56. ) {
  57. isBBDomain = false;
  58. } else {
  59. isBBDomain = true;
  60. }
  61. this.SET_ISBBDOMAIN(isBBDomain);
  62. },
  63. mounted() {
  64. this.addBus();
  65. this.addDocumentVisibilityChange();
  66. this.setMinHeight();
  67. },
  68. beforeDestroy() {},
  69. methods: {
  70. ...mapMutations(["SET_ISBBDOMAIN"]),
  71. addDocumentVisibilityChange() {
  72. // 网页当前状态判断
  73. // hidden,
  74. var state, visibilityChange;
  75. if (typeof document.hidden !== "undefined") {
  76. // hidden = 'hidden'
  77. visibilityChange = "visibilitychange";
  78. state = "visibilityState";
  79. } else if (typeof document.mozHidden !== "undefined") {
  80. // hidden = 'mozHidden'
  81. visibilityChange = "mozvisibilitychange";
  82. state = "mozVisibilityState";
  83. } else if (typeof document.msHidden !== "undefined") {
  84. // hidden = 'msHidden'
  85. visibilityChange = "msvisibilitychange";
  86. state = "msVisibilityState";
  87. } else if (typeof document.webkitHidden !== "undefined") {
  88. // hidden = 'webkitHidden'
  89. visibilityChange = "webkitvisibilitychange";
  90. state = "webkitVisibilityState";
  91. }
  92. // 添加监听器,在title里显示状态变化
  93. document.addEventListener(
  94. visibilityChange,
  95. () => {
  96. if (document[state] == "visible") {
  97. if (cache.updateAxiosHeaders() && this.$route.name === "login") {
  98. window.location.reload();
  99. }
  100. }
  101. this.$bus.emit("document-visibility", document[state]);
  102. },
  103. false
  104. );
  105. },
  106. addBus() {
  107. var self = this;
  108. this.$bus.on("preview-image-bus", function (data) {
  109. self.previewIndex = data.index;
  110. self.previewImgs = data.data;
  111. self.showPreviewImg = true;
  112. });
  113. this.$bus.on("preview-video", (data) => {
  114. this.$refs["VideoPlayer"].showDialog(data);
  115. });
  116. },
  117. setMinHeight() {
  118. this.$nextTick(() => {
  119. const dpr = window.devicePixelRatio || 1;
  120. const clientWidth = document.body.clientWidth;
  121. const dom = document.getElementById("app");
  122. if (dpr !== 1 && clientWidth > 1600) {
  123. dom.style.minHeight = "800px";
  124. } else if (dpr === 1 && clientWidth > 1600) {
  125. dom.style.minWidth = "1650px";
  126. } else {
  127. // dom.style.minWidth = '1200px'
  128. dom.style.minHeight = "605px";
  129. }
  130. });
  131. },
  132. },
  133. };
  134. </script>
  135. <style>
  136. #app {
  137. width: 100%;
  138. position: relative;
  139. height: 100%;
  140. min-width: 1200px;
  141. min-height: 605px;
  142. }
  143. </style>