TopCardStatistic.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <!--
  2. * @Author: tengmingxue 1473375109@qq.com
  3. * @Date: 2023-09-13 10:06:22
  4. * @LastEditors: tengmingxue 1473375109@qq.com
  5. * @LastEditTime: 2024-03-04 14:20:36
  6. * @FilePath: \xld-gis-admin\src\views\dashboard\workbench\component\TopCardStatistic.vue
  7. * @Description: 统计卡片
  8. -->
  9. <template>
  10. <div class="card-statistic">
  11. <div class="card card1">
  12. <div class="data">
  13. <span class="label">数据容量</span>
  14. <span class="value">{{ dataSize }}GB</span>
  15. </div>
  16. </div>
  17. <div class="card card2">
  18. <div class="data">
  19. <span class="label">资源种类</span>
  20. <span class="value">{{ dataType }}类</span>
  21. </div>
  22. </div>
  23. <div class="card card3">
  24. <div class="data">
  25. <span class="label">支撑应用</span>
  26. <span class="value">{{ analysisProject }}个</span>
  27. </div>
  28. </div>
  29. <div class="card card4">
  30. <div class="data">
  31. <span class="label">资源访问</span>
  32. <span class="value">{{ supportNum }}次</span>
  33. </div>
  34. </div>
  35. </div>
  36. </template>
  37. <script lang="ts">
  38. import { defineComponent, onMounted, toRefs, onUnmounted, nextTick, reactive } from 'vue';
  39. import {
  40. queryApiUseCountMouths,
  41. querySupportApp,
  42. querySourceAccess,
  43. QueryDRResourceFileSize,
  44. } from '/@/api/interface/interface';
  45. import { list } from '/@/api/authorize/authorize';
  46. import { GetIServerRequestCount } from '/@/api/dashboard/index';
  47. export default defineComponent({
  48. name: 'TopCardStatistic',
  49. components: {},
  50. props: {
  51. statisticData: {
  52. type: Array,
  53. default: () => [],
  54. },
  55. },
  56. setup(props) {
  57. const data = reactive({
  58. interval: null,
  59. statisticData: props.statisticData,
  60. dataSize: '-',
  61. dataType: '5',
  62. analysisProject: '-',
  63. supportNum: '-',
  64. });
  65. nextTick(() => {});
  66. /**
  67. * 查询数据
  68. */
  69. const queryData = async () => {
  70. let supportNum = 0;
  71. let analysisProject = 0;
  72. // const res = await queryApiUseCountMouths({});
  73. let sysRes = await list({});
  74. let supportNumRes = await GetIServerRequestCount();
  75. if (supportNumRes && supportNumRes.resp_code === 0) {
  76. for(let item in supportNumRes.datas){
  77. supportNumRes.datas[item].map(op=>{
  78. supportNum += op['SUM(COUNT)']
  79. })
  80. }
  81. }
  82. if (sysRes) {
  83. analysisProject = sysRes.length;
  84. }
  85. data.analysisProject = analysisProject;
  86. data.supportNum = supportNum;
  87. //(1)数据容量统计 文件个数字段sumcount(SUMCOUNT),文件大小字段SUMSIZE
  88. const sizeRes = await QueryDRResourceFileSize({}) as any;
  89. if(sizeRes && sizeRes.length >0){
  90. let sumSize = 0
  91. sizeRes.map(item=>{
  92. sumSize += item.SUMSIZE
  93. })
  94. data.dataSize = parseFloat(sumSize.toFixed(2))
  95. }
  96. // //(2)查询支撑应用
  97. // const res2 = await querySupportApp() as any
  98. // if(res2) {
  99. // //支撑数据
  100. // }
  101. // //(3)查询资源访问
  102. // const res3 = await querySourceAccess({}) as any
  103. // if(res3 && res3.resp_cod === 0){}
  104. };
  105. onMounted(() => {
  106. if (data.interval) clearInterval(data.interval);
  107. data.interval = setInterval(() => {
  108. queryData();
  109. }, 3000);
  110. });
  111. onUnmounted(() => {
  112. if (data.interval) clearInterval(data.interval);
  113. });
  114. return {
  115. ...toRefs(data),
  116. queryData,
  117. };
  118. },
  119. });
  120. </script>
  121. <style lang="less" scoped>
  122. .card-statistic {
  123. height: 100%;
  124. width: 100%;
  125. display: flex;
  126. padding: 1rem 0;
  127. .card {
  128. display: flex;
  129. height: 100%;
  130. width: calc(100% - 3rem);
  131. margin: 0 3rem;
  132. justify-content: flex-end;
  133. align-items: center;
  134. background-size: 100% 100%;
  135. .data {
  136. height: 60%;
  137. width: 36%;
  138. .label {
  139. display: flex;
  140. width: 100%;
  141. height: 2rem;
  142. font-family: Source Han Sans CN;
  143. font-size: 1.112rem;
  144. font-weight: normal;
  145. line-height: normal;
  146. letter-spacing: 0em;
  147. color: #333333;
  148. }
  149. .value {
  150. display: flex;
  151. width: 100%;
  152. height: 2rem;
  153. font-family: Source Han Sans CN;
  154. font-size: 1.412rem;
  155. font-weight: bold;
  156. line-height: normal;
  157. letter-spacing: 0em;
  158. color: #333333;
  159. }
  160. }
  161. }
  162. .card1 {
  163. background-image: url('./images/data-size.png');
  164. }
  165. .card2 {
  166. background-image: url('./images/data-type.png');
  167. }
  168. .card3 {
  169. background-image: url('./images/support-analysis.png');
  170. }
  171. .card4 {
  172. background-image: url('./images/support-data.png');
  173. }
  174. }
  175. </style>