nankai-cms-website-gov/pages/index.vue

181 lines
4.8 KiB
Vue
Raw Normal View History

2025-03-13 09:52:18 +08:00
<template>
<NuxtLayout name="default" :categories="categoryTree">
<div class="content-wrap">
<!-- 第一部分 -->
<div class="block row row-wrap">
<!-- 轮播图 -->
2025-03-13 10:14:57 +08:00
<div>
2025-03-13 09:52:18 +08:00
<Carousel :data="carouselList"/>
</div>
2025-03-13 10:14:57 +08:00
<div>
2025-03-13 09:52:18 +08:00
<DataListTabs :data="dtData"/>
</div>
</div>
<!-- 第二部分 -->
<div class="block row">
2025-03-13 10:14:57 +08:00
<div>
2025-03-13 12:15:21 +08:00
<DataListTabs :data="tzggData"/>
2025-03-13 09:52:18 +08:00
</div>
2025-03-13 10:14:57 +08:00
<div>
2025-03-13 12:15:21 +08:00
<DataListTabs :data="wlaqxcTabs"/>
2025-03-13 09:52:18 +08:00
</div>
</div>
<!-- 第三部分 -->
2025-03-13 10:14:57 +08:00
<ul class="block row row-wrap col-3" style="padding-bottom: 0;">
2025-03-13 12:15:21 +08:00
<li><DataListTabs :data="ldzcData"/></li>
<li><DataListTabs :data="dwgkData"/></li>
2025-03-13 10:14:57 +08:00
<li><DataListTabs :data="pqgsTabs"/></li>
2025-03-13 12:15:21 +08:00
<!-- <li><DataListTabs :data="phgsTabs"/></li>-->
<!-- <li><DataListTabs :data="bdcdjznTabs"/></li>-->
<!-- <li><DataListTabs :data="djgzTabs"/></li>-->
2025-03-13 09:52:18 +08:00
</ul>
<!-- 专题专栏 -->
<div class="block">
<SpecialColumn :icons="subjectData"/>
</div>
<!-- 网站导航 -->
<div class="website-nav">
<WebsiteNav :data="websiteNavData"/>
</div>
</div>
</NuxtLayout>
</template>
<script>
import { definePageMeta } from '#imports'
import DataListTabs from '@/components/common/DataListTabs'
import SpecialColumn from '@/components/cms/SpecialColumn'
import Carousel from '@/components/home/Carousel'
import WebsiteNav from '@/components/home/WebsiteNav'
import CategoryUtil from '@/utils/category'
import { fetchTemplateData } from '@/api/cms/template'
import { strictPackage } from '@/utils/util'
export default {
components: {
WebsiteNav,
Carousel,
SpecialColumn,
DataListTabs
},
async setup () {
// 去掉默认布局
definePageMeta({
layout: false,
})
const pageData = strictPackage(await fetchTemplateData({
path: '/index.vue',
targetUid: 'sy',
targetType: 'CATEGORY'
}))
const categoryTitleMap = {
2025-03-13 10:14:57 +08:00
snyw: '区内要闻',
2025-03-13 09:52:18 +08:00
gnyw: '国内要闻',
2025-03-13 12:15:21 +08:00
ldzc: '政策文件',
dwgk: '政策解读',
2025-03-13 09:52:18 +08:00
tzgg: '通知公告',
2025-03-13 12:15:21 +08:00
pqgs: '地方标准',
2025-03-13 09:52:18 +08:00
phgs: '批后公示',
bdcdjzn: '不动产登记指南',
wlaqxc: '网络安全宣传',
djgz: '党建工作',
}
const categoryUtil = new CategoryUtil(pageData.CATEGORIES_TREE)
const getTab = (categoryUid, data = []) => {
const category = categoryUtil.getCategory(categoryUid)
2025-03-13 12:15:21 +08:00
// if (category == null) {1
// throw new Error(`找不到栏目UID: ${categoryUid}`)
// }
2025-03-13 09:52:18 +08:00
return {
code: categoryUid,
label: categoryTitleMap[categoryUid],
2025-03-13 12:15:21 +08:00
moreLink: category?.uri,
2025-03-13 09:52:18 +08:00
items: data
}
}
const dataListTabs = pageData.MULTIPLE_CATEGORY_ARTICLES
// 资源数据
const resources = pageData.MULTIPLE_RESOURCES
return {
// 栏目树
categoryTree: pageData.CATEGORIES_TREE,
// 走马灯
carouselList: pageData.MULTIPLE_RESOURCES.HOME_CAROUSEL,
// 动态数据
dtData: [
getTab('snyw', dataListTabs.snyw),
getTab('gnyw', dataListTabs.gnyw),
],
// 专题数据
subjectData: resources.ZHUAN_LAN,
// 网站导航数据
websiteNavData: [
resources.SITE_NAVIGAT_1,
resources.SITE_NAVIGAT_2,
resources.SITE_NAVIGAT_3,
resources.FRIENDLY_LINKS
],
ldzcData: [getTab('ldzc', dataListTabs.ldzc)],
dwgkData: [getTab('dwgk', dataListTabs.dwgk)],
tzggData: [getTab('tzgg', dataListTabs.tzgg)],
2025-03-13 12:15:21 +08:00
wlaqxcTabs: [getTab('wlaqxc', dataListTabs.wlaqxc)],
2025-03-13 09:52:18 +08:00
pqgsTabs: [getTab('pqgs', dataListTabs.pqgs)],
2025-03-13 12:15:21 +08:00
2025-03-13 09:52:18 +08:00
phgsTabs: [getTab('phgs', dataListTabs.phgs)],
bdcdjznTabs: [getTab('bdcdjzn', dataListTabs.bdcdjzn)],
djgzTabs: [getTab('djgz', dataListTabs.djgz)],
}
}
}
</script>
<style scoped lang="scss">
.default-layout {
.content-wrap {
// 数据块的高度
--data-block-height: 360px;
// 网站导航
.website-nav {
padding: 15px 20px;
background-color: #EAF1FB;
margin: 10px 0;
}
}
// 数据列表
.data-list-tabs {
:deep(ul.article-list) {
height: var(--data-block-height);
box-sizing: border-box;
padding-bottom: 0;
& > li {
border-bottom: 0 !important;
a {
padding: 10px 10px 10px 25px;
}
}
}
}
.block {
2025-03-13 10:14:57 +08:00
padding: 20px;
2025-03-13 09:52:18 +08:00
background-color: #fff;
margin-bottom: 12px;
}
.row {
display: flex;
justify-content: space-between;
& > * {
2025-03-13 10:14:57 +08:00
width: 49%;
2025-03-13 09:52:18 +08:00
flex-shrink: 0;
overflow: hidden;
}
// 自动换行
&.row-wrap {
flex-wrap: wrap;
}
&.col-3 {
& > * {
2025-03-13 10:14:57 +08:00
width: 32%;
2025-03-13 09:52:18 +08:00
margin-bottom: 20px;
}
}
}
}
</style>