index.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <template>
  2. <el-row class="panel-group" :gutter="40">
  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">员工数量</div>
  10. <count-to class="card-panel-num" :startVal="0" :endVal="userTotal" :duration="2600"></count-to>
  11. </div>
  12. </div>
  13. </el-col>
  14. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  15. <div class='card-panel' @click="handleSetLineChartData('newVisitis')">
  16. <div class="card-panel-icon-wrapper icon-message">
  17. <svg-icon icon-class="people" class-name="card-panel-icon" />
  18. </div>
  19. <div class="card-panel-description">
  20. <div class="card-panel-text">游客数量</div>
  21. <count-to class="card-panel-num" :startVal="0" :endVal="visitorsTotal" :duration="2600"></count-to>
  22. </div>
  23. </div>
  24. </el-col>
  25. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  26. <div class='card-panel' @click="handleSetLineChartData('newVisitis')">
  27. <div class="card-panel-icon-wrapper icon-people">
  28. <svg-icon icon-class="magnifying-glass" class-name="card-panel-icon" />
  29. </div>
  30. <div class="card-panel-description">
  31. <div class="card-panel-text">待审核数量</div>
  32. <count-to class="card-panel-num" :startVal="0" :endVal="awaitAuditTotal" :duration="2600"></count-to>
  33. </div>
  34. </div>
  35. </el-col>
  36. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  37. <div class='card-panel' @click="handleSetLineChartData('newVisitis')">
  38. <div class="card-panel-icon-wrapper icon-shoppingCard">
  39. <svg-icon icon-class="user" class-name="card-panel-icon" />
  40. </div>
  41. <div class="card-panel-description">
  42. <div class="card-panel-text">昨日浏览人数</div>
  43. <count-to class="card-panel-num" :startVal="0" :endVal="yesterdayTotal" :duration="2600"></count-to>
  44. </div>
  45. </div>
  46. </el-col>
  47. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  48. <div class='card-panel' @click="handleSetLineChartData('newVisitis')">
  49. <div class="card-panel-icon-wrapper icon-shoppingCard">
  50. <svg-icon icon-class="group" class-name="card-panel-icon" />
  51. </div>
  52. <div class="card-panel-description">
  53. <div class="card-panel-text">待审核圈子数量</div>
  54. <count-to class="card-panel-num" :startVal="0" :endVal="groupTotal" :duration="2600"></count-to>
  55. </div>
  56. </div>
  57. </el-col>
  58. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  59. <div class='card-panel' @click="handleSetLineChartData('newVisitis')">
  60. <div class="card-panel-icon-wrapper icon-shoppingCard">
  61. <svg-icon icon-class="raise-your-hand-to-ask" class-name="card-panel-icon" />
  62. </div>
  63. <div class="card-panel-description">
  64. <div class="card-panel-text">提问待回答数量</div>
  65. <count-to class="card-panel-num" :startVal="0" :endVal="questionTotal" :duration="2600"></count-to>
  66. </div>
  67. </div>
  68. </el-col>
  69. <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
  70. <div class='card-panel' @click="handleSetLineChartData('newVisitis')">
  71. <div class="card-panel-icon-wrapper icon-shoppingCard">
  72. <svg-icon icon-class="edit" class-name="card-panel-icon" />
  73. </div>
  74. <div class="card-panel-description">
  75. <div class="card-panel-text">今日评论数量</div>
  76. <count-to class="card-panel-num" :startVal="0" :endVal="todayTotal" :duration="2600"></count-to>
  77. </div>
  78. </div>
  79. </el-col>
  80. </el-row>
  81. </template>
  82. <script>
  83. import { info } from '@/api/dashboard'
  84. import CountTo from 'vue-count-to'
  85. export default {
  86. components: {
  87. CountTo
  88. },
  89. data() {
  90. return {
  91. userTotal: 0,//校友录数量
  92. visitorsTotal: 0,//游客数量
  93. awaitAuditTotal: 0,//待审核数量
  94. yesterdayTotal: 0,//昨日浏览人数
  95. todayTotal:0,//今日评论数量
  96. groupTotal:0,//圈子待审核数量
  97. questionTotal:0,//提问待回答数量
  98. goodsTotal: 0,
  99. productTotal: 0,
  100. orderTotal: 0
  101. }
  102. },
  103. methods: {
  104. handleSetLineChartData(type) {
  105. this.$emit('handleSetLineChartData', type)
  106. }
  107. },
  108. created() {
  109. info(this.listQuery).then(response => {
  110. this.userTotal = response.data.data.userTotal
  111. this.visitorsTotal = response.data.data.visitorsTotal
  112. this.awaitAuditTotal = response.data.data.awaitAuditTotal
  113. this.yesterdayTotal = response.data.data.yesterdayTotal
  114. this.todayTotal = response.data.data.todayTotal
  115. this.groupTotal = response.data.data.groupTotal
  116. this.questionTotal = response.data.data.questionTotal
  117. // this.goodsTotal = response.data.data.goodsTotal
  118. // this.productTotal = response.data.data.productTotal
  119. // this.orderTotal = response.data.data.orderTotal
  120. })
  121. }
  122. }
  123. </script>
  124. <style rel="stylesheet/scss" lang="scss" scoped>
  125. .panel-group {
  126. margin-top: 18px;
  127. .card-panel-col{
  128. margin-bottom: 32px;
  129. }
  130. .card-panel {
  131. height: 108px;
  132. cursor: pointer;
  133. font-size: 12px;
  134. position: relative;
  135. overflow: hidden;
  136. color: #666;
  137. background: #fff;
  138. box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
  139. border-color: rgba(0, 0, 0, .05);
  140. &:hover {
  141. .card-panel-icon-wrapper {
  142. color: #fff;
  143. }
  144. .icon-people {
  145. background: #40c9c6;
  146. }
  147. .icon-message {
  148. background: #36a3f7;
  149. }
  150. .icon-money {
  151. background: #f4516c;
  152. }
  153. .icon-shoppingCard {
  154. background: #34bfa3
  155. }
  156. }
  157. .icon-people {
  158. color: #40c9c6;
  159. }
  160. .icon-message {
  161. color: #36a3f7;
  162. }
  163. .icon-money {
  164. color: #f4516c;
  165. }
  166. .icon-shoppingCard {
  167. color: #34bfa3
  168. }
  169. .card-panel-icon-wrapper {
  170. float: left;
  171. margin: 14px 0 0 14px;
  172. padding: 16px;
  173. transition: all 0.38s ease-out;
  174. border-radius: 6px;
  175. }
  176. .card-panel-icon {
  177. float: left;
  178. font-size: 48px;
  179. }
  180. .card-panel-description {
  181. float: right;
  182. font-weight: bold;
  183. margin: 26px;
  184. margin-left: 0px;
  185. .card-panel-text {
  186. line-height: 18px;
  187. color: rgba(0, 0, 0, 0.45);
  188. font-size: 16px;
  189. margin-bottom: 12px;
  190. }
  191. .card-panel-num {
  192. font-size: 20px;
  193. }
  194. }
  195. }
  196. }
  197. </style>