diff --git a/README.md b/README.md index 5f94893..bedeb90 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,12 @@ ## TODO -支付等待轮询需要使用 abortcontroller,以便在手动点击时能中断轮询请求 - -长短效切换 url 没有重写 - -手机支付后原页面保留完成等待弹窗 - -支付接口 sse 向客户端推送通知与支付结果等事件 - -微信支付渠道无法完成支付 +提取页面: + - 手机端重新调整样式 + - 类似电商的底部支付栏 + - 整体边距,尽量一页显示完整 整体文字替换 -后台首页 : -- 接口联调 -- banner 拉伸问题 -- 图表组件高度和查询按钮越界问题 -- 公告查看更多跳转实现 - -手机端支付页面样式调整为类似电商的底部支付栏 - -MDX code 块语法高亮 - 全部替换封装时间范围组件,检查结束时间字段手机端适配问题(需要尾部对齐) 页尾链接完善跳转地址 @@ -30,12 +15,6 @@ MDX code 块语法高亮 IP 管理按长短效分页 -调整页面大小优化:如果单页大小不超过预期大小,不需要刷新数据 - -翻页优化:调整页面大小后检查是否需要重置页面到最后一页(需要后端实现) - -切换 eslint 到 biome - ### 架构改进 考虑使用 swr 或 react query 来代替直接的服务端 react cache 缓存以及客户端 zustand 缓存,以将服务端请求的数据能够水合到客户端,避免重复请求 diff --git a/src/app/(home)/product/page.tsx b/src/app/(home)/product/page.tsx index c975f01..d4864b1 100644 --- a/src/app/(home)/product/page.tsx +++ b/src/app/(home)/product/page.tsx @@ -15,7 +15,7 @@ export default async function ProductPage(props: ProductPageProps) { - + ) diff --git a/src/app/admin/purchase/page.tsx b/src/app/admin/purchase/page.tsx index 36643d0..13abd1f 100644 --- a/src/app/admin/purchase/page.tsx +++ b/src/app/admin/purchase/page.tsx @@ -10,7 +10,7 @@ export type PurchasePageProps = { export default async function PurchasePage(props: PurchasePageProps) { return ( - + ) } diff --git a/src/components/composites/purchase/index.tsx b/src/components/composites/purchase/index.tsx index 1d42c9a..e3cccd3 100644 --- a/src/components/composites/purchase/index.tsx +++ b/src/components/composites/purchase/index.tsx @@ -1,25 +1,23 @@ 'use client' -import {ReactNode, useState} from 'react' +import {ReactNode} from 'react' import {merge} from '@/lib/utils' import {Tabs, TabsContent, TabsList, TabsTrigger} from '@/components/ui/tabs' import LongForm from '@/components/composites/purchase/long/form' import ShortForm from '@/components/composites/purchase/short/form' -import {useSearchParams} from 'next/navigation' +import {usePathname, useRouter, useSearchParams} from 'next/navigation' export type TabType = 'short' | 'long' | 'fixed' | 'custom' -type PurchaseProps = { - defaultTab: TabType -} - -export default function Purchase(props: PurchaseProps) { - const [tab, setTab] = useState(props.defaultTab) - +export default function Purchase() { + const router = useRouter() + const path = usePathname() const params = useSearchParams() + + const tab = params.get('type') as TabType || 'short' + const updateTab = async (tab: string) => { - setTab(tab as TabType) const newParams = new URLSearchParams(params) newParams.set('type', tab) - window.history.pushState({}, '', `?${newParams.toString()}`) + router.push(`${path}?${newParams.toString()}`) } return ( diff --git a/src/proxy.ts b/src/proxy.ts index 3e695e8..318c3fd 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -29,20 +29,10 @@ export async function proxy(request: NextRequest) { } // 验证访问令牌 - if (request.cookies.get('auth_token')) { - // 如果刷新访问令牌成功,则继续访问之前的页面 - const isLogin = request.nextUrl.pathname === '/login' - const hasRedirect = request.nextUrl.searchParams.get('redirect') - if (isLogin && hasRedirect) { - return NextResponse.redirect(`${request.nextUrl.origin}${hasRedirect}`) - } - } - else { - // 没有访问令牌不允许访问 admin 页面 - const isAdmin = request.nextUrl.pathname.startsWith('/admin') - if (isAdmin) { - return NextResponse.redirect(`${request.nextUrl.origin}/login?redirect=${request.nextUrl.pathname}`) - } + const hasToken = !!request.cookies.get('auth_token') + const isToAdmin = request.nextUrl.pathname.startsWith('/admin') + if (!hasToken && isToAdmin) { + return NextResponse.redirect(`${request.nextUrl.origin}/login?redirect=${request.nextUrl.pathname}`) } return NextResponse.next({request})