OperateMonitoringDate.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <div class="layout_container">
  3. <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. </header>
  9. <div class="layout_main layout_el-table">
  10. <xc-table :data="returnData" :openPaging="false" final-height="100%">
  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. </div>
  35. </div>
  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 {shortcuts, clockinShortcuts} from '@/data/shortcuts'
  42. import {formatDate, getDateRangeFormatDate} from '@/utils/date'
  43. import {ref} from 'vue'
  44. import {clone} from '@/utils/clone'
  45. import XcTable from "@/components/xiao-chan/xc-table/XcTable"
  46. import {selectReportPortal, selectReportGroup} from '@/api/reports/high-report'
  47. import ReportFirstPage from '@/components/operate-monitoring/ReportFirstPage.vue'
  48. import router from "@/router";
  49. const type = router.currentRoute.value.params.type
  50. const start = formatDate(clockinShortcuts[1].value[1])
  51. const end = formatDate(clockinShortcuts[1].value[1])
  52. const queryTerm = ref({
  53. startTime: '',
  54. endTime: '',
  55. reportType: 'cy',
  56. menuId: 123,
  57. levelType: '2',
  58. type: '2'
  59. })
  60. if(type === 'zy'){
  61. queryTerm.value.reportType = 'cy'
  62. queryTerm.value.menuId = 123
  63. queryTerm.value.levelType = '2'
  64. queryTerm.value.type = '2'
  65. } else if(type === 'mz'){
  66. queryTerm.value.reportType = 'mz'
  67. queryTerm.value.menuId = 124
  68. queryTerm.value.levelType = '2'
  69. queryTerm.value.type = '2'
  70. }
  71. const kssj = ref('')
  72. const jssj = ref('')
  73. onMounted(() => {
  74. kssj.value = start
  75. jssj.value = end
  76. queryTerm.value.startTime = start;
  77. queryTerm.value.endTime = end + " 23:59:59";
  78. dateRange.value = [start, end];
  79. });
  80. const returnData = ref({
  81. currentPage: 1,
  82. pageSize: 30,
  83. total: 0,
  84. title: '',
  85. data: []
  86. });
  87. const dateRange = ref([]);
  88. const query = async () => {
  89. if (dateRange.value) {
  90. let dateS = getDateRangeFormatDate(dateRange.value);
  91. queryTerm.value.startTime = dateS.startTime;
  92. queryTerm.value.endTime = dateS.endTime;
  93. kssj.value = formatDate(dateRange.value[0])
  94. jssj.value = formatDate(dateRange.value[1])
  95. } else {
  96. queryTerm.value.startTime = start;
  97. queryTerm.value.endTime = end;
  98. ElMessage({
  99. type: "info",
  100. message: "默认查询当天的数据",
  101. duration: 2500,
  102. showClose: true,
  103. });
  104. }
  105. selectReportPortal(queryTerm.value)
  106. .then((res) => {
  107. returnData.value.data = res.data
  108. returnData.value.title = res.title
  109. });
  110. };
  111. // ------------------------------详细信息----------------------------------------
  112. const fstDrawer = ref(false)
  113. const reportFirst = ref({})
  114. const titleChart = ref('')
  115. const reportFirstInfo = (row) => {
  116. const params = {
  117. startTime: queryTerm.value.startTime,
  118. endTime: queryTerm.value.endTime,
  119. reportId: row.reportId,
  120. reportName: row.reportName,
  121. reportType: row.reportType,
  122. displayType: row.displayType,
  123. menuId: row.menuId,
  124. levelType: queryTerm.value.levelType,
  125. type: queryTerm.value.type,
  126. }
  127. selectReportGroup(params).then((res) => {
  128. reportFirst.value = res
  129. titleChart.value = res.title
  130. fstDrawer.value = true
  131. reportFirst.value.row = row
  132. reportFirst.value.kssj = kssj.value
  133. reportFirst.value.jssj = jssj.value
  134. reportFirst.value.params = clone(params)
  135. })
  136. }
  137. function interceptStr(str, ele, index) {
  138. let num = str.indexOf(ele) + 1;
  139. if (index <= 1) {
  140. str = str.substring(num);
  141. return str
  142. }
  143. ;
  144. str = str.substring(num);
  145. index--;
  146. return interceptStr(str, ele, index);
  147. }
  148. </script>
  149. <style scoped>
  150. .index_common {
  151. text-shadow: none;
  152. font-size: 10px;
  153. padding-top: 1px;
  154. padding-bottom: 3px;
  155. font-weight: normal;
  156. line-height: 12px;
  157. display: inline-block;
  158. min-width: 10px;
  159. padding: 3px 7px;
  160. text-align: center;
  161. white-space: nowrap;
  162. vertical-align: baseline;
  163. border-radius: 4em;
  164. color: #fff;
  165. background: #1e90ff;
  166. }
  167. </style>