Przeglądaj źródła

🎨 按要求修改

快乐的梦鱼 1 tydzień temu
rodzic
commit
5bb4e67b2c

+ 0 - 32
package-lock.json

@@ -2862,21 +2862,6 @@
         "@vue/shared": "3.4.21"
       }
     },
-    "node_modules/@dcloudio/uni-mp-harmony": {
-      "version": "3.0.0-4070620250821001",
-      "resolved": "https://registry.npmjs.org/@dcloudio/uni-mp-harmony/-/uni-mp-harmony-3.0.0-4070620250821001.tgz",
-      "integrity": "sha512-CBlSXXca6IpnFIAvISD4OIAubWgZjA4psGo89+gSTFh50ximI9kwtnKP3/rUqRkuqWLfS9A+wrBalGYkF+xBBA==",
-      "license": "Apache-2.0",
-      "dependencies": {
-        "@dcloudio/uni-cli-shared": "3.0.0-4070620250821001",
-        "@dcloudio/uni-mp-toutiao": "3.0.0-4070620250821001",
-        "@dcloudio/uni-mp-vite": "3.0.0-4070620250821001",
-        "@dcloudio/uni-mp-vue": "3.0.0-4070620250821001",
-        "@dcloudio/uni-quickapp-webview": "3.0.0-4070620250821001",
-        "@dcloudio/uni-shared": "3.0.0-4070620250821001",
-        "@vue/shared": "3.4.21"
-      }
-    },
     "node_modules/@dcloudio/uni-mp-jd": {
       "version": "3.0.0-4080720251210001",
       "resolved": "https://registry.npmmirror.com/@dcloudio/uni-mp-jd/-/uni-mp-jd-3.0.0-4080720251210001.tgz",
@@ -5380,23 +5365,6 @@
       "license": "MIT",
       "peer": true
     },
-    "node_modules/@uni-helper/uni-app-types": {
-      "version": "1.0.0-alpha.7",
-      "resolved": "https://registry.npmjs.org/@uni-helper/uni-app-types/-/uni-app-types-1.0.0-alpha.7.tgz",
-      "integrity": "sha512-finIY/3JZ/w1nLKmM4V1NI7qDVaFn2sSpCNNXgUuF4xjSlwAEzV92DZrNmXLNlblmfrCSo6pqxCsFWxUrb5K5g==",
-      "dev": true,
-      "license": "MIT",
-      "engines": {
-        "node": ">=14.18"
-      },
-      "funding": {
-        "url": "https://github.com/ModyQyW/sponsors"
-      },
-      "peerDependencies": {
-        "typescript": "^5.0.0",
-        "vue": "^3.0.0"
-      }
-    },
     "node_modules/@vitejs/plugin-legacy": {
       "version": "5.3.2",
       "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-5.3.2.tgz",

+ 8 - 1
src/pages.json

@@ -34,9 +34,16 @@
       }
     },
     {
+      "path": "pages/introduction/recommend-news",
+      "style": {
+        "navigationBarTitleText": "闽南走透透",
+        "enablePullDownRefresh": true
+      }
+    },
+    {
       "path": "pages/introduction/map",
       "style": {
-        "navigationBarTitleText": "探索文化地图",
+        "navigationBarTitleText": "探索闽南文化",
         "enablePullDownRefresh": true
       }
     },

+ 4 - 4
src/pages/discover.vue

@@ -110,7 +110,7 @@
       </view>
 
       <!-- 传播交流 -->
-      <view class="d-flex flex-col">
+      <!-- <view class="d-flex flex-col">
         <HomeTitle title="传播交流" showMore @clickMore="goCommunicationList" />
         <SimplePageContentLoader :loader="communicationData">
           <Box2LineLargeImageUserShadow
@@ -122,10 +122,10 @@
             @click="goCommunicationDetail(item.id)"
           />
         </SimplePageContentLoader>
-      </view>
+      </view> -->
 
       <!-- 理论研究 -->
