441 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			441 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						||
	<view class="page">
 | 
						||
		<u-navbar :title="bttit" :border-bottom="false" :background="bgc" title-color='#000' title-size='36'
 | 
						||
			height='58'></u-navbar>
 | 
						||
		<view class="box">
 | 
						||
			<view class="top">
 | 
						||
				<u-search placeholder="搜索" input-align="center" v-model="keyword" @custom="seach"></u-search>
 | 
						||
			</view>
 | 
						||
			<u-picker mode="time" v-model="show" :params="params" @confirm="confirm"></u-picker>
 | 
						||
			<view class="date">
 | 
						||
				<text @click="btnks(1)">{{selector}}</text> -- <text @click="btnks(2)">{{selectors}}</text>
 | 
						||
			</view>
 | 
						||
			<view class="jesx">
 | 
						||
				<view class="sx">金额筛选:</view><text
 | 
						||
					@click="btnaddid(1)">{{qishiprice == '' ? qishiprice + '起始金额' : qishiprice + '元'}} </text>
 | 
						||
				--
 | 
						||
				<text @click="btnaddid(2)">{{jieshuprice == '' ? jieshuprice + '结束金额' : jieshuprice + '元'}} </text>
 | 
						||
				<view class="cx" @click="btnchaxun">查询</view>
 | 
						||
			</view>
 | 
						||
 | 
						||
 | 
						||
			<!-- 店铺排行 -->
 | 
						||
			<view class="shoppm">
 | 
						||
				<view class="shopname">
 | 
						||
					<view class="one">店铺名称</view>
 | 
						||
					<view class="two">¥{{sytit}}(元)
 | 
						||
						<image @click="btnpx" src="https://api.ccttiot.com/smartmeter/img/static/usFoZqC3MrePH4pqCJe7" mode=""
 | 
						||
							style="display: inline-block;width: 46rpx;height: 46rpx;vertical-align: middle;"></image>
 | 
						||
					</view>
 | 
						||
				</view>
 | 
						||
				<view class="listshop" @scrolltolower="onReachBottom" v-for="(item,index) in listarr" :key="index">
 | 
						||
					<view class="nikename">
 | 
						||
						<text :style="{  
 | 
						||
                           width: '38rpx',  
 | 
						||
                           height: '38rpx',  
 | 
						||
                           background: '#ccc',  
 | 
						||
                           display: 'inline-block',  
 | 
						||
                           borderRadius: '50%',  
 | 
						||
                           textAlign: 'center',  
 | 
						||
                           marginRight: '14rpx',  
 | 
						||
                           fontSize: '24rpx',  
 | 
						||
                           lineHeight: '38rpx',  
 | 
						||
                           color: getColorByIndex(index)}">
 | 
						||
							{{index + 1}}</text>
 | 
						||
						{{item.storeName}}
 | 
						||
					</view>
 | 
						||
					<view class="price" v-if="sytit == '收益金额'">{{item.income}}</view>
 | 
						||
					<view class="price" v-else>{{item.flow}}</view>
 | 
						||
				</view>
 | 
						||
 | 
						||
				<view class="" style="width: 448rpx;height: 448rpx;margin: auto;margin-top: 100rpx;text-align: center;"
 | 
						||
					v-if="showflag">
 | 
						||
					<image style="width: 448rpx;height: 448rpx;"
 | 
						||
						src="https://api.ccttiot.com/smartmeter/img/static/ufLi6IZd5kh1MIEZFYTo" mode=""></image>
 | 
						||
					<view class="" style="font-size: 30rpx;color: #ccc;margin-top: 30rpx;">暂无更多店铺收益...</view>
 | 
						||
				</view>
 | 
						||
 | 
						||
			</view>
 | 
						||
		</view>
 | 
						||
 | 
						||
		<!-- 弹窗 -->
 | 
						||
		<view class="tanc" v-if="vipflag">
 | 
						||
			<view class="tit">{{textje}}</view>
 | 
						||
			<input type="text" v-model="jesum" />
 | 
						||
			<view class="xian"></view>
 | 
						||
			<view class="anniu">
 | 
						||
				<text @click="btnqx">取消</text> <text style="border-left: 1px solid #D8D8D8;color: #25CE88;"
 | 
						||
					@click="trueje">确定</text>
 | 
						||
			</view>
 | 
						||
		</view>
 | 
						||
		<view class="mask" v-if="vipflag"></view>
 | 
						||
 | 
						||
	</view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
	export default {
 | 
						||
		data() {
 | 
						||
			return {
 | 
						||
				params: {
 | 
						||
					year: true,
 | 
						||
					month: true,
 | 
						||
					day: true,
 | 
						||
					hour: false,
 | 
						||
					minute: false,
 | 
						||
					second: false
 | 
						||
				},
 | 
						||
				show: false,
 | 
						||
				selector: '',
 | 
						||
				selectors: '',
 | 
						||
				num: '',
 | 
						||
				vipflag: false,
 | 
						||
				textje: '请输入起始金额',
 | 
						||
				qishiprice: '',
 | 
						||
				jieshuprice: '',
 | 
						||
				jesum: '',
 | 
						||
				jeflag: '',
 | 
						||
				listarr: [],
 | 
						||
				pagesum: 1,
 | 
						||
				pagesize: 10,
 | 
						||
				pagenum: 1,
 | 
						||
				pagesize: 10, // 一页多少数据
 | 
						||
				isLoading: false, // 是否正在加载数据  
 | 
						||
				noMoreData: false, // 是否没有更多数据  
 | 
						||
				total: 0,
 | 
						||
				keyword: '',
 | 
						||
				bgc: {
 | 
						||
					background: '#25CE88'
 | 
						||
				},
 | 
						||
				showflag: false,
 | 
						||
				isAsc:'desc',
 | 
						||
				bttit:'',
 | 
						||
				sytit:''
 | 
						||
			}
 | 
						||
		},
 | 
						||
		onLoad(option) {
 | 
						||
			this.bttit = option.tit
 | 
						||
			this.sytit = option.tits
 | 
						||
			let today = new Date()
 | 
						||
			this.selector = this.formatDate(today)
 | 
						||
			this.selectors = this.formatDate(today)
 | 
						||
			this.getlist()
 | 
						||
		},
 | 
						||
		methods: {
 | 
						||
			btnchaxun() {
 | 
						||
				this.pagenum = 1
 | 
						||
				this.listarr = []
 | 
						||
				this.getlist()
 | 
						||
			},
 | 
						||
			seach(){
 | 
						||
				this.pagenum = 1
 | 
						||
				this.listarr = []
 | 
						||
				this.getlist()
 | 
						||
			},
 | 
						||
			btnpx(){
 | 
						||
				if(this.isAsc == 'asc'){
 | 
						||
					this.isAsc = 'desc'
 | 
						||
					this.pagenum = 1
 | 
						||
					this.listarr = []
 | 
						||
					this.getlist()
 | 
						||
				}else{
 | 
						||
					this.isAsc = 'asc'
 | 
						||
					this.pagenum = 1
 | 
						||
					this.listarr = []
 | 
						||
					this.getlist()
 | 
						||
				}
 | 
						||
				
 | 
						||
			},
 | 
						||
			getlist() {
 | 
						||
				this.$u.get('/agent/report/agent/storeRank?orderByColumn=' + 'income' + '&isAsc=' + this.isAsc +
 | 
						||
					'&startDate=' + this.selector + '&endDate=' + this.selectors + '&pageNum=' + this.pagenum +
 | 
						||
					'&pageSize=' + this.pagesize + '&startAmount=' + this.qishiprice + '&endAmount=' + this.jieshuprice + '&keyword=' + this.keyword + '&isAsc=' + this.isAsc).then(res => {
 | 
						||
					if (res.code == 200) {
 | 
						||
						this.total = res.total
 | 
						||
						if (this.total > 0) {
 | 
						||
							this.showflag = false
 | 
						||
						} else {
 | 
						||
							this.showflag = true
 | 
						||
						}
 | 
						||
						if (res.rows.length > 0) {
 | 
						||
							// 有数据,追加到列表  
 | 
						||
							this.listarr = this.listarr.concat(res.rows)
 | 
						||
							this.pagenum++
 | 
						||
						} else {
 | 
						||
							// 没有更多数据  
 | 
						||
							this.noMoreData = true;
 | 
						||
						}
 | 
						||
					}
 | 
						||
				})
 | 
						||
			},
 | 
						||
			onReachBottom() {
 | 
						||
				let sum = this.total / this.pagesize
 | 
						||
				if (this.pagenum - 1 < sum) {
 | 
						||
					this.getlist(); // 上拉加载更多  
 | 
						||
				} else {
 | 
						||
					uni.showToast({
 | 
						||
						title: '没有更多店铺收益了',
 | 
						||
						icon: 'none',
 | 
						||
						duration: 1000
 | 
						||
					})
 | 
						||
				}
 | 
						||
			},
 | 
						||
 | 
						||
			formatDate(date) {
 | 
						||
				let year = date.getFullYear();
 | 
						||
				let month = String(date.getMonth() + 1).padStart(2, '0');
 | 
						||
				let day = String(date.getDate()).padStart(2, '0');
 | 
						||
				return `${year}-${month}-${day}`;
 | 
						||
			},
 | 
						||
			btnks(num) {
 | 
						||
				this.show = true
 | 
						||
				if (num == 1) {
 | 
						||
					this.num = 1
 | 
						||
				} else {
 | 
						||
					this.num = 2
 | 
						||
				}
 | 
						||
			},
 | 
						||
			confirm(e) {
 | 
						||
				if (this.num == 1) {
 | 
						||
					this.selector = e.year + '-' + e.month + '-' + e.day
 | 
						||
				} else {
 | 
						||
					this.selectors = e.year + '-' + e.month + '-' + e.day
 | 
						||
				}
 | 
						||
			},
 | 
						||
			btnaddid(num) {
 | 
						||
				this.vipflag = true
 | 
						||
				if (num == 1) {
 | 
						||
					this.textje = '请输入起始金额'
 | 
						||
					this.jeflag = true
 | 
						||
				} else {
 | 
						||
					this.textje = '请输入结束金额'
 | 
						||
					this.jeflag = false
 | 
						||
				}
 | 
						||
			},
 | 
						||
			btnqx() {
 | 
						||
				this.vipflag = false
 | 
						||
			},
 | 
						||
			trueje() {
 | 
						||
				this.vipflag = false
 | 
						||
				// 为true是起始金额 为false是结束金额
 | 
						||
				if (this.jeflag == true) {
 | 
						||
					this.qishiprice = this.jesum
 | 
						||
					this.jesum = ''
 | 
						||
				} else {
 | 
						||
					this.jieshuprice = this.jesum
 | 
						||
					this.jesum = ''
 | 
						||
				}
 | 
						||
			},
 | 
						||
 | 
						||
			getColorByIndex(index) {
 | 
						||
				const colors = ['red', 'orange', 'green', 'black']; // 颜色数组  
 | 
						||
				return index < colors.length ? colors[index] : colors[3]; // 如果index小于颜色数组长度,返回对应颜色;否则返回黑色  
 | 
						||
			}
 | 
						||
 | 
						||
		}
 | 
						||
	}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss">
 | 
						||
	/deep/ .u-title,
 | 
						||
	/deep/ .uicon-nav-back {
 | 
						||
		padding-bottom: 40rpx;
 | 
						||
	}
 | 
						||
 | 
						||
	page {
 | 
						||
		// background: linear-gradient(180deg, #25CE88 0%, rgba(255, 255, 255, 0) 100%);
 | 
						||
	}
 | 
						||
 | 
						||
	.page {
 | 
						||
		width: 750rpx;
 | 
						||
		// position: fixed;
 | 
						||
		// top: 0;
 | 
						||
		// left: 0;
 | 
						||
 | 
						||
		.mask {
 | 
						||
			width: 750rpx;
 | 
						||
			height: 100vh;
 | 
						||
			background: #000000;
 | 
						||
			border-radius: 0rpx 0rpx 0rpx 0rpx;
 | 
						||
			opacity: 0.2;
 | 
						||
			z-index: 1;
 | 
						||
			position: fixed;
 | 
						||
			top: 0;
 | 
						||
			left: 0;
 | 
						||
		}
 | 
						||
 | 
						||
		.box {
 | 
						||
			width: 750rpx;
 | 
						||
			height: 1440rpx;
 | 
						||
			background: #F4F5F7;
 | 
						||
			border-radius: 0rpx 0rpx 0rpx 0rpx;
 | 
						||
 | 
						||
			.shoppm {
 | 
						||
				.listshop {
 | 
						||
					padding: 24rpx 48rpx;
 | 
						||
					box-sizing: border-box;
 | 
						||
					display: flex;
 | 
						||
					justify-content: space-between;
 | 
						||
					border-bottom: 1rpx solid #F0F0F0;
 | 
						||
					font-size: 28rpx;
 | 
						||
					color: #3D3D3D;
 | 
						||
 | 
						||
					.nikename {}
 | 
						||
				}
 | 
						||
 | 
						||
				.shopname {
 | 
						||
					display: flex;
 | 
						||
					justify-content: space-between;
 | 
						||
					padding: 0rpx 48rpx;
 | 
						||
					box-sizing: border-box;
 | 
						||
					margin-top: 60rpx;
 | 
						||
					border-bottom: 1rpx solid #F0F0F0;
 | 
						||
					padding-bottom: 24rpx;
 | 
						||
 | 
						||
					.one {
 | 
						||
						font-size: 28rpx;
 | 
						||
						color: #808080;
 | 
						||
					}
 | 
						||
 | 
						||
					.two {
 | 
						||
						font-weight: 600;
 | 
						||
						font-size: 28rpx;
 | 
						||
						color: #3D3D3D;
 | 
						||
					}
 | 
						||
				}
 | 
						||
			}
 | 
						||
 | 
						||
			.jesx {
 | 
						||
				display: flex;
 | 
						||
				justify-content: space-between;
 | 
						||
				margin-top: 32rpx;
 | 
						||
				padding: 0 22rpx;
 | 
						||
				box-sizing: border-box;
 | 
						||
 | 
						||
				text {
 | 
						||
					padding: 6rpx 18rpx;
 | 
						||
					box-sizing: border-box;
 | 
						||
					background: #eee;
 | 
						||
					border-radius: 10rpx 10rpx 10rpx 10rpx;
 | 
						||
					font-size: 24rpx;
 | 
						||
					color: #808080;
 | 
						||
				}
 | 
						||
 | 
						||
				.sx {
 | 
						||
					font-size: 24rpx;
 | 
						||
					color: #3D3D3D;
 | 
						||
					width: 120rpx;
 | 
						||
					margin-top: 6rpx;
 | 
						||
				}
 | 
						||
 | 
						||
				.cx {
 | 
						||
					width: 100rpx;
 | 
						||
					margin-right: 20rpx;
 | 
						||
					text-align: center;
 | 
						||
					font-size: 24rpx;
 | 
						||
					color: #FFFFFF;
 | 
						||
					height: 46rpx;
 | 
						||
					line-height: 46rpx;
 | 
						||
					background: #25CE88;
 | 
						||
					border-radius: 10rpx 10rpx 10rpx 10rpx;
 | 
						||
				}
 | 
						||
			}
 | 
						||
 | 
						||
			.date {
 | 
						||
				padding-left: 80rpx;
 | 
						||
				padding-right: 80rpx;
 | 
						||
				box-sizing: border-box;
 | 
						||
				display: flex;
 | 
						||
				justify-content: space-between;
 | 
						||
				margin-top: 26rpx;
 | 
						||
 | 
						||
				text {
 | 
						||
					padding: 6rpx 18rpx;
 | 
						||
					box-sizing: border-box;
 | 
						||
					background: #eee;
 | 
						||
					border-radius: 10rpx 10rpx 10rpx 10rpx;
 | 
						||
					font-size: 24rpx;
 | 
						||
					color: #808080;
 | 
						||
				}
 | 
						||
			}
 | 
						||
 | 
						||
			.top {
 | 
						||
				padding: 28rpx 32rpx;
 | 
						||
				box-sizing: border-box;
 | 
						||
 | 
						||
				/deep/ .u-content {
 | 
						||
					border: 1px solid #ccc;
 | 
						||
					border-radius: 50rpx 0 0 50rpx !important;
 | 
						||
				}
 | 
						||
 | 
						||
				/deep/ .u-action {
 | 
						||
					border-radius: 0 50rpx 50rpx 0 !important;
 | 
						||
					width: 112rpx;
 | 
						||
					height: 65rpx;
 | 
						||
					line-height: 65rpx;
 | 
						||
					border: 2rpx solid #ccc;
 | 
						||
					margin-left: 0;
 | 
						||
					color: #3D3D3D;
 | 
						||
					background-color: #f2f2f2;
 | 
						||
				}
 | 
						||
			}
 | 
						||
		}
 | 
						||
 | 
						||
		.tanc {
 | 
						||
			width: 610rpx;
 | 
						||
			height: 282rpx;
 | 
						||
			background: #FFFFFF;
 | 
						||
			border-radius: 30rpx 30rpx 30rpx 30rpx;
 | 
						||
			position: fixed;
 | 
						||
			top: 628rpx;
 | 
						||
			left: 50%;
 | 
						||
			transform: translateX(-50%);
 | 
						||
			z-index: 2;
 | 
						||
 | 
						||
			.tit {
 | 
						||
				width: 100%;
 | 
						||
				text-align: center;
 | 
						||
				margin-top: 28rpx;
 | 
						||
				font-weight: 500;
 | 
						||
				font-size: 32rpx;
 | 
						||
				color: #3D3D3D;
 | 
						||
			}
 | 
						||
 | 
						||
			input {
 | 
						||
				width: 504rpx;
 | 
						||
				height: 62rpx;
 | 
						||
				background: #EEEEEE;
 | 
						||
				border-radius: 6rpx 6rpx 6rpx 6rpx;
 | 
						||
				margin: auto;
 | 
						||
				margin-top: 22rpx;
 | 
						||
				padding-left: 20rpx;
 | 
						||
			}
 | 
						||
 | 
						||
			.xian {
 | 
						||
				width: 610rpx;
 | 
						||
				height: 2rpx;
 | 
						||
				background: #D8D8D8;
 | 
						||
				border-radius: 0rpx 0rpx 0rpx 0rpx;
 | 
						||
				margin-top: 26rpx;
 | 
						||
			}
 | 
						||
 | 
						||
			.anniu {
 | 
						||
				display: flex;
 | 
						||
				justify-content: space-between;
 | 
						||
				height: 98rpx;
 | 
						||
 | 
						||
				text {
 | 
						||
					padding: 24rpx;
 | 
						||
					text-align: center;
 | 
						||
					box-sizing: border-box;
 | 
						||
					font-weight: 500;
 | 
						||
					font-size: 36rpx;
 | 
						||
					color: #3D3D3D;
 | 
						||
					display: inline-block;
 | 
						||
					width: 100%;
 | 
						||
					height: 100rpx;
 | 
						||
				}
 | 
						||
			}
 | 
						||
		}
 | 
						||
	}
 | 
						||
</style> |