Commit b49950a3906de6626eedb973590d02e4d95b98b9
1 parent
f7aa93f5
fix: fix useTimeoutFn not work
Showing
13 changed files
with
64 additions
and
14 deletions
src/components/Container/src/LazyContainer.vue
@@ -22,7 +22,7 @@ | @@ -22,7 +22,7 @@ | ||
22 | import { defineComponent, reactive, onMounted, ref, toRef, toRefs } from 'vue'; | 22 | import { defineComponent, reactive, onMounted, ref, toRef, toRefs } from 'vue'; |
23 | 23 | ||
24 | import { Skeleton } from 'ant-design-vue'; | 24 | import { Skeleton } from 'ant-design-vue'; |
25 | - import { useTimeoutFn } from '@vueuse/core'; | 25 | + import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
26 | import { useIntersectionObserver } from '/@/hooks/event/useIntersectionObserver'; | 26 | import { useIntersectionObserver } from '/@/hooks/event/useIntersectionObserver'; |
27 | interface State { | 27 | interface State { |
28 | isInit: boolean; | 28 | isInit: boolean; |
@@ -40,9 +40,9 @@ | @@ -40,9 +40,9 @@ | ||
40 | 40 | ||
41 | // The viewport where the component is located. If the component is scrolling in the page container, the viewport is the container | 41 | // The viewport where the component is located. If the component is scrolling in the page container, the viewport is the container |
42 | viewport: { | 42 | viewport: { |
43 | - type: (typeof window !== 'undefined' ? window.HTMLElement : Object) as PropType< | ||
44 | - HTMLElement | ||
45 | - >, | 43 | + type: (typeof window !== 'undefined' |
44 | + ? window.HTMLElement | ||
45 | + : Object) as PropType<HTMLElement>, | ||
46 | default: () => null, | 46 | default: () => null, |
47 | }, | 47 | }, |
48 | 48 |
src/components/Container/src/collapse/CollapseContainer.vue
@@ -32,7 +32,7 @@ | @@ -32,7 +32,7 @@ | ||
32 | 32 | ||
33 | import { triggerWindowResize } from '/@/utils/event/triggerWindowResizeEvent'; | 33 | import { triggerWindowResize } from '/@/utils/event/triggerWindowResizeEvent'; |
34 | // hook | 34 | // hook |
35 | - import { useTimeoutFn } from '@vueuse/core'; | 35 | + import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
36 | 36 | ||
37 | export default defineComponent({ | 37 | export default defineComponent({ |
38 | components: { | 38 | components: { |
src/components/Modal/src/Modal.tsx
1 | import { Modal } from 'ant-design-vue'; | 1 | import { Modal } from 'ant-design-vue'; |
2 | import { defineComponent, watchEffect } from 'vue'; | 2 | import { defineComponent, watchEffect } from 'vue'; |
3 | import { basicProps } from './props'; | 3 | import { basicProps } from './props'; |
4 | -import { useTimeoutFn } from '@vueuse/core'; | 4 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
5 | import { extendSlots } from '/@/utils/helper/tsxHelper'; | 5 | import { extendSlots } from '/@/utils/helper/tsxHelper'; |
6 | 6 | ||
7 | export default defineComponent({ | 7 | export default defineComponent({ |
src/components/Table/src/hooks/useDataSource.ts
@@ -3,7 +3,7 @@ import type { PaginationProps } from '../types/pagination'; | @@ -3,7 +3,7 @@ import type { PaginationProps } from '../types/pagination'; | ||
3 | 3 | ||
4 | import { watch, ref, unref, ComputedRef, computed, onMounted, Ref } from 'vue'; | 4 | import { watch, ref, unref, ComputedRef, computed, onMounted, Ref } from 'vue'; |
5 | 5 | ||
6 | -import { useTimeoutFn } from '@vueuse/core'; | 6 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
7 | 7 | ||
8 | import { buildUUID } from '/@/utils/uuid'; | 8 | import { buildUUID } from '/@/utils/uuid'; |
9 | import { isFunction, isBoolean } from '/@/utils/is'; | 9 | import { isFunction, isBoolean } from '/@/utils/is'; |
src/components/Verify/src/DragVerify.tsx
1 | import { defineComponent, ref, computed, unref, reactive, watch, watchEffect } from 'vue'; | 1 | import { defineComponent, ref, computed, unref, reactive, watch, watchEffect } from 'vue'; |
2 | -import { useTimeoutFn } from '@vueuse/core'; | 2 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
3 | import { useEventListener } from '/@/hooks/event/useEventListener'; | 3 | import { useEventListener } from '/@/hooks/event/useEventListener'; |
4 | import { basicProps } from './props'; | 4 | import { basicProps } from './props'; |
5 | import { getSlot } from '/@/utils/helper/tsxHelper'; | 5 | import { getSlot } from '/@/utils/helper/tsxHelper'; |
src/components/Verify/src/ImgRotate.tsx
1 | import type { MoveData, DragVerifyActionType } from './types'; | 1 | import type { MoveData, DragVerifyActionType } from './types'; |
2 | 2 | ||
3 | import { defineComponent, computed, unref, reactive, watch, ref, getCurrentInstance } from 'vue'; | 3 | import { defineComponent, computed, unref, reactive, watch, ref, getCurrentInstance } from 'vue'; |
4 | -import { useTimeoutFn } from '@vueuse/core'; | 4 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
5 | 5 | ||
6 | import BasicDragVerify from './DragVerify'; | 6 | import BasicDragVerify from './DragVerify'; |
7 | 7 |
src/components/Verify/src/VerifyModal.vue
1 | <script lang="tsx"> | 1 | <script lang="tsx"> |
2 | import { defineComponent, ref, unref } from 'vue'; | 2 | import { defineComponent, ref, unref } from 'vue'; |
3 | import { BasicModal } from '/@/components/Modal/index'; | 3 | import { BasicModal } from '/@/components/Modal/index'; |
4 | - import { useTimeoutFn } from '@vueuse/core'; | 4 | + import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
5 | 5 | ||
6 | import { RotateDragVerify, DragVerifyActionType } from '/@/components/Verify/index'; | 6 | import { RotateDragVerify, DragVerifyActionType } from '/@/components/Verify/index'; |
7 | export default defineComponent({ | 7 | export default defineComponent({ |
src/hooks/core/useTimeout.ts
0 → 100644
1 | +import { ref, watch } from 'vue'; | ||
2 | +import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; | ||
3 | + | ||
4 | +import { isFunction } from '/@/utils/is'; | ||
5 | + | ||
6 | +export function useTimeoutFn(handle: Fn<any>, wait: number) { | ||
7 | + if (!isFunction(handle)) { | ||
8 | + throw new Error('handle is not Function!'); | ||
9 | + } | ||
10 | + | ||
11 | + const { readyRef, stop, start } = useTimeoutRef(wait); | ||
12 | + | ||
13 | + watch( | ||
14 | + readyRef, | ||
15 | + (maturity) => { | ||
16 | + maturity && handle(); | ||
17 | + }, | ||
18 | + { immediate: false } | ||
19 | + ); | ||
20 | + return { readyRef, stop, start }; | ||
21 | +} | ||
22 | + | ||
23 | +export function useTimeoutRef(wait: number) { | ||
24 | + const readyRef = ref(false); | ||
25 | + | ||
26 | + let timer: ReturnType<typeof setTimeout> | undefined; | ||
27 | + function stop(): void { | ||
28 | + readyRef.value = false; | ||
29 | + timer && window.clearTimeout(timer); | ||
30 | + } | ||
31 | + function start(): void { | ||
32 | + stop(); | ||
33 | + timer = setTimeout(() => { | ||
34 | + readyRef.value = true; | ||
35 | + }, wait); | ||
36 | + } | ||
37 | + | ||
38 | + start(); | ||
39 | + | ||
40 | + tryOnUnmounted(stop); | ||
41 | + | ||
42 | + return { readyRef, stop, start }; | ||
43 | +} |
src/hooks/web/useApexCharts.ts
1 | -import { useTimeoutFn } from '@vueuse/core'; | 1 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
2 | import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; | 2 | import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; |
3 | import { unref, Ref, nextTick } from 'vue'; | 3 | import { unref, Ref, nextTick } from 'vue'; |
4 | 4 |
src/hooks/web/useECharts.ts
1 | -import { useTimeoutFn } from '@vueuse/core'; | 1 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
2 | import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; | 2 | import { tryOnUnmounted } from '/@/utils/helper/vueHelper'; |
3 | import { unref, Ref, nextTick } from 'vue'; | 3 | import { unref, Ref, nextTick } from 'vue'; |
4 | import type { EChartOption, ECharts } from 'echarts'; | 4 | import type { EChartOption, ECharts } from 'echarts'; |
src/hooks/web/useMessage.tsx
@@ -46,6 +46,7 @@ function getIcon(iconType: string) { | @@ -46,6 +46,7 @@ function getIcon(iconType: string) { | ||
46 | return <CloseCircleFilled class="modal-icon-error" />; | 46 | return <CloseCircleFilled class="modal-icon-error" />; |
47 | } | 47 | } |
48 | } | 48 | } |
49 | + | ||
49 | function renderContent({ content }: Pick<ModalOptionsEx, 'content'>) { | 50 | function renderContent({ content }: Pick<ModalOptionsEx, 'content'>) { |
50 | return <div innerHTML={`<div>${content as string}</div>`}></div>; | 51 | return <div innerHTML={`<div>${content as string}</div>`}></div>; |
51 | } | 52 | } |
@@ -64,6 +65,7 @@ function createConfirm(options: ModalOptionsEx): ConfirmOptions { | @@ -64,6 +65,7 @@ function createConfirm(options: ModalOptionsEx): ConfirmOptions { | ||
64 | }; | 65 | }; |
65 | return Modal.confirm(opt) as any; | 66 | return Modal.confirm(opt) as any; |
66 | } | 67 | } |
68 | + | ||
67 | const baseOptions = { | 69 | const baseOptions = { |
68 | okText: '确定', | 70 | okText: '确定', |
69 | centered: true, | 71 | centered: true, |
@@ -77,15 +79,19 @@ function createModalOptions(options: ModalOptionsPartial, icon: string): ModalOp | @@ -77,15 +79,19 @@ function createModalOptions(options: ModalOptionsPartial, icon: string): ModalOp | ||
77 | icon: getIcon(icon), | 79 | icon: getIcon(icon), |
78 | }; | 80 | }; |
79 | } | 81 | } |
82 | + | ||
80 | function createSuccessModal(options: ModalOptionsPartial) { | 83 | function createSuccessModal(options: ModalOptionsPartial) { |
81 | return Modal.success(createModalOptions(options, 'success')); | 84 | return Modal.success(createModalOptions(options, 'success')); |
82 | } | 85 | } |
86 | + | ||
83 | function createErrorModal(options: ModalOptionsPartial) { | 87 | function createErrorModal(options: ModalOptionsPartial) { |
84 | return Modal.error(createModalOptions(options, 'close')); | 88 | return Modal.error(createModalOptions(options, 'close')); |
85 | } | 89 | } |
90 | + | ||
86 | function createInfoModal(options: ModalOptionsPartial) { | 91 | function createInfoModal(options: ModalOptionsPartial) { |
87 | return Modal.info(createModalOptions(options, 'info')); | 92 | return Modal.info(createModalOptions(options, 'info')); |
88 | } | 93 | } |
94 | + | ||
89 | function createWarningModal(options: ModalOptionsPartial) { | 95 | function createWarningModal(options: ModalOptionsPartial) { |
90 | return Modal.warning(createModalOptions(options, 'warning')); | 96 | return Modal.warning(createModalOptions(options, 'warning')); |
91 | } | 97 | } |
@@ -94,6 +100,7 @@ notification.config({ | @@ -94,6 +100,7 @@ notification.config({ | ||
94 | placement: 'topRight', | 100 | placement: 'topRight', |
95 | duration: 3, | 101 | duration: 3, |
96 | }); | 102 | }); |
103 | + | ||
97 | /** | 104 | /** |
98 | * @description: message | 105 | * @description: message |
99 | */ | 106 | */ |
src/hooks/web/useTabs.ts
1 | -import { useTimeoutFn } from '@vueuse/core'; | 1 | +import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
2 | import { PageEnum } from '/@/enums/pageEnum'; | 2 | import { PageEnum } from '/@/enums/pageEnum'; |
3 | import { TabItem, tabStore } from '/@/store/modules/tab'; | 3 | import { TabItem, tabStore } from '/@/store/modules/tab'; |
4 | import { appStore } from '/@/store/modules/app'; | 4 | import { appStore } from '/@/store/modules/app'; |
src/layouts/logo/index.vue
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | import { computed, defineComponent, PropType, ref, watch } from 'vue'; | 8 | import { computed, defineComponent, PropType, ref, watch } from 'vue'; |
9 | // hooks | 9 | // hooks |
10 | import { useSetting } from '/@/hooks/core/useSetting'; | 10 | import { useSetting } from '/@/hooks/core/useSetting'; |
11 | - import { useTimeoutFn } from '@vueuse/core'; | 11 | + import { useTimeoutFn } from '/@/hooks/core/useTimeout'; |
12 | import { useGo } from '/@/hooks/web/usePage'; | 12 | import { useGo } from '/@/hooks/web/usePage'; |
13 | 13 | ||
14 | import { PageEnum } from '/@/enums/pageEnum'; | 14 | import { PageEnum } from '/@/enums/pageEnum'; |