-      <view class="d-flex flex-col">
+      <!-- <view class="d-flex flex-col">
         <HomeTitle title="理论研究" showMore @clickMore="goDiscoveryList" />
         <SimplePageContentLoader :loader="discoveryData">
           <Box2LineLargeImageUserShadow
@@ -137,7 +137,7 @@
             @click="goDiscoveryDetail(item.id)"
           />
         </SimplePageContentLoader>
-      </view>
+      </view> -->
 
       <!-- 热门话题 -->
       <!-- <HomeTitle title="热门话题" />

+ 6 - 6
src/pages/home.vue

@@ -27,7 +27,7 @@
         </view>
         
         <HomeButton
-          title="探索文化地图"
+          title="探索闽南文化"
           icon="https://mncdn.wenlvti.net/app_static/minnan/images/home/IconMap.png"
           bg="https://mncdn.wenlvti.net/app_static/minnan/images/home/ButtonMapBg.png"
           large
@@ -48,7 +48,7 @@
           <HomeButton
             title="闽南走透透"
             icon="https://mncdn.wenlvti.net/app_static/minnan/images/home/IconArtifact.png"
-            @click="navTo('/pages/introduction/travel')"
+            @click="navTo('/pages/introduction/recommend-news')"
           />
           <HomeButton
             title="文旅探世界"
