feat: 合并代码,增加分页默认值
This commit is contained in:
parent
f90f431540
commit
fe704d1611
@ -315,6 +315,9 @@ export default function NodeTable() {
|
|||||||
|
|
||||||
return updatedItems;
|
return updatedItems;
|
||||||
}}
|
}}
|
||||||
|
initialPagination={{
|
||||||
|
initialPageSize: 200,
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,9 @@ import { z } from 'zod';
|
|||||||
const inviteSchema = z.object({
|
const inviteSchema = z.object({
|
||||||
forced_invite: z.boolean().optional(),
|
forced_invite: z.boolean().optional(),
|
||||||
referral_percentage: z.number().optional(),
|
referral_percentage: z.number().optional(),
|
||||||
|
non_first_purchase_percentage: z.number().optional(),
|
||||||
|
first_yearly_purchase_percentage: z.number().optional(),
|
||||||
|
first_purchase_percentage: z.number().optional(),
|
||||||
only_first_purchase: z.boolean().optional(),
|
only_first_purchase: z.boolean().optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -60,6 +63,9 @@ export default function InviteConfig() {
|
|||||||
forced_invite: false,
|
forced_invite: false,
|
||||||
referral_percentage: 0,
|
referral_percentage: 0,
|
||||||
only_first_purchase: false,
|
only_first_purchase: false,
|
||||||
|
non_first_purchase_percentage: 0,
|
||||||
|
first_yearly_purchase_percentage: 0,
|
||||||
|
first_purchase_percentage: 0,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -123,7 +129,6 @@ export default function InviteConfig() {
|
|||||||
className='float-end !mt-0'
|
className='float-end !mt-0'
|
||||||
/>
|
/>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormDescription>{t('forcedInviteDescription')}</FormDescription>
|
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
)}
|
)}
|
||||||
@ -131,10 +136,10 @@ export default function InviteConfig() {
|
|||||||
|
|
||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
name='referral_percentage'
|
name='first_yearly_purchase_percentage'
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel>{t('referralPercentage')}</FormLabel>
|
<FormLabel>年付套餐首充佣金比例</FormLabel>
|
||||||
<FormControl>
|
<FormControl>
|
||||||
<EnhancedInput
|
<EnhancedInput
|
||||||
placeholder={t('inputPlaceholder')}
|
placeholder={t('inputPlaceholder')}
|
||||||
@ -146,11 +151,108 @@ export default function InviteConfig() {
|
|||||||
onValueBlur={(value) => field.onChange(Number(value))}
|
onValueBlur={(value) => field.onChange(Number(value))}
|
||||||
/>
|
/>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
<FormDescription>{t('referralPercentageDescription')}</FormDescription>
|
|
||||||
<FormMessage />
|
<FormMessage />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
<FormField
|
||||||
|
control={form.control}
|
||||||
|
name='first_purchase_percentage'
|
||||||
|
render={({ field }) => (
|
||||||
|
<FormItem>
|
||||||
|
<FormLabel>月付套餐首充佣金比例</FormLabel>
|
||||||
|
<FormControl>
|
||||||
|
<EnhancedInput
|
||||||
|
placeholder={t('inputPlaceholder')}
|
||||||
|
value={field.value}
|
||||||
|
type='number'
|
||||||
|
min={0}
|
||||||
|
max={100}
|
||||||
|
suffix='%'
|
||||||
|
onValueBlur={(value) => field.onChange(Number(value))}
|
||||||
|
/>
|
||||||
|
</FormControl>
|
||||||
|
<FormMessage />
|
||||||
|
</FormItem>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
<FormField
|
||||||
|
control={form.control}
|
||||||
|
name='non_first_purchase_percentage'
|
||||||
|
render={({ field }) => (
|
||||||
|
<FormItem>
|
||||||
|
<FormLabel>再次充值佣金比例</FormLabel>
|
||||||
|
<FormControl>
|
||||||
|
<EnhancedInput
|
||||||
|
placeholder={t('inputPlaceholder')}
|
||||||
|
value={field.value}
|
||||||
|
type='number'
|
||||||
|
min={0}
|
||||||
|
max={100}
|
||||||
|
suffix='%'
|
||||||
|
onValueBlur={(value) => field.onChange(Number(value))}
|
||||||
|
/>
|
||||||
|
</FormControl>
|
||||||
|
<FormMessage />
|
||||||
|
</FormItem>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/*
|
||||||
|
|
||||||
|
<TableRow>
|
||||||
|
<TableCell>
|
||||||
|
<Label>年付套餐首充佣金比例</Label>
|
||||||
|
<p className='text-muted-foreground text-xs'></p>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className='text-right'>
|
||||||
|
<EnhancedInput
|
||||||
|
placeholder={t('inputPlaceholder')}
|
||||||
|
value={data?.first_yearly_purchase_percentage}
|
||||||
|
type='number'
|
||||||
|
min={0}
|
||||||
|
max={100}
|
||||||
|
suffix='%'
|
||||||
|
onValueBlur={(value) => updateConfig('first_yearly_purchase_percentage', value)}
|
||||||
|
/>
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
<TableRow>
|
||||||
|
<TableCell>
|
||||||
|
<Label>月付套餐首充佣金比例</Label>
|
||||||
|
<p className='text-muted-foreground text-xs'></p>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className='text-right'>
|
||||||
|
<EnhancedInput
|
||||||
|
placeholder={t('inputPlaceholder')}
|
||||||
|
value={data?.first_purchase_percentage}
|
||||||
|
type='number'
|
||||||
|
min={0}
|
||||||
|
max={100}
|
||||||
|
suffix='%'
|
||||||
|
onValueBlur={(value) => updateConfig('first_purchase_percentage', value)}
|
||||||
|
/>
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
<TableRow>
|
||||||
|
<TableCell>
|
||||||
|
<Label>再次充值佣金比例</Label>
|
||||||
|
<p className='text-muted-foreground text-xs'></p>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell className='text-right'>
|
||||||
|
<EnhancedInput
|
||||||
|
placeholder={t('inputPlaceholder')}
|
||||||
|
value={data?.non_first_purchase_percentage}
|
||||||
|
type='number'
|
||||||
|
min={0}
|
||||||
|
max={100}
|
||||||
|
suffix='%'
|
||||||
|
onValueBlur={(value) => updateConfig('non_first_purchase_percentage', value)}
|
||||||
|
/>
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
|
|
||||||
|
*/}
|
||||||
|
|
||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
|
|||||||
8
bun.lock
8
bun.lock
@ -4,6 +4,7 @@
|
|||||||
"": {
|
"": {
|
||||||
"name": "ppanel-web",
|
"name": "ppanel-web",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@netlify/plugin-nextjs": "^5.11.6",
|
||||||
"@umijs/openapi": "^1.13.0",
|
"@umijs/openapi": "^1.13.0",
|
||||||
"@workspace/commitlint-config": "workspace:*",
|
"@workspace/commitlint-config": "workspace:*",
|
||||||
"@workspace/eslint-config": "workspace:*",
|
"@workspace/eslint-config": "workspace:*",
|
||||||
@ -280,6 +281,7 @@
|
|||||||
"input-otp": "^1.4.2",
|
"input-otp": "^1.4.2",
|
||||||
"lucide-react": "^0.473.0",
|
"lucide-react": "^0.473.0",
|
||||||
"mathjs": "^14.0.1",
|
"mathjs": "^14.0.1",
|
||||||
|
"monaco-themes": "^0.4.6",
|
||||||
"motion": "^11.18.1",
|
"motion": "^11.18.1",
|
||||||
"next-themes": "^0.4.4",
|
"next-themes": "^0.4.4",
|
||||||
"react-day-picker": "8.10.1",
|
"react-day-picker": "8.10.1",
|
||||||
@ -707,6 +709,8 @@
|
|||||||
|
|
||||||
"@monaco-editor/react": ["@monaco-editor/react@4.7.0", "", { "dependencies": { "@monaco-editor/loader": "^1.5.0" }, "peerDependencies": { "monaco-editor": ">= 0.25.0 < 1", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA=="],
|
"@monaco-editor/react": ["@monaco-editor/react@4.7.0", "", { "dependencies": { "@monaco-editor/loader": "^1.5.0" }, "peerDependencies": { "monaco-editor": ">= 0.25.0 < 1", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA=="],
|
||||||
|
|
||||||
|
"@netlify/plugin-nextjs": ["@netlify/plugin-nextjs@5.12.1", "", {}, "sha512-b2Ic9NkNnnh0lKC/YWDZ2+HdLd/uYdBzLvLKYOkPyFt8KEszoC+Je3GRcwBeOLxaNtK8lji7YPIjtGz8K2sLVQ=="],
|
||||||
|
|
||||||
"@next/env": ["@next/env@15.4.6", "", {}, "sha512-yHDKVTcHrZy/8TWhj0B23ylKv5ypocuCwey9ZqPyv4rPdUdRzpGCkSi03t04KBPyU96kxVtUqx6O3nE1kpxASQ=="],
|
"@next/env": ["@next/env@15.4.6", "", {}, "sha512-yHDKVTcHrZy/8TWhj0B23ylKv5ypocuCwey9ZqPyv4rPdUdRzpGCkSi03t04KBPyU96kxVtUqx6O3nE1kpxASQ=="],
|
||||||
|
|
||||||
"@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.4.6", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-2NOu3ln+BTcpnbIDuxx6MNq+pRrCyey4WSXGaJIyt0D2TYicHeO9QrUENNjcf673n3B1s7hsiV5xBYRCK1Q8kA=="],
|
"@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.4.6", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-2NOu3ln+BTcpnbIDuxx6MNq+pRrCyey4WSXGaJIyt0D2TYicHeO9QrUENNjcf673n3B1s7hsiV5xBYRCK1Q8kA=="],
|
||||||
@ -1573,6 +1577,8 @@
|
|||||||
|
|
||||||
"fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
|
"fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="],
|
||||||
|
|
||||||
|
"fast-plist": ["fast-plist@0.1.3", "", {}, "sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A=="],
|
||||||
|
|
||||||
"fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="],
|
"fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="],
|
||||||
|
|
||||||
"fast-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="],
|
"fast-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="],
|
||||||
@ -2147,6 +2153,8 @@
|
|||||||
|
|
||||||
"monaco-editor": ["monaco-editor@0.52.2", "", {}, "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ=="],
|
"monaco-editor": ["monaco-editor@0.52.2", "", {}, "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ=="],
|
||||||
|
|
||||||
|
"monaco-themes": ["monaco-themes@0.4.6", "", { "dependencies": { "fast-plist": "^0.1.3" } }, "sha512-g8E1CNT6bRyinPSQxVnNrs5b12zmKBpA83l3MEyOETr+KvoyUP4SS1AfHxyxaFBnLiyuyRwoPO4+R4PvzCJzPw=="],
|
||||||
|
|
||||||
"motion": ["motion@11.18.2", "", { "dependencies": { "framer-motion": "^11.18.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-JLjvFDuFr42NFtcVoMAyC2sEjnpA8xpy6qWPyzQvCloznAyQ8FIXioxWfHiLtgYhoVpfUqSWpn1h9++skj9+Wg=="],
|
"motion": ["motion@11.18.2", "", { "dependencies": { "framer-motion": "^11.18.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-JLjvFDuFr42NFtcVoMAyC2sEjnpA8xpy6qWPyzQvCloznAyQ8FIXioxWfHiLtgYhoVpfUqSWpn1h9++skj9+Wg=="],
|
||||||
|
|
||||||
"motion-dom": ["motion-dom@11.18.1", "", { "dependencies": { "motion-utils": "^11.18.1" } }, "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw=="],
|
"motion-dom": ["motion-dom@11.18.1", "", { "dependencies": { "motion-utils": "^11.18.1" } }, "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw=="],
|
||||||
|
|||||||
@ -69,6 +69,9 @@ export interface ProTableProps<TData, TValue> {
|
|||||||
targetId: string | number | null,
|
targetId: string | number | null,
|
||||||
items: TData[],
|
items: TData[],
|
||||||
) => Promise<TData[]>;
|
) => Promise<TData[]>;
|
||||||
|
initialPagination: {
|
||||||
|
initialPageSize: number;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ProTableActions {
|
export interface ProTableActions {
|
||||||
@ -89,6 +92,7 @@ export function ProTable<
|
|||||||
texts,
|
texts,
|
||||||
empty,
|
empty,
|
||||||
onSort,
|
onSort,
|
||||||
|
initialPagination,
|
||||||
}: ProTableProps<TData, TValue>) {
|
}: ProTableProps<TData, TValue>) {
|
||||||
const [sorting, setSorting] = useState<SortingState>([]);
|
const [sorting, setSorting] = useState<SortingState>([]);
|
||||||
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
|
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
|
||||||
@ -98,7 +102,7 @@ export function ProTable<
|
|||||||
const [rowCount, setRowCount] = useState<number>(0);
|
const [rowCount, setRowCount] = useState<number>(0);
|
||||||
const [pagination, setPagination] = useState({
|
const [pagination, setPagination] = useState({
|
||||||
pageIndex: 0,
|
pageIndex: 0,
|
||||||
pageSize: 10,
|
pageSize: initialPagination?.initialPageSize ?? 10,
|
||||||
});
|
});
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
|
|
||||||
@ -132,9 +136,9 @@ export function ProTable<
|
|||||||
header: texts?.actions,
|
header: texts?.actions,
|
||||||
cell: ({ row }) => (
|
cell: ({ row }) => (
|
||||||
<div className='flex items-center justify-end gap-2'>
|
<div className='flex items-center justify-end gap-2'>
|
||||||
{actions
|
{actions?.render?.(row.original).map((item, index) => (
|
||||||
?.render?.(row.original)
|
<Fragment key={index}>{item}</Fragment>
|
||||||
.map((item, index) => <Fragment key={index}>{item}</Fragment>)}
|
))}
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
enableSorting: false,
|
enableSorting: false,
|
||||||
@ -197,6 +201,7 @@ export function ProTable<
|
|||||||
useImperativeHandle(action, () => ({
|
useImperativeHandle(action, () => ({
|
||||||
refresh: fetchData,
|
refresh: fetchData,
|
||||||
reset,
|
reset,
|
||||||
|
setPagination,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user