index.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <template>
  2. <FlexCol>
  3. <Image
  4. mode="aspectFill"
  5. src="https://mn.wenlvti.net/app_static/xiangan/banner_submit.jpg"
  6. width="100%"
  7. />
  8. <FlexCol :padding="30">
  9. <SubTitle title="我的村社" />
  10. <RequireLogin unLoginMessage="登录后查看我认领的村社">
  11. <SimplePageContentLoader
  12. :loader="villageListLoader"
  13. :showEmpty="villageListLoader.content.value?.length == 0"
  14. :emptyView="{
  15. text: '你还没有认领的村社',
  16. button: true,
  17. buttonText: '联系管理员认领',
  18. buttonClick: () => {},
  19. }"
  20. >
  21. <FlexCol>
  22. <FlexRow
  23. v-for="item in villageListLoader.content.value"
  24. :key="item.id"
  25. backgroundColor="white"
  26. :radius="20"
  27. :padding="20"
  28. justify="space-between"
  29. >
  30. <FlexRow align="center" :gap="20">
  31. <Image
  32. mode="aspectFill"
  33. :src="item.image"
  34. round
  35. :width="80"
  36. :height="80"
  37. />
  38. <H3>{{ item.villageName }}</H3>
  39. </FlexRow>
  40. <FlexRow align="center" :gap="20">
  41. <Button v-if="authStore.isAdmin" type="primary" size="small" icon="work-filling" @click="goManagePage(item)">管理</Button>
  42. <Button type="default" size="small" icon="edit-filling" @click="goSubmitDigPage(item)">采编</Button>
  43. </FlexRow>
  44. </FlexRow>
  45. </FlexCol>
  46. </SimplePageContentLoader>
  47. </RequireLogin>
  48. <Height :height="20" />
  49. <SubTitle title="我的贡献" />
  50. <RequireLogin unLoginMessage="登录后贡献,加入排行榜">
  51. <FlexRow backgroundColor="white" :radius="20" :padding="[40,20]">
  52. <FlexCol :flex="1" :gap="10" center>
  53. <Text :fontSize="60" fontFamily="Rockwell" color="primary">{{ volunteerInfoLoader.content.value?.points || 0 }}</Text>
  54. <Text>文化积分</Text>
  55. </FlexCol>
  56. <FlexCol :flex="1" :gap="10" center>
  57. <Text :fontSize="60" fontFamily="Rockwell" color="primary">Lv.{{ volunteerInfoLoader.content.value?.level || 1 }}</Text>
  58. <Text>等级</Text>
  59. </FlexCol>
  60. </FlexRow>
  61. </RequireLogin>
  62. </FlexCol>
  63. </FlexCol>
  64. </template>
  65. <script setup lang="ts">
  66. import { navTo } from '@/components/utils/PageAction';
  67. import { useAuthStore } from '@/store/auth';
  68. import { useCollectStore } from '@/store/collect';
  69. import { useSimpleDataLoader } from '@/common/composeabe/SimpleDataLoader';
  70. import VillageApi, { VillageListItem } from '@/api/inhert/VillageApi';
  71. import RequireLogin from '@/common/components/RequireLogin.vue';
  72. import SimplePageContentLoader from '@/common/components/SimplePageContentLoader.vue';
  73. import Button from '@/components/basic/Button.vue';
  74. import Image from '@/components/basic/Image.vue';
  75. import SubTitle from '@/components/display/title/SubTitle.vue';
  76. import FlexCol from '@/components/layout/FlexCol.vue';
  77. import FlexRow from '@/components/layout/FlexRow.vue';
  78. import H3 from '@/components/typography/H3.vue';
  79. import Text from '@/components/basic/Text.vue';
  80. import Height from '@/components/layout/space/Height.vue';
  81. const authStore = useAuthStore();
  82. const collectStore = useCollectStore();
  83. const villageListLoader = useSimpleDataLoader(async () => await VillageApi.getClaimedVallageList(), true);
  84. const volunteerInfoLoader = useSimpleDataLoader(async () => await VillageApi.getVolunteerInfo(), true);
  85. const rankListLoader = useSimpleDataLoader(async () => await VillageApi.getVolunteerRanklist(), true);
  86. function goSubmitDigPage(item: VillageListItem) {
  87. navTo('./dig/details', {
  88. name: item.villageName,
  89. villageId: item.villageId,
  90. villageVolunteerId: item.villageVolunteerId,
  91. points: volunteerInfoLoader.content.value?.points,
  92. level: volunteerInfoLoader.content.value?.level,
  93. })
  94. }
  95. function goManagePage(item: VillageListItem) {
  96. navTo('./dig/admin', {
  97. id: item.villageId,
  98. name: item.villageName,
  99. villageVolunteerId: item.villageVolunteerId,
  100. points: volunteerInfoLoader.content.value?.points,
  101. level: volunteerInfoLoader.content.value?.level,
  102. })
  103. }
  104. </script>