瀏覽代碼

📦 节庆日历1

imengyu 3 天之前
父節點
當前提交
045dacc885

+ 1 - 1
src/api/fusion/DemoSiteContent.ts

@@ -3,7 +3,7 @@ import { CommonContentApi } from '../CommonContent';
 export class DemoSiteContentApi extends CommonContentApi {
 
   constructor() {
-    super(9, "文旅融合示范点", 48);
+    super(17, "文旅融合示范点", 278);
   }
 }
 

+ 1 - 1
src/api/fusion/ProductContent.ts

@@ -3,7 +3,7 @@ import { CommonContentApi } from '../CommonContent';
 export class ProductContentApi extends CommonContentApi {
 
   constructor() {
-    super(9, "文创产品", 48);
+    super(9, "文创产品", 278);
   }
 }
 

+ 25 - 2
src/api/introduction/IndexContent.ts

@@ -1,4 +1,4 @@
-import { DataModel } from '@imengyu/js-request-transform';
+import { DataModel, transformArrayDataModel } from '@imengyu/js-request-transform';
 import { CommonContentApi } from '../CommonContent';
 
 export class IndexStats extends DataModel<IndexStats> {
@@ -22,6 +22,22 @@ export class IndexStats extends DataModel<IndexStats> {
   ichData: any;
   ichCenter: any;
 }
+export class IndexBanner extends DataModel<IndexBanner> {
+  constructor() {
+    super(IndexBanner, "首页轮播");
+    this.setNameMapperCase('Camel', 'Snake');
+    this._convertTable = {}
+  }
+
+  id = '';
+  title = '';
+  image = '';
+  typeText = '';
+  sceneText = '';
+  openTypeText = '';
+  statusText = '';
+}
+
 
 export class IndexContentApi extends CommonContentApi {
 
@@ -33,7 +49,14 @@ export class IndexContentApi extends CommonContentApi {
     return (await this.get('/volunteer/statistics/webData', '闽南文化首页数据统计', {
     }, IndexStats)).data as IndexStats
   }
-
+  async getBanner() {
+    return transformArrayDataModel<IndexBanner>(
+      IndexBanner,
+      (await this.get('/minnansoul/banner_function/getIndexBanner', '首页轮播图列表', {
+      })).data as any, 
+      '首页轮播图列表'
+    );
+  }
 }
 
 export default new IndexContentApi();

+ 52 - 34
src/views/FusionView.vue

@@ -26,7 +26,8 @@
               :key="index"
               :title="item.title"
               :image="item.image"
-              :desc="item.desc"
+              :desc="item.desc || item.title"
+              @click="goDetail(item.id)"
             />
           </div>
           <div class="month-grid col-12 col-lg-6 col-xl-6 p-0">
@@ -34,6 +35,7 @@
               v-for="(month, k) in monthData"
               :key="k"
               :class="[ monthSelected === month.month ? 'active' : '' ]"
+              @click="monthChange(month.month)"
             >
               <h3>{{ month.month }}月</h3>
               <div class="tags">
@@ -41,7 +43,7 @@
                   v-for="(holiday, index) in month.holidays"
                   :key="index"
                 >
-                  {{ holiday }}
+                  {{ holiday.title }}
                 </span>
               </div>
             </div>
@@ -66,7 +68,7 @@
 
 <script setup lang="ts">
 import { Carousel, Slide, Pagination, Navigation } from 'vue3-carousel'
-import { onMounted, ref } from 'vue';
+import { onMounted, ref, type Ref } from 'vue';
 import Image1 from '@/assets/images/fusion/Image1.jpg'
 import Image2 from '@/assets/images/fusion/Image2.jpg'
 import Image3 from '@/assets/images/fusion/Image3.jpg'
@@ -76,6 +78,7 @@ import LeftRightBox from '@/components/parts/LeftRightBox.vue';
 import ImageTitleDescBlock from '@/components/parts/ImageTitleDescBlock.vue';
 import ThreeImageList from '@/components/parts/ThreeImageList.vue';
 import { usePageAction } from '@/composeable/PageAction';
+import CommonContent, { GetContentListItem, GetContentListParams } from '@/api/CommonContent';
 
 const carouselConfig = {
   itemsToShow: 1,
@@ -129,74 +132,89 @@ const list = [
     image: '',
   }
 ]
-const daysData = [
-  {
-    title: '除夕',
-    desc: '闽南人视这一天为最高神天公的生日,非常重视。临近节日,家家户户都要打扫卫生、制作龟粿、发粿等,作为供品。红龟粿呈龟红色,打龟甲印,象征长寿。',
-    image: Image1,
-  },
-  {
-    title: '除夕',
-    desc: '闽南人视这一天为最高神天公的生日,非常重视。临近节日,家家户户都要打扫卫生、制作龟粿、发粿等,作为供品。红龟粿呈龟红色,打龟甲印,象征长寿。',
-    image: Image1,
-  },
-  {
-    title: '除夕',
-    desc: '闽南人视这一天为最高神天公的生日,非常重视。临近节日,家家户户都要打扫卫生、制作龟粿、发粿等,作为供品。红龟粿呈龟红色,打龟甲印,象征长寿。',
-    image: Image1,
-  },
-]
+const daysData = ref<GetContentListItem[]>([]) as Ref<GetContentListItem[]>
 const monthSelected = ref(1)
-const monthData = [
+const monthData = ref<{
+  month: number;
+  holidays: GetContentListItem[];
+}[]>([
   {
     month: 1,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 2,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 3,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 4,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 5,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 6,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 7,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 8,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 9,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 10,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 11,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
   {
     month: 12,
-    holidays: [ '除夕', '元旦', '春节' ]
+    holidays: []
   },
-]
+])
+
+onMounted(async () => {
+  const res = await CommonContent.getContentList(new GetContentListParams()
+    .setModelId(18)
+    .setMainBodyColumnId(272)
+  , 1, 50)
+
+  res.list.forEach(item => {
+    item.month = Math.floor(Math.random() * 12 + 1);
+    if (!item.desc)
+      item.desc = item.title;
+    item.title = item.title.substring(0, 10);
+  });
+
+  res.list.forEach(item => {
+    monthData.value[item.month as number - 1].holidays.push(item)
+  })
+
+  daysData.value = monthData.value[0].holidays as GetContentListItem[];
+});
+
+function goDetail(id: number) {
+  navTo(`/news/detail`, { id, modelId: 18 });
+}
+function monthChange(month: number) {
+  monthSelected.value = month;
+  daysData.value = monthData.value[month - 1].holidays as GetContentListItem[];
+}
 
 const { navTo } = usePageAction();
 

+ 14 - 5
src/views/HomeView.vue

@@ -3,8 +3,12 @@
   <div class="main-background">
     <!-- 轮播 -->
     <Carousel v-bind="carouselConfig" class="main-header-box carousel-light">
-      <Slide class="main-header-box">
-        <img src="@/assets/images/placeholder/Large2.jpg" />
+      <Slide 
+        v-for="(item, key) in bannerData.content.value"
+        :key="key"
+        class="main-header-box"
+      >
+        <img :src="item.image" />
         <div class="d-flex flex-row main-center-text">
           <div class="d-flex flex-column">
             <img src="@/assets/images/LargeTitle1.png" alt="闽南文化" />
@@ -28,7 +32,11 @@
 
         <SimplePageContentLoader :loader="recommendData">
           <Carousel ref="carousel2Ref" v-bind="carousel2Config">
-            <Slide v-for="(item, index) in recommendData.content.value" :key="index">
+            <Slide 
+              v-for="(item, index) in recommendData.content.value"
+              :key="index"
+              @click="router.push({ name: 'news-detail', query: { id: item.id } })"
+            >
               <ImageTitleBlock 
                 :image="item.image"
                 :title="item.title"
@@ -171,6 +179,9 @@ onMounted(() => {
 })
 
 
+const bannerData = useSimpleDataLoader(async () => {
+  return await IndexContent.getBanner()
+});
 const overviewData = useSimpleDataLoader(async () => {
   return (await IndexContent.getColumList(new GetContentListParams().setSelfValues({
     modelId: 3,
@@ -182,13 +193,11 @@ const recommendData = useSimpleDataLoader<GetContentListItem[]>(async () => {
     flag: 'recommend',
   }), 1, 6)).list
 });
-
 const newsData = useSimpleDataLoader<GetContentListItem[]>(async () => {
   return (await NewsIndexContent.getContentList(new GetContentListParams().setSelfValues({
     flag: 'recommend',
   }), 1, 6)).list
 });
-
 const statsData = useSimpleDataLoader(async () => {
   const data = (await IndexContent.getStats());
   console.log(data);