collect.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { computed, ref } from 'vue'
  2. import { defineStore } from 'pinia'
  3. import { useAuthStore } from './auth';
  4. const CollectableModulesNameMapping : Record<string, string> = {
  5. 'overview': '村落概况',
  6. 'distribution': '建筑分布',
  7. 'building': '传统建筑',
  8. 'folk_culture': '民俗文化',
  9. 'food_product': '美食物产',
  10. 'route': '旅游路线',
  11. 'travel_guide': '旅游导览',
  12. 'element': '环境要素',
  13. 'environment': '环境格局',
  14. 'relic': '文物古迹',
  15. 'cultural': '历史文化',
  16. 'figure': '历史人物',
  17. 'ich': '非遗',
  18. 'story': '掌故轶事',
  19. 'village': '风景名胜',
  20. 'speaker': '口述者',
  21. 'collect': '随手记',
  22. }
  23. export const useCollectStore = defineStore('collect', () => {
  24. const collectableModules = ref(new Map<string, number>());
  25. const authStore = useAuthStore();
  26. function setCollectableModules(modules: Map<string, number>) {
  27. collectableModules.value = modules;
  28. console.log(modules);
  29. }
  30. function canCollect(module: string) {
  31. if (authStore.isAdmin)
  32. return true;
  33. if (collectableModules.value.has(CollectableModulesNameMapping[module]))
  34. return true;
  35. return collectableModules.value.has(module);
  36. }
  37. function getCollectModuleId(module: string) {
  38. if (collectableModules.value.has(CollectableModulesNameMapping[module]))
  39. return collectableModules.value.get(CollectableModulesNameMapping[module]);
  40. return collectableModules.value.get(module);
  41. }
  42. function getCollectModuleInternalNameById(id: number) {
  43. for (const [key, value] of collectableModules.value) {
  44. if (value == id)
  45. return key;
  46. }
  47. return '';
  48. }
  49. const isEmpty = computed(() => collectableModules.value.size === 0);
  50. return {
  51. isEmpty,
  52. collectableModules,
  53. setCollectableModules,
  54. getCollectModuleInternalNameById,
  55. getCollectModuleId,
  56. canCollect,
  57. }
  58. })