use-async.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { isReactive, isRef, onMounted } from 'vue';
  2. import { useRoute, useRouter } from 'vue-router';
  3. import { Searchs } from '@/utils/searchs';
  4. function setLoading(loading: any, val: any) {
  5. if (loading != undefined && isRef(loading)) {
  6. loading.value = val;
  7. } else if (loading != undefined && isReactive(loading)) {
  8. loading.loading = val;
  9. }
  10. }
  11. export const useAsync = async (
  12. func: Promise<any>,
  13. loading: any
  14. ): Promise<any> => {
  15. setLoading(loading, true);
  16. return await func.finally(() => setLoading(loading, false));
  17. };
  18. export const getTabsCache = (callBack: any) => {
  19. const route = useRoute();
  20. const searchs = new Searchs(route.path);
  21. const active = searchs.get(route.path);
  22. onMounted(() => {
  23. callBack(active);
  24. });
  25. };
  26. export const setTabsCaches = (current: any, key = 'current', routes: any) => {
  27. const searchs = new Searchs(routes.path);
  28. searchs.update({ [key]: current }, undefined, 'form');
  29. const active = searchs.get(routes.path);
  30. // console.log(active, 'setTabsCaches');
  31. };
  32. /**
  33. * 初始化缓存
  34. * @param {object} { key 默认form 关键字, saveKey 地址, current 对象, callBack 回调 }
  35. */
  36. export const initCache = (params: any) => {
  37. const route = useRoute();
  38. if (!params.current) {
  39. return;
  40. }
  41. if (!params.key) {
  42. params.key = 'form';
  43. }
  44. if (!params.saveKey) {
  45. params.saveKey = route.path;
  46. }
  47. const searchs = new Searchs(params.saveKey);
  48. const active: any = searchs.get(params.saveKey);
  49. const model: any = params.current;
  50. const tempActive: any = active[params.key];
  51. for (const key in tempActive) {
  52. if (Object.prototype.hasOwnProperty.call(model, key)) {
  53. const item = tempActive[key];
  54. model[key] = item;
  55. }
  56. }
  57. searchs.update({ ...model }, undefined, params.key);
  58. onMounted(() => {
  59. params.callBack && params.callBack(model);
  60. });
  61. };
  62. /**
  63. * 设置缓存
  64. * @param {object} { key 默认form 关键字, saveKey 默认当前路由地址, current 对象, callBack 回调 }
  65. */
  66. export const setCache = (params: any) => {
  67. if (!params.current || !params.saveKey) {
  68. return;
  69. }
  70. if (!params.key) {
  71. params.key = 'form';
  72. }
  73. const searchs = new Searchs(params.saveKey);
  74. searchs.update({ ...params.current }, undefined, params.key);
  75. };