<template>
  <div class="main">
    <div class="content">
      <sub-header />

      <div class="left">
        <n-tabs type="line" pane-class="tab-content" v-model:value="currentTab">
          <template #prefix>
            <span class="meta-title">
              <img src="@/assets/subtitle_1.png" />
            </span>
          </template>
          <n-tab-pane
            name="exhibition"
            tab="展览"
            v-infinite-scroll="onLoadMore"
          >
   
            <n-grid :x-gap="XGap" :y-gap="YGap" :cols="3" class="tab-grid">
              <template v-for="item in exhibitions">
                <n-gi>
                  <info-box
                    :id="item.id"
                    :title="item.name"
                    :cover="domain + item.thumb"
                    :time="item.publishDate"
                  />
                </n-gi>
              </template>
            </n-grid>
            <empty :show="exhibitions.length === 0" :height="500" />
          </n-tab-pane>
          <n-tab-pane name="activity" tab="活动">
            <n-grid :x-gap="XGap" :y-gap="YGap" :cols="3" class="tab-grid">
              <template v-for="item in activates">
                <n-gi>
                  <info-box
                    :id="item.id"
                    :title="item.name"
                    :cover="domain + item.thumb"
                    :time="item.publishDate"
                  />
                </n-gi>
              </template>
            </n-grid>
            <empty :show="activates.length === 0" :height="500" />
          </n-tab-pane>
          <n-tab-pane name="news" tab="新闻">
            <n-grid :x-gap="XGap" :y-gap="YGap" :cols="3" class="tab-grid">
              <template v-for="item in news">
                <n-gi>
                  <info-box
                    :id="item.id"
                    :title="item.name"
                    :cover="domain + item.thumb"
                    :time="item.publishDate"
                  />
                </n-gi>
              </template>
            </n-grid>
            <empty :show="news.length === 0" :height="500" />
          </n-tab-pane>
          <n-tab-pane name="notice" tab="通知">
            <n-grid :y-gap="YGap" :cols="1" class="tab-grid">
              <template v-for="item in notices">
                <n-gi>
                  <notice-box
                    :id="item.id"
                    :title="item.name"
                    :content="item.richText"
                    :time="item.publishDate"
                  />
                </n-gi>
              </template>
            </n-grid>
            <empty :show="notices.length === 0" :height="500" />
          </n-tab-pane>
        </n-tabs>
      </div>
      <side-menu />
    </div>
  </div>
</template>

<script setup>
import { onMounted, watch, computed } from "vue";
import { vInfiniteScroll } from "@vueuse/components";
import infoBox from "../components/infoBox";
import subHeader from "../components/subHeader";
import sideMenu from "../components/sideMenu";
import noticeBox from "../components/noticeBox";
import empty from "../components/empty.vue";
import { useInfoStore } from "../store/info";

const infoStore = useInfoStore();
const domain = ref(import.meta.env.VITE_DOMAIN_URL);
const currentTab = ref("exhibition");
const news = computed(() => infoStore.news);
const notices = computed(() => infoStore.notices);
const activates = computed(() => infoStore.activates);
const exhibitions = computed(() => infoStore.exhibitions);
const handleTabFetch = (type) => {
  switch (type) {
    case "exhibition":
      infoStore.getExhibition();
      break;
    case "activity":
      infoStore.getActivity();
      break;
    case "news":
      infoStore.getNews();
      break;
    case "notice":
      infoStore.getNotices();
      break;
  }
};

watch(
  currentTab,
  (val) => {
    console.log("currentTab", val);
    handleTabFetch(val);
  },
  {
    immediate: true,
  }
);
const XGap = ref(50);
const YGap = ref(50);

const onLoadMore = (type) => {
  // console.log("type", type);
  console.log("onLoadMore");
};
</script>

<style lang="scss" scoped></style>
