<!-- 自定义下拉刷新与上拉加载演示(vue) -->
<template>
	<view class="content">
		<z-paging ref="paging" v-model="dataList" @query="queryList">
			<!-- 需要固定在顶部不滚动的view放在slot="top"的view中，如果需要跟着滚动，则不要设置slot="top" -->
			<!-- 注意！此处的z-tabs为独立的组件，可替换为第三方的tabs，若需要使用z-tabs，请在插件市场搜索z-tabs并引入，否则会报插件找不到的错误 -->
			<template #top>
				<view class="service-head-top">
					<view class="service-head-top-left">
						<image @click="backImg" src="../../static/fanhui.png" mode="widthFix"></image>
						<span>服务套餐</span>
					</view>
					<view>
						<uni-search-bar @service="serviceTrue" @confirm="search" :cancelext="'取消'" v-model="searchValue" @input="input"
						 @clear="clear">
						</uni-search-bar>
						<view class="search-btn" @click="searchBtn">
							搜索
						</view>
					</view>
				</view>
				<!-- <view class="fenlei">
					<z-tabs class="z-tabs-fenlei" :list="tabList" @change="tabChange" @changeClick="changeClick"/>
				</view> -->
			</template>
			
			<!-- 自定义下拉刷新view(如果use-custom-refresher为true且不设置下面的slot="refresher"，此时不用获取refresherStatus，会自动使用z-paging自带的下拉刷新view) -->

			<!-- 注意注意注意！！字节跳动小程序中自定义下拉刷新不支持slot-scope，将导致custom-refresher无法显示 -->
			<!-- 如果是字节跳动小程序，请参照sticky-demo.vue中的写法，此处使用slot-scope是为了减少data中无关变量声明，降低依赖 -->
			<template #refresher="{refresherStatus}">
				<!-- 此处的custom-refresh为demo中自定义的组件，非z-paging的内置组件，请在实际项目中自行创建。这里插入什么view，下拉刷新就显示什么view -->
				<custom-refresher :status="refresherStatus" />
			</template>
			<!-- 自定义没有更多数据view -->
			<template #loadingMoreNoMore>
				<!-- 此处的custom-nomore为demo中自定义的组件，非z-paging的内置组件，请在实际项目中自行创建。这里插入什么view，没有更多数据就显示什么view -->
				<custom-nomore />
			</template>
			
			<!-- 如果希望其他view跟着页面滚动，可以放在z-paging标签内 -->
			<view class="item" v-for="(item,index) in dataList" :key="index" @click="itemClick(item)">
				<!-- <view class="item-title">{{item.title}}</view>
				<view class="item-detail">{{item.detail}}</view> -->
				<!-- <view class="item-line"></view> -->
				<view class="item-img">
					<image :src="item.packageImg" mode=""></image>
					<span class="img-span">{{item.status=='1'?'未用完':item.status=='2'?'退款':'已用完'}}</span>
				</view>
				<view class="item-view">
					<view class="item-view-title">
						{{item.title}}
					</view>
					<view class="item-view-xiangmu">
						<span class="xiaoer item-view-biao">{{item.classifyName}}</span>
						<span>已售{{item.sales}}w+ | 好评{{item.esteemRate}}%</span>
					</view>
					<view class="item-view-jianjie">
						{{item.content}}
					</view>
					<view class="item-view-bottom">
						<view class="item-view-bottom-qian">
							<span>￥</span>
							<span>{{item.price}}</span>
							<span>/元套</span>
							<span>{{item.oldPrice}}</span>
						</view>
						<view class="item-view-bottom-btn">
							查看
						</view>
					</view>
				</view>	
			</view>
		</z-paging>
		
	</view>
</template>

