<template>
  <!-- 导航 -->
  <KlNavTab active="文本" :type="2" />
  <div class="ma-auto w-1440px">
    <!-- 图纸分类 -->
    <KlWallpaperCategory v-model="query" v-model:level="level" :type="2" />
    <!-- 推荐栏目 -->
    <RecommendedColumnsV2 v-model="query" v-model:result="result"></RecommendedColumnsV2>
    <!-- 精选专题 -->
    <!-- <FeaturedSpecials></FeaturedSpecials> -->
    <!-- 分页 -->
    <div class="mt-10px flex justify-center">
      <el-pagination
        v-model:current-page="query.pageNo"
        v-model:page-size="query.pageSize"
        :page-sizes="[12, 24, 48]"
        :total="result.total"
        layout="total, sizes, prev, pager, next, jumper"
        @size-change="handeChangeSize"
        @current-change="handeChangeCurrent"
      />
    </div>
  </div>
</template>
<script setup lang="ts">
  import KlNavTab from '~/components/kl-nav-tab/index.vue'
  import KlWallpaperCategory from '~/components/kl-wallpaper-category/index.vue'
  import RecommendedColumnsV2 from './components/RecommendedColumnsV2.vue'
  // import FeaturedSpecials from './components/FeaturedSpecials.vue'

  import { reactive, watch, ref } from 'vue'
  import { page } from '~/api/upnew/index'
  import type { pageRes, pageReq } from '~/api/upnew/types'
  import { useRoute } from 'vue-router'

  const route = useRoute()
  const level = ref(
    route.query.level
      ? JSON.parse(route.query.level as string)
      : [
          {
            id: '0',
            name: '文本库',
            isChildren: false,
          },
        ]
  )

  const query = reactive<pageReq>({
    pageNo: 1,
    pageSize: 12,
    projectType: '',
    editions: '',
    source: '',
    type: 2,
  })
  const result = reactive<pageRes>({
    list: [],
    total: 0,
  })

  // 如果id存在，则设置projectType
  if (level.value.length) {
    query.projectType = level.value[level.value.length - 1].id || ''
  }

  const getPage = () => {
    page(query).then((res) => {
      const { data, code } = res
      if (code === 0) {
        result.list = data.list
        result.total = data.total
      }
    })
  }

  getPage()

  const handeChangeSize = (val: number) => {
    query.pageSize = val
    query.pageNo = 1
    getPage()
  }

  const handeChangeCurrent = (val: number) => {
    query.pageNo = val
    getPage()
  }

  watch([() => query.projectType, () => query.editions, () => query.source], (val) => {
    if (val) {
      getPage()
    }
  })
</script>
<style lang="scss" scoped>
  :deep(.el-pagination) {
    .el-input__inner {
      text-align: center !important;
    }
  }
</style>
