<script>
	import Config from '@/modules/Config.js'
	
	export default {
		globalData: {
			token: '',
			user: null,
			shouldRefresh: false,
			loginTime: 0,
			config: null // 应用配置（从后端获取）
		},
		onLaunch: function() {
			console.log('App Launch')
			
			// 初始化全局数据
			this.initGlobalData()
			
			// 加载应用配置
			this.loadAppConfig()
			
			this.setTabBarText()
		},
		onShow: function() {
			console.log('App Show')
			this.setTabBarText()
		},
		onHide: function() {
			console.log('App Hide')
		},
		methods: {
			/**
			 * 初始化全局数据
			 */
			initGlobalData() {
				try {
					// 从本地存储恢复 token
					const token = uni.getStorageSync('token')
					if (token) {
						this.globalData.token = token
					}
					
					// 从本地存储恢复用户信息
					const userStr = uni.getStorageSync('user')
					if (userStr) {
						try {
							this.globalData.user = JSON.parse(userStr)
						} catch (e) {
							console.error('解析用户信息失败:', e)
						}
					}
				} catch (e) {
					console.error('初始化全局数据失败:', e)
				}
			},
			
			setTabBarText() {
				// 动态设置 TabBar 文本
				const pages = getCurrentPages()
				if (pages.length > 0) {
					const currentPage = pages[pages.length - 1]
					// 只在 TabBar 页面才更新 TabBar 文本
					const tabBarPages = ['pages/index/index', 'pages/appointment/appointment-page', 'pages/me/me-page']
					const currentRoute = currentPage.route || ''
					if (!tabBarPages.includes(currentRoute)) {
						return // 非 TabBar 页面，不更新
					}
					if (currentPage.$vm && currentPage.$vm.$t) {
						uni.setTabBarItem({
							index: 0,
							text: currentPage.$vm.$t('tabbar.home')
						})
						uni.setTabBarItem({
							index: 1,
							text: currentPage.$vm.$t('tabbar.appointment')
						})
						uni.setTabBarItem({
							index: 2,
							text: currentPage.$vm.$t('tabbar.me')
						})
					}
				}
			},
			
			/**
			 * 加载应用配置
			 */
			async loadAppConfig() {
				try {
					const config = await Config.getPublicConfig()
					if (config) {
						this.globalData.config = config
						console.log('应用配置已加载到globalData:', config)
					}
				} catch (error) {
					console.error('加载应用配置失败:', error)
				}
			},
			
			/**
			 * 获取配置项
			 * @param {String} key 配置键名
			 * @param {*} defaultValue 默认值
			 */
			getConfig(key, defaultValue = '') {
				if (this.globalData.config && this.globalData.config[key]) {
					return this.globalData.config[key]
				}
				return defaultValue
			},
			
			/**
			 * 获取配置图片的完整URL
			 * @param {String} key 配置键名
			 */
			getConfigImageUrl(key) {
				const value = this.getConfig(key)
				if (value) {
					return Config.getImageUrl(value)
				}
				return ''
			}
		},
		watch: {
			'$i18n.locale'() {
				this.setTabBarText()
			}
		}
	}
</script>

<style>
	/*每个页面公共css */
	.bg {
		background-size: cover;
		background-repeat: no-repeat;
		background-position: center;
	}

	.column {
		display: flex;
		flex-direction: column;
	}

	.row {
		display: flex;
		flex-direction: row;
	}

	.center {
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.single-overflow {
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
		display: inline-block;
	}
</style>