<script>
	export default {
		data() {
			return {
				myId: '',
				// v-model绑定的这个变量不要在分页请求结束中自己赋值！！！
				dataList: [],
				tabList: [],
				typeData:'104',
				tabIndex: 0,
				searchValue:'',
				serviceTrue:true,
				page:1,
				limit:10,
				titleNmae:''
			}
		},
		onLoad(){
			this.myId = uni.getStorageSync('userId')
			this.getData()
		},
		methods: {
			input(res) {//搜索 输入框
				this.searchValue=res;
			},
			searchBtn(){//搜索按钮
				if(this.searchValue!=""){
					this.getData()
				}
			},
			getData(){
				let data = {
						  userId: this.myId,
						  type: this.typeData,
						  page: this.page,
						  limit:  this.limit,
						  title:this.searchValue,
						}
				this.$Request.get('/app/user/package/findMyPackageList', data).then(res => {
					if (res.code == 0) {
						this.dataList=res.data.records;
					}
				})
			},
			tabChange(index) {
				this.tabIndex = index;
				//当切换tab或搜索时请调用组件的reload方法，请勿直接调用：queryList方法！！
				//调用reload时参数传true则代表reload时触发下拉刷新效果，不传或false则代表取消此效果
				this.$refs.paging.reload(true);
			},
			queryList(pageNo, pageSize) {
				// console.log(pageNo,pageSize,this.tabIndex)
				// 组件加载时会自动触发此方法，因此默认页面加载时会自动触发，无需手动调用
				// 这里的pageNo和pageSize会自动计算好，直接传给服务器即可
				// 模拟请求服务器获取分页数据，请替换成自己的网络请求
				const params = {
					userId: this.myId,
					page: pageNo,
					limit: pageSize,
					type: this.typeData,
					title:''
				}
				this.$Request.get('/app/user/package/findMyPackageList',params).then(res => {
					// 将请求的结果数组传递给z-paging
					this.$refs.paging.complete(res.data.records);
				}).catch(res => {
					// 如果请求失败写this.$refs.paging.complete(false);
					// 注意，每次都需要在catch中写这句话很麻烦，z-paging提供了方案可以全局统一处理
					// 在底层的网络请求抛出异常时，写uni.$emit('z-paging-error-emit');即可
					this.$refs.paging.complete(false);
				})
			},
			
			backImg(){//返回上一页
				uni.reLaunch({
					url:'/pages/my/index'
				})
			},	
			clear(res) {
				this.getData()
			},
			itemClick(item) {
				uni.navigateTo({
					url:'/pages/my/serviceOderDrtail?id='+item.id+'&limit='+this.limit+'&page='+this.page+'&name='+'my'
				})
				
			}
		}
	}
</script>

