<!-- 第一行统计数据 --> <template> <el-row :gutter="14"> <el-col :lg="4" :sm="8" :xs="24"> <div class="sa-wnk"> <img src="../../static/icon/icon-user.png" > <div class="sa-wnk-tv"> <p class="sa-wnk-title">用户</p> <p class="sa-wnk-value">{{sta.userCount}}</p> </div> </div> </el-col> <el-col :lg="4" :sm="8" :xs="24"> <div class="sa-wnk"> <img src="../../static/icon/icon-goods.png" > <div class="sa-wnk-tv"> <p class="sa-wnk-title">商品</p> <p class="sa-wnk-value">{{sta.goodsCount}}</p> </div> </div> </el-col> <el-col :lg="4" :sm="8" :xs="24"> <div class="sa-wnk"> <img src="../../static/icon/icon-order.png" > <div class="sa-wnk-tv"> <p class="sa-wnk-title">订单</p> <p class="sa-wnk-value">{{sta.orderCount}}</p> </div> </div> </el-col> <el-col :lg="4" :sm="8" :xs="24"> <div class="sa-wnk"> <img src="../../static/icon/icon-article.png" > <div class="sa-wnk-tv"> <p class="sa-wnk-title">文章</p> <p class="sa-wnk-value">{{sta.articleCount}}</p> </div> </div> </el-col> <el-col :lg="4" :sm="8" :xs="24"> <div class="sa-wnk"> <img src="../../static/icon/icon-comment.png" > <div class="sa-wnk-tv"> <p class="sa-wnk-title">评论</p> <p class="sa-wnk-value">{{sta.commentCount}}</p> </div> </div> </el-col> <el-col :lg="4" :sm="8" :xs="24"> <div class="sa-wnk"> <img src="../../static/icon/icon-money.png" > <div class="sa-wnk-tv"> <p class="sa-wnk-title">余额</p> <p class="sa-wnk-value">{{sta.moneyCount}}</p> </div> </div> </el-col> </el-row> </template> <script> module.exports = { data() { return { // 统计数据 sta: { userCount: 0, goodsCount: 0, orderCount: 0, articleCount: 0, commentCount: 0, moneyCount: 0, }, } }, methods: { // 数值跳动 // 对象、属性、结束值、所用时间 slowMotion: function(obj, prop, endValue, time) { let timeNow = 0; let fn = function() { // 如果已经接近 or 时间已到,则立即结束 var jdz = Math.abs(obj[prop] - endValue); if(jdz < 2 || timeNow >= time) { // console.log('到点了'); obj[prop] = endValue; } else { if(jdz < 100) { obj[prop] += 1; } else { obj[prop] += parseInt((endValue - obj[prop]) / 10); // 平均一下 } timeNow += 30; setTimeout(fn, 30); } } fn(); }, // 设置统计数据的数值 setStaDataValue: function(staData) { for (let key in staData) { this.slowMotion(this.sta, key, staData[key], 3000); } }, }, created() { // 写入数据 this.setStaDataValue({ userCount: 12361, goodsCount: 12541, orderCount: 63222, articleCount: 10368, commentCount: 2048, moneyCount: 13654.32, }); } } </script> <style scoped> /* 第一行 */ .sa-wnk{background-color: #FFF; border: 1px #ddd solid; margin-bottom: 14px; min-height: 100px; cursor: pointer; transition: all 0.3s; overflow: hidden;} .sa-wnk:hover{box-shadow: 0 0 20px #999;} .sa-wnk img{float: left; line-height: 100px; margin: 25px 0px 0 20px; width: 50px; height: 50px; vertical-align: middle;} .sa-wnk .sa-wnk-tv{float: left; margin-left: 10px; max-width: calc(100% - 100px);} .sa-wnk-title{margin-top: 25px; font-size: 16px;} .sa-wnk-value{margin-top: 4px; font-size: 24px; padding-bottom: 20px;} </style>