点击‘重新安排已预约服务’按钮后Spinner持续旋转,无法完成服务重约
问题分析与解决方案
核心问题定位
加载Spinner持续旋转,本质是前端未正确处理后端响应(包括成功/失败场景),或后端逻辑执行中断导致无响应返回,最终Spinner未被触发关闭。
前端代码(Creatfurniturecontroller.js)排查与修复
Spinner控制逻辑补全
检查按钮点击事件中,是否仅在Apex调用成功分支关闭Spinner,遗漏了失败/异常分支。错误示例:// 错误写法:仅成功时关闭Spinner showSpinner(); rescheduleService({caseId: currentCaseId}).then(result => { hideSpinner(); // 后续成功逻辑 });修正为所有分支都关闭Spinner:
showSpinner(); rescheduleService({caseId: currentCaseId}) .then(result => { hideSpinner(); // 处理重约成功:比如弹出提示、刷新页面数据 }) .catch(error => { hideSpinner(); // 处理错误:比如打印错误日志、弹出Toast提示用户 console.error('重约失败:', error.body.message); });参数传递校验
在调用Apex方法前,打印传递的参数(如Case ID),确认参数有效且未丢失:console.log('当前传入的Case ID:', currentCaseId);
后端代码(CreateFurnitureServicesCtrl)排查与修复
Case记录查询完整性
确认获取Case的SOQL包含重约所需的全部字段(如关联的服务预约ID、状态字段),避免因字段缺失导致逻辑中断:// 错误写法:未查询服务预约关联字段 Case targetCase = [SELECT Id, Status FROM Case WHERE Id = :caseId]; // 修正写法:查询重约必需字段 Case targetCase = [SELECT Id, Status, Service_Appointment__c FROM Case WHERE Id = :caseId];异常捕获与响应返回
为重约逻辑添加try-catch块,捕获异常并抛出AuraHandledException,确保前端能收到错误响应:@AuraEnabled public static String rescheduleCaseService(String caseId) { try { // 重约核心逻辑:更新服务预约时间、同步Case状态等 ServiceAppointment sa = [SELECT Id, StartDateTime FROM ServiceAppointment WHERE Id = :[SELECT Service_Appointment__c FROM Case WHERE Id = :caseId].Service_Appointment__c]; sa.StartDateTime = System.now().addDays(2); // 示例重约操作 update sa; return '服务重约成功'; } catch (Exception e) { // 将异常信息返回给前端 throw new AuraHandledException('重约失败:' + e.getMessage()); } }注解校验
确认重约相关的Apex方法已添加@AuraEnabled注解,否则前端无法调用该方法。
快速排查辅助手段
- 浏览器控制台:按F12打开开发者工具,切换到
Console标签,查看是否有JS语法错误或Apex调用的报错信息。 - Salesforce Apex日志:在Setup中开启Apex日志,过滤
CreateFurnitureServicesCtrl类,查看后端逻辑执行时是否有异常抛出或执行中断。
内容的提问来源于stack exchange,提问作者parker_1947
相关产品推荐
相关产品推荐

