<template>
	<u-navbar :title="title" :bgColor="bgColor" :titleStyle="titleStyle">
		<view class="u-nav-slot" slot="left" style="display: flex;background-color: transparent;">
			<u-icon v-if="showback" name="arrow-left" size="44" :color="leftIconColor" @tap="toBack(backUrl)"></u-icon>
		</view>
	</u-navbar>
</template>

<script>
	export default {
		options: {
			styleIsolation: 'shared'
		},
		props: {
			title: {
				typeof: String,
				default: ''
			},
			showback: {
				typeof: Boolean,
				default: true
			},
			backUrl: {
				typeof: String,
				default: ''
			},
			bgColor: {
				typeof: String,
				default: '#ffffff'
			},
			leftIconColor: {
				typeof: String,
				default: '#111111'
			},
			titleStyle: {
				typeof: Object,
				default: {
					fontSize: '36rpx',
					fontWeight: "bold",
					color: '#111111'
				}
			},
			backAlert:{
				typeof:Boolean,
				default:false
			}
		},
		data() {
			return {
				tabUrls: [
					'/pages/index/index',
					'/pages/touristMap/index',
					'/pages/oneCodePass/index',
					'/pages/service/index',
					'/pages/my/index'
				]
			}
		},
		methods: {
			toBack(url) {
				if(this.backAlert){
					uni.reLaunch({
						url: '/pages/home'
					})
				}else this.dealBack(url)
			},
			dealBack(url) {
				if (!url) {
					if (uni.getStorageSync('options')) {
						uni.redirectTo(JSON.parse(decodeURIComponent(uni.getStorageSync('options'))));
						return uni.removeStorageSync('options');
					}
					let canNavBack = getCurrentPages();
					if (canNavBack && canNavBack.length > 1) uni.navigateBack();
					else uni.reLaunch({
						url: '/pages/index/index'
					})
				} else {
					if (this.tabUrls.find(u => u == url)) uni.reLaunch({
						url
					});
					else uni.redirectTo({
						url
					});
				}
			},
			toHome() {
				uni.reLaunch({
					url: '/pages/index/index'
				})
			}
		}
	}
</script>

<style lang="less" scoped>
	.u-navbar--fixed {
		z-index: 99999 !important;
	}
</style>