RealTimeStatus.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div class="content">
  3. <div class="content-left">
  4. <DataViewLeft />
  5. </div>
  6. <div class="content-center">
  7. <div class="quantity-overview">
  8. <div class="quantity-overview-item">
  9. <div>今日总查获数</div>
  10. <div style="font-size: 26px;">{{ infoNumber.total }}</div>
  11. </div>
  12. <div class="quantity-overview-item">
  13. <div>今日移交公安</div>
  14. <div style="font-size: 26px;">{{ infoNumber.policeTotal }}</div>
  15. </div>
  16. <div class="quantity-overview-item">
  17. <div>今日隐匿携带</div>
  18. <div style="font-size: 26px;">{{ infoNumber.concealTotal }}</div>
  19. </div>
  20. </div>
  21. <ChannelsAndPersonnel />
  22. </div>
  23. <div class="content-right">
  24. <ClassTaskCompletionRank />
  25. <DepartmentalTaskCompletionRank />
  26. <PersonalTaskCompletionRank />
  27. </div>
  28. </div>
  29. </template>
  30. <script setup>
  31. import {
  32. DataViewLeft,
  33. ChannelsAndPersonnel,
  34. ClassTaskCompletionRank,
  35. DepartmentalTaskCompletionRank,
  36. PersonalTaskCompletionRank
  37. } from '../pageItems';
  38. import { getTotalSome } from '@/api/item/items'
  39. import { onMounted } from 'vue';
  40. import moment from 'moment'
  41. import { useTimeOut } from '../pageItems/useTimeOut'
  42. const infoNumber = ref({})
  43. useTimeOut(() => {
  44. getTotalSome({
  45. startDate: moment().format('YYYY-MM-DD'),
  46. endDate: moment().format('YYYY-MM-DD'),
  47. }).then(res => {
  48. infoNumber.value = res.data
  49. })
  50. })
  51. </script>
  52. <style lang="scss" scoped>
  53. .content {
  54. display: flex;
  55. width: 100%;
  56. height: 100%;
  57. column-gap: 10px;
  58. overflow: hidden;
  59. .content-left {
  60. width: 30%;
  61. height: 100%;
  62. display: flex;
  63. flex-direction: column;
  64. overflow: hidden;
  65. &>*:nth-child(1) {
  66. width: 100%;
  67. height: 50%;
  68. }
  69. &>*:nth-child(2) {
  70. width: 100%;
  71. height: 50%;
  72. }
  73. &>*:nth-child(3) {
  74. width: 100%;
  75. height: 32%;
  76. }
  77. }
  78. .content-center {
  79. flex: 1;
  80. min-width: 780px;
  81. height: 100%;
  82. display: flex;
  83. flex-direction: column;
  84. row-gap: 10px;
  85. overflow: hidden;
  86. .public-inheritance-style {
  87. width: 100%;
  88. display: flex;
  89. column-gap: 10px;
  90. }
  91. .quantity-overview {
  92. @extend .public-inheritance-style;
  93. height: 140px;
  94. color: #fff;
  95. font-size: 20px;
  96. display: flex;
  97. column-gap: 25px;
  98. padding: 20px 20px 10px;
  99. box-sizing: border-box;
  100. .quantity-overview-item {
  101. flex: 1;
  102. height: 100%;
  103. background: #051E40;
  104. display: flex;
  105. flex-direction: column;
  106. align-items: center;
  107. justify-content: center;
  108. row-gap: 10px;
  109. border-radius: 5px;
  110. font-weight: bold;
  111. }
  112. }
  113. }
  114. .content-right {
  115. width: 30%;
  116. height: 100%;
  117. display: flex;
  118. flex-direction: column;
  119. overflow: hidden;
  120. &>*:nth-child(1) {
  121. width: 100%;
  122. height: 36%;
  123. }
  124. &>*:nth-child(2) {
  125. width: 100%;
  126. height: 32%;
  127. }
  128. &>*:nth-child(3) {
  129. width: 100%;
  130. height: 32%;
  131. }
  132. }
  133. }
  134. </style>