修复购买套餐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 {Tabs, TabsContent, TabsList, TabsTrigger} from '@/components/ui/tabs'
import LongForm from '@/components/composites/purchase/long/form' import LongForm from '@/components/composites/purchase/long/form'
import ShortForm from '@/components/composites/purchase/short/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 Custom from '@/components/composites/purchase/custom/page'
import {usePathname, useRouter, useSearchParams} from 'next/navigation' import {usePathname, useRouter, useSearchParams} from 'next/navigation'
import SelfDesc from '@/components/features/self-desc' 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" className="w-40 h-10 border border-gray-200 rounded-sm text-center"
min={minValue} min={minValue}
step={step} step={step}
onBlur={(e) => {
const value = Number(e.target.value)
if (value < 500) {
form.setValue('quota', 500)
}
}}
/> />
<Button <Button
theme="outline" theme="outline"
@@ -164,9 +170,20 @@ export default function Center() {
<Minus/> <Minus/>
</Button> </Button>
<div className="w-40 h-10 border border-gray-200 rounded-sm flex items-center justify-center"> <Input
{value} {...field}
</div> 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 <Button
theme="outline" theme="outline"

View File

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

View File

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

View File

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

View File

@@ -7,7 +7,7 @@ export type WrapProps = {
export default function Wrap(props: WrapProps) { export default function Wrap(props: WrapProps) {
return ( 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} {props.children}
</div> </div>
) )