刷新令牌只有在 401 时才会清空cookie
This commit is contained in:
20
README.md
20
README.md
@@ -1,9 +1,21 @@
|
||||
## TODO
|
||||
|
||||
支付等待轮询需要使用 abortcontroller,以便在手动点击时能中断轮询请求
|
||||
|
||||
长短效切换 url 没有重写
|
||||
|
||||
手机支付后原页面保留完成等待弹窗
|
||||
|
||||
支付接口 sse 向客户端推送通知与支付结果等事件
|
||||
|
||||
微信支付渠道无法完成支付
|
||||
|
||||
整体文字替换
|
||||
|
||||
后台首页 :
|
||||
- 接口联调
|
||||
- banner 拉伸问题
|
||||
- 图表组件高度和查询按钮越界问题
|
||||
- 磁贴组件手机视图竖排,删除“套餐”,“数量”
|
||||
- 公告查看更多跳转实现
|
||||
|
||||
手机端支付页面样式调整为类似电商的底部支付栏
|
||||
@@ -12,14 +24,10 @@ MDX code 块语法高亮
|
||||
|
||||
全部替换封装时间范围组件,检查结束时间字段手机端适配问题(需要尾部对齐)
|
||||
|
||||
全局修改断点命名
|
||||
|
||||
页头链接完善跳转地址
|
||||
页尾链接完善跳转地址
|
||||
|
||||
树组件优化
|
||||
|
||||
sse 向客户端推送通知与支付结果等事件
|
||||
|
||||
IP 管理按长短效分页
|
||||
|
||||
调整页面大小优化:如果单页大小不超过预期大小,不需要刷新数据
|
||||
|
||||
@@ -6,6 +6,54 @@ export type SftpayPageProps = {
|
||||
|
||||
export default async function SftpayPage(props: SftpayPageProps) {
|
||||
return (
|
||||
<div>111</div>
|
||||
<div className="flex items-center justify-center min-h-screen bg-gray-100">
|
||||
<div className="w-full max-w-md p-8 space-y-8 bg-white rounded-lg shadow-lg">
|
||||
<div className="text-center">
|
||||
<div className="flex justify-center">
|
||||
<div className="rounded-full bg-green-100 p-3">
|
||||
<svg className="h-12 w-12 text-green-500" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<h2 className="mt-6 text-3xl font-extrabold text-gray-900">支付成功</h2>
|
||||
<p className="mt-2 text-sm text-gray-600">
|
||||
您的订单已成功支付,感谢您的使用
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="mt-8 space-y-6">
|
||||
<div className="border-t border-gray-200 pt-4">
|
||||
<dl className="space-y-4">
|
||||
<div className="flex justify-between">
|
||||
<dt className="text-sm font-medium text-gray-500">订单编号</dt>
|
||||
<dd className="text-sm text-gray-900">ORD-12345678</dd>
|
||||
</div>
|
||||
<div className="flex justify-between">
|
||||
<dt className="text-sm font-medium text-gray-500">支付金额</dt>
|
||||
<dd className="text-sm font-bold text-gray-900">¥ 299.00</dd>
|
||||
</div>
|
||||
<div className="flex justify-between">
|
||||
<dt className="text-sm font-medium text-gray-500">支付时间</dt>
|
||||
<dd className="text-sm text-gray-900">{new Date().toLocaleString('zh-CN')}</dd>
|
||||
</div>
|
||||
<div className="flex justify-between">
|
||||
<dt className="text-sm font-medium text-gray-500">支付方式</dt>
|
||||
<dd className="text-sm text-gray-900">SFT支付</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-center">
|
||||
<button
|
||||
type="button"
|
||||
className="w-full flex justify-center py-3 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
|
||||
>
|
||||
返回首页
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,54 +1,26 @@
|
||||
import Wrap from '@/components/wrap'
|
||||
import {NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport} from '@radix-ui/react-navigation-menu'
|
||||
import Link from 'next/link'
|
||||
'use client'
|
||||
import {Button} from '@/components/ui/button'
|
||||
import {useEffect, useRef, useState} from 'react'
|
||||
|
||||
export default function TestPage() {
|
||||
const [show, setShow] = useState(false)
|
||||
|
||||
return (
|
||||
<div className="fixed left-0 top-0 w-full">
|
||||
<Wrap>
|
||||
<NavigationMenu>
|
||||
<div className="flex">
|
||||
<div className="flex-1">
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<NavigationMenuList className="flex justify-around">
|
||||
<NavigationMenuItem>
|
||||
<NavigationMenuLink asChild>
|
||||
<Link href="/test">Test 0 </Link>
|
||||
</NavigationMenuLink>
|
||||
</NavigationMenuItem>
|
||||
<NavigationMenuItem>
|
||||
<NavigationMenuTrigger>
|
||||
Test 1
|
||||
</NavigationMenuTrigger>
|
||||
<NavigationMenuContent>
|
||||
<NavigationMenuLink asChild>
|
||||
<Link href="/test">Test 1 Content</Link>
|
||||
</NavigationMenuLink>
|
||||
</NavigationMenuContent>
|
||||
</NavigationMenuItem>
|
||||
<NavigationMenuItem>
|
||||
<NavigationMenuTrigger>
|
||||
Test 2
|
||||
</NavigationMenuTrigger>
|
||||
<NavigationMenuContent>
|
||||
<NavigationMenuLink asChild>
|
||||
<Link href="/test">Test 2 Content</Link>
|
||||
</NavigationMenuLink>
|
||||
</NavigationMenuContent>
|
||||
</NavigationMenuItem>
|
||||
<NavigationMenuItem>
|
||||
<NavigationMenuLink asChild>
|
||||
<Link href="/test">Test 3 </Link>
|
||||
</NavigationMenuLink>
|
||||
</NavigationMenuItem>
|
||||
<NavigationMenuIndicator className="w-full h-1 bg-green-500"/>
|
||||
</NavigationMenuList>
|
||||
</div>
|
||||
</div>
|
||||
<NavigationMenuViewport className="bg-blue-100"/>
|
||||
</NavigationMenu>
|
||||
</Wrap>
|
||||
<div>
|
||||
<Button onClick={() => setShow(true)}>test</Button>
|
||||
{show && <TestCanvas/>}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
function TestCanvas() {
|
||||
const c = useRef<HTMLCanvasElement>(null)
|
||||
|
||||
useEffect(() => {
|
||||
console.log(c)
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<canvas ref={c}></canvas>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user