feat: 增加真实采购任务安全模式 (#98)

This commit is contained in:
chengma
2026-08-10 15:11:38 +08:00
parent ba6710a2a2
commit 3aaa40cfe0
23 changed files with 642 additions and 66 deletions
+21
View File
@@ -274,6 +274,27 @@ tr.empty small { color: #aaa; }
border-radius: 6px;
}
.purchase-confirm-row label { display: grid; gap: 6px; }
.execution-mode-fieldset {
display: grid;
gap: 10px;
margin: 0;
padding: 12px;
border: 1px solid #d0d5dd;
border-radius: 6px;
}
.choice-row { display: flex; align-items: flex-start; gap: 8px; }
.choice-row span { display: grid; gap: 2px; }
.choice-row small { color: #667085; font-weight: 400; }
.live-confirm-panel {
display: grid;
gap: 10px;
padding: 12px;
border: 2px solid #b42318;
border-radius: 6px;
background: #fff5f3;
}
.live-confirm-panel[hidden] { display: none; }
.live-confirm-panel p { margin: 0; }
@media (max-width: 760px) {
.purchase-confirm-row { grid-template-columns: 1fr; }
}
+28
View File
@@ -140,6 +140,33 @@
var openButton = document.querySelector("[data-purchase-open]");
var form = document.querySelector("[data-purchase-form]");
if (!openButton || !form) return;
var modeInputs = form.querySelectorAll("[data-execution-mode]");
var livePanel = form.querySelector("[data-live-confirm-panel]");
var liveAcknowledged = form.querySelector("[data-live-acknowledged]");
var liveConfirmation = form.querySelector("[data-live-confirmation]");
var clientSelect = form.querySelector("select[name=client_id]");
function updateExecutionMode() {
var selected = form.querySelector("[data-execution-mode]:checked");
var isLive = selected && selected.value === "live";
if (livePanel) livePanel.hidden = !isLive;
if (liveAcknowledged) liveAcknowledged.required = isLive;
if (liveConfirmation) liveConfirmation.required = isLive;
if (clientSelect) {
clientSelect.querySelectorAll("option[data-purchase-mode]").forEach(function (option) {
option.disabled = isLive && option.getAttribute("data-purchase-mode") !== "live";
});
if (clientSelect.selectedOptions.length && clientSelect.selectedOptions[0].disabled) {
clientSelect.value = "";
}
}
form.setAttribute("data-confirm-submit", isLive
? "确认创建真实的未付款订单?系统不会自动支付。"
: "确认创建采购演练任务?任务创建后将等待所选客户端领取。");
}
modeInputs.forEach(function (input) {
input.addEventListener("change", updateExecutionMode);
});
updateExecutionMode();
openButton.addEventListener("click", function () {
var selected = {};
document.querySelectorAll("tbody input[name=ids]:checked").forEach(function (box) {
@@ -156,6 +183,7 @@
});
var empty = form.querySelector("[data-purchase-empty]");
if (empty) empty.hidden = shown > 0;
updateExecutionMode();
});
}