village.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { ref } from 'vue'
  2. import { defineStore } from 'pinia'
  3. import type { VillageListItem } from '@/api/light/LightVillageApi';
  4. import FollowVillageApi from '@/api/light/FollowVillageApi';
  5. import LightVillageApi from '@/api/light/LightVillageApi';
  6. /**
  7. * 村庄各页面共享 数据
  8. */
  9. export const useVillageStore = defineStore('village', () => {
  10. const currentVillage = ref<VillageListItem | null>(null);
  11. const currentLonlat = ref<{ longitude: number, latitude: number } | null>(null);
  12. const currentRegion = ref<string | null>(null);
  13. const myFollowVillages = ref<VillageListItem[]>([]);
  14. const myJoinedVillages = ref<VillageListItem[]>([]);
  15. const shareFromVillageUserId = ref(0);
  16. async function setCurrentVillage(village: VillageListItem) {
  17. currentVillage.value = await LightVillageApi.getVillageDetails(village.id);
  18. console.log('currentVillage', currentVillage.value);
  19. uni.setStorageSync('currentVillage', village.id);
  20. }
  21. function loadCurrentVillage() {
  22. return uni.getStorageSync('currentVillage') as number|unknown;
  23. }
  24. function setCurrentLonlat(lonlat: { longitude: number, latitude: number }) {
  25. currentLonlat.value = lonlat;
  26. }
  27. function setCurrentRegion(region: string) {
  28. currentRegion.value = region;
  29. }
  30. async function loadMyFollowVillages() {
  31. const villages = await FollowVillageApi.getFollowVillageList();
  32. myFollowVillages.value = villages.list;
  33. }
  34. function setMyJoinedVillages(villages: VillageListItem[]) {
  35. myJoinedVillages.value = villages;
  36. }
  37. function setShareFromVillageUserId(userId: number) {
  38. shareFromVillageUserId.value = userId;
  39. }
  40. return {
  41. currentVillage,
  42. currentLonlat,
  43. currentRegion,
  44. myFollowVillages,
  45. myJoinedVillages,
  46. shareFromVillageUserId,
  47. loadCurrentVillage,
  48. setCurrentVillage,
  49. setCurrentLonlat,
  50. setCurrentRegion,
  51. loadMyFollowVillages,
  52. setMyJoinedVillages,
  53. setShareFromVillageUserId,
  54. }
  55. })