fix: 拆分 formatWan 同名函数,修复管理总览金额标签泄漏
HEL-177 公司端 HTML 版 formatWan 覆盖了 HEL-155 管理端纯数字版, 导致 textContent 赋值处显示原始 span 标签。将公司端重命名为 formatWanHtml 并替换调用,管理端三处恢复纯文本万元显示。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
fe6b4e59ec
commit
b49892e86d
+13
-13
@@ -3395,7 +3395,7 @@ function yuanToWan(value) {
|
|||||||
return n / 10000;
|
return n / 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatWan(value, { signed = false } = {}) {
|
function formatWanHtml(value, { signed = false } = {}) {
|
||||||
const wan = yuanToWan(value);
|
const wan = yuanToWan(value);
|
||||||
if (wan === null) return "—";
|
if (wan === null) return "—";
|
||||||
const abs = Math.abs(wan).toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
const abs = Math.abs(wan).toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||||
@@ -3472,13 +3472,13 @@ function renderWorkspaceTransfersCard(summary) {
|
|||||||
const net = $("#wsTfNet");
|
const net = $("#wsTfNet");
|
||||||
const pendingEl = $("#wsTfPending");
|
const pendingEl = $("#wsTfPending");
|
||||||
const netLabel = $("#wsTfNetLabel");
|
const netLabel = $("#wsTfNetLabel");
|
||||||
if (inflow) inflow.innerHTML = formatWan(confirmed.inflow_total, { signed: true });
|
if (inflow) inflow.innerHTML = formatWanHtml(confirmed.inflow_total, { signed: true });
|
||||||
if (outflow) {
|
if (outflow) {
|
||||||
outflow.innerHTML = formatWan(
|
outflow.innerHTML = formatWanHtml(
|
||||||
confirmed.outflow_total != null ? -Math.abs(Number(confirmed.outflow_total)) : null,
|
confirmed.outflow_total != null ? -Math.abs(Number(confirmed.outflow_total)) : null,
|
||||||
{ signed: true },
|
{ signed: true },
|
||||||
);
|
);
|
||||||
// formatWan with negative value already adds −; ensure unit
|
// formatWanHtml with negative value already adds −; ensure unit
|
||||||
if (confirmed.outflow_total != null) {
|
if (confirmed.outflow_total != null) {
|
||||||
const wan = yuanToWan(confirmed.outflow_total);
|
const wan = yuanToWan(confirmed.outflow_total);
|
||||||
const abs = Math.abs(wan).toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
const abs = Math.abs(wan).toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||||
@@ -3488,12 +3488,12 @@ function renderWorkspaceTransfersCard(summary) {
|
|||||||
if (netLabel) netLabel.textContent = `${netLabelForWindow(win)}${netMeta.label !== "持平" ? ` · ${netMeta.label}` : ""}`;
|
if (netLabel) netLabel.textContent = `${netLabelForWindow(win)}${netMeta.label !== "持平" ? ` · ${netMeta.label}` : ""}`;
|
||||||
if (net) {
|
if (net) {
|
||||||
net.className = `ms-value ${netMeta.signedClass}`.trim();
|
net.className = `ms-value ${netMeta.signedClass}`.trim();
|
||||||
net.innerHTML = formatWan(confirmed.net_change, { signed: true });
|
net.innerHTML = formatWanHtml(confirmed.net_change, { signed: true });
|
||||||
}
|
}
|
||||||
if (pendingEl) {
|
if (pendingEl) {
|
||||||
const pCount = Number(pending.count) || 0;
|
const pCount = Number(pending.count) || 0;
|
||||||
pendingEl.innerHTML = pCount
|
pendingEl.innerHTML = pCount
|
||||||
? `${formatWan(pending.amount_total)}<span class="unit"> · ${pCount} 笔</span>`
|
? `${formatWanHtml(pending.amount_total)}<span class="unit"> · ${pCount} 笔</span>`
|
||||||
: `0.00<span class="unit">万元 · 0 笔</span>`;
|
: `0.00<span class="unit">万元 · 0 笔</span>`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3564,7 +3564,7 @@ function renderTransfersOverview(summary) {
|
|||||||
const netFoot = $("#tfStatNetFoot");
|
const netFoot = $("#tfStatNetFoot");
|
||||||
const netMeta = netDirectionMeta(confirmed.net_change, confirmed.net_direction);
|
const netMeta = netDirectionMeta(confirmed.net_change, confirmed.net_direction);
|
||||||
if (companies) companies.innerHTML = `${cps.length}<span class="unit">家</span>`;
|
if (companies) companies.innerHTML = `${cps.length}<span class="unit">家</span>`;
|
||||||
if (inflow) inflow.innerHTML = formatWan(confirmed.inflow_total, { signed: true });
|
if (inflow) inflow.innerHTML = formatWanHtml(confirmed.inflow_total, { signed: true });
|
||||||
if (outflow) {
|
if (outflow) {
|
||||||
const wan = yuanToWan(confirmed.outflow_total);
|
const wan = yuanToWan(confirmed.outflow_total);
|
||||||
const abs = wan === null ? "—" : Math.abs(wan).toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
const abs = wan === null ? "—" : Math.abs(wan).toLocaleString("zh-CN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
||||||
@@ -3575,7 +3575,7 @@ function renderTransfersOverview(summary) {
|
|||||||
const tag = netMeta.label !== "持平"
|
const tag = netMeta.label !== "持平"
|
||||||
? ` <span class="xfer-dir-tag ${netMeta.className}">${netMeta.label}</span>`
|
? ` <span class="xfer-dir-tag ${netMeta.className}">${netMeta.label}</span>`
|
||||||
: "";
|
: "";
|
||||||
net.innerHTML = `${formatWan(confirmed.net_change, { signed: true })}${tag}`;
|
net.innerHTML = `${formatWanHtml(confirmed.net_change, { signed: true })}${tag}`;
|
||||||
}
|
}
|
||||||
if (netFoot) {
|
if (netFoot) {
|
||||||
netFoot.textContent = win.has_opening
|
netFoot.textContent = win.has_opening
|
||||||
@@ -3589,7 +3589,7 @@ function renderTransfersOverview(summary) {
|
|||||||
const tfPendingCount = $("#tfPendingCount");
|
const tfPendingCount = $("#tfPendingCount");
|
||||||
const tfPendingAmount = $("#tfPendingAmount");
|
const tfPendingAmount = $("#tfPendingAmount");
|
||||||
if (tfConfirmedCount) tfConfirmedCount.textContent = `${confirmedCount} 笔`;
|
if (tfConfirmedCount) tfConfirmedCount.textContent = `${confirmedCount} 笔`;
|
||||||
if (tfConfirmedNet) tfConfirmedNet.innerHTML = formatWan(confirmed.net_change, { signed: true });
|
if (tfConfirmedNet) tfConfirmedNet.innerHTML = formatWanHtml(confirmed.net_change, { signed: true });
|
||||||
const openingCard = $("#tfStatOpeningCard");
|
const openingCard = $("#tfStatOpeningCard");
|
||||||
const endingCard = $("#tfStatEndingCard");
|
const endingCard = $("#tfStatEndingCard");
|
||||||
const openingEl = $("#tfStatOpening");
|
const openingEl = $("#tfStatOpening");
|
||||||
@@ -3597,15 +3597,15 @@ function renderTransfersOverview(summary) {
|
|||||||
if (win.has_opening) {
|
if (win.has_opening) {
|
||||||
if (openingCard) openingCard.hidden = false;
|
if (openingCard) openingCard.hidden = false;
|
||||||
if (endingCard) endingCard.hidden = false;
|
if (endingCard) endingCard.hidden = false;
|
||||||
if (openingEl) openingEl.innerHTML = formatWan(win.opening, { signed: true });
|
if (openingEl) openingEl.innerHTML = formatWanHtml(win.opening, { signed: true });
|
||||||
if (endingEl) endingEl.innerHTML = formatWan(win.ending, { signed: true });
|
if (endingEl) endingEl.innerHTML = formatWanHtml(win.ending, { signed: true });
|
||||||
} else {
|
} else {
|
||||||
if (openingCard) openingCard.hidden = true;
|
if (openingCard) openingCard.hidden = true;
|
||||||
if (endingCard) endingCard.hidden = true;
|
if (endingCard) endingCard.hidden = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tfPendingCount) tfPendingCount.textContent = `${pCount} 笔`;
|
if (tfPendingCount) tfPendingCount.textContent = `${pCount} 笔`;
|
||||||
if (tfPendingAmount) tfPendingAmount.innerHTML = formatWan(pending.amount_total || 0);
|
if (tfPendingAmount) tfPendingAmount.innerHTML = formatWanHtml(pending.amount_total || 0);
|
||||||
|
|
||||||
const tbody = $("#transfersCpBody");
|
const tbody = $("#transfersCpBody");
|
||||||
const tfoot = $("#transfersCpFoot");
|
const tfoot = $("#transfersCpFoot");
|
||||||
@@ -3706,7 +3706,7 @@ async function openTransfersDetail(companyId, companyName, { keepFilters = false
|
|||||||
$("#tfDetailCount").innerHTML = `—`;
|
$("#tfDetailCount").innerHTML = `—`;
|
||||||
$("#tfDetailCountFoot").textContent = pendingN ? `其中待确认 ${pendingN} 笔(汇总)` : "按筛选加载明细";
|
$("#tfDetailCountFoot").textContent = pendingN ? `其中待确认 ${pendingN} 笔(汇总)` : "按筛选加载明细";
|
||||||
if (cp) {
|
if (cp) {
|
||||||
$("#tfDetailIn").innerHTML = formatWan(cp.confirmed_inflow, { signed: true });
|
$("#tfDetailIn").innerHTML = formatWanHtml(cp.confirmed_inflow, { signed: true });
|
||||||
const wan = yuanToWan(cp.confirmed_outflow);
|
const wan = yuanToWan(cp.confirmed_outflow);
|
||||||
$("#tfDetailOut").innerHTML = wan === null
|
$("#tfDetailOut").innerHTML = wan === null
|
||||||
? "—"
|
? "—"
|
||||||
|
|||||||
Reference in New Issue
Block a user