<template>
	<view class="container operator clearfix">
		<view class="operator-top clearfix">
			<view class="operator-title">
				<view class="head"><image :src="shopLogo ? shopLogo : defalutLogo" mode=""></image></view>
				<view class="title">{{shopName}}</view>
			</view>
			<view class="operator-search">
				<view class="search-wrap">
					<view class="search-from name">
						<input class="input" type="text" v-model="listQuery.linkName" placeholder="请输入姓名" maxlength="6"/>
					</view>
					<view class="search-from phone">
						<input class="input" type="text" v-model="listQuery.mobile" placeholder="请输入手机号" maxlength="11"/>
					</view>
					<view class="search-from search">
						<button class="search-btn" type="default" @click.stop="searchOpertor">搜索</button>
					</view>
				</view>
			</view>
		</view>
		<view class="operator-main">
			<view v-if="isEmpty" class="empty-container">
				<view class="txt">暂无运营人员</view>
			</view>
			<view v-else class="operator-list">
				<scroll-view scroll-y="true" >
					<view class="list" v-for="(item, index) in operatorList" :key="index" @click.stop="showOperatorModel(item)">
						<view class="list-left">
							<view class="list-head"><image :src="item.avatarUrl ? item.avatarUrl : defalutLogo" mode=""></image></view>
							<view class="list-tel">
								<text class="txt">{{ item.linkName ? item.linkName : '' }}</text>
								<text class="txt">{{ item.mobile ? item.mobile : '' }}</text>
							</view>
						</view>
						<view class="list-opea">
							<view class="opea-type">
								<view class="opea-type-cell" v-if="item.effectiveFlag != null">
									<text class="iconfont icon-iconfontweixin" :style="{color: iconStautsColor(item.status)}"></text>
									<text :style="{color: rexpStautsColor(item.effectiveFlag)}">{{ rexpStautsText(item.effectiveFlag) }}</text>
								</view>
								<view class="opea-type-cell none" v-else>
									<text>- -</text>
								</view>
							</view>
							<view class="opea-del">
								<view class="opea-type-cell" @click.stop="deleteOperator(item.id)">
									<text class="iconfont icon-shanchu"></text>
									<text>删除</text>
								</view>
							</view>
						</view>
					</view>
					<!--加载loadding-->
					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
					<tui-nomore :visible="!pullUpOn" :backgroundColor="'#ffffff'" :text='nomoreText'></tui-nomore>
					<!--加载loadding-->
				</scroll-view>
			</view>
		</view>
		<div class="operator-btn" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
			<view class="add-btn" @click="this.$api.navigateTo('/pages/supplier/user/operator/addoperator')">添加运营人员</view>
		</div>
		<view class="operator-model" v-if="isOperatorModel" @click.stop="closeModel">
			<view class="operator-alert">
				<text class="iconfont icon-iconfontguanbi" @click.stop="closeModel"></text>
				<view class="content">
					<view class="ciew-t">姓名：{{modelData.linkName}}</view>
					<view class="ciew-t">手机号：{{modelData.mobile}}</view>
					<view class="ciew-t">邀请码：{{modelData.invitationCode ? modelData.invitationCode : '无'}}<text :style="{color: rexpStautsColor(modelData.status)}">{{modelStautsText(modelData.effectiveFlag)}}</text></view>
					<view class="ciew-t">邀请码有效期：{{modelData.effectiveDays ? modelData.effectiveDays : '0' }}天</view>
					<view class="ciew-t">状态：{{modelData.status == 2 ? '已绑定' : '未绑定'}}</view>
					<view class="ciew-t">添加时间：{{modelData.addTime}}</view>
					<view class="ciew-t">绑定时间：{{modelData.bindTime == null ? '无' : modelData.bindTime }}</view>
				</view>
				<view class="btn" v-if="modelData.status != 2" @click.stop="updateInvitationCode(modelData)">更新邀请码</view>
			</view>
		</view>
	</view>
</template>

