微搭低代码MBA 培训管理系统实战 38——薪酬与提成引擎
目录
前情回顾与本节目标
在上一节中,我们完成了回款管理功能,实现了从应收监控到回款登记再到离职交接的完整闭环。
本节我们将继续完善财务管理模块,实现薪酬与提成引擎功能。在MBA培训业务中,销售人员的薪资由基本工资、绩效工资和销售提成三部分组成。提成基于回款金额按比例自动计算,不同职级对应不同的提成比例。当发生退费时,还需要自动扣减已发放的提成。
本节核心目标:
- 数据模型设计:创建提成记录表、薪资结构表、薪资计算记录表
- 提成管理:基于回款金额自动计算提成,支持退款扣减

第一步:数据模型准备
1.1 提成记录表(MBA_Commissions)
用于记录每一笔销售提成:
| 字段名称 | 字段标识 | 字段类型 | 说明 |
|---|---|---|---|
| 记录ID | _id | 文本 | 主键,系统自动生成 |
| 关联订单 | rel_order_id | 关联关系 | 关联 MBA_Orders 表 |
| 关联客户 | rel_customer_id | 关联关系 | 关联 MBA_Customer 表 |
| 关联回款记录 | rel_receivable_id | 关联关系 | 关联 MBA_Receivables 表 |
| 关联销售人员 | rel_salesperson_id | 关联关系 | 关联 MBA_Users 表 |
| 课程名称 | course_name | 文本 | 课程名称 |
| 回款金额 | amount | 数字 | 回款金额 |
| 提成比例 | commission_rate | 数字 | 提成比例(%) |
| 提成金额 | commission_amount | 数字 | 提成金额 |
| 回款日期 | payment_date | 日期 | 回款日期 |
| 发放状态 | status | 枚举 | 1-待发放、2-已发放、3-已退款 |
| 退款金额 | refund_amount | 数字 | 退款金额 |
| 退款日期 | refund_date | 日期 | 退款日期 |
| 创建时间 | created_at | 日期时间 | 自动生成 |
| 更新时间 | updated_at | 日期时间 | 自动更新 |
1.2 薪资结构表(MBA_SalaryStructure)
用于配置不同职级的薪资和提成比例:
| 字段名称 | 字段标识 | 字段类型 | 说明 |
|---|---|---|---|
| 记录ID | _id | 文本 | 主键,系统自动生成 |
| 职级名称 | level_name | 文本 | 如:初级顾问、中级顾问、高级顾问、资深顾问 |
| 基本工资 | base_salary | 数字 | 基本工资金额 |
| 绩效工资 | performance_salary | 数字 | 绩效工资金额 |
| 总裁班提成比例 | president_rate | 数字 | 总裁班提成比例(%) |
| 高管班提成比例 | executive_rate | 数字 | 高管班提成比例(%) |
| VIP班提成比例 | vip_rate | 数字 | VIP班提成比例(%) |
| 精品班提成比例 | premium_rate | 数字 | 精品班提成比例(%) |
| 体验班提成比例 | trial_rate | 数字 | 体验班提成比例(%) |
| 创建时间 | created_at | 日期时间 | 自动生成 |
| 更新时间 | updated_at | 日期时间 | 自动更新 |
1.3 薪资计算记录表(MBA_SalaryRecords)
用于记录每月的薪资计算结果:
| 字段名称 | 字段标识 | 字段类型 | 说明 |
|---|---|---|---|
| 记录ID | _id | 文本 | 主键,系统自动生成 |
| 关联销售人员 | rel_salesperson_id | 关联关系 | 关联 MBA_Users 表 |
| 计算月份 | calc_month | 文本 | 如:2025-02 |
| 关联职级 | rel_level_id | 关联关系 | 关联 MBA_SalaryStructure 表 |
| 基本工资 | base_salary | 数字 | 基本工资金额 |
| 绩效工资 | performance_salary | 数字 | 绩效工资金额 |
| 销售提成 | commission_total | 数字 | 当月提成总额 |
| 个人所得税 | tax | 数字 | 个人所得税 |
| 实发工资 | net_salary | 数字 | 实发工资金额 |
| 创建时间 | created_at | 日期时间 | 自动生成 |
| 更新时间 | updated_at | 日期时间 | 自动更新 |
第二步:薪酬提成页面搭建
2.1 创建薪酬提成页面
点击创建页面图标,输入"薪酬提成",选择财务布局
切换到布局管理,选择财务布局,添加平级菜单,添加"薪酬提成"菜单
2.2 页面整体布局
切换回页面设计,在财务布局的内容插槽下添加布局组件,修改标题为"薪酬与提成引擎"
2.3 统计卡片区域
在页面顶部添加网格组件
选中行组件,将列的数量改为4
在容器内添加4个卡片组件,分别展示核心指标:
| 卡片 | 指标 | 数据来源 |
|---|---|---|
| 本月提成总额 | ¥21,500 | 汇总当月提成记录中待发放+已发放金额 |
| 已发放提成 | ¥15,200 | 汇总提成记录中已发放状态的金额 |
| 待发放提成 | ¥6,300 | 汇总提成记录中待发放状态的金额 |
| 销售人员 | 4人 | 统计有提成记录的销售人员数量 |

