CommonCategoryGlobalLoader.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { inject, provide, ref, type Ref } from "vue";
  2. import NotConfigue from "@/api/NotConfigue";
  3. import { showError } from "@/common/composeabe/ErrorDisplay";
  4. import type { IHomeCommonCategoryDefine } from "./CommonCategoryDefine";
  5. import ApiCofig from "@/common/config/ApiCofig";
  6. import DefaultCofig from "./DefaultCategory.json";
  7. import { isDev } from "@/common/config/AppCofig";
  8. // 全局加载默认分类
  9. export const COMMON_CATEGORY_KEY = 'DefaultCategory';
  10. const defaultCommonCategory = ref<IHomeCommonCategoryDefine>({
  11. page: [],
  12. });
  13. export function injectCommonCategory() {
  14. return inject(COMMON_CATEGORY_KEY, defaultCommonCategory) as Ref<IHomeCommonCategoryDefine>;
  15. }
  16. export function useCommonCategoryGlobalLoader() {
  17. const commonCategoryData = ref<IHomeCommonCategoryDefine>(defaultCommonCategory.value);
  18. provide(COMMON_CATEGORY_KEY, commonCategoryData);
  19. async function loadCommonCategory() {
  20. uni.showLoading({ title: '加载中' });
  21. try {
  22. if (uni.getSystemInfoSync().platform === 'devtools') {
  23. commonCategoryData.value = DefaultCofig as IHomeCommonCategoryDefine;
  24. return;
  25. }
  26. const category = (await NotConfigue.get<IHomeCommonCategoryDefine>(ApiCofig.dynamicCategoryConfigServer, '加载默认分类')).data;
  27. if (category)
  28. commonCategoryData.value = category;
  29. else
  30. showError(undefined, '默认分类未配置');
  31. } catch (error) {
  32. showError(error, '加载默认分类失败');
  33. } finally {
  34. uni.hideLoading();
  35. }
  36. }
  37. return {
  38. loadCommonCategory,
  39. }
  40. }