| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <template>
- <FlexCol :gap="20" :padding="20">
- <Box title="导览" icon="/static/images/home/icon-compass.png">
- <ProvideVar :vars="{
- GridItemIconSize: 90,
- GridItemBackgroundColor: 'transparent',
- GridItemPaddingHorizontal: 0,
- }">
- <Grid :borderGrid="false" :mainAxisCount="4">
- <GridItem title="全部" icon="/static/images/icons/icon-all.png" touchable @click="goList('')" />
- <GridItem title="历史文化" icon="/static/images/icons/icon-history.png" touchable @click="goList('历史文化')" />
- <GridItem title="环境格局" icon="/static/images/icons/icon-envirounment.png" touchable @click="goList('环境格局')" />
- <GridItem title="传统建筑" icon="/static/images/icons/icon-buliding.png" touchable @click="goList('传统建筑')" />
- <GridItem title="民俗文化" icon="/static/images/icons/icon-location.png" touchable @click="goList('民俗文化')" />
- <GridItem title="地道美食" icon="/static/images/icons/icon-foods.png" touchable @click="goList('美食物产')" />
- <GridItem title="物产资源" icon="/static/images/icons/icon-resource.png" touchable @click="goList('历史人物')" />
- <GridItem title="旅游线路" icon="/static/images/icons/icon-route.png" touchable @click="goList('旅游线路')" />
- </Grid>
- </ProvideVar>
- </Box>
- <Box title="最新推荐" icon="/static/images/home/icon-article.png">
- <SimplePageContentLoader :loader="discoverLoader">
- <FlexCol :gap="25">
- <ImageBlock2
- v-for="(item, i) in discoverLoader.content.value"
- :key="i"
- :src="item.image"
- :title="item.title"
- :desc="item.desc"
- :imageHeight="400"
- :imageRadius="15"
- width="100%"
- @click="goDetails(item)"
- >
- <template #extra>
- <Tag scheme="light" :text="item.villageName" type="primary" />
- </template>
- </ImageBlock2>
- </FlexCol>
- </SimplePageContentLoader>
- </Box>
- <Loadmore status="nomore" />
- <Height :height="150" />
- </FlexCol>
- </template>
- <script setup lang="ts">
- import { navTo } from '@/components/utils/PageAction';
- import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
- import Box from '@/common/components/parts/Box.vue';
- import SimplePageContentLoader from '@/common/components/SimplePageContentLoader.vue';
- import Image from '@/components/basic/Image.vue';
- import Text from '@/components/basic/Text.vue';
- import Loadmore from '@/components/display/loading/Loadmore.vue';
- import Touchable from '@/components/feedback/Touchable.vue';
- import FlexCol from '@/components/layout/FlexCol.vue';
- import Height from '@/components/layout/space/Height.vue';
- import ProvideVar from '@/components/theme/ProvideVar.vue';
- import Grid from '@/components/layout/grid/Grid.vue';
- import GridItem from '@/components/layout/grid/GridItem.vue';
- import VillageInfoApi from '@/api/inhert/VillageInfoApi';
- import AppCofig from '@/common/config/AppCofig';
- import Tag from '@/components/display/Tag.vue';
- import ImageBlock2 from '@/components/display/block/ImageBlock2.vue';
- function goList(keywords: string) {
- navTo('/pages/home/discover/list', {
- keywords,
- title: keywords,
- });
- }
- function goDetails(item: any) {
- navTo('/pages/home/discover/details', {
- id: item.id,
- collectModelId: item.collectModuleId,
- collectModelInternalName: item.collectModuleInternalName,
- });
- }
- const discoverLoader = useSimpleDataLoader(async () => {
- return (await VillageInfoApi.getListForDiscover(1, 30)).list.map((item) => {
- return {
- ...item,
- image: (item.thumbnail || item.image) as string,
- desc: item.desc || '',
- title: item.title,
- }
- })
- });
- </script>
|