Commit 61e781a9b2a50623c236d6eb74324815719f00ac
1 parent
ec339061
fix: 修改弹窗
Showing
2 changed files
with
89 additions
and
1 deletions
src/pages/Order/Order/index.tsx
... | ... | @@ -120,7 +120,7 @@ const OrderPage = () => { |
120 | 120 | <div className="order-page-container"> |
121 | 121 | <div id="resizeDiv"></div> |
122 | 122 | <div id="resizeDiv"></div> |
123 | - {roleCode === 'SALES_MANAGER' && ( | |
123 | + {roleCode !== 'SALES_MANAGER' && ( | |
124 | 124 | <Modal |
125 | 125 | title="订单预警提醒" |
126 | 126 | open={open} | ... | ... |
src/utils/hooks.ts
0 → 100644
1 | +import { useRef } from 'react'; | |
2 | + | |
3 | +/** | |
4 | + * Custom hook to track and manage API requests with debouncing and manual refresh capabilities | |
5 | + * @param cooldownMs - Cooldown time in milliseconds between automatic requests | |
6 | + * @returns Object with tracking state and utility functions | |
7 | + */ | |
8 | +export const useRequestTracker = (cooldownMs = 5000) => { | |
9 | + // Use a ref to persist the state between renders | |
10 | + const trackerRef = useRef({ | |
11 | + initialRequestMade: false, | |
12 | + pendingRequest: false, | |
13 | + lastRequestTime: 0, | |
14 | + manualRefresh: false, | |
15 | + }); | |
16 | + | |
17 | + /** | |
18 | + * Checks if a request should be executed based on tracking state | |
19 | + * @returns boolean - Whether the request should proceed | |
20 | + */ | |
21 | + const shouldExecuteRequest = () => { | |
22 | + const now = Date.now(); | |
23 | + const tracker = trackerRef.current; | |
24 | + | |
25 | + // Always execute if it's a manual refresh | |
26 | + if (tracker.manualRefresh) { | |
27 | + console.log( | |
28 | + '[Request Tracker] Manual refresh triggered, executing request', | |
29 | + ); | |
30 | + tracker.manualRefresh = false; | |
31 | + tracker.lastRequestTime = now; | |
32 | + return true; | |
33 | + } | |
34 | + | |
35 | + // If there's a pending request, don't execute another | |
36 | + if (tracker.pendingRequest) { | |
37 | + console.log('[Request Tracker] Request already in progress, skipping'); | |
38 | + return false; | |
39 | + } | |
40 | + | |
41 | + // For automatic requests (not manually triggered), apply cooldown | |
42 | + if ( | |
43 | + tracker.initialRequestMade && | |
44 | + now - tracker.lastRequestTime < cooldownMs | |
45 | + ) { | |
46 | + console.log( | |
47 | + `[Request Tracker] Cooldown active (${cooldownMs}ms), skipping automatic request`, | |
48 | + ); | |
49 | + return false; | |
50 | + } | |
51 | + | |
52 | + // Otherwise, allow the request | |
53 | + console.log('[Request Tracker] Executing request'); | |
54 | + tracker.lastRequestTime = now; | |
55 | + return true; | |
56 | + }; | |
57 | + | |
58 | + /** | |
59 | + * Marks the beginning of a request | |
60 | + */ | |
61 | + const startRequest = () => { | |
62 | + trackerRef.current.pendingRequest = true; | |
63 | + }; | |
64 | + | |
65 | + /** | |
66 | + * Marks the completion of a request | |
67 | + */ | |
68 | + const finishRequest = () => { | |
69 | + const tracker = trackerRef.current; | |
70 | + tracker.pendingRequest = false; | |
71 | + tracker.initialRequestMade = true; | |
72 | + }; | |
73 | + | |
74 | + /** | |
75 | + * Marks a request as manually triggered (will bypass cooldown) | |
76 | + */ | |
77 | + const markAsManualRefresh = () => { | |
78 | + trackerRef.current.manualRefresh = true; | |
79 | + }; | |
80 | + | |
81 | + return { | |
82 | + tracker: trackerRef.current, | |
83 | + shouldExecuteRequest, | |
84 | + startRequest, | |
85 | + finishRequest, | |
86 | + markAsManualRefresh, | |
87 | + }; | |
88 | +}; | ... | ... |