<script>
	import authorize from '@/common/config/authorize.js'	
	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
	import tuiNomore from "@/components/tui-components/nomore/nomore"
	export default {
		components:{
			tuiLoadmore,
			tuiNomore,
		},
		data() {
			return {
				shopName:'',
				shopLogo:'',
				defalutLogo:'https://static.caimei365.com/app/img/icon/logo@3x.png',
				isEmpty:false,
				nomoreText: '上拉显示更多',
				hasNextPage:false,
				loadding: false,
				pullUpOn: true,
				pullFlag: true,
				allowDataStatus:true,
				wrapperHeight:'100%',
				scrollHeight:'',
				deleteAddressId:'',
				currPage:'',//当前页面
				prevPage:'',//上一个页面
				isOperatorModel:false,
				operatorList:[],
				isIphoneX:this.$store.state.isIphoneX,
				modelData:'',
				listQuery:{
					userId:0,
					linkName:'',
					mobile:'',
					pageNum:1,
					pageSize:10,
				}
			}
		},
		onLoad(){				
			this.setScrollHeight();
		},
		methods: {
			setScrollHeight() {
				// 窗口高度 - 底部距离
				setTimeout(()=> {
					const query = wx.createSelectorQuery().in(this);
					query.selectAll('.add-btn').boundingClientRect();
					query.exec(res => {
						if(res[0][0]){
							let winHeight = this.$api.getWindowHeight(),
								eleTop = res[0][0].top - 1;
								this.scrollHeight =  eleTop;
						}
					})
				}, 500)
			},
			GetHomePageData(){//初始化供应商信息
				this.$api.getStorage().then((resolve) =>{
					this.listQuery.userId = resolve.userId ? resolve.userId : 0
					this.ShopService.GetHomePageData({userId:this.listQuery.userId}).then(response =>{
						let data = response.data
						this.shopName = data.shop.name
						this.shopLogo = data.shop.logo
						this.listQuery.userID = data.shop.userID
						this.InitOperatorList()
					}).catch(error =>{
						this.$util.msg(error.msg,2000)
					})
				})	
			},
			searchOpertor(){//搜索
				this.listQuery.pageNum=1
				this.InitOperatorList()
			},
			InitOperatorList(){	//查询列表
				this.UserService.QueryOperatorList(this.listQuery).then(response =>{
					let responseData = response.data
					if(responseData.results&&responseData.results.length > 0){
						this.isEmpty = false
						this.hasNextPage = response.data.hasNextPage
						this.operatorList = responseData.results
						this.pullFlag = false;
						setTimeout(()=>{this.pullFlag = true;},500)
						if(this.hasNextPage){
							this.pullUpOn = false
							this.nomoreText = '上拉显示更多'
						}else{
							this.pullUpOn = true
							this.loadding = false
							this.nomoreText = '已至底部'
						}
					}else{
						this.isEmpty = true
					}
				}).catch(error =>{
					this.$util.msg(error.msg,2000)
				})
			},	
			getOnReachBottomData(){//上滑加载
				this.listQuery.pageNum+=1
				this.UserService.QueryOperatorList(this.listQuery).then(response =>{
					let responseData = response.data
					if(responseData.results&&responseData.results.length > 0){
						this.hasNextPage = response.data.hasNextPage
						this.operatorList = this.operatorList.concat(responseData.results) 
						this.pullFlag = false;// 防上拉暴滑
						setTimeout(()=>{this.pullFlag = true;},500)
						if(this.hasNextPage){
							this.pullUpOn = false
							this.nomoreText = '上拉显示更多'
						}else{
							this.pullUpOn = false
							this.loadding = false
							this.nomoreText = '已至底部'
						}
					}
				}).catch(error =>{
					this.$util.msg(error.msg,2000)
				})
			},
			showOperatorModel(item){
				this.isOperatorModel = true
				this.modelData = item
			},
			closeModel(){
				this.isOperatorModel = false
			},
			deleteOperator(id){//删除运营人员
				this.$util.modal('','确定删除运营人员吗？','确定删除','取消',true,() =>{
					this.UserService.PostDeleteOperator({id:id}).then(response =>{
						this.$util.msg('删除成功',2000,true,'success')
						setTimeout(()=>{
							this.InitOperatorList()
						},2000)
					}).catch(error =>{
						this.$util.msg(error.msg,2000)
					})
				})
			},
			updateInvitationCode(item){	//更新邀请码	
				this.$util.modal('','确定更新邀请码并发送给运营人员？','确定更新','取消',true,() =>{
					this.UserService.PostUpdateOperatorCode({id:item.id,status:item.status}).then(response =>{
						this.isOperatorModel = false
						this.$util.msg('更新邀请码成功',2000)
						setTimeout(()=>{
							this.InitOperatorList()
						},2000)
					}).catch(error =>{
						this.$util.msg(error.msg,2000)
					})
				})
			},
			rexpStautsText(n) {
			      let text = ''
			      switch (n) {
					case '':
						text = '--'
						break
			        case 1:
			          text = '邀请码有效'
			          break
			        case 2:
			          text = '邀请码已使用'
			          break
			        case 3:
			          text = '邀请码已过期'
			          break
			      }
			      return text
			},
			modelStautsText(n) {
			      let text = ''
			      switch (n) {
			        case 1:
			          text = '(有效)'
			          break
			        case 2:
			          text = '(已使用)'
			          break
			        case 3:
			          text = '(已过期)'
			          break
			      }
			      return text
			},
			rexpStautsColor(status) {
			  let textColor = ''
			  switch (status) {
				case 1:
				  textColor = '#55BB00'
				  break
				case 2:
				  textColor = '#0056BB'
				  break
				case 3:
				  textColor = '#BB0000'
				  break
			  }
			  return textColor
			},  
			iconStautsColor(status) {
			  let textColor = ''
			  if(status == 2){
				   textColor = '#09BB07'
			  }else{
				   textColor = '#DDDDDD'
			  }
			  return textColor
			},
		},
		onReachBottom() {
			if(this.hasNextPage){
				this.loadding = true
				this.pullUpOn = true
				this.getOnReachBottomData()
			}	
		},
		onShow() {
			this.GetHomePageData()
		}
	}
