feat: 装扮购买增加数量输入弹窗(参照补签卡样式)
This commit is contained in:
@@ -548,9 +548,17 @@ async function confirmAndBuyItem(item) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const validityText = buildValidityText(item);
|
|
||||||
const isDecoration = DECORATION_TYPE_TO_SLOT[item.type] && item.type !== "sign_repair";
|
const isDecoration = DECORATION_TYPE_TO_SLOT[item.type] && item.type !== "sign_repair";
|
||||||
const stackingHint = isDecoration ? "\\n\\n💡 已激活的同款续购自动叠加天数,可多次购买" : "";
|
if (isDecoration) {
|
||||||
|
const unitPrice = Number(item.price || 0);
|
||||||
|
quantity = await promptDecorationQuantity(item);
|
||||||
|
if (quantity === null || quantity === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const validityText = buildValidityText(item);
|
||||||
|
const stackingHint = isDecoration ? "\\n💡 已激活同款续购自动叠加天数,可多次购买" : "";
|
||||||
const confirmMessage = `确认花费 💰 ${Number(Number(item.price || 0) * quantity).toLocaleString()} 金币购买\\n【${item.name}】${quantity > 1 ? ` × ${quantity}` : ""}${validityText ? `\\n${validityText}` : ""}${stackingHint}\\n\\n确定购买吗?`;
|
const confirmMessage = `确认花费 💰 ${Number(Number(item.price || 0) * quantity).toLocaleString()} 金币购买\\n【${item.name}】${quantity > 1 ? ` × ${quantity}` : ""}${validityText ? `\\n${validityText}` : ""}${stackingHint}\\n\\n确定购买吗?`;
|
||||||
const confirmed = await confirmShopPurchase(confirmMessage);
|
const confirmed = await confirmShopPurchase(confirmMessage);
|
||||||
|
|
||||||
@@ -559,6 +567,47 @@ async function confirmAndBuyItem(item) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 装饰品数量输入弹窗(参照补签卡样式)。
|
||||||
|
*
|
||||||
|
* @param {Record<string, any>} item 装饰品数据
|
||||||
|
* @returns {Promise<number|null>} 返回数量,取消返回 null
|
||||||
|
*/
|
||||||
|
async function promptDecorationQuantity(item) {
|
||||||
|
const unitPrice = Number(item.price || 0);
|
||||||
|
const validityText = buildValidityText(item);
|
||||||
|
const validHint = validityText ? `\\n有效期:${validityText}` : "";
|
||||||
|
const promptPromise = window.chatDialog?.prompt(
|
||||||
|
`请输入要购买的份数(1-99份):\\n单价 ${unitPrice.toLocaleString()} 金币${validHint}\\n💡 已激活同款续购自动叠加天数,可多次购买`,
|
||||||
|
'1',
|
||||||
|
`购买 ${item.name}`,
|
||||||
|
'#7c3aed',
|
||||||
|
);
|
||||||
|
|
||||||
|
const inputEl = document.getElementById('global-dialog-input');
|
||||||
|
const previousInputStyle = inputEl?.getAttribute('style') || '';
|
||||||
|
|
||||||
|
if (inputEl) {
|
||||||
|
inputEl.style.minHeight = '40px';
|
||||||
|
inputEl.style.height = '40px';
|
||||||
|
inputEl.style.resize = 'none';
|
||||||
|
inputEl.style.overflow = 'hidden';
|
||||||
|
}
|
||||||
|
|
||||||
|
const rawQuantity = await promptPromise;
|
||||||
|
|
||||||
|
if (inputEl) inputEl.setAttribute('style', previousInputStyle);
|
||||||
|
if (rawQuantity === null || rawQuantity === undefined) return null;
|
||||||
|
|
||||||
|
const quantity = Number.parseInt(String(rawQuantity).trim(), 10);
|
||||||
|
if (!Number.isInteger(quantity) || quantity < 1 || quantity > 99) {
|
||||||
|
window.chatDialog?.alert('购买数量必须是 1 到 99 之间的整数。', '数量不正确', '#cc4444');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return quantity;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通用数量输入弹窗。
|
* 通用数量输入弹窗。
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user