PanelGroup.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. <template>
  2. <el-row :gutter="40" class="panel-group">
  3. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  4. <div class="card-panel" @click="handleSetLineChartData('newVisitis')">
  5. <div class="card-panel-icon-wrapper icon-people">
  6. <!-- <svg-icon icon-class="peoples" class-name="card-panel-icon" /> -->
  7. </div>
  8. <div class="card-panel-description">
  9. <div class="card-panel-text">
  10. 总扫码人次数
  11. </div>
  12. <count-to :start-val="0" :end-val="total" :duration="2600" class="card-panel-num" />
  13. </div>
  14. </div>
  15. </el-col>
  16. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  17. <div class="card-panel" @click="handleSetLineChartData('messages')">
  18. <div class="card-panel-icon-wrapper icon-message">
  19. <!-- <svg-icon icon-class="message" class-name="card-panel-icon" /> -->
  20. </div>
  21. <div class="card-panel-description">
  22. <div class="card-panel-text">
  23. 绿码
  24. </div>
  25. <count-to :start-val="0" :end-val="greenCode" :duration="3000" class="card-panel-num" />
  26. </div>
  27. </div>
  28. </el-col>
  29. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  30. <div class="card-panel" @click="handleSetLineChartData('purchases')">
  31. <div class="card-panel-icon-wrapper icon-money">
  32. <!-- <svg-icon icon-class="money" class-name="card-panel-icon" /> -->
  33. </div>
  34. <div class="card-panel-description">
  35. <div class="card-panel-text">
  36. 红码:
  37. <count-to :start-val="0" :end-val="redCode" :duration="3200" class="card-panel-num" /> <br>
  38. 灰码:
  39. <count-to :start-val="0" :end-val="gaeyCode" :duration="3200" class="card-panel-num" /> <br>
  40. 未申请:
  41. <count-to :start-val="0" :end-val="notapplied" :duration="3200" class="card-panel-num" />
  42. </div>
  43. </div>
  44. </div>
  45. </el-col>
  46. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  47. <div class="card-panel" @click="handleSetLineChartData('shoppings')">
  48. <div class="card-panel-icon-wrapper icon-shopping">
  49. <!-- <svg-icon icon-class="shopping" class-name="card-panel-icon" /> -->
  50. </div>
  51. <div class="card-panel-description">
  52. <div class="card-panel-text">
  53. 体温异常
  54. </div>
  55. <count-to :start-val="0" :end-val="emperature" :duration="3600" class="card-panel-num" />
  56. </div>
  57. </div>
  58. </el-col>
  59. </el-row>
  60. </template>
  61. <script>
  62. import CountTo from 'vue-count-to'
  63. export default {
  64. components: {
  65. CountTo
  66. },
  67. data(){
  68. return{
  69. total:102405,
  70. greenCode:81258,
  71. redCode:25,
  72. gaeyCode:39,
  73. notapplied:83,
  74. emperature:36974
  75. }
  76. },
  77. methods: {
  78. handleSetLineChartData(type) {
  79. this.$emit('handleSetLineChartData', type)
  80. }
  81. }
  82. }
  83. </script>
  84. <style lang="scss" scoped>
  85. .panel-group {
  86. margin-top: 18px;
  87. .card-panel-col {
  88. margin-bottom: 32px;
  89. }
  90. .card-panel {
  91. height: 108px;
  92. cursor: pointer;
  93. font-size: 12px;
  94. position: relative;
  95. overflow: hidden;
  96. color: #666;
  97. background: #fff;
  98. box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
  99. border-color: rgba(0, 0, 0, .05);
  100. &:hover {
  101. .card-panel-icon-wrapper {
  102. color: #fff;
  103. }
  104. .icon-people {
  105. background: url('../../assets/images/icon_htgl_smrs_selected.png') no-repeat;
  106. background-size: 100% 100%;
  107. }
  108. .icon-message {
  109. background: url('../../assets/images/icon_htgl_mzc_selected.png') no-repeat;
  110. background-size: 100% 100%;
  111. }
  112. .icon-money {
  113. background: url('../../assets/images/icon_htgl_myc_selected.png') no-repeat;
  114. background-size: 100% 100%;
  115. }
  116. .icon-shopping {
  117. background: url('../../assets/images/icon_htgl_wdyc_selected.png') no-repeat;
  118. background-size: 100% 100%;
  119. }
  120. }
  121. .icon-people {
  122. background: url('../../assets/images/icon_htgl_smrs_normal.png') no-repeat;
  123. background-size: 100% 100%;
  124. }
  125. .icon-message {
  126. background: url('../../assets/images/icon_htgl_mzc_normal.png') no-repeat;
  127. background-size: 100% 100%;
  128. }
  129. .icon-money {
  130. background: url('../../assets/images/icon_htgl_myc_normal.png') no-repeat;
  131. background-size: 100% 100%;
  132. }
  133. .icon-shopping {
  134. background: url('../../assets/images/icon_htgl_wdyc_normal.png') no-repeat;
  135. background-size: 100% 100%;
  136. }
  137. .card-panel-icon-wrapper {
  138. float: left;
  139. margin: 14px 0 0 14px;
  140. width: 80px;
  141. height: 80px;
  142. transition: all 0.38s ease-out;
  143. border-radius: 6px;
  144. }
  145. .card-panel-icon {
  146. float: left;
  147. font-size: 48px;
  148. }
  149. .card-panel-description {
  150. float: right;
  151. font-weight: bold;
  152. margin: 26px;
  153. margin-left: 0px;
  154. .card-panel-text {
  155. line-height: 18px;
  156. color: rgba(0, 0, 0, 0.45);
  157. font-size: 16px;
  158. margin-bottom: 12px;
  159. }
  160. .card-panel-num {
  161. font-size: 20px;
  162. color: #000;
  163. }
  164. }
  165. }
  166. }
  167. @media (max-width:550px) {
  168. .card-panel-description {
  169. display: none;
  170. }
  171. .card-panel-icon-wrapper {
  172. float: none !important;
  173. width: 100%;
  174. height: 100%;
  175. margin: 0 !important;
  176. .svg-icon {
  177. display: block;
  178. margin: 14px auto !important;
  179. float: none !important;
  180. }
  181. }
  182. }
  183. </style>