feat(distribution): 添加百分比与分数转换功能

- 新增 toPercent 和 toFraction 函数,分别用于将小数转换为百分比和将百分比转换为小数
- 更新 distributionGrade.vue 中的佣金率处理逻辑,确保数据在保存和展示时正确转换
- 修改 distributionGradeHistory.vue 中的百分比显示逻辑,确保格式一致性
This commit is contained in:
田香琪
2026-09-07 11:12:55 +08:00
parent fddb82e680
commit 47a2c40ffd
2 changed files with 21 additions and 3 deletions

View File

@@ -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() {

View File

@@ -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) {