fix: close documented platform polish gaps
This commit is contained in:
@@ -20,6 +20,7 @@ type CarrierRule = DictionaryItem & {
|
||||
export function AdminPhoneSegmentsPage() {
|
||||
const pageSize = 25;
|
||||
const [segments, setSegments] = useState<PhoneSegment[]>([]);
|
||||
const [segmentTotal, setSegmentTotal] = useState(0);
|
||||
const [rules, setRules] = useState<CarrierRule[]>([]);
|
||||
const [ruleTotal, setRuleTotal] = useState(0);
|
||||
const [activeTab, setActiveTab] = useState<'segments' | 'rules'>('segments');
|
||||
@@ -39,16 +40,12 @@ export function AdminPhoneSegmentsPage() {
|
||||
const [segmentQuery, setSegmentQuery] = useState('');
|
||||
const [page, setPage] = useState(1);
|
||||
const [rulePage, setRulePage] = useState(1);
|
||||
const [pageCursors, setPageCursors] = useState<Array<string | undefined>>([undefined]);
|
||||
const [hasMore, setHasMore] = useState(false);
|
||||
const [nextCursor, setNextCursor] = useState<string | null>(null);
|
||||
const [reloadKey, setReloadKey] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
const timer = window.setTimeout(() => {
|
||||
setSegmentQuery(keyword.trim());
|
||||
setPage(1);
|
||||
setPageCursors([undefined]);
|
||||
}, 300);
|
||||
return () => window.clearTimeout(timer);
|
||||
}, [keyword]);
|
||||
@@ -57,14 +54,13 @@ export function AdminPhoneSegmentsPage() {
|
||||
let cancelled = false;
|
||||
setLoading(true);
|
||||
Promise.all([
|
||||
adminApi.listPhoneSegments({ keyword: segmentQuery || undefined, cursor: pageCursors[page - 1], pageSize }),
|
||||
adminApi.listPhoneSegments({ keyword: segmentQuery || undefined, page, pageSize }),
|
||||
adminApi.listPhoneCarrierRules({ keyword: activeTab === 'rules' ? segmentQuery || undefined : undefined, page: rulePage, pageSize }),
|
||||
])
|
||||
.then(([segmentPage, ruleResponse]) => {
|
||||
if (cancelled) return;
|
||||
setSegments(segmentPage.items as PhoneSegment[]);
|
||||
setHasMore(segmentPage.hasMore);
|
||||
setNextCursor(segmentPage.nextCursor);
|
||||
setSegmentTotal(segmentPage.total);
|
||||
setRules(ruleResponse.items as CarrierRule[]);
|
||||
setRuleTotal(ruleResponse.total);
|
||||
setError('');
|
||||
@@ -78,8 +74,9 @@ export function AdminPhoneSegmentsPage() {
|
||||
return () => {
|
||||
cancelled = true;
|
||||
};
|
||||
}, [activeTab, page, pageCursors, reloadKey, rulePage, segmentQuery]);
|
||||
}, [activeTab, page, reloadKey, rulePage, segmentQuery]);
|
||||
|
||||
const segmentTotalPages = Math.max(1, Math.ceil(segmentTotal / pageSize));
|
||||
const ruleTotalPages = Math.max(1, Math.ceil(ruleTotal / pageSize));
|
||||
|
||||
function createSegment() {
|
||||
@@ -90,7 +87,6 @@ export function AdminPhoneSegmentsPage() {
|
||||
setCity('');
|
||||
setCreating(false);
|
||||
setPage(1);
|
||||
setPageCursors([undefined]);
|
||||
setReloadKey((current) => current + 1);
|
||||
})
|
||||
.catch((failure: Error) => setError(failure.message || '手机号段新增失败'));
|
||||
@@ -157,17 +153,12 @@ export function AdminPhoneSegmentsPage() {
|
||||
<Pagination
|
||||
page={page}
|
||||
previousDisabled={page <= 1 || loading}
|
||||
nextDisabled={!hasMore || loading}
|
||||
nextDisabled={page >= segmentTotalPages || loading}
|
||||
onPrevious={() => setPage((current) => Math.max(1, current - 1))}
|
||||
onNext={() => {
|
||||
if (!nextCursor) return;
|
||||
setPageCursors((current) => {
|
||||
const updated = [...current];
|
||||
updated[page] = nextCursor;
|
||||
return updated;
|
||||
});
|
||||
setPage((current) => current + 1);
|
||||
}}
|
||||
onNext={() => setPage((current) => Math.min(segmentTotalPages, current + 1))}
|
||||
onPageChange={setPage}
|
||||
total={segmentTotal}
|
||||
totalPages={segmentTotalPages}
|
||||
/>
|
||||
</>
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user