linstener.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. // 常规列表混入
  2. export default {
  3. data() {
  4. return {
  5. stroes: this.$useStore(),
  6. resizeTime: true,
  7. windowWidth: 1920 + 1080,
  8. // windowWidth: 6144 + 2304,
  9. isVsFirePie: false,
  10. distance: 300, // 3D饼图大小配置
  11. isVsTab: false,
  12. current: 1,
  13. size: 20,
  14. //size: 6.25,
  15. };
  16. },
  17. watch: {
  18. "stroes.$state.typeTime" (val) {
  19. this.getData && this.getData(val);
  20. },
  21. "stroes.$state.timeList" (val) {
  22. this.getData && this.getData(val);
  23. },
  24. },
  25. mounted() {
  26. // window.addEventListener("resize", this.resizeTimeActions);
  27. },
  28. methods: {
  29. resizeTimeActions(list) {
  30. if (!this.resizeTime) return;
  31. this.resizeTime = false;
  32. setTimeout(() => {
  33. list.forEach((element) => {
  34. element && element.resize();
  35. });
  36. this.resizeTime = true;
  37. this.windowWidth = document.documentElement.clientWidth + document.documentElement.clientHeight;
  38. }, 300);
  39. },
  40. vsClick(val) {
  41. this[val] = !this[val];
  42. if (val === "isVsFirePie") {
  43. this.$nextTick(() => {
  44. this.$refs.firePie1 && this.$refs.firePie1.resize();
  45. this.$refs.firePie2 && this.$refs.firePie2.resize();
  46. });
  47. }
  48. },
  49. /**
  50. * @获取当前日期前七天的日期
  51. */
  52. getMonth() {
  53. let oneDay = 24 * 60 * 60 * 1000;
  54. let endTime = new Date(Date.now());
  55. endTime = this.formatterDate(endTime, "yyyy-MM-dd hh:mm:ss");
  56. let startTime = new Date(Date.now() - 30 * oneDay);
  57. startTime = this.formatterDate(startTime, "yyyy-MM-dd hh:mm:ss");
  58. const days = {
  59. startTime,
  60. endTime,
  61. };
  62. return days;
  63. },
  64. /**
  65. * @获取当前日期前七天的日期
  66. */
  67. getDays() {
  68. let oneDay = 24 * 60 * 60 * 1000;
  69. let endTime = new Date(Date.now());
  70. endTime = this.formatterDate(endTime, "yyyy-MM-dd hh:mm:ss");
  71. let startTime = new Date(Date.now() - 7 * oneDay);
  72. startTime = this.formatterDate(startTime, "yyyy-MM-dd hh:mm:ss");
  73. const days = {
  74. startTime,
  75. endTime,
  76. };
  77. return days;
  78. },
  79. /**
  80. * @处理公共日期格式
  81. */
  82. formatterDate(date, fmt) {
  83. let nowDate = {
  84. yyyy: date.getFullYear(), // 年
  85. MM: date.getMonth() + 1, // 月份
  86. dd: date.getDate(), //日
  87. hh: date.getHours(),
  88. mm: date.getMinutes(),
  89. ss: date.getSeconds(),
  90. };
  91. if (/(y+)/.test(fmt)) {
  92. fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  93. }
  94. for (var k in nowDate) {
  95. if (new RegExp("(" + k + ")").test(fmt)) {
  96. fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? nowDate[k] : ("00" + nowDate[k]).substr(("" + nowDate[k]).length));
  97. }
  98. }
  99. return fmt;
  100. },
  101. autoScroll(stop) {
  102. // 拿到表格中承载数据的div元素
  103. const divData = this.$refs.reportTable.$refs.bodyWrapper
  104. // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
  105. if (stop) {
  106. //再通过事件监听,监听到 组件销毁 后,再执行关闭计时器。
  107. window.clearInterval(this.scrolltimer)
  108. } else {
  109. this.scrolltimer = window.setInterval(() => {
  110. // 元素自增距离顶部1像素
  111. divData.scrollTop += 1
  112. // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
  113. if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) {
  114. // 重置table距离顶部距离
  115. divData.scrollTop = 0
  116. // 重置table距离顶部距离。值=(滚动到底部时,距离顶部的大小) - 整个高度/2
  117. // divData.scrollTop = divData.scrollTop - divData.scrollHeight / 2
  118. }
  119. }, 150) // 滚动速度
  120. }
  121. },
  122. autoScroll1(stop) {
  123. // 拿到表格中承载数据的div元素
  124. const divData = this.$refs.reportTable1.$refs.bodyWrapper
  125. // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
  126. if (stop) {
  127. //再通过事件监听,监听到 组件销毁 后,再执行关闭计时器。
  128. window.clearInterval(this.scrolltimer)
  129. } else {
  130. this.scrolltimer = window.setInterval(() => {
  131. // 元素自增距离顶部1像素
  132. divData.scrollTop += 1
  133. // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
  134. if (divData.clientHeight + divData.scrollTop == divData.scrollHeight) {
  135. // 重置table距离顶部距离
  136. divData.scrollTop = 0
  137. // 重置table距离顶部距离。值=(滚动到底部时,距离顶部的大小) - 整个高度/2
  138. // divData.scrollTop = divData.scrollTop - divData.scrollHeight / 2
  139. }
  140. }, 150) // 滚动速度
  141. }
  142. },
  143. },
  144. unmount() {
  145. window.removeEventListener("resize", this.resizeTimeActions, true);
  146. },
  147. };