From 47a2c40ffdfe3ba379e0ae52115ded03e77d2cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E9=A6=99=E7=90=AA?= <624506849@qq.com> Date: Mon, 7 Sep 2026 11:12:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(distribution):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=99=BE=E5=88=86=E6=AF=94=E4=B8=8E=E5=88=86=E6=95=B0=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 toPercent 和 toFraction 函数,分别用于将小数转换为百分比和将百分比转换为小数 - 更新 distributionGrade.vue 中的佣金率处理逻辑,确保数据在保存和展示时正确转换 - 修改 distributionGradeHistory.vue 中的百分比显示逻辑,确保格式一致性 --- .../views/distribution/distributionGrade.vue | 22 +++++++++++++++++-- .../distribution/distributionGradeHistory.vue | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/manager/src/views/distribution/distributionGrade.vue b/manager/src/views/distribution/distributionGrade.vue index b4e2837a..49801165 100644 --- a/manager/src/views/distribution/distributionGrade.vue +++ b/manager/src/views/distribution/distributionGrade.vue @@ -120,6 +120,22 @@ const GRADE_VALUE_OPTIONS = [1, 2, 3, 4, 5]; const BASE_GRADE_VALUE = 1; const BASE_GRADE_NAME = "普通分销员"; +const toPercent = (decimal) => { + const num = Number(decimal); + if (!Number.isFinite(num)) { + return 0; + } + return Number((num * 100).toFixed(2)); +}; + +const toFraction = (percent) => { + const num = Number(percent); + if (!Number.isFinite(num)) { + return 0; + } + return Number((num / 100).toFixed(4)); +}; + const buildDefaultRow = (sortOrder = null) => { const isBaseGrade = sortOrder === BASE_GRADE_VALUE; return { @@ -158,6 +174,8 @@ export default { enableSalesCondition: row.enableSalesCondition !== false, enableCommissionCondition: row.enableCommissionCondition !== false, enableInviteCondition: row.enableInviteCondition !== false, + goodsCommissionRate: toPercent(row.goodsCommissionRate), + inviteCommissionRate: toPercent(row.inviteCommissionRate), _key: row._key || row.id || `grade_${index}_${Date.now()}`, }; if (this.isBaseGrade(normalized)) { @@ -326,8 +344,8 @@ export default { enableSalesCondition: isBaseGrade ? false : row.enableSalesCondition, enableCommissionCondition: isBaseGrade ? false : row.enableCommissionCondition, enableInviteCondition: isBaseGrade ? false : row.enableInviteCondition, - goodsCommissionRate: row.goodsCommissionRate, - inviteCommissionRate: row.inviteCommissionRate, + goodsCommissionRate: toFraction(row.goodsCommissionRate), + inviteCommissionRate: toFraction(row.inviteCommissionRate), }; }, async saveAll() { diff --git a/manager/src/views/distribution/distributionGradeHistory.vue b/manager/src/views/distribution/distributionGradeHistory.vue index 95455f4a..28f8d3af 100644 --- a/manager/src/views/distribution/distributionGradeHistory.vue +++ b/manager/src/views/distribution/distributionGradeHistory.vue @@ -159,7 +159,7 @@ export default { if (!Number.isFinite(num)) { return "-"; } - return `${num.toFixed(2).replace(/\.?0+$/, "") || "0"}%`; + return `${(num * 100).toFixed(2).replace(/\.?0+$/, "") || "0"}%`; }, applyUpgradeTimeRange() { if (this.upgradeTimeRange && this.upgradeTimeRange.length === 2) {