<style scoped>
	.img-span{
		padding: 2px 5px;
		font-weight: 400;
		font-size: 8px;
		color: #FFFFFF;
		background: linear-gradient(-90deg, #FF6F48, #FF9E69);
		border-radius: 7px 0px 7px 0px;
		position: absolute;
		bottom: 0px;
		right: 0;
		margin-bottom: 5px;
		margin-right: 5px;
	}
	.item-view-bottom-btn{
		text-align: center;
		width: 131rpx;
		height: 50rpx;
		line-height: 50rpx;
		background: linear-gradient(90deg, #019C88, #0FA78B, #35C495);
		border-radius: 10rpx;
		font-weight: bold;
		font-size: 24rpx;
		color: #FFFFFF;
	}
	.item-view-bottom-qian span:nth-child(4){
		 font-weight: bold;
		 font-size: 31rpx;
		 color: #848484;
		 text-decoration-line: line-through;
		 margin-left: 5px;
	}
	.item-view-bottom-qian span:nth-child(1){
		 font-weight: 400;
		 font-size: 25rpx;
		 color: #F95900;
	}
	.item-view-bottom-qian span:nth-child(2){
		 font-weight: bold;
		 font-size: 36.81rpx;
		  color: #F95900;
	}
	.item-view-bottom-qian span:nth-child(3){
		 font-weight: 400;
		 font-size: 25rpx;
		 color: #F95900;
	}
	.item-view-bottom{
		width: 100%;
		display: flex;
		flex-direction: row;
		justify-content: space-between;
		align-items: center;
	}
	.item-view-jianjie{
		font-weight: 400;
		font-size: 22rpx;
		color: #848484;
		margin:5px 0px;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 2; /* 显示的行数，可以根据需要修改 */
		overflow: hidden;
		text-overflow: ellipsis;
	}
	.item-view-biao{
		padding: 1px 2px;
		border-radius: 6rpx;
	}
	.tuina{
		background-color:#d1f2df;
		color: #17984d;
	}
	.xiaoer{
		background-color:#f1f8d7;
		color: #58b314;
	}
	.taishi{
		background-color:#e5d5c6;
		color: #805d39;
	}
	.kangfu{
		background-color:#fcf3da;
		color: #ff8600;
	}
	.item-view-xiangmu span:nth-child(2){
		font-weight: normal;
		color: #666666;
		margin-left: 5px;
	}
	.item-view-xiangmu{
		width: 100%;
		display: flex;
		flex-direction: row;
		font-weight: 400;
		font-size: 21rpx;
		margin-top: 5px;
	}
	.item-view-title{
		font-weight: bold;
		font-size: 33rpx;
		color: #333333;
	}
	.item-view{
		width: 55%;
		height: 100%;
		display: flex;
		flex-direction: column;
		justify-content: center;
	}
	.item-img{
		width: 285rpx;
		height: 120px;
		border-radius: 14rpx;
		position: relative;
	}
	.item-img image{
		width: 100%;
		height: 100%;
	}
	.item {
		width: 100%;
		display: flex;
		flex-direction: row;
		justify-content: space-between;
		height: 140px;
		background: #FFFFFF;
		border-radius: 21rpx;
		margin-top:20px;
		align-items: center;
		padding: 0px 5px;
	}
	
	.item-detail {
		padding: 5rpx 15rpx;
		border-radius: 10rpx;
		font-size: 28rpx;
		color: white;
		background-color: #007AFF;
	}
	
	.item-line {
		position: absolute;
		bottom: 0rpx;
		left: 0rpx;
		height: 1px;
		width: 100%;
		background-color: #eeeeee;
	}
	/deep/.zp-paging-container{
		background-color: #f7f7f7;
		width:100%;
	}
	/deep/.zp-paging-container-content{
		width: 95%;
		margin: 0 auto;
	}
	.fenlei{
		display: flex;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}
	.index-fenl-title{
		width: 81rpx;
		text-align: center;
		position: relative;
		display: flex;
		flex-direction: column;
		align-items: center;
		font-weight: bold;
		font-size: 34rpx;
		color:#019C88;
	}
	.index-fenl-title-bottom{
		position: absolute;
		bottom: 0;
		margin-bottom: 0px;
		width: 81rpx;
		height: 14rpx;
		border-radius: 7rpx;
		background: linear-gradient(-48deg,rgba(1, 156, 136, 0.35),rgba(45, 196, 142, 0.35));
	}
	/deep/.uni-searchbar__cancel{
		display: none;
	}
	.search-btn{
		text-align: center;
		line-height: 31px;
		color: #fff;
		position: absolute;
		right: 0;
		top: 0;
		margin-top:9.4px;
		margin-right: 11px;
		height: 32px !important;
	}
	/deep/.uni-searchbar__box-icon-search,.search-btn{
		width: 101rpx;
		height: 60rpx;
		background: #18A689;
		border-radius: 31rpx;
		
	}
	/deep/.uni-searchbar__box{
		height: 31px;
		border-radius: 15px !important;
		background-color: #fff !important;
		border: 2px solid #E5E5E5;
		padding: 0px;
		display: flex;
		flex-direction: row;
		flex-flow: row-reverse;
		position: relative;
	}
	/deep/.uni-searchbar{
		width: 240px;
		border-radius: 31rpx;
	}
	.service-head-top-left image{
		width: 25px;
		height: 30rpx;
		margin-right: 10px;
	}
	.service-head-top-left span{
		font-weight: bold;
		font-size: 44rpx;
		color: #171717;
	}
	.service-head-top-left{
		display: flex;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}
	.service-head-top{
		width: 100%;
		display: flex;
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}
	
</style>
