<template>
  <view v-if="showSplash" class="splash-screen">
    <!-- 富文本內容 -->
    <view class="splash-content">
      <image
        :src="splashContent"
        mode="aspectFit"
        class="splash-image"
        @error="onImageError"
        @load="onImageLoad"
      />
    </view>
    
    <!-- 跳過按鈕 -->
    <view class="skip-button" >
      <text class="skip-text">跳过  ({{ countdown }}s)</text>
    </view>
    <!-- 定位英語文字和中文文字到左下角 -->
    <view class="text-container">
      <text class="english-text">
        {{ configParamContent('creen_en') }}
      </text>
      <text class="chinese-text">
        {{ configParamContent('creen_zh') }}
      </text>
    </view>
  </view>
</template>

<script>
// import config from '../../mixins/config.js'

export default {
  name: 'SplashScreen',
  // mixins: [config],
  props: {
    // 顯示時長（秒）
    duration: {
      type: Number,
      default: 2
    }
  },
  data() {
    return {
      showSplash: false,
      countdown: 5,
      timer: null,
      splashContent: ''
    }
  },
  computed: {
    image() {
      try {
        // 優先從配置獲取
        const configImage = this.configParamContent && this.configParamContent('creen_image')
        if (configImage && configImage !== 'undefined' && configImage !== '') {
          return configImage
        }
        
        // 備用方案：從本地存儲獲取
        const storageImage = uni.getStorageSync('screen_image')
        if (storageImage && storageImage !== 'undefined' && storageImage !== '') {
          return storageImage
        }
        
        return ''
      } catch (error) {
        console.error('獲取開屏圖片失敗:', error)
        return ''
      }
    }
  },
  mounted() {
    this.initSplash()
    
	if(!this.hasShownSplash()){
		uni.hideTabBar()
	}
  },
  beforeDestroy() {
    this.clearTimer()
  },
  methods: {
    // 檢查是否為H5环境
    isH5() {
      // #ifdef H5
      return true
      // #endif
      // #ifndef H5
      return false
      // #endif
    },
    
    // 檢查是否已显示过开屏
    hasShownSplash() {
      if (this.isH5()) {
        try {
          return sessionStorage.getItem('splash_shown') === 'true'
        } catch (error) {
          console.error('读取sessionStorage失败:', error)
          return false
        }
      }
      return false
    },
    
    // 设置开屏已显示标记
    setSplashShown() {
      if (this.isH5()) {
        try {
          sessionStorage.setItem('splash_shown', 'true')
        } catch (error) {
          console.error('设置sessionStorage失败:', error)
        }
      }
    },
    
    // 初始化开动頁面
    async initSplash() {
      try {
        // 在H5环境下检查是否已显示过开屏
        if (this.hasShownSplash()) {
          console.log('开屏已显示过，跳过开屏动画')
          this.$emit('close')
          this.closeSplash()
          return
        }
        
        // 等待一小段時間確保 store 數據加載完成
        await this.$nextTick()
        
        // 獲取圖片URL，優先使用配置，然後使用本地存儲
        let imageUrl = ''
        
        // 嘗試從配置獲取
        if (this.$store.state.configList && this.$store.state.configList['creen_image']) {
          imageUrl = this.configParamContent('creen_image')
        }
        
        // 如果配置中沒有，嘗試從本地存儲獲取
        if (!imageUrl) {
          imageUrl = uni.getStorageSync('screen_image')
        }
        
        console.log('開屏圖片URL:', imageUrl)
        
        // 如果有圖片URL才顯示開屏
        if (imageUrl && imageUrl !== 'undefined' && imageUrl !== '') {
          this.splashContent = imageUrl
          this.countdown = this.duration
          this.showSplash = true
          this.startCountdown()
        } else {
          console.log('沒有開屏圖片，跳過開屏動畫')
          this.$emit('close')
        }
      } catch (error) {
        console.error('獲取開動頁面內容失敗:', error)
        // 發生錯誤時直接關閉開屏
        this.$emit('close')
      }
    },
    
    // 開始倒計時
    startCountdown() {
      this.timer = setInterval(() => {
        this.countdown--
        if (this.countdown <= 0) {
          this.closeSplash()
        }
      }, 1000)
    },
    
    // 關閉開動頁面
    closeSplash() {
      this.showSplash = false
      
      // 在H5环境下设置开屏已显示标记
      this.setSplashShown()
      
      uni.showTabBar({
        animation: true
      })
      this.clearTimer()
      this.$emit('close')
    },
    
    // 清除計時器
    clearTimer() {
      if (this.timer) {
        clearInterval(this.timer)
        this.timer = null
      }
    },
    
    // 圖片加載成功
    onImageLoad() {
      console.log('開屏圖片加載成功')
    },
    
    // 圖片加載失敗
    onImageError(e) {
      console.error('開屏圖片加載失敗:', e)
      // 圖片加載失敗時直接關閉開屏
      this.closeSplash()
    }
  }
}
</script>

<style lang="scss" scoped>
.splash-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: #fff;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  .splash-image{
    width: 100%;
    height: 100%;
  }
}

.splash-content {
  flex: 1;
  width: 100%;
  height: 80%;
  overflow: hidden;
  
  // 富文本樣式
  :deep(rich-text) {
    width: 100%;
    height: 100%;
    display: block;
    img{
      width: 100%;
    height: 100%;
    }
  }
}

.skip-button {
  position: absolute;
  top: 40rpx;
  left: 40rpx;
  background-color: #0000004D;

  border-radius: 100rpx;
  width: 148rpx ;
  height: 60rpx;
  text-align: center;
  z-index: 10000;
  
  
  .skip-text {
    font-size: 24rpx;
    line-height: 60rpx;
    color: #fff;
  }
}

// 文字容器定位到左下角
.text-container {
  // position: absolute;
  // bottom: 80rpx;
  // left: 40rpx;
  // z-index: 10001;
  height: 20%;
  width: 100%;
  padding: 20rpx;
  display: flex;
  flex-direction: column;
  gap: 30rpx;
}

// 英文文字样式
.english-text {
  font-family: PingFang SC;
  font-weight: 600;
  font-size: 32rpx; // 16px转换为rpx
  line-height: 48rpx; // 24px转换为rpx
  letter-spacing: 0;
  color: black;
  background: transparent;
}

// 中文文字样式
.chinese-text {
  font-family: PingFang SC;
  // font-weight: 600;
  font-size: 32rpx; // 16px转换为rpx
  line-height: 48rpx; // 24px转换为rpx
  letter-spacing: 0;
  color: black;
  background: transparent;
}

// 確保覆蓋 tabbar
.splash-screen {
  // 覆蓋所有內容，包括 tabbar
  position: fixed !important;
  z-index: 9999 !important;
}
</style>