|
@@ -1,550 +1,265 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <view style="padding-bottom: 160rpx;">
|
|
|
|
|
- <view class="top-slogan">
|
|
|
|
|
- <view class="slogan">
|
|
|
|
|
- <view class="h">翔安文化挖掘传承平台</view>
|
|
|
|
|
- <view class="sub">
|
|
|
|
|
- <text class="iconfont icon-chat"></text>香承文脉,两两相传,与你同行 ~~
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="search">
|
|
|
|
|
- <uni-search-bar
|
|
|
|
|
- radius="100"
|
|
|
|
|
- bgColor="#fff"
|
|
|
|
|
- placeholder="搜一搜 马上出发"
|
|
|
|
|
- clearButton="auto"
|
|
|
|
|
- cancelButton="none"
|
|
|
|
|
- @confirm="search"/>
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
+ <view class="submit_main">
|
|
|
|
|
+ <view class="img-banner">
|
|
|
|
|
+ <image mode="aspectFill" src="https://mn.wenlvti.net/app_static/xiangan/banner_submit.jpg"></image>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="main first">
|
|
|
|
|
- <view class="banner">
|
|
|
|
|
- <swiper class="swiper right-indicator" circular :indicator-dots="true" :autoplay="true" :interval="2000" :duration="1000">
|
|
|
|
|
- <swiper-item v-for="item in bannerData" :key="item.id">
|
|
|
|
|
- <view class="item">
|
|
|
|
|
- <image :src="item.image" mode="aspectFill"></image>
|
|
|
|
|
- </view>
|
|
|
|
|
- </swiper-item>
|
|
|
|
|
- </swiper>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="navigation">
|
|
|
|
|
- <view class="item">
|
|
|
|
|
- <view class="left">
|
|
|
|
|
- <view class="title">文化底蕴</view>
|
|
|
|
|
- <view class="title_en">Cultural deposits</view>
|
|
|
|
|
- <image src="https://mn.wenlvti.net/app_static/xiangan/MainBoxIcon1.png" mode="aspectFill"></image>
|
|
|
|
|
- <view class="arrow">
|
|
|
|
|
- <text class="iconfont icon-arrow-right"></text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="right">
|
|
|
|
|
- <view class="cat top" @click="navTo('/pages/culture/history/calendar')"><view><view>历史</view><view>沿革</view></view></view>
|
|
|
|
|
- <view class="cat" @click="navTo('/pages/culture/index', { tab: 1 })"><view><view>文化</view><view>动态</view></view></view>
|
|
|
|
|
- <view class="cat bottom" @click="navTo('/pages/inherit/village/list')">村史馆</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="item ">
|
|
|
|
|
- <view class="left blue">
|
|
|
|
|
- <view class="title">文化传承</view>
|
|
|
|
|
- <view class="title_en">Cultural Heritage</view>
|
|
|
|
|
- <image src="https://mn.wenlvti.net/app_static/xiangan/MainBoxIcon2.png" mode="aspectFill"></image>
|
|
|
|
|
- <view class="arrow">
|
|
|
|
|
- <text class="iconfont icon-arrow-right"></text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="right">
|
|
|
|
|
- <view class="cat top" @click="navTo('/pages/inherit/intangible/index')">非遗</view>
|
|
|
|
|
- <view class="cat" @click="navTo('/pages/inherit/artifact/index')">文物</view>
|
|
|
|
|
- <view class="cat bottom" @click="navTo('/pages/culture/activity/calendar')"><view><view>文化</view><view>活动</view></view></view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="item">
|
|
|
|
|
- <view class="left blue">
|
|
|
|
|
- <view class="title">文化守护</view>
|
|
|
|
|
- <view class="title_en">Guarding </view>
|
|
|
|
|
- <image src="https://mn.wenlvti.net/app_static/xiangan/MainBoxIcon4.png" mode="aspectFill"></image>
|
|
|
|
|
- <view class="arrow">
|
|
|
|
|
- <text class="iconfont icon-arrow-right"></text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="right">
|
|
|
|
|
- <view class="cat top" @click="goWewuGuanjia"><view><view>文物</view><view>管家</view></view></view>
|
|
|
|
|
- <view class="cat" @click="navTo('article/xiangjin/index')"><view><view>翔金</view><view>情缘</view></view></view>
|
|
|
|
|
- <view class="cat bottom" @click="navTo('dig/index')"><view><view>共建</view><view>村史</view></view></view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="item ">
|
|
|
|
|
- <view class="left">
|
|
|
|
|
- <view class="title">文旅融合</view>
|
|
|
|
|
- <view class="title_en">Cultural Tourism</view>
|
|
|
|
|
- <image src="https://mn.wenlvti.net/app_static/xiangan/MainBoxIcon3.png" mode="aspectFill"></image>
|
|
|
|
|
- <view class="arrow">
|
|
|
|
|
- <text class="iconfont icon-arrow-right"></text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="right">
|
|
|
|
|
- <view class="cat top" @click="navTo('running/index')">文物跑</view>
|
|
|
|
|
- <view class="cat" @click="navTo('article/food/index')"><view><view>翔安</view><view>百味</view></view></view>
|
|
|
|
|
- <view class="cat bottom" @click="navTo('article/mountainsea/index')"><view><view>山海</view><view>田厝</view></view></view>
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
+ <view class="main">
|
|
|
|
|
+ <template v-if="!villageListLoader.content.value?.length">
|
|
|
|
|
+ <view class="cat">
|
|
|
|
|
+ <text>村庄认领</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
+ <u-button type="primary" @click="goClamVillage">
|
|
|
|
|
+ <text>+</text>
|
|
|
|
|
+ 认领新村庄
|
|
|
|
|
+ </u-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <view class="cat">
|
|
|
|
|
+ <text>我的村庄</text>
|
|
|
</view>
|
|
</view>
|
|
|
-
|
|
|
|
|
- <!-- 说透透 -->
|
|
|
|
|
- <view class="category">
|
|
|
|
|
- <view class="name">说透透</view>
|
|
|
|
|
- <view class="more" @click="goNews(NewsIndexContent.modelId, 308)">更多》</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="audio-list">
|
|
|
|
|
- <SimplePageContentLoader
|
|
|
|
|
- :loader="speakLoader" lazy
|
|
|
|
|
- :showEmpty="speakLoader.content.value?.length == 0"
|
|
|
|
|
- >
|
|
|
|
|
- <view class="item"
|
|
|
|
|
- v-for="item in speakLoader.content.value"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- @click="goNewsDetails(item.id)"
|
|
|
|
|
- >
|
|
|
|
|
- <image :src="item.image" mode="aspectFill"></image>
|
|
|
|
|
- <view class="info">
|
|
|
|
|
- <view class="name">{{ item.title }}</view>
|
|
|
|
|
- <view class="place">{{ item.desc || item.district }}</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="audio">
|
|
|
|
|
- <view class="play-btn">
|
|
|
|
|
- <text class="iconfont icon-play-b"></text>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view>{{ item.duration }}</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </SimplePageContentLoader>
|
|
|
|
|
- </view>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 走透透 -->
|
|
|
|
|
- <view class="category">
|
|
|
|
|
- <view class="name">走透透</view>
|
|
|
|
|
- <view class="more" @click="goNews(NewsIndexContent.modelId, 309)">更多》</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="complex-swiper sm">
|
|
|
|
|
- <SimplePageContentLoader
|
|
|
|
|
- :loader="walkLoader" lazy
|
|
|
|
|
- :showEmpty="walkLoader.content.value?.length == 0"
|
|
|
|
|
|
|
+ <RequireLogin unLoginMessage="登录后查看我认领的村庄">
|
|
|
|
|
+ <SimplePageContentLoader
|
|
|
|
|
+ :loader="villageListLoader"
|
|
|
|
|
+ :showEmpty="villageListLoader.content.value?.length == 0"
|
|
|
|
|
+ :emptyView="{
|
|
|
|
|
+ text: '你还没有认领的村庄',
|
|
|
|
|
+ button: true,
|
|
|
|
|
+ buttonText: '去认领',
|
|
|
|
|
+ buttonClick: goClamVillage,
|
|
|
|
|
+ }"
|
|
|
>
|
|
>
|
|
|
- <swiper
|
|
|
|
|
- v-if="walkLoader.content.value?.length"
|
|
|
|
|
- class="swiper"
|
|
|
|
|
- :autoplay="false"
|
|
|
|
|
- :circular="false"
|
|
|
|
|
- :duration="500"
|
|
|
|
|
- :next-margin="'235rpx'"
|
|
|
|
|
- >
|
|
|
|
|
- <swiper-item
|
|
|
|
|
- v-for="item in walkLoader.content.value"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- @click="goNewsDetails(item.id)"
|
|
|
|
|
- >
|
|
|
|
|
- <view class="item">
|
|
|
|
|
- <image :src="item.image" mode="aspectFill"></image>
|
|
|
|
|
- <view class="name">
|
|
|
|
|
- <text>{{ item.title }}</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </swiper-item>
|
|
|
|
|
- </swiper>
|
|
|
|
|
- </SimplePageContentLoader>
|
|
|
|
|
- </view>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 看透透 -->
|
|
|
|
|
- <view class="category">
|
|
|
|
|
- <view class="name">看透透
|
|
|
|
|
- <view class="category-tag">
|
|
|
|
|
- <text class="triangle"></text>
|
|
|
|
|
- <text>探秘非遗,领略时光雕琢的惊艳技艺</text>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="more" @click="navTo('/pages/inherit/intangible/index')">更多》</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <SimplePageContentLoader :loader="viewsLoader" lazy>
|
|
|
|
|
- <scroll-view scroll-x>
|
|
|
|
|
- <view class="d-flex flex-row">
|
|
|
|
|
|
|
+ <view class="village-list">
|
|
|
<view
|
|
<view
|
|
|
- v-for="(item, i) in viewsLoader.content.value"
|
|
|
|
|
- :key="i"
|
|
|
|
|
- class="mr-2"
|
|
|
|
|
- @click="navTo('/pages/inherit/intangible/details', { id: item.id })"
|
|
|
|
|
|
|
+ v-for="item in villageListLoader.content.value"
|
|
|
|
|
+ :key="item.id"
|
|
|
|
|
+ class="item"
|
|
|
>
|
|
>
|
|
|
- <image
|
|
|
|
|
- class="width-300 height-200 radius-base"
|
|
|
|
|
- :src="item.image"
|
|
|
|
|
|
|
+ <ImageWrapper
|
|
|
mode="aspectFill"
|
|
mode="aspectFill"
|
|
|
|
|
+ :src="item.image"
|
|
|
|
|
+ width="154rpx"
|
|
|
|
|
+ height="154rpx"
|
|
|
/>
|
|
/>
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- </scroll-view>
|
|
|
|
|
- </SimplePageContentLoader>
|
|
|
|
|
- </view>
|
|
|
|
|
-
|
|
|
|
|
- <!-- 最新资讯 -->
|
|
|
|
|
- <view class="main">
|
|
|
|
|
- <!-- 最新资讯 -->
|
|
|
|
|
- <view class="category">
|
|
|
|
|
- <view class="name">最新资讯</view>
|
|
|
|
|
- <view class="more" @click="navTo('culture/index', { tab: 1 })">更多》</view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="news-simple-list-with-stats">
|
|
|
|
|
- <SimplePageContentLoader
|
|
|
|
|
- :loader="newsLoader" lazy
|
|
|
|
|
- :showEmpty="newsLoader.content.value?.length == 0"
|
|
|
|
|
- >
|
|
|
|
|
- <view
|
|
|
|
|
- class="item"
|
|
|
|
|
- v-for="item in newsLoader.content.value"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- @click="goNewsDetails(item.id)"
|
|
|
|
|
- >
|
|
|
|
|
- <image :src="item.image"></image>
|
|
|
|
|
- <view class="info">
|
|
|
|
|
- <view class="name ellipsis-2">{{ item.title }} | {{ item.desc }}</view>
|
|
|
|
|
- <view class="extra">
|
|
|
|
|
- <text class="iconfont icon-time"></text>
|
|
|
|
|
- <text>{{ DateUtils.formatDate(item.publishAt, DateUtils.FormatStrings.YearChanese) }}</text>
|
|
|
|
|
- <text class="iconfont icon-view"></text>
|
|
|
|
|
- <text>{{ item.views }}</text>
|
|
|
|
|
- <text class="iconfont icon-fav"></text>
|
|
|
|
|
- <text>{{ item.likes }}</text>
|
|
|
|
|
|
|
+ <view class="info">
|
|
|
|
|
+ <view class="name">{{ item.villageName }}</view>
|
|
|
|
|
+ <view class="d-flex flex-row align-center">
|
|
|
|
|
+ <view class="btn p-1 pr-2" @click="navTo('/pages/inherit/village/details', { id: item.villageId })">
|
|
|
|
|
+ <text class="iconfont icon-view"></text>预览
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="btn p-1 pr-2 active" @click="goSubmitDigPage(item)">
|
|
|
|
|
+ <text class="iconfont icon-search"></text>采编
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-if="authStore.isAdmin" class="btn p-1 pr-2 active" @click="goManagePage(item)">
|
|
|
|
|
+ 管理
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</SimplePageContentLoader>
|
|
</SimplePageContentLoader>
|
|
|
|
|
+ </RequireLogin>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="cat">
|
|
|
|
|
+ <text>我的贡献</text>
|
|
|
</view>
|
|
</view>
|
|
|
- <!-- 精彩推荐 -->
|
|
|
|
|
- <view class="category">
|
|
|
|
|
- <view class="name">精彩推荐</view>
|
|
|
|
|
- <view class="more"></view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <SimplePageContentLoader :loader="recommendLoader" lazy>
|
|
|
|
|
- <view class="d-flex flex-row justify-between flex-wrap">
|
|
|
|
|
- <view
|
|
|
|
|
- v-for="(tab, k) in recommendLoader.content.value"
|
|
|
|
|
- :key="k"
|
|
|
|
|
- class="grid4-item position-relative mb-3"
|
|
|
|
|
- @click="handleGoDetails(tab)"
|
|
|
|
|
- >
|
|
|
|
|
- <text
|
|
|
|
|
- class="tag bg-mask-white color-primary radius-l p-1 position-absolute size-s text-lines-1"
|
|
|
|
|
- >
|
|
|
|
|
- {{ tab.title }}
|
|
|
|
|
- </text>
|
|
|
|
|
- <image
|
|
|
|
|
- class="w-100 height-250 radius-base"
|
|
|
|
|
- :src="tab.thumbnail || tab.image || ImagesUrls.defaultImage"
|
|
|
|
|
- mode="aspectFill"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <RequireLogin unLoginMessage="登录后贡献,加入排行榜">
|
|
|
|
|
+ <view class="retribution">
|
|
|
|
|
+ <view class="item">
|
|
|
|
|
+ <text class="iconfont icon-total-points"></text>
|
|
|
|
|
+ <view class="num">{{ volunteerInfoLoader.content.value?.points }}</view>
|
|
|
|
|
+ <view>文化积分</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view>
|
|
|
|
|
+ <text class="iconfont icon-art-arrow"></text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item">
|
|
|
|
|
+ <text class="iconfont icon-level"></text>
|
|
|
|
|
+ <view class="level">Lv.{{ volunteerInfoLoader.content.value?.level }}</view>
|
|
|
|
|
+ <view>等级</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
- </SimplePageContentLoader>
|
|
|
|
|
|
|
+ </RequireLogin>
|
|
|
</view>
|
|
</view>
|
|
|
- <tabbar :current="0"></tabbar>
|
|
|
|
|
- </view>
|
|
|
|
|
|
|
+ </view>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { ref } from "vue";
|
|
|
|
|
-import { onShareAppMessage, onShareTimeline } from "@dcloudio/uni-app";
|
|
|
|
|
-import { useSimplePageContentLoader } from "@/common/composeabe/SimplePageContentLoader";
|
|
|
|
|
-import { navTo } from "@imengyu/imengyu-utils/dist/uniapp/PageAction";
|
|
|
|
|
-import CommonContent, { GetContentListParams, type GetContentListItem } from "@/api/CommonContent";
|
|
|
|
|
-import NewsIndexContent from "@/api/news/NewsIndexContent";
|
|
|
|
|
-import UniSearchBar from "../uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue";
|
|
|
|
|
-import Tabbar from '@/pages/component/tabbar.vue'
|
|
|
|
|
-import SimplePageContentLoader from "@/common/components/SimplePageContentLoader.vue";
|
|
|
|
|
-import DateUtils from "@imengyu/imengyu-utils/dist/DateUtils";
|
|
|
|
|
-import ProjectsContent from "@/api/inheritor/ProjectsContent";
|
|
|
|
|
-import ImagesUrls from "@/common/config/ImagesUrls";
|
|
|
|
|
-import ProductsContent from "@/api/inheritor/ProductsContent";
|
|
|
|
|
|
|
+import VillageApi, { VillageListItem } from '@/api/inhert/VillageApi';
|
|
|
|
|
+import ImageWrapper from '@/common/components/ImageWrapper.vue';
|
|
|
|
|
+import RequireLogin from '@/common/components/RequireLogin.vue';
|
|
|
|
|
+import SimplePageContentLoader from '@/common/components/SimplePageContentLoader.vue';
|
|
|
|
|
+import { useReqireLogin } from '@/common/composeabe/RequireLogin';
|
|
|
|
|
+import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
|
|
|
|
|
+import { useAuthStore } from '@/store/auth';
|
|
|
|
|
+import { navTo } from '@imengyu/imengyu-utils/dist/uniapp/PageAction';
|
|
|
|
|
|
|
|
|
|
+const authStore = useAuthStore();
|
|
|
|
|
+const villageListLoader = useSimpleDataLoader(async () => await VillageApi.getClaimedVallageList(), true);
|
|
|
|
|
+const volunteerInfoLoader = useSimpleDataLoader(async () => await VillageApi.getVolunteerInfo(), true);
|
|
|
|
|
+const rankListLoader = useSimpleDataLoader(async () => await VillageApi.getVolunteerRanklist(), true);
|
|
|
|
|
|
|
|
-const newsLoader = useSimplePageContentLoader<GetContentListItem[]>(async (params) => {
|
|
|
|
|
- const res = await NewsIndexContent.getContentList(new GetContentListParams().setSelfValues({
|
|
|
|
|
- }), 1, 4);
|
|
|
|
|
- return res.list;
|
|
|
|
|
-});
|
|
|
|
|
-const walkLoader = useSimplePageContentLoader<GetContentListItem[]>(async (params) => {
|
|
|
|
|
- const res = await NewsIndexContent.getContentList(new GetContentListParams().setSelfValues({
|
|
|
|
|
- mainBodyColumnId: 309,
|
|
|
|
|
- }), 1, 4);
|
|
|
|
|
- return res.list;
|
|
|
|
|
-});
|
|
|
|
|
-const speakLoader = useSimplePageContentLoader<GetContentListItem[]>(async (params) => {
|
|
|
|
|
- const res = await NewsIndexContent.getContentList(new GetContentListParams().setSelfValues({
|
|
|
|
|
- mainBodyColumnId: 308,
|
|
|
|
|
- }), 1, 4);
|
|
|
|
|
- return res.list;
|
|
|
|
|
-});
|
|
|
|
|
-const viewsLoader = useSimplePageContentLoader<GetContentListItem[]>(async (params) => {
|
|
|
|
|
- const res = await ProjectsContent.getContentList(new GetContentListParams().setSelfValues({
|
|
|
|
|
- }), 1, 4);
|
|
|
|
|
- return res.list;
|
|
|
|
|
-});
|
|
|
|
|
-const recommendLoader = useSimplePageContentLoader<GetContentListItem[]>(async (params) => {
|
|
|
|
|
- const list = [];
|
|
|
|
|
- list.push(...(await ProjectsContent.getContentList(new GetContentListParams(), 1, 6)).list.map((p) => {
|
|
|
|
|
- p.itemType = 'intangible';
|
|
|
|
|
- return p;
|
|
|
|
|
- }));
|
|
|
|
|
- list.push(...(await CommonContent.getContentList(new GetContentListParams()
|
|
|
|
|
- .setModelId(1)
|
|
|
|
|
- , 1, 6)).list.map((p) => {
|
|
|
|
|
- p.itemType = 'artifact';
|
|
|
|
|
- return p;
|
|
|
|
|
- }));
|
|
|
|
|
- list.push(...(await ProductsContent.getContentList(new GetContentListParams(), 1, 6)).list.map((p) => {
|
|
|
|
|
- p.itemType = 'intangible';
|
|
|
|
|
- return p;
|
|
|
|
|
- }));
|
|
|
|
|
- return list;
|
|
|
|
|
-});
|
|
|
|
|
|
|
+const { requireLogin } = useReqireLogin();
|
|
|
|
|
|
|
|
-const bannerData = [
|
|
|
|
|
- {
|
|
|
|
|
- id: 1,
|
|
|
|
|
- image: 'https://mn.wenlvti.net/app_static/xiangan/index_banner_1.jpg',
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: 2,
|
|
|
|
|
- image: 'https://mn.wenlvti.net/app_static/xiangan/index_banner_1.jpg',
|
|
|
|
|
- }
|
|
|
|
|
-];
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-function goNews(modelId: number, mainBodyColumnId?: number) {
|
|
|
|
|
- navTo('/pages/article/list', {
|
|
|
|
|
- modelId,
|
|
|
|
|
- mainBodyColumnId,
|
|
|
|
|
- });
|
|
|
|
|
|
|
+function goClamVillage() {
|
|
|
|
|
+ requireLogin(() => navTo('forms/village_claim'), '登录后才能认领村庄哦!');
|
|
|
}
|
|
}
|
|
|
-function goNewsDetails(id: number) {
|
|
|
|
|
- navTo('/pages/article/details', { id });
|
|
|
|
|
-}
|
|
|
|
|
-function handleGoDetails(item: GetContentListItem) {
|
|
|
|
|
- switch (item.itemType) {
|
|
|
|
|
- case 'artifact':
|
|
|
|
|
- navTo('/pages/inherit/artifact/details', { id: item.id });
|
|
|
|
|
- break;
|
|
|
|
|
- case 'intangible':
|
|
|
|
|
- navTo('/pages/inherit/intangible/details', { id: item.id });
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- navTo('/pages/article/details', { id: item.id });
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-function search() {
|
|
|
|
|
-
|
|
|
|
|
|
|
+function goSubmitDigPage(item: VillageListItem) {
|
|
|
|
|
+ navTo('./dig/details', {
|
|
|
|
|
+ id: item.villageId,
|
|
|
|
|
+ name: item.villageName,
|
|
|
|
|
+ villageVolunteerId: item.villageVolunteerId,
|
|
|
|
|
+ points: volunteerInfoLoader.content.value?.points,
|
|
|
|
|
+ level: volunteerInfoLoader.content.value?.level,
|
|
|
|
|
+ })
|
|
|
}
|
|
}
|
|
|
-function goWewuGuanjia() {
|
|
|
|
|
- uni.navigateToMiniProgram({
|
|
|
|
|
- appId: 'wxf651ba4b0025640a',
|
|
|
|
|
- path: 'pages/index/index',
|
|
|
|
|
- extraData: {},
|
|
|
|
|
|
|
+function goManagePage(item: VillageListItem) {
|
|
|
|
|
+ navTo('./dig/admin', {
|
|
|
|
|
+ id: item.villageId,
|
|
|
|
|
+ name: item.villageName,
|
|
|
|
|
+ villageVolunteerId: item.villageVolunteerId,
|
|
|
|
|
+ points: volunteerInfoLoader.content.value?.points,
|
|
|
|
|
+ level: volunteerInfoLoader.content.value?.level,
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-onShareTimeline(() => {
|
|
|
|
|
- return {};
|
|
|
|
|
-})
|
|
|
|
|
-onShareAppMessage(() => {
|
|
|
|
|
- return {};
|
|
|
|
|
-})
|
|
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style lang="scss" scoped>
|
|
|
|
|
-
|
|
|
|
|
-.grid4-item {
|
|
|
|
|
- width: 320rpx;
|
|
|
|
|
-
|
|
|
|
|
- .tag {
|
|
|
|
|
- top: 2rpx;
|
|
|
|
|
- right: 2rpx;
|
|
|
|
|
|
|
+<style lang="scss">
|
|
|
|
|
+.submit_main {
|
|
|
|
|
+ .img-banner{
|
|
|
|
|
+ border-radius: 0;
|
|
|
|
|
+ height: 466rpx;
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
-.audio-list {
|
|
|
|
|
- .item {
|
|
|
|
|
|
|
+ .cat{
|
|
|
|
|
+ font-weight: 600;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- margin-bottom: 25rpx;
|
|
|
|
|
-
|
|
|
|
|
- image {
|
|
|
|
|
- width: 126rpx;
|
|
|
|
|
- height: 126rpx;
|
|
|
|
|
|
|
+ margin: 36rpx 0 40rpx;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ text{
|
|
|
display: block;
|
|
display: block;
|
|
|
- border-radius: 10rpx;
|
|
|
|
|
- margin-right: 17rpx;
|
|
|
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
|
+ color: #312520;
|
|
|
|
|
+ flex:1;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- .info {
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- .name{
|
|
|
|
|
- font-weight: 800;
|
|
|
|
|
- font-size: 30rpx;
|
|
|
|
|
- color: #333333;
|
|
|
|
|
- margin-bottom: 20rpx;
|
|
|
|
|
- margin-top: 10rpx;
|
|
|
|
|
|
|
+ .btn{
|
|
|
|
|
+ border-radius: 28rpx;
|
|
|
|
|
+ border: 1px solid #999999;
|
|
|
|
|
+ font-size: 27rpx;
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ padding:15rpx 28rpx;
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ margin-left: 18rpx;
|
|
|
|
|
+ &.active{
|
|
|
|
|
+ color:#fff;
|
|
|
|
|
+ background: #FF8719;
|
|
|
|
|
+ border-color: #FF8719;
|
|
|
}
|
|
}
|
|
|
- .place {
|
|
|
|
|
- font-size: 24rpx;
|
|
|
|
|
- color: #C66207;
|
|
|
|
|
- background: rgb(249,236, 225);
|
|
|
|
|
- padding:12rpx 20rpx;
|
|
|
|
|
- display: inline-block;
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .village-list{
|
|
|
|
|
+ .item{
|
|
|
|
|
+ background: #FFFFFF;
|
|
|
|
|
+ border-radius: 10rpx;
|
|
|
|
|
+ padding:18rpx 14rpx 11rpx;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ margin-bottom: 27rpx;
|
|
|
|
|
+ image,.image-wrapper {
|
|
|
border-radius: 10rpx;
|
|
border-radius: 10rpx;
|
|
|
|
|
+ width: 154rpx;
|
|
|
|
|
+ height: 154rpx;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ margin-right: 25rpx;
|
|
|
|
|
+ overflow: hidden;
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .audio {
|
|
|
|
|
- .play-btn {
|
|
|
|
|
- width: 70rpx;
|
|
|
|
|
- height: 70rpx;
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
- background: rgb(232, 232, 232);
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- margin-bottom: 10rpx;
|
|
|
|
|
-
|
|
|
|
|
- text.iconfont {
|
|
|
|
|
- font-size: 32rpx;
|
|
|
|
|
|
|
+ .info{
|
|
|
|
|
+ .name{
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: #333333;
|
|
|
|
|
+ margin-bottom: 35rpx;
|
|
|
|
|
+ margin-top: 14rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ .btn{
|
|
|
|
|
+ border-radius: 10rpx;
|
|
|
|
|
+ border: 1px solid #25515E;
|
|
|
|
|
+ padding:16rpx 14rpx;
|
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
|
+ color:#25515E;
|
|
|
|
|
+ margin-right: 34rpx;
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ &.active{
|
|
|
|
|
+ background: #FF8719;
|
|
|
|
|
+ color:#fff;
|
|
|
|
|
+ border-color: #FF8719;
|
|
|
|
|
+ }
|
|
|
|
|
+ text.iconfont{
|
|
|
|
|
+ display: inline-block;
|
|
|
|
|
+ margin-right: 15rpx;
|
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
-.navigation{
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: space-between;
|
|
|
|
|
- flex-wrap: wrap;
|
|
|
|
|
- .item{
|
|
|
|
|
|
|
+ .retribution{
|
|
|
|
|
+ background: #FFFFFF;
|
|
|
|
|
+ border-radius: 10rpx;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- margin-bottom: 30rpx;
|
|
|
|
|
- .left{
|
|
|
|
|
- background: #FF8719;
|
|
|
|
|
- width: 169rpx;
|
|
|
|
|
- height: 196rpx;
|
|
|
|
|
- border-radius: 18rpx 0rpx 0rpx 18rpx;
|
|
|
|
|
- padding:48rpx 0 49rpx 31rpx;
|
|
|
|
|
- margin-right: 6rpx;
|
|
|
|
|
- position: relative;
|
|
|
|
|
- &.blue{
|
|
|
|
|
- background:#24515D;
|
|
|
|
|
- }
|
|
|
|
|
- image {
|
|
|
|
|
- width: 110rpx;
|
|
|
|
|
- height: 146rpx;
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- bottom: 0rpx;
|
|
|
|
|
- right: 0rpx;
|
|
|
|
|
- }
|
|
|
|
|
- .title{
|
|
|
|
|
- font-weight: 800;
|
|
|
|
|
- font-size: 28rpx;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
|
|
+ justify-content: space-around;
|
|
|
|
|
+ .item{
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ color: #312520;
|
|
|
|
|
+ padding: 35rpx 0 33rpx;
|
|
|
|
|
+ text.iconfont{
|
|
|
|
|
+ font-size: 56rpx;
|
|
|
|
|
+ color:#25515E;
|
|
|
|
|
+ display: block;
|
|
|
}
|
|
}
|
|
|
- .title_en{
|
|
|
|
|
- font-size: 16rpx;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
|
|
+ .num{
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ font-size: 48rpx;
|
|
|
|
|
+ color: #FF8719;
|
|
|
|
|
+ margin-top: 12rpx;
|
|
|
|
|
+ line-height: 48rpx;
|
|
|
|
|
+ margin-bottom: 15rpx;
|
|
|
}
|
|
}
|
|
|
- .arrow{
|
|
|
|
|
- margin-top: 120rpx;
|
|
|
|
|
- width: 35rpx;
|
|
|
|
|
- height: 35rpx;
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
- background: #fff;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
- line-height: 35rpx;
|
|
|
|
|
- text.iconfont{
|
|
|
|
|
- font-size: 24rpx;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- .right{
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex-direction: column;
|
|
|
|
|
- justify-content: space-between;
|
|
|
|
|
- .cat{
|
|
|
|
|
- width: 122rpx;
|
|
|
|
|
- height: 92rpx;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- border: 1px solid #B1C7CD;
|
|
|
|
|
- word-break: break-all;
|
|
|
|
|
- line-height: 30rpx;
|
|
|
|
|
- &.top{
|
|
|
|
|
- border-radius: 0rpx 18rpx 0rpx 0rpx;
|
|
|
|
|
- }
|
|
|
|
|
- &.bottom{
|
|
|
|
|
- border-radius: 0rpx 0rpx 18rpx 0rpx;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ .level{
|
|
|
|
|
+ margin-top: 12rpx;
|
|
|
|
|
+ margin-bottom: 15rpx;
|
|
|
|
|
+ font-family: Rockwell;
|
|
|
|
|
+ font-size: 44rpx;
|
|
|
|
|
+ line-height: 48rpx;
|
|
|
|
|
+ color: #FF8719;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
-.banner {
|
|
|
|
|
- margin-top: 0;
|
|
|
|
|
- .swiper {
|
|
|
|
|
- border-radius: 0;
|
|
|
|
|
- height: 306rpx;
|
|
|
|
|
|
|
+ .people-list{
|
|
|
.item{
|
|
.item{
|
|
|
- height: 246rpx;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-.top-slogan{
|
|
|
|
|
- background: #FF8719;
|
|
|
|
|
- height:430rpx;
|
|
|
|
|
- .slogan{
|
|
|
|
|
- padding-top: 46rpx;
|
|
|
|
|
- color:#fff;
|
|
|
|
|
- padding-left: 68rpx;
|
|
|
|
|
- .h{
|
|
|
|
|
- font-size: 48rpx;
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
- margin-bottom: 20rpx;
|
|
|
|
|
- }
|
|
|
|
|
- .sub{
|
|
|
|
|
|
|
+ width: 100%;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
- margin-left: -10rpx;
|
|
|
|
|
- }
|
|
|
|
|
- text.iconfont{
|
|
|
|
|
- display: inline-block;
|
|
|
|
|
- font-size: 46rpx;
|
|
|
|
|
- margin-right: 4rpx;
|
|
|
|
|
|
|
+ padding: 28rpx 21rpx 28rpx 10rpx;
|
|
|
|
|
+ text-align: left;
|
|
|
|
|
+ .rank{
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ top:inherit;
|
|
|
|
|
+ left:inherit;
|
|
|
|
|
+ margin-right: 25rpx;
|
|
|
|
|
+ width: 77rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ .info{
|
|
|
|
|
+ flex:1;
|
|
|
|
|
+ }
|
|
|
|
|
+ .level{
|
|
|
|
|
+ font-family: Rockwell;
|
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
|
+ color: #FF8719;
|
|
|
|
|
+ }
|
|
|
|
|
+ image.avatar{
|
|
|
|
|
+ margin-bottom: 0;
|
|
|
|
|
+ margin-right: 51rpx;
|
|
|
|
|
+ background-color: #efefef;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-.search{
|
|
|
|
|
- border:none;
|
|
|
|
|
- margin: 10rpx 20rpx 0;
|
|
|
|
|
- ::v-deep .uni-searchbar__box{
|
|
|
|
|
- border:none;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-.main.first{
|
|
|
|
|
- margin-top:-153rpx;
|
|
|
|
|
- padding-bottom: 0;
|
|
|
|
|
-}
|
|
|
|
|
-.threeD{
|
|
|
|
|
- top: 24rpx;
|
|
|
|
|
- left: inherit;
|
|
|
|
|
- bottom: inherit;
|
|
|
|
|
- right: 24rpx;
|
|
|
|
|
- width: 70rpx;
|
|
|
|
|
- height: 70rpx;
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- text.iconfont{
|
|
|
|
|
- font-size: 45rpx;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
</style>
|
|
</style>
|