VillageMyFollow.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <FlexCol padding="space.md">
  3. <HomeTitle title="我的关注" />
  4. <RequireLogin unLoginMessage="登录后查看我的关注村社" @loginSuccess="myFollowLoader.reload()">
  5. <SimplePageListLoader :loader="myFollowLoader">
  6. <FlexCol gap="gap.md">
  7. <ImageBlock3
  8. v-for="(item, i) in myFollowLoader.list.value"
  9. :key="i"
  10. backgroundColor="transparent"
  11. :src="item.image"
  12. :title="item.name"
  13. :desc="item.address"
  14. :imageRadius="15"
  15. :imageWidth="200"
  16. :imageHeight="140"
  17. @click="emit('goDetails', item)"
  18. />
  19. </FlexCol>
  20. </SimplePageListLoader>
  21. </RequireLogin>
  22. </FlexCol>
  23. </template>
  24. <script setup lang="ts">
  25. import { useSimplePageListLoader } from '@/components/composeabe/loader/SimplePageListLoader';
  26. import FlexCol from '@/components/layout/FlexCol.vue';
  27. import HomeTitle from '@/common/components/parts/HomeTitle.vue';
  28. import ImageBlock3 from '@/components/display/block/ImageBlock3.vue';
  29. import FollowVillageApi from '@/api/light/FollowVillageApi';
  30. import SimplePageListLoader from '@/components/loader/SimplePageListLoader.vue';
  31. import RequireLogin from '@/common/components/RequireLogin.vue';
  32. import type { VillageListItem } from '@/api/light/LightVillageApi';
  33. const emit = defineEmits<{
  34. (e: 'goDetails', item: VillageListItem): void;
  35. }>();
  36. const myFollowLoader = useSimplePageListLoader(20, async (page, pageSize) => {
  37. return (await FollowVillageApi.getFollowVillageList({ page: page, pageSize: pageSize }));
  38. });
  39. </script>