|
@@ -35,7 +35,30 @@
|
|
|
<!-- 通知公告和热点新闻 -->
|
|
<!-- 通知公告和热点新闻 -->
|
|
|
<div class="row">
|
|
<div class="row">
|
|
|
|
|
|
|
|
- <div class="col col-sm-12 col-md-6 col-lg-6 notices-list">
|
|
|
|
|
|
|
+ <div class="col col-sm-12 col-md-6 col-lg-6">
|
|
|
|
|
+ <Carousel v-bind="carouselConfig">
|
|
|
|
|
+ <Slide
|
|
|
|
|
+ v-for="(item, key) in recommendArticles.content.value"
|
|
|
|
|
+ :key="key"
|
|
|
|
|
+ class="featured-image bg-secondary"
|
|
|
|
|
+ :style="{ 'background-image': `url(${item.image})`, 'background-size': 'cover' }"
|
|
|
|
|
+ >
|
|
|
|
|
+ <router-link :to="'/page/' + item.id">
|
|
|
|
|
+ <img :src="item.image" :alt="item.desc || item.title" style="width: 100%; height: 100%; object-fit: contain;">
|
|
|
|
|
+ <div class="caption">
|
|
|
|
|
+ <h3>{{ item.title }}</h3>
|
|
|
|
|
+ <p>{{ item.desc || '' }}</p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </router-link>
|
|
|
|
|
+ </Slide>
|
|
|
|
|
+ <template #addons>
|
|
|
|
|
+ <Navigation />
|
|
|
|
|
+ <Pagination />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </Carousel>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="d-flex flex-column col col-sm-12 col-md-6 col-lg-6 notices-list">
|
|
|
<div class="section-title">
|
|
<div class="section-title">
|
|
|
<div class="d-flex flex-row align-items-center">
|
|
<div class="d-flex flex-row align-items-center">
|
|
|
<h2 id="notices-button" @click="currentTab = 'notices'" :class="{'active': currentTab === 'notices'}" class="button icon">通知公告</h2>
|
|
<h2 id="notices-button" @click="currentTab = 'notices'" :class="{'active': currentTab === 'notices'}" class="button icon">通知公告</h2>
|
|
@@ -49,7 +72,7 @@
|
|
|
</router-link>
|
|
</router-link>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div v-if="currentTab === 'notices'" id="notices-list" class="notices-content">
|
|
|
|
|
|
|
+ <div v-if="currentTab === 'notices'" id="notices-list" class="notices-content flex-one flex-grow-1">
|
|
|
<SimplePageContentLoader :loader="notices" :showEmpty="!notices.content.value?.items?.length">
|
|
<SimplePageContentLoader :loader="notices" :showEmpty="!notices.content.value?.items?.length">
|
|
|
<div v-for="notice in notices.content.value?.items" :key="notice.id" class="notice-item">
|
|
<div v-for="notice in notices.content.value?.items" :key="notice.id" class="notice-item">
|
|
|
<div>
|
|
<div>
|
|
@@ -60,7 +83,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</SimplePageContentLoader>
|
|
</SimplePageContentLoader>
|
|
|
</div>
|
|
</div>
|
|
|
- <div v-if="currentTab === 'hot'" id="hot-news-list" class="news-content">
|
|
|
|
|
|
|
+ <div v-if="currentTab === 'hot'" id="hot-news-list" class="news-content flex-one flex-grow-1">
|
|
|
<SimplePageContentLoader :loader="hot" :showEmpty="!hot.content.value?.items?.length">
|
|
<SimplePageContentLoader :loader="hot" :showEmpty="!hot.content.value?.items?.length">
|
|
|
<div v-for="item in hot.content.value?.items" :key="item.id" class="news-item">
|
|
<div v-for="item in hot.content.value?.items" :key="item.id" class="news-item">
|
|
|
<router-link :to="'/page/' + item.id" class="title">{{ item.title }}</router-link>
|
|
<router-link :to="'/page/' + item.id" class="title">{{ item.title }}</router-link>
|
|
@@ -69,29 +92,7 @@
|
|
|
</SimplePageContentLoader>
|
|
</SimplePageContentLoader>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <div class="col col-sm-12 col-md-6 col-lg-6">
|
|
|
|
|
- <Carousel v-bind="carouselConfig">
|
|
|
|
|
- <Slide
|
|
|
|
|
- v-for="(item, key) in recommendArticles.content.value"
|
|
|
|
|
- :key="key"
|
|
|
|
|
- class="featured-image bg-secondary"
|
|
|
|
|
- :style="{ 'background-image': `url(${item.image})`, 'background-size': 'cover' }"
|
|
|
|
|
- >
|
|
|
|
|
- <router-link :to="'/page/' + item.id">
|
|
|
|
|
- <img :src="item.image" :alt="item.desc || item.title" style="width: 100%; height: 100%; object-fit: contain;">
|
|
|
|
|
- <div class="caption">
|
|
|
|
|
- <h3>{{ item.title }}</h3>
|
|
|
|
|
- <p>{{ item.desc || '' }}</p>
|
|
|
|
|
- </div>
|
|
|
|
|
- </router-link>
|
|
|
|
|
- </Slide>
|
|
|
|
|
- <template #addons>
|
|
|
|
|
- <Navigation />
|
|
|
|
|
- <Pagination />
|
|
|
|
|
- </template>
|
|
|
|
|
- </Carousel>
|
|
|
|
|
|
|
+ <!-- 学习强国 -->
|
|
|
<div class="d-flex flex-row justify-content-between">
|
|
<div class="d-flex flex-row justify-content-between">
|
|
|
<a href="http://cpc.people.com.cn/GB/67481/448544/index.html" class="w-50">
|
|
<a href="http://cpc.people.com.cn/GB/67481/448544/index.html" class="w-50">
|
|
|
<img src="https://wlj.xm.gov.cn/ztzl/202211/W020221213510920336898.jpg" class="mt-3" style="width: 100%; height:130px;object-fit:cover;" />
|
|
<img src="https://wlj.xm.gov.cn/ztzl/202211/W020221213510920336898.jpg" class="mt-3" style="width: 100%; height:130px;object-fit:cover;" />
|
|
@@ -195,13 +196,13 @@
|
|
|
<img class="title" src="@/assets/images/box-service.png" alt="公共服务">
|
|
<img class="title" src="@/assets/images/box-service.png" alt="公共服务">
|
|
|
<div class="services-grid">
|
|
<div class="services-grid">
|
|
|
|
|
|
|
|
- <div class="service-card" @click="handleServiceClick('volunteer')">
|
|
|
|
|
|
|
+ <a class="service-card" href="https://mp.weixin.qq.com/s/r6Tgsp068VNo4tVIA2sEHA" target="_blank">
|
|
|
<img class="icon" src="@/assets/images/icon-explore.png">
|
|
<img class="icon" src="@/assets/images/icon-explore.png">
|
|
|
<h3>志愿者招募</h3>
|
|
<h3>志愿者招募</h3>
|
|
|
- <a href="#" class="service-link">
|
|
|
|
|
|
|
+ <div class="service-link">
|
|
|
<Icon name="material-symbols-light:chevron-right" />
|
|
<Icon name="material-symbols-light:chevron-right" />
|
|
|
- </a>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </a>
|
|
|
|
|
|
|
|
<div class="service-card" @click="handleServiceClick('activity')">
|
|
<div class="service-card" @click="handleServiceClick('activity')">
|
|
|
<img class="icon" src="@/assets/images/icon-join.png">
|
|
<img class="icon" src="@/assets/images/icon-join.png">
|
|
@@ -211,12 +212,12 @@
|
|
|
</a>
|
|
</a>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="service-card" @click="handleServiceClick('contact')">
|
|
|
|
|
|
|
+ <div class="service-card" @click="router.push('/about/')">
|
|
|
<img class="icon" src="@/assets/images/icon-contract.png">
|
|
<img class="icon" src="@/assets/images/icon-contract.png">
|
|
|
<h3>联系咨询通道</h3>
|
|
<h3>联系咨询通道</h3>
|
|
|
- <a href="#" class="service-link">
|
|
|
|
|
|
|
+ <RouterLink to="/about/" class="service-link">
|
|
|
<Icon name="material-symbols-light:chevron-right" />
|
|
<Icon name="material-symbols-light:chevron-right" />
|
|
|
- </a>
|
|
|
|
|
|
|
+ </RouterLink>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -237,7 +238,9 @@ import CarouselItem3 from '@/assets/images/board1/3.jpg';
|
|
|
import CarouselItem4 from '@/assets/images/board1/4.jpg';
|
|
import CarouselItem4 from '@/assets/images/board1/4.jpg';
|
|
|
import CarouselItem5 from '@/assets/images/board1/5.jpg';
|
|
import CarouselItem5 from '@/assets/images/board1/5.jpg';
|
|
|
import type { ICarousel } from '~~/server/api/ecms/carousel';
|
|
import type { ICarousel } from '~~/server/api/ecms/carousel';
|
|
|
|
|
+import { useRouter } from 'vue-router';
|
|
|
|
|
|
|
|
|
|
+const router = useRouter();
|
|
|
const carouselConfig = {
|
|
const carouselConfig = {
|
|
|
itemsToShow: 1,
|
|
itemsToShow: 1,
|
|
|
wrapAround: true,
|
|
wrapAround: true,
|
|
@@ -303,10 +306,17 @@ function handleImageClick(image: ICarousel) {
|
|
|
window.open(image.url || image.image, '_blank');
|
|
window.open(image.url || image.image, '_blank');
|
|
|
}
|
|
}
|
|
|
function handleServiceClick(service: string) {
|
|
function handleServiceClick(service: string) {
|
|
|
- Modal.info({
|
|
|
|
|
- title: '提示',
|
|
|
|
|
- content: '网站正在进行内部测试,暂未对外开放功能,敬请期待。',
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ if (service === 'activity') {
|
|
|
|
|
+ Modal.info({
|
|
|
|
|
+ title: '提示',
|
|
|
|
|
+ content: '暂无最新活动',
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ Modal.info({
|
|
|
|
|
+ title: '提示',
|
|
|
|
|
+ content: '网站正在进行内部测试,暂未对外开放功能,敬请期待。',
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|