fix: 采购价格上限按数量计算总价 (#181)
This commit is contained in:
@@ -229,6 +229,32 @@
|
||||
var form = document.querySelector("[data-purchase-form]");
|
||||
if (!openButtons.length || !form) return;
|
||||
var submitButton = form.querySelector("[data-purchase-submit]");
|
||||
|
||||
function updateTotalPrice(row) {
|
||||
var input = row.querySelector("[data-unit-price-input]");
|
||||
var output = row.querySelector("[data-total-price-output]");
|
||||
var quantity = Number(row.getAttribute("data-purchase-quantity"));
|
||||
if (!input || !output || !Number.isInteger(quantity) || quantity <= 0) return;
|
||||
var raw = input.value.trim();
|
||||
var match = /^(\d+)(?:\.(\d{1,2}))?$/.exec(raw);
|
||||
if (!match) {
|
||||
output.textContent = "—";
|
||||
return;
|
||||
}
|
||||
var fraction = (match[2] || "").padEnd(2, "0");
|
||||
var unitCent = Number(match[1]) * 100 + Number(fraction || "0");
|
||||
var totalCent = unitCent * quantity;
|
||||
if (!Number.isSafeInteger(totalCent) || totalCent <= 0) {
|
||||
output.textContent = "—";
|
||||
return;
|
||||
}
|
||||
output.textContent = "¥" + Math.floor(totalCent / 100) + "." + String(totalCent % 100).padStart(2, "0");
|
||||
}
|
||||
|
||||
form.querySelectorAll("[data-purchase-row]").forEach(function (row) {
|
||||
var input = row.querySelector("[data-unit-price-input]");
|
||||
if (input) input.addEventListener("input", function () { updateTotalPrice(row); });
|
||||
});
|
||||
openButtons.forEach(function (openButton) {
|
||||
openButton.addEventListener("click", function () {
|
||||
var selected = {};
|
||||
@@ -247,6 +273,7 @@
|
||||
row.querySelectorAll("input").forEach(function (input) {
|
||||
input.disabled = !enabled;
|
||||
});
|
||||
if (enabled) updateTotalPrice(row);
|
||||
if (enabled) shown += 1;
|
||||
});
|
||||
var empty = form.querySelector("[data-purchase-empty]");
|
||||
|
||||
Reference in New Issue
Block a user