
[
{
"cname": "radios",
"cid": "leave_type",
"label": "请假类型",
"required": true,
"items": [
{"cname": "check2", "cid": "personal", "label": "事假"},
{"cname": "check2", "cid": "sick", "label": "病假"},
{"cname": "check2", "cid": "annual", "label": "年假"},
{"cname": "check2", "cid": "marry", "label": "婚假"}
]
},
{
"cname": "date",
"cid": "start_date",
"label": "请假开始日期",
"required": true
},
{
"cname": "date",
"cid": "end_date",
"label": "请假结束日期",
"required": true
},
{
"cname": "input",
"cid": "leave_day",
"label": "请假天数",
"type": "number",
"required": true
},
{
"cname": "toggle",
"cid": "urgent_leave",
"label": "紧急请假",
"returnType": "int",
"events": {
"change": "if(value === 1) Wb.tip('已标记紧急请假,审批消息将优先推送')"
}
},
{
"cname": "checks",
"cid": "copy_user",
"label": "抄送人员",
"returnArray": true,
"items": [
{"cname": "check6", "cid": "leader", "label": "直属领导"},
{"cname": "check6", "cid": "hr", "label": "行政人事"},
{"cname": "check6", "cid": "director", "label": "部门总监"}
]
},
{
"cname": "slider",
"cid": "leave_level",
"label": "事项重要程度",
"minValue": 1,
"maxValue": 10,
"value": 4
},
{
"cname": "textarea",
"cid": "leave_reason",
"label": "请假事由",
"required": true
},
{
"cname": "button",
"cid": "btn_submit",
"label": "提交请假单",
"theme": "primary",
"events": {
"click": "submitLeaveForm()"
}
},
{
"cname": "button",
"cid": "btn_reset",
"label": "重置表单",
"theme": "default",
"events": {
"click": "resetLeaveForm()"
}
}
]submitLeaveForm()// 请假表单提交函数
function submitLeaveForm() {
// 1.表单整体校验(必填项校验)
if (!$form.valid()) {
Wb.tip("请完善带*的必填请假信息", "warning");
return;
}
// 2.获取全部表单数据(直接通过cid取值)
const formData = {
leaveType: $form.leave_type.value,
startDate: $form.start_date.value,
endDate: $form.end_date.value,
leaveDay: $form.leave_day.value,
urgentLeave: $form.urgent_leave.value, // 0=普通 1=紧急
copyUser: $form.copy_user.value, // 数组格式:["leader","hr"]
leaveLevel: $form.leave_level.value,
leaveReason: $form.leave_reason.value,
id: $form.formId || "" // 编辑时携带主键ID,新增为空
};
console.log("提交表单数据:", formData);
// 3.Ajax提交后端接口
Wb.ajax({
url: "/api/leave/save", // 后端保存接口
method: "POST",
data: formData,
success: function (res) {
if (res.code === 200) {
Wb.tip("请假单提交成功!");
resetLeaveForm(); // 提交成功重置表单
// 可追加:关闭弹窗、刷新列表表格
// Wb.closeDialog();
// grid.reload();
} else {
Wb.tip(res.msg || "提交失败", "error");
}
},
error: function () {
Wb.tip("网络异常,提交失败", "error");
}
});
}
// 表单重置函数
function resetLeaveForm() {
$form.reset();
$form.formId = null; // 清空编辑主键标识
}{
"leaveType": "sick",
"startDate": "2026-08-05",
"endDate": "2026-08-07",
"leaveDay": 3,
"urgentLeave": 1,
"copyUser": ["leader", "hr"],
"leaveLevel": 7,
"leaveReason": "急性肠胃炎就医休养",
"id": ""
}场景:请假列表点击「编辑」按钮,根据请假 ID 请求后端详情接口,一键回填所有组件数据,包含单选、多选复选框、开关、滑块、日期全部适配。
/**
* 编辑回显加载表单数据
* @param leaveId 请假单主键ID
*/
function loadLeaveEditData(leaveId) {
Wb.ajax({
url: "/api/leave/detail",
method: "GET",
data: { id: leaveId },
success: function (res) {
if (res.code !== 200 || !res.data) {
Wb.tip("未查询到请假单据", "warning");
return;
}
const data = res.data;
// 标记当前为编辑模式,提交时携带ID更新
$form.formId = data.id;
// 逐个组件赋值回显(WebBuilder统一 setValue 方法)
$form.leave_type.setValue(data.leaveType);
$form.start_date.setValue(data.startDate);
$form.end_date.setValue(data.endDate);
$form.leave_day.setValue(data.leaveDay);
$form.urgent_leave.setValue(data.urgentLeave);
$form.copy_user.setValue(data.copyUser); // 直接传入数组即可选中多选框
$form.leave_level.setValue(data.leaveLevel);
$form.leave_reason.setValue(data.leaveReason);
Wb.tip("单据数据加载完成,可直接修改提交", "success");
}
});
}{
"code": 200,
"data": {
"id": 1001,
"leaveType": "annual",
"startDate": "2026-08-10",
"endDate": "2026-08-15",
"leaveDay": 6,
"urgentLeave": 0,
"copyUser": ["leader", "director"],
"leaveLevel": 5,
"leaveReason": "家庭出游年假申请"
}
}在表格 Grid 的操作列绑定编辑事件,点击直接加载回显弹窗表单:
// 表格编辑按钮事件
function gridEdit(row) {
// 打开表单弹窗
Wb.openDialog({
title: "编辑请假申请",
url: "leaveForm.html",
width: 700,
height: 600,
onOpen: function (dialogWin) {
// 弹窗打开后,执行数据回填
dialogWin.loadLeaveEditData(row.id);
}
});
}组件类型 | 赋值回显规则 | 数据格式 |
|---|---|---|
radios 单选框 | setValue 传入 cid 值 | 字符串 personal/sick |
checks 多选框 | setValue 传入字符串数组 | ["leader","hr"] |
toggle 开关 | setValue 传入 0/1 | 数字 0/1 |
slider 滑块 | setValue 传入数字 | 1~10 数字 |
date 日期 | setValue 传入日期字符串 | 2026-08-05 |
input/textarea | 直接文本赋值 | 字符串 |
$form.formId = null,后端执行 INSERT 新增;$form.formId = 单据ID,后端执行 UPDATE 根据 ID 更新;leave_day;readonly:true禁止编辑。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。