创建自定义变量用来存储统计的结果
创建自定义方法 loadCommissionDashboard:
export default async function loadCommissionDashboard({ event, data }) {
try {
const now = new Date();
const currentMonth = now.getMonth();
const currentYear = now.getFullYear();
// 1. 查询所有提成记录
const commissionRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_Commissions',
methodName: 'wedaGetRecordsV2',
params: {
filter: { where: {} },
select: { $master: true }
}
});
const commissions = commissionRes.records || [];
// 2. 筛选本月记录
const monthCommissions = commissions.filter(c => {
const d = new Date(c.payment_date);
return d.getMonth() === currentMonth && d.getFullYear() === currentYear;
});
// 3. 计算各项指标
const totalCommission = monthCommissions.reduce((sum, c) => sum + (c.commission_amount || 0), 0);
const paidCommission = monthCommissions
.filter(c => c.status === '2')
.reduce((sum, c) => sum + (c.commission_amount || 0), 0);
const pendingCommission = monthCommissions
.filter(c => c.status === '1')
.reduce((sum, c) => sum + (c.commission_amount || 0), 0);
// 4. 统计销售人员数量(去重)
const salespersonIds = [...new Set(monthCommissions.map(c => c.rel_salesperson_id))];
const salespersonCount = salespersonIds.length;
// 5. 更新页面状态
$w.page.dataset.state.commissionDashboard = {
totalCommission,
paidCommission,
pendingCommission,
salespersonCount
};
} catch (error) {
console.error('加载提成仪表盘数据失败:', error);
}
}
在页面加载时调用 loadCommissionDashboard 方法。
给统计卡片绑定具体的文本内容
第三步:提成管理
3.1 标签页配置
在统计卡片下方添加标签页组件,配置三个标签页:
| 标签页 | 名称 | 内容 |
|---|---|---|
| commissions | 提成管理 | 提成列表和筛选 |
| salary-structure | 薪资结构 | 薪资结构设置表格 |
| performance | 业绩分析 | 月度趋势图和业绩排名 |

3.2 提成管理标签页
3.2.1 提成列表表格
添加数据表格组件,数据模型选择提成记录表(MBA_Commissions),勾选全部场景
配置表格的操作列,添加退款扣减按钮
3.2.2 筛选区域
在提成管理标签页内容区域添加筛选区域,包含以下筛选条件:
- 搜索订单或客户(文本搜索)
- 销售人员(关联选择)
- 发放状态(下拉选择:待发放/已发放/已退款)

3.2.3 退款扣减功能
在操作列配置退款扣减按钮,点击打开退款扣减弹窗。
在页面组件下添加弹窗组件,修改标题为"退款扣减"
在弹窗内容区域展示订单信息和扣减计算,添加表单容器,场景选择更新,数据模型选择提成记录表:
修改表单布局为三列布局
绑定数据标识,绑定为弹窗的入参
给提成扣减按钮配置点击事件,打开弹窗,传入所在行的数据标识
创建自定义方法 submitRefund:
export default async function submitRefund({ event, data }) {
const commissionId = data.target;
const refundAmount = $w.input_refund.value;
if (!refundAmount || refundAmount <= 0) {
return $w.utils.showToast({ title: '请输入有效的退款金额', icon: 'error' });
}
try {
$w.utils.showLoading({ title: '处理中...' });
// 1. 查询提成记录
const commissionRes = await $w.cloud.callDataSource({
dataSourceName: 'MBA_Commissions',
methodName: 'wedaGetItemV2',
params: {
filter: { where: { _id: { $eq: commissionId } } },
select: { $master: true }
}
});
const commission = commissionRes;
const refundCommissionAmount = Math.round((refundAmount * commission.commission_rate) / 100);
// 2. 更新提成记录
await $w.cloud.callDataSource({
dataSourceName: 'MBA_Commissions',
methodName: 'wedaUpdateV2',
params: {
filter: { where: { _id: { $eq: commissionId } } },
data: {
amount: commission.amount - refundAmount,
commission_amount: commission.commission_amount - refundCommissionAmount,
status: '3',
refund_amount: refundAmount,
refund_date: $w.Now(),
}
}
});
$w.utils.hideLoading();
$w.utils.showToast({
title: '提成扣减成功',
icon: 'success'
});
$w.modal1.close({});
$w.table1.refresh();
} catch (error) {
console.error('退款扣减失败:', error);
$w.utils.hideLoading();
$w.utils.showToast({ title: '操作失败,请重试', icon: 'error' });
}
}
将表单容器的提交方法改为调用自定义方法,传入弹窗的入参
最终效果
财务人员进入薪酬提成页面,首先看到4个核心指标卡片:本月提成总额、已发放提成、待发放提成和销售人员数量。
通过标签页切换,可以在提成管理、薪资结构和业绩分析三个模块之间切换。
在提成管理模块,可以按销售人员、发放状态筛选提成记录。当发生退费时,点击"退款扣减"按钮,输入退款金额后系统自动计算需要扣减的提成金额并更新记录。

总结
本节完成了薪酬与提成引擎功能的实现:
- 数据模型设计:创建提成记录表(MBA_Commissions)、薪资结构表(MBA_SalaryStructure)、薪资计算记录表(MBA_SalaryRecords)
- 提成管理:基于回款金额自动计算提成,支持退款扣减自动调整
通过本节的学习,我们完善了财务管理的薪酬计算流程,实现了从提成自动计算到薪资结构配置再到自动算薪的完整闭环。下一节我们将继续完善财务管理模块的其他功能。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)