@@ -347,7 +347,7 @@ const indexAudioPlayer = useSimpleListAudioPlayer(async () => {
   return (await CommonContent.getContentList(new GetContentListParams()
     .setModelId(5)
     .setMainBodyColumnId(313)
-  , 1, 6)).list.sort(() => Math.random()>0.5?-1:1).map((p) => {
+  , 1, 6)).list.map((p) => {
     return {
       id: p.id,
       title: p.title,
@@ -390,9 +390,9 @@ const statsLoader = useSimpleDataLoader(async () => {
   const thirdLevelProject = data.ichData.find((p: any) => p.level_text == '省级')?.total || 0;
   const forthLevelProject = data.ichData.find((p: any) => p.level_text == '市级')?.total || 0;
 
-  const topLevelInheritor = data.ichData.find((p: any) => p.level_text == '国家级')?.total || 0;
-  const secondLevelInheritor = data.ichData.find((p: any) => p.level_text == '省级')?.total || 0;
-  const thirdLevelInheritor = data.ichData.find((p: any) => p.level_text == '市级')?.total || 0;
+  const topLevelInheritor = data.inheritorData.find((p: any) => p.level_text == '国家级')?.total || 0;
+  const secondLevelInheritor = data.inheritorData.find((p: any) => p.level_text == '省级')?.total || 0;
+  const thirdLevelInheritor = data.inheritorData.find((p: any) => p.level_text == '市级')?.total || 0;
 
   const projects = (data.ichData as any[]).filter((p: any) => [ '人类非遗', '国家级', '省级', '市级' ].includes(p.level_text)).map((item: any) => {
     if (item.level_text != '人类非遗')

+ 0 - 2
src/pages/inhert/language/list.vue

@@ -95,8 +95,6 @@ const player = ref();
 const playMode = ref<'loop'|'random'|'list'>(uni.getStorageSync('LanguagePlayMode') || 'list');
 const playAuto = ref(Boolean(uni.getStorageSync('LanguageAutoPlay')));
 
-console.log(playAuto);
-
 const searchValue = ref('');
 const tab = ref(-1)
 const listLoader = useSimplePageListLoader(8, async (page, pageSize) => {

+ 52 - 92
src/pages/introduction/inhert.vue

@@ -25,41 +25,37 @@
     <!-- 非遗传承人 -->
     <HomeTitle title="非遗传承人" showMore @clickMore="navTo('/pages/inhert/inheritor/list')" />
     <SimplePageContentLoader :loader="inheritorData">
-      <scroll-view scroll-x>
-        <FlexCol>
-          <Box2LineImageRightShadow
-            v-for="(item, i) in inheritorData.content.value"
-            titleColor="title-text"
-            fixSize
-            :key="i"
-            :title="item.title"
-            :desc="item.desc"
-            :image="item.image"
-            :tags="item.bottomTags"
-            @click="navTo('/pages/inhert/inheritor/details', { id: item.id })"
-          />
-        </FlexCol>
-      </scroll-view>
+      <FlexCol>
+        <Box2LineImageRightShadow
+          v-for="(item, i) in inheritorData.content.value"
+          titleColor="title-text"
+          fixSize
+          :key="i"
+          :title="item.title"
+          :desc="item.desc"
+          :image="item.image"
+          :tags="item.bottomTags"
+          @click="navTo('/pages/inhert/inheritor/details', { id: item.id })"
+        />
+      </FlexCol>
     </SimplePageContentLoader>
 
     <!-- 保护单位 -->
     <HomeTitle title="保护单位" showMore @clickMore="navTo('/pages/inhert/unit/list')" />
     <SimplePageContentLoader :loader="unitData">
-      <scroll-view scroll-x>
-        <FlexCol>
-          <Box2LineImageRightShadow
-            v-for="(item, i) in unitData.content.value"
-            titleColor="title-text"
-            fixSize
-            :key="i"
-            :title="item.title"
-            :desc="item.desc"
-            :image="item.image"
-            :tags="item.bottomTags"
-            @click="navTo('inhert/intangible/details', { id: item.id })"
-          />
-        </FlexCol>
-      </scroll-view>
+      <FlexCol>
+        <Box2LineImageRightShadow
+          v-for="(item, i) in unitData.content.value"
+          titleColor="title-text"
+          fixSize
+          :key="i"
+          :title="item.title"
+          :desc="item.desc"
+          :image="item.image"
+          :tags="item.bottomTags"
+          @click="navTo('inhert/intangible/details', { id: item.id })"
+        />
+      </FlexCol>
     </SimplePageContentLoader>
 
     <!-- 非遗传习所 -->
@@ -70,61 +66,37 @@
       detailsPage: '/pages/inhert/seminar/details',
     })" />
     <SimplePageContentLoader :loader="seminarData">
-      <scroll-view scroll-x>
-        <FlexCol overflow="visible">
-          <Box2LineImageRightShadow
-            v-for="(item, i) in seminarData.content.value"
-            titleColor="title-text"
-            fixSize
-            :key="i"
-            :title="item.title"
-            :desc="item.desc"
-            :image="item.image"
-            :tags="item.bottomTags"
-            @click="navTo('inhert/seminar/details', { id: item.id })"
-          />
-        </FlexCol>
-      </scroll-view>
+      <FlexCol overflow="visible">
+        <Box2LineImageRightShadow
+          v-for="(item, i) in seminarData.content.value"
+          titleColor="title-text"
+          fixSize
+          :key="i"
+          :title="item.title"
+          :desc="item.desc"
+          :image="item.image"
+          :tags="item.bottomTags"
+          @click="navTo('inhert/seminar/details', { id: item.id })"
+        />
+      </FlexCol>
     </SimplePageContentLoader>
 
     <!-- 非遗活动 -->
     <HomeTitle title="非遗活动" showMore @clickMore="goActivityList" />
     <SimplePageContentLoader :loader="activityData">
-      <scroll-view scroll-x>
-        <FlexRow wrap align="stretch" justify="space-between" overflow="visible">
-          <Box2LineLargeImageUserShadow
-            v-for="(item, i) in activityData.content.value"
-            titleColor="title-text"
-            width="calc(50% - 10rpx)"
-            fixSize
-            :key="i"
-            :title="item.title"
-            :desc="item.desc"
-            :image="item.image"
-            @click="goActivityDetail(item.id)"
-          />
-        </FlexRow>
-      </scroll-view>
-    </SimplePageContentLoader>
-
-    <!-- 重点区域 -->
-    <HomeTitle title="重点区域" showMore @clickMore="goAreaList" />
-    <SimplePageContentLoader :loader="areaData">
-      <scroll-view scroll-x>
-        <FlexRow wrap align="stretch" justify="space-between" overflow="visible">
-          <Box2LineLargeImageUserShadow
-            v-for="(item, i) in areaData.content.value"
-            titleColor="title-text"
-            width="calc(50% - 10rpx)"
-            fixSize
-            :key="i"
-            :title="item.title"
-            :desc="item.desc"
-            :image="item.image"
-            @click="goActivityDetail(item.id)"
-          />
-        </FlexRow>
-      </scroll-view>
+      <FlexRow wrap align="stretch" justify="space-between" overflow="visible">
+        <Box2LineLargeImageUserShadow
+          v-for="(item, i) in activityData.content.value"
+          titleColor="title-text"
+          width="calc(50% - 10rpx)"
+          fixSize
+          :key="i"
+          :title="item.title"
+          :desc="item.desc"
+          :image="item.image"
+          @click="goActivityDetail(item.id)"
+        />
+      </FlexRow>
     </SimplePageContentLoader>
   </FlexCol>
 </template>
@@ -213,16 +185,4 @@ const {
   itemType: 'article-common',
   detailsPage: '/pages/article/details',
 });
-
-const {
-  loader: areaData,
-  goList: goAreaList,
-  goDetail: goAreaDetail,
-} = useHomePageMiniCommonListGoMoreAndGoDetail({
-  title: '重点区域',
-  mainBodyColumnId: 283,
-  modelId: 17,
-  itemType: 'article-common',
-  detailsPage: '/pages/article/details',
-});
 </script>

+ 13 - 13
src/pages/introduction/map.vue

@@ -98,10 +98,10 @@ const categoryDefine = [
     detailPage: '/pages/introduction/character/details',
     morePage: '/pages/introduction/character/list',
   },
-  {
-    title: '语言文化',
-    content: LanguageContent,
-  },
+  // {
+  //   title: '语言文化',
+  //   content: LanguageContent,
+  // },
   {
     title: '民间习俗',
     content: CustomContent,
@@ -111,18 +111,18 @@ const categoryDefine = [
     title: '艺术特色',
     content: FeatureContent,
   },
-  {
-    title: '建筑文化',
-    content: BulidingContent,
-  },
+  // {
+  //   title: '建筑文化',
+  //   content: BulidingContent,
+  // },
   {
     title: '饮食文化',
     content: VictualsContent,
   },
-  {
-    title: '海洋文化',
-    content: SeaContent,
-  },
+  // {
+  //   title: '海洋文化',
+  //   content: SeaContent,
+  // },
   {
     title: '政策法规',
     content: PolicyContent,
@@ -157,7 +157,7 @@ const categoryDatas = categoryDefine.map(item => ({
     (await item.content.getContentList(new GetContentListParams(), 1, 3)).list.map(p => ({
       id: p.id,
       title: p.title, 
-      desc: p.desc, 
+      desc: `来源:${p.from || '暂无'}\n` + (p.desc || ''), 
       image: p.thumbnail || p.image,
       bottomTags: p.keywords as string[],
     }))

+ 66 - 0
src/pages/introduction/recommend-news.vue

@@ -0,0 +1,66 @@
+
+<template>
+  <CommonRoot>
+    <FlexCol :padding="30" innerClass="bg-base">
+      <SearchBar
+        v-model="searchText"
+        inputBackgroundColor="transparent"
+        leftIcon=""
+        placeholder="搜索新闻"
+        cancelState="hidden"
+        searchState="show"
+        @search="loadNews"
+      />
+      <Box2LineImageRightShadow 
+        v-for="(item, i) in newsLoader.list.value"
+        :key="item.id"
+        :class="[
+          'position-relative d-flex flex-grow-1',
+        ]"
+        class="w-100"
+        titleColor="title-text"
+        :image="item.thumbnail || item.image"
+        :title="item.title"
+        :desc="item.from ? `来源:${item.from}` : ''"
+        :badge="item.badge"
+        :wideImage="true"
+        @click="goDetails(item, item.id)"
+      />
+      <SimplePageListLoader :loader="newsLoader" />
+    </FlexCol>
+  </CommonRoot>
+</template>
+
+<script setup lang="ts">
+import { onMounted, ref } from 'vue';
+import { type GetContentListItem, GetContentListParams } from '@/api/CommonContent';
+import { useSimplePageListLoader } from '@/common/composeabe/SimplePageListLoader';
+import NewsIndexContent from '@/api/news/NewsIndexContent';
+import SimplePageListLoader from '@/common/components/SimplePageListLoader.vue';
+import CommonRoot from '@/components/dialog/CommonRoot';
+import FlexCol from '@/components/layout/FlexCol.vue';
+import SearchBar from '@/components/form/SearchBar.vue';
+import Box2LineImageRightShadow from '../parts/Box2LineImageRightShadow.vue';
+
+const searchText = ref('');
+
+const newsLoader = useSimplePageListLoader(10, async (page, pageSize) => {
+  return await NewsIndexContent.getContentList(new GetContentListParams()
+    .setKeywords(searchText.value)
+    .setMainBodyColumnId([260, 261, 262])
+  , page, pageSize);
+});
+
+function loadNews() {
+  newsLoader.loadData(undefined, true);
+}
+function goDetails(item: GetContentListItem, id: number) {
+  uni.navigateTo({
+    url: '/pages/article/details?id=' + id,
+  });
+}
+
+onMounted(() => {
+  loadNews();
+});
+</script>

+ 30 - 0
src/pages/introduction/travel.vue

@@ -25,6 +25,24 @@
       </scroll-view>
     </SimplePageContentLoader>
 
+    <!-- 闽南时尚 -->
+    <HomeTitle title="闽南时尚" showMore @clickMore="navTo('/pages/travel/fashion/list')" />
+    <SimplePageContentLoader :loader="songsData">
+      <FlexRow wrap align="stretch" justify="space-between" overflow="visible">
+        <Box2LineLargeImageUserShadow
+          v-for="(item, i) in songsData.content.value"
+          titleColor="title-text"
+          width="calc(50% - 10rpx)"
+          fixSize
+          :key="i"
+          :title="item.title"
+          :desc="item.desc"
+          :image="item.image"
+          @click="goSongsDetail(item.id)"
+        />
+      </FlexRow>
+    </SimplePageContentLoader>
+
     <!-- 文化旅游路线 -->
     <HomeTitle title="文化旅游路线" showMore @clickMore="goRouteList" />
     <SimplePageContentLoader :loader="routeData">
@@ -81,6 +99,7 @@ import ProjectsContent from '@/api/inheritor/ProjectsContent';
 import CalendarBlock from '../travel/calendar/block.vue';
 import SeminarContent from '@/api/inheritor/SeminarContent';
 import ScenicSpotContent from '@/api/fusion/ScenicSpotContent';
+import FlexRow from '@/components/layout/FlexRow.vue';
 
 const intangibleData = useSimpleDataLoader(async () => 
   (await ProjectsContent.getContentList(new GetContentListParams(), 1, 4)).list.map(p => ({
@@ -139,6 +158,17 @@ const seminarData = useSimpleDataLoader(async () =>
   }))
 );
 
+const {
+  loader: songsData,
+  goList: goSongsList,
+  goDetail: goSongsDetail,
+} = useHomePageMiniCommonListGoMoreAndGoDetail({
+  title: '闽南时尚',
+  mainBodyColumnId: [315],
+  modelId: 16,
+  itemType: 'article-common',
+  detailsPage: '/pages/video/details',
+});
 
 const {
   loader: routeData,