OperateMonitoringDate.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <page-layer>
  3. <template #header>
  4. <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
  5. end-placeholder="结束日期" :shortcuts="shortcuts"> </el-date-picker>
  6. <el-divider direction="vertical"></el-divider>
  7. <el-button icon="Search" type="primary" @click="query">查询</el-button>
  8. </template>
  9. <template #main>
  10. <xc-table :data="returnData" :openPaging="false" :height="48">
  11. <el-table-column type="index" label="序号" width="100">
  12. <template #default="scope">
  13. <span class="index_common">{{ scope.$index + 1 }}</span>
  14. </template>
  15. </el-table-column>
  16. <el-table-column prop="result" label="统计结果" width="500" show-overflow-tooltip>
  17. <template #default="scope">
  18. {{ scope.row.reportName }}:
  19. <span style="color: #fc0404;">{{ scope.row.overview }}</span>
  20. {{ scope.row.unit }}
  21. </template>
  22. </el-table-column>
  23. <el-table-column prop="timeFine" label="统计日期" width="220">
  24. <template #default="scope">
  25. <span>{{ kssj }} 至 {{ jssj }}</span>
  26. </template>
  27. </el-table-column>
  28. <el-table-column prop="port" label="操作" width="120">
  29. <template #default="scope">
  30. <el-button type="primary" size="small" @click="reportFirstInfo(scope.row)">详细信息</el-button>
  31. </template>
  32. </el-table-column>
  33. </xc-table>
  34. </template>
  35. </page-layer>
  36. <el-dialog :title="titleChart" v-model="fstDrawer" fullscreen destroy-on-close>
  37. <ReportFirstPage :reportFirst="reportFirst" />
  38. </el-dialog>
  39. </template>
  40. <script setup name="OperateMonitoring">
  41. import PageLayer from '@/layout/PageLayer.vue'
  42. import { shortcuts, clockinShortcuts } from '@/data/shortcuts'
  43. import { formatDate, getDateRangeFormatDate } from '@/utils/date'
  44. import { ref } from '@vue/reactivity'
  45. import router from "@/router"
  46. import { clone } from '@/utils/clone'
  47. import XcTable from "@/components/xiao-chan/xc-table/XcTable"
  48. import { selectReportPortal, selectReportGroup } from '@/api/reports/high-report'
  49. import ReportFirstPage from '@/components/operate-monitoring/ReportFirstPage.vue'
  50. const start = formatDate(clockinShortcuts[1].value[1])
  51. const end = formatDate(clockinShortcuts[1].value[1])
  52. const queryTerm = ref({})
  53. const kssj = ref('')
  54. const jssj = ref('')
  55. onMounted(() => {
  56. let path = router.currentRoute.value.path
  57. let _path = interceptStr(path, '/', 2)
  58. let val = router.options.routes.filter(e => e.path === '/operateMonitoring')[0].children;
  59. let param = val.filter(f => f.path === _path)[0].params
  60. queryTerm.value = param
  61. kssj.value = start
  62. jssj.value = end
  63. queryTerm.value.startTime = start;
  64. queryTerm.value.endTime = end + " 23:59:59";
  65. dateRange.value = [start, end];
  66. query();
  67. });
  68. const returnData = ref({
  69. currentPage: 1,
  70. pageSize: 30,
  71. total: 0,
  72. title: '',
  73. data: []
  74. });
  75. const dateRange = ref([]);
  76. const query = async () => {
  77. if (dateRange.value) {
  78. let dateS = getDateRangeFormatDate(dateRange.value);
  79. queryTerm.value.startTime = dateS.startTime;
  80. queryTerm.value.endTime = dateS.endTime;
  81. kssj.value = formatDate(dateRange.value[0])
  82. jssj.value = formatDate(dateRange.value[1])
  83. } else {
  84. queryTerm.value.startTime = start;
  85. queryTerm.value.endTime = end;
  86. ElMessage({
  87. type: "info",
  88. message: "默认查询当天的数据",
  89. duration: 2500,
  90. showClose: true,
  91. });
  92. }
  93. selectReportPortal(queryTerm.value)
  94. .then((res) => {
  95. returnData.value.data = res.data
  96. returnData.value.title = res.title
  97. });
  98. };
  99. // ------------------------------详细信息----------------------------------------
  100. const fstDrawer = ref(false)
  101. const reportFirst = ref({})
  102. const titleChart = ref('')
  103. const reportFirstInfo = (row) => {
  104. const params = {
  105. startTime: queryTerm.value.startTime,
  106. endTime: queryTerm.value.endTime,
  107. reportId: row.reportId,
  108. reportName: row.reportName,
  109. reportType: row.reportType,
  110. displayType: row.displayType,
  111. menuId: row.menuId,
  112. levelType: queryTerm.value.levelType,
  113. type: queryTerm.value.type,
  114. }
  115. selectReportGroup(params).then((res) => {
  116. reportFirst.value = res
  117. titleChart.value = res.title
  118. fstDrawer.value = true
  119. reportFirst.value.row = row
  120. reportFirst.value.kssj = kssj.value
  121. reportFirst.value.jssj = jssj.value
  122. reportFirst.value.params = clone(params)
  123. })
  124. }
  125. function interceptStr(str, ele, index) {
  126. let num = str.indexOf(ele) + 1;
  127. if (index <= 1) {
  128. str = str.substring(num);
  129. return str
  130. };
  131. str = str.substring(num);
  132. index--;
  133. return interceptStr(str, ele, index);
  134. }
  135. </script>
  136. <style scoped>
  137. .index_common {
  138. text-shadow: none;
  139. font-size: 10px;
  140. padding-top: 1px;
  141. padding-bottom: 3px;
  142. font-weight: normal;
  143. line-height: 12px;
  144. display: inline-block;
  145. min-width: 10px;
  146. padding: 3px 7px;
  147. text-align: center;
  148. white-space: nowrap;
  149. vertical-align: baseline;
  150. border-radius: 4em;
  151. color: #fff;
  152. background: #1e90ff;
  153. }
  154. </style>