fix license check
This commit is contained in:
@@ -275,7 +275,7 @@ async function refreshLicenses() {
|
||||
elements.licenseList.innerHTML = result.licenses.map((license) => `
|
||||
<tr><td>${escapeHtml(license.companyName)} / ${escapeHtml(license.productionLineName)}</td>
|
||||
<td>${escapeHtml(license.expiry)}</td><td>${license.status === "active" ? "有效" : "已撤销"}</td>
|
||||
<td><button class="table-action" data-license-detail="${escapeHtml(license.licenseId)}">详情</button><button class="table-action" data-license-download="${escapeHtml(license.licenseId)}">下载</button>${license.status === "active" ? `<button class="table-action danger" data-license-revoke="${escapeHtml(license.licenseId)}">撤销</button>` : ""}</td></tr>
|
||||
<td><button class="table-action" data-license-detail="${escapeHtml(license.licenseId)}">详情</button><button class="table-action" data-license-download="${escapeHtml(license.licenseId)}">下载</button>${license.status === "active" ? `<button class="table-action danger" data-license-revoke="${escapeHtml(license.licenseId)}">撤销</button>` : `<button class="table-action danger" data-license-delete="${escapeHtml(license.licenseId)}">删除</button>`}</td></tr>
|
||||
`).join("");
|
||||
elements.licenseEmpty.hidden = result.licenses.length > 0;
|
||||
setStatus("许可证已刷新", "success");
|
||||
@@ -688,6 +688,56 @@ document.querySelector("#line-form").addEventListener("submit", async (event) =>
|
||||
await refreshOrganizations();
|
||||
});
|
||||
|
||||
document.querySelector("#delete-line").addEventListener("click", async () => {
|
||||
const company = selectedCompany();
|
||||
const line = selectedLine();
|
||||
if (!company || !line) return showError(new Error("请先选择公司和产线"));
|
||||
const confirmation = await requestModelName({
|
||||
title: "确认删除产线",
|
||||
message: `删除产线 ${line.name} 后将清理关联业务数据。请输入完整 deviceId 以确认。`,
|
||||
value: "",
|
||||
confirmLabel: "删除产线",
|
||||
danger: true,
|
||||
expectedValue: line.deviceId
|
||||
});
|
||||
if (confirmation === null) return;
|
||||
const result = await runBusy("正在删除产线", () => window.reinloop.deleteProductionLine({
|
||||
companyId: company.id,
|
||||
productionLineId: line.id,
|
||||
credentials: credentials()
|
||||
}));
|
||||
if (!result) return;
|
||||
elements.licenseDetail.hidden = true;
|
||||
elements.licenseDetail.textContent = "";
|
||||
await refreshOrganizations();
|
||||
await refreshLicenses();
|
||||
setStatus("产线已删除", "success");
|
||||
});
|
||||
|
||||
document.querySelector("#delete-company").addEventListener("click", async () => {
|
||||
const company = selectedCompany();
|
||||
if (!company) return showError(new Error("请先选择公司"));
|
||||
const confirmation = await requestModelName({
|
||||
title: "确认删除公司",
|
||||
message: `删除公司 ${company.name} 前必须先删除其产线与许可证。请输入公司编码以确认。`,
|
||||
value: "",
|
||||
confirmLabel: "删除公司",
|
||||
danger: true,
|
||||
expectedValue: company.code
|
||||
});
|
||||
if (confirmation === null) return;
|
||||
const result = await runBusy("正在删除公司", () => window.reinloop.deleteCompany({
|
||||
companyId: company.id,
|
||||
credentials: credentials()
|
||||
}));
|
||||
if (!result) return;
|
||||
elements.licenseDetail.hidden = true;
|
||||
elements.licenseDetail.textContent = "";
|
||||
await refreshOrganizations();
|
||||
await refreshLicenses();
|
||||
setStatus("公司已删除", "success");
|
||||
});
|
||||
|
||||
document.querySelector("#license-form").addEventListener("submit", async (event) => {
|
||||
event.preventDefault();
|
||||
const company = selectedCompany();
|
||||
@@ -712,6 +762,7 @@ elements.licenseList.addEventListener("click", async (event) => {
|
||||
const detailId = button.dataset.licenseDetail;
|
||||
const downloadId = button.dataset.licenseDownload;
|
||||
const revokeId = button.dataset.licenseRevoke;
|
||||
const deleteId = button.dataset.licenseDelete;
|
||||
if (detailId) {
|
||||
const result = await runBusy("正在读取许可证详情", () => window.reinloop.getLicense({ licenseId: detailId, credentials: credentials() }));
|
||||
if (result) {
|
||||
@@ -732,6 +783,33 @@ elements.licenseList.addEventListener("click", async (event) => {
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (deleteId) {
|
||||
const confirmation = await requestModelName({
|
||||
title: "确认删除许可证",
|
||||
message: "已撤销许可证才能删除。请输入许可证 ID 以确认永久删除。",
|
||||
value: "",
|
||||
confirmLabel: "永久删除",
|
||||
danger: true,
|
||||
expectedValue: deleteId
|
||||
});
|
||||
if (confirmation === null) return;
|
||||
button.disabled = true;
|
||||
try {
|
||||
const result = await runBusy("正在删除许可证", () => window.reinloop.deleteLicense({
|
||||
licenseId: deleteId,
|
||||
credentials: credentials()
|
||||
}));
|
||||
if (result) {
|
||||
await refreshLicenses();
|
||||
elements.licenseDetail.hidden = true;
|
||||
elements.licenseDetail.textContent = "";
|
||||
setStatus("许可证已删除", "success");
|
||||
}
|
||||
} finally {
|
||||
button.disabled = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (revokeId) {
|
||||
const reason = await requestModelName({
|
||||
title: "确认撤销许可证",
|
||||
|
||||
Reference in New Issue
Block a user