fix: 使用shadcn NumberField组件并限制宽度
- 使用NumberField组件替代Input - 限制宽度为w-32 - 配置货币格式显示 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,7 @@ import { useRoute, useRouter } from 'vue-router'
|
|||||||
import { toast } from 'vue-sonner'
|
import { toast } from 'vue-sonner'
|
||||||
|
|
||||||
import { BasicPage } from '@/components/global-layout'
|
import { BasicPage } from '@/components/global-layout'
|
||||||
import { Input } from '@/components/ui/input'
|
import { NumberField, NumberFieldContent, NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput } from '@/components/ui/number-field'
|
||||||
import api from '@/services/api'
|
import api from '@/services/api'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -246,18 +246,20 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<UiLabel for="price">{{ t('admin.agentApps.createForm.price') }} <span class="text-destructive">*</span></UiLabel>
|
<UiLabel>{{ t('admin.agentApps.createForm.price') }} <span class="text-destructive">*</span></UiLabel>
|
||||||
<div class="relative">
|
<NumberField
|
||||||
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground">¥</span>
|
v-model="formData.price"
|
||||||
<Input
|
:min="0"
|
||||||
id="price"
|
:format-options="{ style: 'currency', currency: 'CNY', currencyDisplay: 'symbol' }"
|
||||||
v-model="formData.price"
|
:disabled="saving"
|
||||||
type="number"
|
class="w-32"
|
||||||
class="pl-7"
|
>
|
||||||
:placeholder="t('admin.agentApps.createForm.pricePlaceholder')"
|
<NumberFieldContent>
|
||||||
:disabled="saving"
|
<NumberFieldDecrement />
|
||||||
/>
|
<NumberFieldInput />
|
||||||
</div>
|
<NumberFieldIncrement />
|
||||||
|
</NumberFieldContent>
|
||||||
|
</NumberField>
|
||||||
</div>
|
</div>
|
||||||
</UiCardContent>
|
</UiCardContent>
|
||||||
</UiCard>
|
</UiCard>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { useRouter } from 'vue-router'
|
|||||||
import { toast } from 'vue-sonner'
|
import { toast } from 'vue-sonner'
|
||||||
|
|
||||||
import { BasicPage } from '@/components/global-layout'
|
import { BasicPage } from '@/components/global-layout'
|
||||||
import { Input } from '@/components/ui/input'
|
import { NumberField, NumberFieldContent, NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput } from '@/components/ui/number-field'
|
||||||
import api from '@/services/api'
|
import api from '@/services/api'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -232,18 +232,20 @@ onMounted(() => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<UiLabel for="price">{{ t('admin.agentApps.createForm.price') }} <span class="text-destructive">*</span></UiLabel>
|
<UiLabel>{{ t('admin.agentApps.createForm.price') }} <span class="text-destructive">*</span></UiLabel>
|
||||||
<div class="relative">
|
<NumberField
|
||||||
<span class="absolute left-3 top-1/2 -translate-y-1/2 text-muted-foreground">¥</span>
|
v-model="formData.price"
|
||||||
<Input
|
:min="0"
|
||||||
id="price"
|
:format-options="{ style: 'currency', currency: 'CNY', currencyDisplay: 'symbol' }"
|
||||||
v-model="formData.price"
|
:disabled="saving"
|
||||||
type="number"
|
class="w-32"
|
||||||
class="pl-7"
|
>
|
||||||
:placeholder="t('admin.agentApps.createForm.pricePlaceholder')"
|
<NumberFieldContent>
|
||||||
:disabled="saving"
|
<NumberFieldDecrement />
|
||||||
/>
|
<NumberFieldInput />
|
||||||
</div>
|
<NumberFieldIncrement />
|
||||||
|
</NumberFieldContent>
|
||||||
|
</NumberField>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
|
|||||||
Reference in New Issue
Block a user