修复购买套餐Input框和计算数量传参的问题 &

This commit is contained in:
Eamon-meng
2025-12-18 12:28:29 +08:00
parent 4288b0de10
commit 375a6f30c0
6 changed files with 41 additions and 15 deletions

View File

@@ -4,6 +4,7 @@ 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 FixedForm from '@/components/composites/purchase/fixed/form'
import Custom from '@/components/composites/purchase/custom/page'
import {usePathname, useRouter, useSearchParams} from 'next/navigation'
import SelfDesc from '@/components/features/self-desc'

View File

@@ -105,6 +105,12 @@ export default function Center() {
className="w-40 h-10 border border-gray-200 rounded-sm text-center"
min={minValue}
step={step}
onBlur={(e) => {
const value = Number(e.target.value)
if (value < 500) {
form.setValue('quota', 500)
}
}}
/>
<Button
theme="outline"
@@ -164,9 +170,20 @@ export default function Center() {
<Minus/>
</Button>
<div className="w-40 h-10 border border-gray-200 rounded-sm flex items-center justify-center">
{value}
</div>
<Input
{...field}
id={id}
type="number"
className="w-40 h-10 border border-gray-200 rounded-sm text-center"
min={100}
step={100}
onBlur={(e) => {
const value = Number(e.target.value)
if (value < 100) {
form.setValue('daily_limit', 100)
}
}}
/>
<Button
theme="outline"

View File

@@ -27,7 +27,7 @@ export default function Right() {
const quota = useWatch({control, name: 'quota'})
const expire = useWatch({control, name: 'expire'})
const dailyLimit = useWatch({control, name: 'daily_limit'})
const [price, setPrice] = useState<string>('0.00')
const [price, setPrice] = useState<string>('')
useEffect(() => {
const price = async () => {
@@ -36,7 +36,7 @@ export default function Right() {
long: {
live: Number(live),
mode: Number(mode),
quota: Number(mode) === 1 ? dailyLimit : quota,
quota: Number(mode) === 1 ? Number(dailyLimit) : Number(quota),
expire: Number(mode) === 1 ? Number(expire) : undefined,
},
}
@@ -45,9 +45,6 @@ export default function Right() {
if (priceValue.success && priceValue.data?.price) {
setPrice(priceValue.data.price)
}
else {
setPrice('0.00')
}
}
catch (error) {
console.error('获取价格失败:', error)

View File

@@ -100,7 +100,14 @@ export default function Center() {
type="number"
className="w-40 h-10 border border-gray-200 rounded-sm text-center"
min={10000}
step={5000}/>
step={5000}
onBlur={(e) => {
const value = Number(e.target.value)
if (value < 10000) {
form.setValue('quota', 10000)
}
}}
/>
<Button
theme="outline"
type="button"
@@ -157,6 +164,12 @@ export default function Center() {
className="w-40 h-10 border border-gray-200 rounded-sm text-center"
min={2_000}
step={1_000}
onBlur={(e) => {
const value = Number(e.target.value)
if (value < 2_000) {
form.setValue('daily_limit', 2_000)
}
}}
/>
<Button
theme="outline"

View File

@@ -25,7 +25,8 @@ export default function Right() {
const expire = useWatch({control, name: 'expire'})
const quota = useWatch({control, name: 'quota'})
const dailyLimit = useWatch({control, name: 'daily_limit'})
const [price, setPrice] = useState<string>('0.00')
const [price, setPrice] = useState<string>('')
useEffect(() => {
const price = async () => {
const params: CreateResourceReq = {
@@ -33,7 +34,7 @@ export default function Right() {
short: {
live: Number(live),
mode: Number(mode),
quota: Number(mode) === 1 ? dailyLimit : quota,
quota: Number(mode) === 1 ? Number(dailyLimit) : Number(quota),
expire: Number(mode) === 1 ? Number(expire) : undefined,
},
}
@@ -42,9 +43,6 @@ export default function Right() {
if (priceResponse.success && priceResponse.data?.price) {
setPrice(priceResponse.data.price)
}
else {
setPrice('0.00')
}
}
catch (error) {
console.error('获取价格失败:', error)

View File

@@ -7,7 +7,7 @@ export type WrapProps = {
export default function Wrap(props: WrapProps) {
return (
<div className={`max-w-[1632px] w-full px-4 mx-auto ${props.className}`}>
<div className={`max-w-[1232px] w-full px-4 mx-auto ${props.className}`}>
{props.children}
</div>
)