在“添加”表单中,有一个下拉框(status),默认为审批中(pending),我在“提交”按钮旁,创建了一个“操作”(JS action)按钮为“保存为草稿”,当点击该按钮后对应的“Write JavaScript”代码如下:即修改status状态为“草稿”(draft),通过界面验证后提交表单ctx.form.submit();结果无任何反应,麻烦大神帮看看什么问题呀,谢谢。
// “保存为草稿”核心逻辑:修改status为draft并提交表单
(async () => {
try {
// 1. 校验表单实例是否存在(避免空指针)
if (!ctx.form) {
ctx.message.error(‘表单实例未找到,无法执行操作!’);
return;
}
// 2. 获取当前表单所有字段值
const formValues = ctx.form.getFieldsValue() || {};
// 3. 触发表单提交操作(适配NocoBase表单提交逻辑)
// 先校验表单字段合法性,再提交
await ctx.form.validateFields(); // 校验字段(必填项/格式等)
// 4. 修改status字段值为draft(覆盖原有值)
const newValues = {
...formValues,
status: 'draft' // 强制设置为草稿状态
};
// 5. 将修改后的值回写到表单(更新下拉框显示)
ctx.form.setFieldsValue(newValues);
await ctx.form.submit(); // 执行提交
// 6. 操作成功提示
ctx.message.success('状态已改为草稿并提交表单!');
} catch (error) {
// 异常处理(如表单校验失败、提交失败)
ctx.message.error(操作失败:${error.message || '请完整填写必填项'});
console.error(‘JS Action 执行异常:’, error); // 控制台输出详情,便于调试
}
})();