修复发布页移动端小数输入与押金下限校验

- 哈夫币/M:移动端输入框由 type="digit" 改为 type="number",
  与绝密KD 一致,iOS 可输入小数点(烽火等级保持取整不变)
- 押金:新增 handleDepositBlur,输入框失焦时若低于智能推荐额度
  (或为空/非法)自动补足到推荐值并提示,桌面与移动端均生效;
  提交时校验保留作兜底

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
yml2213
2026-06-17 03:53:01 +08:00
co-authored by Claude Opus 4.8
parent f336957391
commit ae11dd7b8d
3 changed files with 17 additions and 1 deletions
@@ -612,6 +612,17 @@ export function usePublishForm(options: UsePublishFormOptions) {
} }
} }
// 失焦时实时校正:押金低于(或低于等于无效/为空)智能推荐时自动补到推荐值并提示。
function handleDepositBlur() {
const recommended = pricing.recommendedDepositAmount.value
if (recommended <= 0) return
const current = Number(form.depositAmountYuan)
if (form.depositAmountYuan === '' || !Number.isFinite(current) || current < recommended) {
form.depositAmountYuan = recommended
options.notifyWarning(`押金不能低于智能推荐 ¥${recommended},已自动调整`)
}
}
function clearForbiddenQuantityItems() { function clearForbiddenQuantityItems() {
for (const item of pricing.quantityItems.value) { for (const item of pricing.quantityItems.value) {
if (!pricing.isQuantityItemDisabled(item)) continue if (!pricing.isQuantityItemDisabled(item)) continue
@@ -959,6 +970,7 @@ export function usePublishForm(options: UsePublishFormOptions) {
handleAcceleratedSaleRatioInput, handleAcceleratedSaleRatioInput,
syncRecommendedDeposit, syncRecommendedDeposit,
useRecommendedDeposit, useRecommendedDeposit,
handleDepositBlur,
clearForbiddenQuantityItems, clearForbiddenQuantityItems,
setQuantityMode, setQuantityMode,
clampAcceleratedSaleRatioInput, clampAcceleratedSaleRatioInput,
@@ -81,6 +81,7 @@ const {
handleFireLevelInput, handleFireLevelInput,
handleAcceleratedSaleRatioInput, handleAcceleratedSaleRatioInput,
useRecommendedDeposit, useRecommendedDeposit,
handleDepositBlur,
setQuantityMode, setQuantityMode,
clampAcceleratedSaleRatioInput, clampAcceleratedSaleRatioInput,
useReferenceSaleRatio, useReferenceSaleRatio,
@@ -177,7 +178,7 @@ const screenshotGuides: Record<string, string> = {
<van-field <van-field
v-model="form.haf_coin_amount" v-model="form.haf_coin_amount"
label="哈夫币/M" label="哈夫币/M"
type="digit" type="number"
required required
placeholder="只填写仓库右上角纯币数额,总资产不计算在内;100M 写 100" placeholder="只填写仓库右上角纯币数额,总资产不计算在内;100M 写 100"
class="publish-field" class="publish-field"
@@ -578,6 +579,7 @@ const screenshotGuides: Record<string, string> = {
type="number" type="number"
inputmode="decimal" inputmode="decimal"
:placeholder="priceConfig.deposit_placeholder" :placeholder="priceConfig.deposit_placeholder"
@blur="handleDepositBlur"
/> />
<span></span> <span></span>
</div> </div>
@@ -90,6 +90,7 @@ const {
handleFireLevelInput, handleFireLevelInput,
handleAcceleratedSaleRatioInput, handleAcceleratedSaleRatioInput,
useRecommendedDeposit, useRecommendedDeposit,
handleDepositBlur,
setQuantityMode, setQuantityMode,
clampAcceleratedSaleRatioInput, clampAcceleratedSaleRatioInput,
useReferenceSaleRatio, useReferenceSaleRatio,
@@ -513,6 +514,7 @@ function selectDailyLoss(value: string | number) {
:min="0" :min="0"
:controls="false" :controls="false"
:placeholder="priceConfig.deposit_placeholder" :placeholder="priceConfig.deposit_placeholder"
@blur="handleDepositBlur"
/> />
<button class="recommend-button" type="button" @click="useRecommendedDeposit"> <button class="recommend-button" type="button" @click="useRecommendedDeposit">
使用推荐 ¥{{ formatMoney(recommendedDepositAmount) }} 使用推荐 ¥{{ formatMoney(recommendedDepositAmount) }}