From 45fb4b11ad51bb38306765b11a6747402e382cee Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Sat, 20 Feb 2021 17:37:33 +0800 Subject: [PATCH] fix --- hive-app/pages/manager/storeRanking.vue | 211 ++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 154 insertions(+), 57 deletions(-) diff --git a/hive-app/pages/manager/storeRanking.vue b/hive-app/pages/manager/storeRanking.vue index 0d426e3..12643ff 100644 --- a/hive-app/pages/manager/storeRanking.vue +++ b/hive-app/pages/manager/storeRanking.vue @@ -1,59 +1,42 @@ <template> <!-- 门店排行榜 --> - <view> - <view class="header flex justify-end"> - <view class="flex flex-v"> - <text class="font-16 white">总计</text> - <text class="font-20 white mt-10">¥180,8088</text> - </view> + <view class="container" @click="isShowFilter = false"> + <view class="header"> + <view>总计</view> + <view class="font-20">¥{{totalAmount | formatNum}}</view> </view> - <view> - <h-tabs - class="tab" - :tabData="tabs" - :config="{ - color: '#abb1cc', - activeColor: '#518EFF', - underLineColor: '#518EFF', - underLineHeight: 6, - fontSize: '28', - underLineWidth: 60, - }" - /> - </view> + <h-tabs + class="tab" + :tabData="tabs" + @tabClick="tabChange" + :config="{ + color: '#abb1cc', + activeColor: '#518EFF', + underLineColor: '#518EFF', + underLineHeight: 6, + fontSize: '28', + underLineWidth: 60, + }" + /> <view class="content"> - <view class="content-row flex justify-between mt-10"> - <view class="flex align-center content-row-left"> - <image class="row-img" src="../../static/images/head-img.png"></image> - <view class="flex flex-v ml-10"> - <text class="font-16">时光秘境会所</text> - <text class="font-14 gray mt-10">¥23,960</text> + <view class="content-row" v-for="(item, index) in list"> + <view class="flex align-center"> + <image class="avatar" :src="item.photo?item.photo:'../../static/images/no-img.png'"></image> + <view> + <view class="title">{{item.name}}</view> + <view class="amount">¥{{item.amount | formatNum}}</view> </view> </view> - <image class="medal" mode="widthFix" src="../../static/images/medal1.png"></image> - </view> - <view class="content-row flex justify-between mt-10"> - <view class="flex align-center content-row-left"> - <image class="row-img" src="../../static/images/head-img.png"></image> - <view class="flex flex-v ml-10"> - <text class="font-16">时光秘境会所</text> - <text class="font-14 gray mt-10">¥23,960</text> - </view> - </view> - <image class="medal" mode="widthFix" src="../../static/images/medal2.png"></image> - </view> - <view class="content-row flex justify-between mt-10"> - <view class="flex align-center content-row-left"> - <image class="row-img" src="../../static/images/head-img.png"></image> - <view class="flex flex-v ml-10"> - <text class="font-16">时光秘境会所</text> - <text class="font-14 gray mt-10">¥23,960</text> - </view> - </view> - <image class="medal" mode="widthFix" src="../../static/images/medal3.png"></image> + <image v-if="index<3" class="medal" mode="widthFix" :src="'../../static/images/medal'+Number(index+1)+'.png'"></image> + <view v-else class="rank">{{index+1}}</view> </view> </view> - + <view class="drop-down" v-show="isShowFilter"> + <view class="drop-down-row" v-for="item in timeList"> + <text @click="timeChange(item)">{{item.label}}</text> + </view> + </view> + <no-record :isShow="!list.length" txt="暂无榜单排名"></no-record> </view> </template> @@ -75,35 +58,149 @@ name: '消耗榜' } ], + dataType: 1, + isShowFilter: false, + timeList: [{ + label: '年榜', + value: 3 + },{ + label: '月榜', + value: 2 + },{ + label: '日榜', + value: 1 + }], + type: 2, + list: [] } + }, + computed:{ + totalAmount(){ + let total = 0; + this.list.forEach((item) => { + total += item.amount + }) + return total; + } + }, + onLoad() { + this.loadList() + }, + onNavigationBarButtonTap(e) { + this.isShowFilter=!this.isShowFilter; + }, + methods:{ + tabChange(e){ + if(this.dataType == e+1){ + return; + } + this.dataType = e + 1; + this.loadList() + }, + timeChange(item){ + this.isShowFilter = false; + if(this.type == item.value){ + return; + } + this.type = item.value; + // #ifdef APP-PLUS + let webView = this.$mp.page.$getAppWebview(); + webView.setTitleNViewButtonStyle(1, { + text: item.label, + }); + // #endif + this.loadList(); + }, + loadList(){ + this.$httpUtils.request('/api/ranking/findShopAchieveRanking',{ + dataType: this.dataType, + type: this.type + },'POST').then((res) => { + if(res.status == 200){ + this.list = res.rows; + }else{ + this.list = []; + } + }) + } } } </script> <style> + page{ + height: 100%; + } + .container{ + min-height: 100%; + } .header{ background: url(../../static/images/ranking.png) no-repeat; background-size: 100% 100%; - padding: 30px; + padding: 30px 25px; + line-height: 30px; + text-align: right; + color: #FFFFFF; + font-size: 16px; } .content{ - padding: 0 10px; + padding: 10px 10px 0; } .content-row{ + display: flex; + align-items: center; + justify-content: space-between; border: 1px solid #EDEAF4; border-radius: 4px; box-shadow:0 6px 6px rgba(237,234,244,0.5); - padding: 0 10px; + padding: 10px; + margin-bottom: 10px; } - .content-row-left{ - padding: 10px 0; + .content-row .avatar{ + width: 60px; + height: 60px; + border-radius: 50%; + margin-right: 10px; } - .medal{ + .content-row .title{ + font-size: 16px; + margin-bottom: 8px; + } + .content-row .amount{ + font-size: 14px; + color: #a5abaf; + } + .content-row .medal{ width: 36px; } - .row-img{ - width: 64px; - height: 64px; + .content-row .rank{ + background: #F6F6F8; + width: 36px; + height: 36px; + line-height: 36px; border-radius: 50%; + text-align: center; + color: #a5abaf; + font-size: 16px; + } + .drop-down{ + width: 56px; + background: #F6F6F8; + border-radius: 4px; + padding: 0 5px; + position: absolute; + right: 10px; + top: 0; + z-index: 999; + color: #a5abaf; + font-size: 12px; + } + .drop-down-row{ + border-bottom: 1px solid #EDEAF4; + padding: 5px 0; + text-align: center; + } + .drop-down-row:nth-last-child(1){ + border: 0; } </style> -- Gitblit v1.9.1