</script>

<style lang='scss'>
	page {
		height: auto;
	}
	page,.container{
		/* padding-bottom: 120upx; */
		background: #F7F7F7;
		border-top: 1px solid #EBEBEB;
	}
	.container{
		position: relative;
	}
	.operator-top{
		width: 702rpx;
		padding: 0 24rpx;
		height: 282rpx;
		background: #FFFFFF;
		position:fixed ;
		top: 0;
		left: 0;
		z-index: 999;
		.operator-title{
			width: 100%;
			height: 92rpx;
			padding: 34rpx 0;
			.title{
				width: 420rpx;
				float: left;
				font-size: $font-size-32;
				color: $text-color;
				line-height: 92rpx;
				text-align: left;
				margin-left: 20rpx;
				-o-text-overflow: ellipsis;
				text-overflow: ellipsis;
				display: -webkit-box;
				word-break: break-all;
				-webkit-box-orient: vertical;
				-webkit-line-clamp: 1;
				overflow: hidden;
			}
			.head{
				width: 92rpx;
				height: 92rpx;
				border-radius: 50%;
				border: 1px solid #ebebeb;
				float: left;
				image{
					width: 92rpx;
					height: 92rpx;
					border-radius: 50%;
				}
			}
		}
		.operator-search{
			width: 100%;
			height: auto;
			.search-from{
				width: 300rpx;
				height: 40rpx;
				padding: 20rpx;
				background: $sub-bg-color;
				border-radius: 40rpx;
				position: relative;
				margin-bottom: 20rpx;
				float: left;
				&.name{
					width: 180rpx;
					margin-right: 20rpx;
					.input{
						width: 180rpx;
						font-size: $font-size-28;
						color: $text-color;
						line-height: 40rpx;
						float: left;
						height: 40rpx;
					}
				}
				&.phone{
					width: 228rpx;
					margin-right: 20rpx;
					.input{
						width: 228rpx;
						padding-left:10rpx;
						font-size: $font-size-28;
						color: $text-color;
						line-height: 40rpx;
						float: left;
						height: 40rpx;
					}
				}
				&.search{
					width: 175rpx;
					padding: 0;
					background: #FFFFFF;
					.search-btn{
						width: 170rpx;
						height: 78rpx;
						border-radius: 39rpx;
						font-size: $font-size-28;
						color: #FFFFFF;
						line-height: 78rpx;
						background: $btn-confirm;
					}
				}
				.label{
					text-align: left;
					font-size: $font-size-28;
					color:$text-color;
					line-height: 40rpx;
					float: left;
				}
				
			}
			
		}
	}
	.operator-main{
		padding-top: 282rpx;
		padding-bottom: 120rpx;
	}
	.list{
		display: flex;
		align-items: center;
		width: 702rpx;
		height: 92rpx;
		padding: 24rpx;
		background: #FFFFFF;
		position: relative;
		border-bottom: 1px solid #EBEBEB;
		.list-left{
			display: flex;
			flex: 4;
			.list-head{
				width: 92rpx;
				height: 92rpx;
				border-radius: 50%;
				image{
					width: 92rpx;
					height: 92rpx;
					border-radius: 50%;
				}
			}
			.list-tel{
				margin-left: 18rpx;
				.txt{
					display: flex;
					flex: 1;
					font-size: $font-size-28;
					color: $text-color;
					line-height: 46rpx;
				}
			}
		}
		.list-opea{
			flex:6;
			.opea-type{
				flex-direction: column;
				align-items: center;
				margin-left: 35rpx;
				float: left;
				.opea-type-cell{
					width: 186rpx;
					height: 64rpx;
					padding:0 16rpx;
					border-radius: 32rpx;
					border: 1px solid #DDDDDD;
					line-height: 64rpx;
					font-size: $font-size-24;
					.icon-iconfontweixin{
						margin-right: 8rpx;
						font-size: $font-size-32;
					}
					&.none{
						text-align: center;
					}
				}
			}
			.opea-del{
				float: right;
				flex-direction: column;
				align-items: center;
				.opea-type-cell{
					width: 86rpx;
					height: 64rpx;
					padding:0 24rpx;
					border-radius: 32rpx;
					border: 1px solid #DDDDDD;
					line-height: 64rpx;
					font-size: $font-size-24;
					color: #FF0000;
					.icon-shanchu{
						font-size: $font-size-32;
						margin-right: 6rpx;
					}
				}
			}
		}
	}
	.operator-model{
		width: 100%;
		height: 100%;
		background: rgba(0,0,0,.1);
		position: fixed;
		top: 0;
		left: 0;
		bottom: 0;
		right: 0;
		margin: auto;
		z-index: 1000;
		.operator-alert{
			width: 435rpx;
			height: 360rpx;
			padding: 68rpx 32rpx;
			background: #FFFFFF;
			border-radius: 14rpx;
			position: absolute;
			top: 0;
			left: 0;
			bottom: 0;
			right: 0;
			margin: auto;
			z-index: 1001;
			.icon-iconfontguanbi{
				width: 68rpx;
				height: 68rpx;
				text-align: center;
				line-height: 68rpx;
				position: absolute;
				right: 0;
				top: 0;
				font-size: $font-size-36;
				color: #999999;
			}
			.content{
				.ciew-t{
					font-size: $font-size-28;
					color: $text-color;
					line-height: 48rpx;
				}
			}
			.btn{
				width: 100%;
				height: 68rpx;
				border-top: 1px solid #F7F7F7;
				line-height: 68rpx;
				font-size: $font-size-26;
				text-align: center;
				color: $color-system;
				position: absolute;
				bottom:0 ;
				left: 0;
			}
		}
	}
	.operator-btn{
		position: fixed;
		width: 100%;
		height: 140rpx;
		left: 0;
		bottom: 0;
		background: #FFFFFF;
		z-index: 95;
		display: flex;
		align-items: center;
		justify-content: center;
		.add-btn{
			width: 600rpx;
			height: 88rpx;
			font-size: $font-size-28;
			line-height: 88rpx;
			color: #FFFFFF;
			text-align: center;
			background: $btn-confirm;
			border-radius: 44rpx;
		}
	}
	.adds-btn{
		width: 600rpx;
		height: 88rpx;
		font-size: 28rpx;
		line-height: 88rpx;
		color: #FFFFFF;
		margin: 0 auto;
		text-align: center;
		background: #000000;
		border-radius: 44rpx;
	}
</style>

