index.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <script lang="ts" setup>
  2. import { dayMetricsEnum, monthMetricsEnum, weekMetricsEnum } from '/src/views/reportManage/dataCenter/utils/enum';
  3. import {
  4. getCardDayData,
  5. getCardWeekData,
  6. getCardMonthData,
  7. getLineForDay,
  8. getLineForWeek,
  9. getLineForMonth
  10. } from '/src/views/reportManage/dataCenter/api';
  11. import DateTendency from '/src/views/reportManage/dataCenter/normalDisplay/components/DateTendency/index.vue';
  12. import { onBeforeUnmount, provide, computed, ref, watch } from 'vue';
  13. import Selector from '/src/views/reportManage/dataCenter/normalDisplay/components/Selector/index.vue';
  14. import TableSelect from '/src/views/reportManage/dataCenter/normalDisplay/components/TableDataDisplay.vue';
  15. import DataPicker from '/src/views/reportManage/dataCenter/normalDisplay/components/DatePicker/index.vue';
  16. import emitter from '/src/utils/emitter';
  17. //筛选查询
  18. const selectorRef = ref(null);
  19. const taskIds = ref(null);
  20. //日周月选择
  21. const currentDate = ref({});
  22. const dateDimension = ref('day');
  23. provide('dateDimension', dateDimension);
  24. const queryParams = ref({
  25. currentDate,
  26. taskIds
  27. });
  28. const handelDateChange = (date) => {
  29. currentDate.value = date;
  30. };
  31. // watch(currentDate, (value) => {
  32. // });
  33. emitter.on('DateTendency-dateChange', (value: string) => {
  34. dateDimension.value = value;
  35. // console.log('dateDimension', dateDimension.value);
  36. });
  37. provide('currentDate', currentDate);
  38. //选择器筛选后数据的任务id
  39. function updateDataChange(newId) {
  40. if (selectorRef.value) {
  41. taskIds.value = newId.value;
  42. // console.log('newId', newId.value);
  43. }
  44. }
  45. const currentMetricEnum = computed(() => {
  46. if (dateDimension.value === 'day') {
  47. return dayMetricsEnum;
  48. } else if (dateDimension.value === 'week') {
  49. return weekMetricsEnum;
  50. } else if (dateDimension.value === 'month') {
  51. return monthMetricsEnum;
  52. }
  53. });
  54. onBeforeUnmount(() => {
  55. emitter.all.clear();
  56. });
  57. </script>
  58. <template>
  59. <div>
  60. <el-card body-style="padding: 10px" class="mb-3.5 mt-3.5">
  61. <div class="custom-card-style flex gap-1.5 justify-between items-center my-1.5 mx-2 mb-5">
  62. <Selector ref="selectorRef" @update:updateData="updateDataChange" />
  63. <DataPicker class="flex-item" style="display: flex; align-items: center;" @dateChange="handelDateChange" />
  64. </div>
  65. <DateTendency
  66. :fetch-line-month="getLineForMonth"
  67. :fetch-line-week="getLineForWeek"
  68. :fetchCard="getCardDayData"
  69. :fetchCardMonth="getCardMonthData"
  70. :fetchCardWeek="getCardWeekData"
  71. :fetchLine="getLineForDay"
  72. :metricEnum="currentMetricEnum"
  73. :query="queryParams"
  74. >
  75. </DateTendency>
  76. </el-card>
  77. </div>
  78. <el-card>
  79. <TableSelect :taskIds="taskIds"></TableSelect>
  80. </el-card>
  81. </template>
  82. <style scoped>
  83. .custom-card-style {
  84. z-index: 999;
  85. border-radius: 8px;
  86. top: 0;
  87. }
  88. .el-card {
  89. border: none;
  90. background-color: #fff;
  91. box-shadow: 0px 0px 12px rgba(51, 89, 181, 0.16);
  92. }
  93. .el-card:hover {
  94. box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
  95. 0 4px 6px -2px rgba(234, 122, 167, 0.05);
  96. transition: all 0.2s ease-in-out;
  97. }
  98. </style>