<template>
	<view class="status-box" :style="{marginBottom: marginBottom}">
		<!-- 网络、电量栏 -->
		<view :style="{height: statusBarHeight+'px',background: backgroudColor}"></view>
		<!-- 头部状态栏 -->
		<view class="status-nav flex" :style="{background: backgroudColor,height:navBarHeight}">
			<!-- 返回键 -->
			<view class="left-box flex" @tap="backEv" v-if="ifReturn" :style="{height: navBarHeight}">
				<slot name="leftcontent">
					<i class="icon icon-return" style="font-size: 38rpx;" :style="{color: returnColor}"></i>
				</slot>
			</view>
			<!-- 标题 -->
			<view class="tab-title" :style="{color: titleColor,justifyContent: ifCenter ? 'center' : '',padding: ifCenter ? '0px' : `${ifReturn ? '0 38' : '0 15'}px`}">
				<view class="title-box" :class="['','clips1','clips2'][clipNumber*1]" :style="{maxWidth: ifCenter ? '360rpx' : '70%'}">
					<!-- 有网络 -->
					<view @tap="choiceEstate(estate)" v-if="estate!==0 && ifTitle && ifNet">{{navBarTitle}}</view>
					<view v-if="estate==0 && ifTitle && ifNet">{{navBarTitle}}</view>
					<!-- 无网络 -->
					<view v-if="!ifNet">{{netText}}<text @tap="refreshEv" style="color: #3875F6;margin-left: 20rpx;">刷新</text></view>
				</view>
			</view>
			<!-- 右侧图标 -->
			<view class="right-box flex" :style="{height: navBarHeight}">
				<slot name="rightcontent"></slot>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name: 'status-nav',
		props: {
			//状态栏、导航栏背景颜色
			backgroudColor: {
				type: String,
				default: '#FFFFFF'
			},
			// 默认导航栏高度
			navBarHeight: {
				type: String,
				default: '50px'
			},
			//是否显示返回键
			ifReturn: {
				type: Boolean,
				default: true
			},
			// 返回键颜色
			returnColor: {
				type: String,
				default: '#000000'
			},
			//是否显示标题
			ifTitle: {
				type: Boolean,
				default: true
			},
			// 导航栏标题
			navBarTitle: {
				type: String,
				default: ''
			},
			// 标题最多几行显示
			clipNumber: {
				type: String,
				default: '1'
			},
			//标题颜色
			titleColor: {
				type: String,
				default: '#000000'
			},
			// 标题是否居中
			ifCenter: {
				type: Boolean,
				default: true
			},
			// 底部距离内容多高
			marginBottom: {
				type: String,
				default: '0'
			},
			// 是否可选择小区
			estate:{
				type: Number,
				default: 0
			}
		},
		data() {
			return {
				statusBarHeight: uni.getSystemInfoSync().statusBarHeight,
				ifNet: true, // 是否有网络
				netText: '当前无网络',
				netTimer: null
			}
		},
		mounted() {
			// 网络监测
			this.$toolAll.tools.networkStatus();
			// 获取当前页面路径
			this.$toolAll.tools.obtainPagePath();
			setTimeout(() => {
				this.ifNet = uni.getStorageSync('isNet');
			}, 500)
		},
		methods: {
			// 刷新网络事件
			refreshEv() {
				this.netText = '正在刷新...';
				let outTime = 0; //十秒超时
				this.netTimer = setInterval(() => {
					outTime++;
					this.$toolAll.tools.networkStatus();
					if (uni.getStorageSync('isNet')) {
						clearInterval(this.netTimer);
						this.ifNet = true;
					}
					if (outTime == 10) {
						clearInterval(this.netTimer);
						this.netText = '刷新失败';
						outTime = 0;
					}
				}, 1000)
			},
			//返回事件
			backEv() {
				uni.navigateBack({
					delta: 1,
					fail: () => {
						uni.reLaunch({
							url: '/pages/idle/idle'
						})
					}
				})
			},
			// 小区选择
			choiceEstate(estate){
				uni.navigateTo({
					url: `/pagesA/estate/estate?estate=${estate}`
				})
			}
		}
	}
</script>

<style scoped>
	.status-box {
		position: sticky;
		top: 0;
		left: 0;
		right: 0;
		z-index: 10;
	}

	.status-nav {
		align-items: center;
		width: 100%;
		position: relative;
	}

	.left-box {
		justify-content: center;
		align-items: center;
		position: absolute;
		padding: 0 50rpx 0 20rpx;
	}

	.right-box {
		justify-content: center;
		align-items: center;
		position: absolute;
		right: 0;
		padding: 0 20rpx 0 50rpx;
	}

	.tab-title {
		width: 100%;
		font-size: 32rpx;
		line-height: 1.5;
		display: flex;
	}

	.tab-title .title-box {
		margin-top: -4rpx;
	}
</style>