123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <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="exhibitions" 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="activates" 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="新闻">
- <div>123</div>
- <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="notices" 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";
- import { useLoadingBar } from "naive-ui";
- const infoStore = useInfoStore();
- const loadingBar = useLoadingBar();
- const domain = ref(import.meta.env.VITE_DOMAIN_URL);
- const currentTab = ref("exhibitions");
- const news = computed(() => infoStore.news);
- const notices = computed(() => infoStore.notices);
- const activates = computed(() => infoStore.activates);
- const exhibitions = computed(() => infoStore.exhibitions);
- const handleTabFetch = async (type) => {
- loadingBar.start();
- await infoStore.switchTab(type);
- loadingBar.finish();
- };
- watch(
- currentTab,
- (val) => {
- if (val === "news") {
- window.open("http://www.qsqyhsjng.com/szjq/jqxw/");
- currentTab.value = "exhibitions";
- }
- if (val === "notices") {
- window.open("http://www.qsqyhsjng.com/jqgk/tzgg/");
- currentTab.value = "exhibitions";
- }
- console.log("currentTab", val);
- handleTabFetch(val);
- },
- {
- immediate: true,
- }
- );
- const XGap = ref(50);
- const YGap = ref(50);
- const onLoadMore = () => {
- if (infoStore.isLoad) {
- infoStore.loadMore(currentTab.value);
- }
- };
- </script>
- <style lang="scss" scoped></style>
|