用户点击"发送"按钮后,界面一直显示"发送中...",不会消失。
文件: delivery-message.service.ts (line 257)
// ❌ 问题代码
catch (error) {
console.error('❌ 发送消息到企业微信失败:', error);
// 发送失败不影响主流程,只记录错误 ← ⚠️ 这行注释导致错误被吞掉
}
后果:
sendingMessage状态不会更新{
errmsg: 'fail_no permission',
errMsg: 'sendChatMessage:no permission',
errCode: -1
}
这是因为:
WxworkSDKService未注册sendChatMessage权限文件: delivery-message.service.ts
// ✅ 修复后
catch (error) {
console.error('❌ 发送消息到企业微信失败:', error);
// 🔥 修复:必须抛出错误,让上层知道发送失败
throw error;
}
效果:
stage-delivery.component.ts的catch块会捕获sendingMessage状态会正确更新为false文件: stage-delivery.component.ts
try {
console.log('📤 [发送消息] 开始发送...');
this.sendingMessage = true;
this.cdr.markForCheck();
console.log('📝 [发送消息] 内容:', content);
console.log('📸 [发送消息] 图片数量:', this.messageModalConfig.imageUrls.length);
console.log('🏷️ [发送消息] 阶段:', this.messageModalConfig.stage);
// ... 发送逻辑 ...
console.log('✅ [发送消息] 发送成功');
window?.fmode?.toast?.success?.('✅ 消息发送成功!');
this.closeMessageModal();
} catch (error: any) {
console.error('❌ [发送消息] 发送失败:', error);
console.error('❌ [发送消息] 错误详情:', {
message: error?.message,
errMsg: error?.errMsg,
errmsg: error?.errmsg,
errCode: error?.errCode
});
// 🔥 根据错误类型提供更具体的提示
let errorMessage = '❌ 发送失败,请重试';
if (error?.errMsg?.includes('no permission') || error?.errmsg?.includes('no permission')) {
errorMessage = '❌ 企业微信权限不足\n请联系管理员配置sendChatMessage权限';
} else if (error?.message) {
errorMessage = `❌ 发送失败: ${error.message}`;
}
window?.fmode?.alert?.(errorMessage);
} finally {
console.log('🔄 [发送消息] 流程结束');
this.sendingMessage = false;
this.cdr.markForCheck();
}
改进:
cdr.markForCheck())用户点击"发送"
↓
sendMessage()开始
↓
sendingMessage = true
↓
调用deliveryMessageService
↓
sendToWxwork()发送
↓
权限错误(no permission)
↓
错误被内部catch吞掉
↓
方法正常返回
↓
上层以为成功
↓
❌ sendingMessage一直是true
↓
❌ UI永远显示"发送中..."
用户点击"发送"
↓
📤 [发送消息] 开始发送...
sendingMessage = true
↓
📝 [发送消息] 内容: ...
📸 [发送消息] 图片数量: 3
↓
调用deliveryMessageService
↓
sendToWxwork()发送
↓
权限错误(no permission)
↓
❌ [发送消息] 发送失败: ...
错误被抛出(throw error)
↓
上层catch捕获
↓
显示错误提示:"企业微信权限不足"
↓
finally块执行
↓
🔄 [发送消息] 流程结束
sendingMessage = false
↓
✅ UI停止显示"发送中..."
ng build yss-project --base-href=/dev/yss/
.\deploy.ps1
操作:
预期日志(如果有权限错误):
📤 [发送消息] 开始发送...
📝 [发送消息] 内容: 老师我这里硬装模型做好了...
📸 [发送消息] 图片数量: 3
🏷️ [发送消息] 阶段: white_model
📧 准备发送消息到企业微信...
CID: cDL6R1hgSi
❌ 消息发送失败: {errmsg: 'fail_no permission', ...}
❌ 发送消息到企业微信失败: ...
❌ [发送消息] 发送失败: ...
❌ [发送消息] 错误详情: {...}
🔄 [发送消息] 流程结束
预期UI:
操作:同上
预期日志(权限正常):
📤 [发送消息] 开始发送...
📝 [发送消息] 内容: 老师我这里硬装模型做好了...
📸 [发送消息] 图片数量: 3
🏷️ [发送消息] 阶段: white_model
📧 准备发送消息到企业微信...
CID: cDL6R1hgSi
文本: 老师我这里硬装模型做好了...
图片数量: 3
✅ 文本消息已发送
✅ 图文消息 1/3 已发送
✅ 图文消息 2/3 已发送
✅ 图文消息 3/3 已发送
✅ 所有消息已发送到企业微信
✅ [发送消息] 发送成功
🔄 [发送消息] 流程结束
预期UI:
| 文件 | 修改内容 | 行数 |
|---|---|---|
delivery-message.service.ts |
修改错误处理,正确抛出错误 | 257-258 |
stage-delivery.component.ts |
增强日志和错误提示 | 3284-3337 |
} catch (error) {
console.error('❌ 发送消息到企业微信失败:', error);
- // 发送失败不影响主流程,只记录错误
+ // 🔥 修复:必须抛出错误,让上层知道发送失败
+ throw error;
}
新增日志:
+ console.log('📤 [发送消息] 开始发送...');
+ console.log('📝 [发送消息] 内容:', content);
+ console.log('📸 [发送消息] 图片数量:', ...);
+ console.log('🏷️ [发送消息] 阶段:', ...);
+ console.log('✅ [发送消息] 发送成功');
+ console.log('🔄 [发送消息] 流程结束');
新增错误处理:
+ catch (error: any) {
+ console.error('❌ [发送消息] 发送失败:', error);
+ console.error('❌ [发送消息] 错误详情:', {...});
+
+ // 根据错误类型提供更具体的提示
+ let errorMessage = '❌ 发送失败,请重试';
+ if (error?.errMsg?.includes('no permission')) {
+ errorMessage = '❌ 企业微信权限不足\n...';
+ }
+ window?.fmode?.alert?.(errorMessage);
+ }
部署后请验证:
创建时间:2025-11-28
状态:✅ 修复完成,待部署测试
优先级:🔥 高(影响核心功能)