bundleMonitorTable.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <div class="dustMonitor">
  3. <div class="search-area">
  4. <a-row>
  5. <a-col :span="12">
  6. <div class="area-item">
  7. <div class="item-text">录入时间:</div>
  8. <span style="width: 240px; color: #fff">{{ createTime }}</span>
  9. </div>
  10. </a-col>
  11. <a-col :span="12">
  12. <div class="area-item">
  13. <div class="item-text">录入人员:</div>
  14. <span style="width: 240px; color: #fff">{{ createBy }}</span>
  15. </div>
  16. </a-col>
  17. </a-row>
  18. </div>
  19. <div class="content-area">
  20. <a-table :columns="bundleColumns" :data-source="tableData" size="small" class="tableW" :scroll="{ y: 300 }"> </a-table>
  21. </div>
  22. </div>
  23. </template>
  24. <script setup lang="ts">
  25. import { ref, onMounted, reactive } from 'vue';
  26. import { bundleColumns } from './comment.data';
  27. import { getInfoList, getAllFileList } from './comment.api';
  28. // import 'ant-design-vue/dist/antd.css'; // 引入样式
  29. let selectList = ref<any[]>([]);
  30. let jcddArr = ref<any[]>([]);
  31. let createBy = ref<any[]>([]);
  32. let createTime = ref<any[]>([]);
  33. let formSearch = reactive({
  34. pageNum: 1,
  35. pageSize: 1000,
  36. fileId: '',
  37. fileName: '',
  38. });
  39. const latentCount = ref(0); // 缓慢氧化阶段(潜伏期)
  40. const selfHeatingCount = ref(0); // 加速氧化阶段(自热期)
  41. const combustionCount = ref(0); // 剧烈氧化阶段(燃烧期)
  42. const latentPercent = ref(0); // 缓慢氧化阶段(潜伏期)
  43. const selfHeatingPercent = ref(0); // 加速氧化阶段(自热期)
  44. const combustionPercent = ref(0); // 剧烈氧化阶段(燃烧期)
  45. let tableData = ref<any[]>([]);
  46. let selectedFileId = ref<string | null>(null);
  47. //获取束管日报
  48. async function getTableList(params: any) {
  49. let res = await getInfoList({ type: 'bundle', ...params });
  50. const content = res.content;
  51. let contentArr = JSON.parse(content);
  52. createBy.value = res.createBy;
  53. createTime.value = res.createTime;
  54. latentCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '缓慢氧化阶段(潜伏期)').length;
  55. selfHeatingCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '加速氧化阶段(自热期)').length;
  56. combustionCount.value = contentArr.filter((item: any) => item.internalFireWarnLevel === '剧烈氧化阶段(燃烧期)').length;
  57. const total = contentArr.length;
  58. latentPercent.value = (latentCount.value / total) * 100;
  59. selfHeatingPercent.value = (selfHeatingCount.value / total) * 100;
  60. combustionPercent.value = (combustionCount.value / total) * 100;
  61. tableData.value = contentArr;
  62. }
  63. //获取所有文件列表
  64. async function getAllFile() {
  65. let res = await getAllFileList({ type: 'bundle' });
  66. selectList.value = res.records.map((item: any) => ({
  67. fileId: item.fileId,
  68. fileName: item.fileName,
  69. }));
  70. jcddArr.value = res.records.map((item: any) => ({
  71. fileId: item.jcdd,
  72. }));
  73. if (selectList.value.length > 0) {
  74. formSearch.fileId = selectList.value[0].fileId;
  75. getSearch();
  76. }
  77. }
  78. //查询
  79. function getSearch() {
  80. const selectedFile = selectList.value.find((item) => item.fileId === formSearch.fileId);
  81. const params = {
  82. fileId: formSearch.fileId,
  83. fileName: selectedFile ? selectedFile.fileName : '',
  84. };
  85. getTableList(params);
  86. }
  87. onMounted(() => {
  88. getTableList({ type: 'bundle' });
  89. getAllFile().then(() => {
  90. if (selectList.value.length > 0) {
  91. formSearch.fileId = selectList.value[0].fileId;
  92. selectedFileId.value = selectList.value[0].fileId;
  93. getSearch();
  94. }
  95. });
  96. });
  97. </script>
  98. <style lang="less" scoped>
  99. @ventSpace: zxm;
  100. .dustMonitor {
  101. .search-area {
  102. margin: 15px;
  103. .area-item {
  104. display: flex;
  105. align-items: center;
  106. .item-text {
  107. color: #fff;
  108. }
  109. }
  110. }
  111. .zxm-picker,
  112. .zxm-input {
  113. border: 1px solid #3ad8ff77;
  114. background-color: #ffffff00;
  115. color: #fff;
  116. }
  117. }
  118. :deep(.@{ventSpace}-table-body) {
  119. height: auto !important;
  120. tr > td {
  121. background: #ffffff00 !important;
  122. }
  123. tr.@{ventSpace}-table-row-selected {
  124. td {
  125. background: #007cc415 !important;
  126. }
  127. }
  128. }
  129. :deep(.jeecg-basic-table .@{ventSpace}-table-wrapper .@{ventSpace}-table-title) {
  130. min-height: 0;
  131. }
  132. :deep(.@{ventSpace}-pagination) {
  133. margin-right: 20px !important;
  134. }
  135. :deep(.zxm-table-thead > tr > th:last-child) {
  136. border-right: 1px solid #91e9fe55 !important;
  137. }
  138. </style>