<template>
  <div class="page-container">
    <div v-if="production">
      <!-- 面包屑导航 -->
      <el-breadcrumb class="breadcrumb" separator="/">
        <el-breadcrumb-item class="text-md opacity-50">
          <NuxtLink :to="$localePath('/')">{{ $t('navigation.home') }}</NuxtLink>
        </el-breadcrumb-item>
        <el-breadcrumb-item class="text-md opacity-50">
          <NuxtLink :to="$localePath('/productions')">{{ $t('navigation.productions') }}</NuxtLink>
        </el-breadcrumb-item>
        <el-breadcrumb-item class="text-md opactiy-50">{{ production.title }}</el-breadcrumb-item>
      </el-breadcrumb>

      <!-- 产品详情内容 -->
      <div class="production-header">
        <div class="production-image">
          <el-image
:src="useStrapiMedia(production?.cover?.url || '')" :alt="production.title"
            fit="contain" />
        </div>
        <div class="production-info">
          <h1>{{ production.title }}</h1>
          <p class="summary">{{ production.summary }}</p>
        </div>
      </div>

      <!-- 产品详细描述 -->
      <div class="production-content">
        <el-tabs v-model="activeName" class="production-tabs">
          <el-tab-pane label="产品详情" name="details">
            <markdown-renderer :content="production.production_details || ''" />
          </el-tab-pane>
          <el-tab-pane label="技术规格" name="specs">
            <spec-table :data="production.production_specs" />
          </el-tab-pane>
          <el-tab-pane label="相关文档" name="documents" />
        </el-tabs>
      </div>
    </div>

    <!-- 加载状态 -->
    <div v-else-if="pending" class="loading">
      <el-skeleton style="--el-skeleton-circle-size: 400px">
        <template #template>
          <el-skeleton-item variant="circle" />
        </template>
      </el-skeleton>
      <el-skeleton :rows="5" animated />
    </div>

    <!-- 未找到产品 -->
    <div v-else class="not-found">
      <el-result icon="warning" :title="$t('product-not-found')" :sub-title="$t('product-not-found-desc')">
        <template #extra>
          <el-button type="primary" @click="$router.push('/productions')">
            {{ $t('back-to-productions') }}
          </el-button>
        </template>
      </el-result>
    </div>
  </div>
</template>

<script setup lang="ts">
const route = useRoute()
const { findOne } = useStrapi()
const { getStrapiLocale } = useLocalizations()
const strapiLocale = getStrapiLocale()

const production = ref<Production | null>(null)
const pending = ref(true)

const activeName = ref('details') // 默认选中概览标签

// 获取路由参数（slug 或 id）
const documentId = computed(() => route.params.slug as string)


onMounted(async () => {
  try {
    const response = await findOne<Production>('productions', documentId.value, {
      populate: {
        production_specs: {
          populate: '*',
        },
        production_images: {
          populate: '*',
        },
        cover: {
          populate: '*',
        },
      },
      locale: strapiLocale,
    })
    if (response.data) {
      const item = response.data
      production.value = {
        ...item,
      }
    }
  } catch (error) {
    console.error('Failed to fetch production:', error)
  } finally {
    pending.value = false
  }
})

// SEO
useHead({
  title: computed(() => production.value?.title || 'Product Detail'),
  meta: [
    {
      name: 'description',
      content: computed(() => production.value?.summary || '')
    }
  ]
})
</script>

<style scoped>
.page-container {
  min-height: 60vh;
}

.breadcrumb {
  padding: 2rem;
  margin-bottom: 2rem;
}

.production-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  margin-bottom: 3rem;
}

.production-image .el-image {
  width: 100%;
  height: 400px;
  border-radius: 8px;
}

.production-info h1 {
  margin-top: 2rem;
  margin-bottom: 1rem;
  font-size: 2rem;
}

.summary {
  color: var(--el-color-info);
  font-size: 1rem;
  line-height: 1.6;
  margin-bottom: 2rem;
}

.production-content {
  margin-top: 2rem;
}

.production-tabs ::v-deep(.el-tabs__item) {
  margin-left: 20px;
}

.production-tabs ::v-deep(.el-tabs__content) {
  padding: 10px;
}

.production-content h2 {
  color: var(--el-text-color-primary);
  margin: 0;
}

.loading {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 1rem;
}

.not-found {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 400px;
}

/* 响应式设计 */
@media (max-width: 768px) {
  .production-header {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .production-info h1 {
    font-size: 2rem;
  }
}
</style>
