From fe704d161148c6c93823bf0ebf4f2d68f33ee610 Mon Sep 17 00:00:00 2001 From: speakeloudest Date: Thu, 21 Aug 2025 21:38:58 -0700 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=88=86=E9=A1=B5=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/app/dashboard/server/node-table.tsx | 3 + .../system/user-security/invite-form.tsx | 110 +++++++++++++++++- bun.lock | 8 ++ .../custom-components/pro-table/pro-table.tsx | 13 ++- 4 files changed, 126 insertions(+), 8 deletions(-) diff --git a/apps/admin/app/dashboard/server/node-table.tsx b/apps/admin/app/dashboard/server/node-table.tsx index d21d6d0..52cf333 100644 --- a/apps/admin/app/dashboard/server/node-table.tsx +++ b/apps/admin/app/dashboard/server/node-table.tsx @@ -315,6 +315,9 @@ export default function NodeTable() { return updatedItems; }} + initialPagination={{ + initialPageSize: 200, + }} /> ); } diff --git a/apps/admin/app/dashboard/system/user-security/invite-form.tsx b/apps/admin/app/dashboard/system/user-security/invite-form.tsx index 1db24ce..0ab30bf 100644 --- a/apps/admin/app/dashboard/system/user-security/invite-form.tsx +++ b/apps/admin/app/dashboard/system/user-security/invite-form.tsx @@ -34,6 +34,9 @@ import { z } from 'zod'; const inviteSchema = z.object({ forced_invite: z.boolean().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(), }); @@ -60,6 +63,9 @@ export default function InviteConfig() { forced_invite: false, referral_percentage: 0, 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' /> - {t('forcedInviteDescription')} )} @@ -131,10 +136,10 @@ export default function InviteConfig() { ( - {t('referralPercentage')} + 年付套餐首充佣金比例 field.onChange(Number(value))} /> - {t('referralPercentageDescription')} )} /> + ( + + 月付套餐首充佣金比例 + + field.onChange(Number(value))} + /> + + + + )} + /> + ( + + 再次充值佣金比例 + + field.onChange(Number(value))} + /> + + + + )} + /> + + {/* + + + + +

+
+ + updateConfig('first_yearly_purchase_percentage', value)} + /> + +
+ + + +

+
+ + updateConfig('first_purchase_percentage', value)} + /> + +
+ + + +

+
+ + updateConfig('non_first_purchase_percentage', value)} + /> + +
+ + */} = 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/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-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-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="], @@ -2147,6 +2153,8 @@ "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-dom": ["motion-dom@11.18.1", "", { "dependencies": { "motion-utils": "^11.18.1" } }, "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw=="], diff --git a/packages/ui/src/custom-components/pro-table/pro-table.tsx b/packages/ui/src/custom-components/pro-table/pro-table.tsx index 981ea3a..f48117b 100644 --- a/packages/ui/src/custom-components/pro-table/pro-table.tsx +++ b/packages/ui/src/custom-components/pro-table/pro-table.tsx @@ -69,6 +69,9 @@ export interface ProTableProps { targetId: string | number | null, items: TData[], ) => Promise; + initialPagination: { + initialPageSize: number; + }; } export interface ProTableActions { @@ -89,6 +92,7 @@ export function ProTable< texts, empty, onSort, + initialPagination, }: ProTableProps) { const [sorting, setSorting] = useState([]); const [columnFilters, setColumnFilters] = useState([]); @@ -98,7 +102,7 @@ export function ProTable< const [rowCount, setRowCount] = useState(0); const [pagination, setPagination] = useState({ pageIndex: 0, - pageSize: 10, + pageSize: initialPagination?.initialPageSize ?? 10, }); const [loading, setLoading] = useState(false); @@ -132,9 +136,9 @@ export function ProTable< header: texts?.actions, cell: ({ row }) => (
- {actions - ?.render?.(row.original) - .map((item, index) => {item})} + {actions?.render?.(row.original).map((item, index) => ( + {item} + ))}
), enableSorting: false, @@ -197,6 +201,7 @@ export function ProTable< useImperativeHandle(action, () => ({ refresh: fetchData, reset, + setPagination, })); useEffect(() => {