collect.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. for (const k2 in CollectableModulesNameMapping) {
  46. if (CollectableModulesNameMapping[k2] == key) {
  47. return k2;
  48. }
  49. }
  50. }
  51. }
  52. return '';
  53. }
  54. const isEmpty = computed(() => collectableModules.value.size === 0);
  55. return {
  56. isEmpty,
  57. collectableModules,
  58. setCollectableModules,
  59. getCollectModuleInternalNameById,
  60. getCollectModuleId,
  61. canCollect,
  62. }
  63. })