根据需求对项目管理页面进行简化和功能优化:
位置: src/modules/project/components/group-chat-summary/
核心功能:
src/modules/project/components/group-chat-summary/
├── group-chat-summary.component.ts     # 组件逻辑 (400行)
├── group-chat-summary.component.html   # 模板 (190行)
└── group-chat-summary.component.scss   # 样式 (480行)
┌────────────────────────────────────┐
│ 💬 群聊信息                    🔴 2 ⌄│
│ 156条消息 · 23条客户消息              │
└────────────────────────────────────┘
┌────────────────────────────────────┐
│ 💬 群聊信息                    🔴 2 ⌃│
│ 156条消息 · 23条客户消息              │
├────────────────────────────────────┤
│ ℹ️ 群介绍文案                        │
│ [✓ 群介绍已发送]                    │
├────────────────────────────────────┤
│ [全部 156] [客户消息 23] [未回复 2]  │
├────────────────────────────────────┤
│ 📩 张女士 (客户)          10分钟前   │
│ "我想看看效果图"                     │
│ ⚠️ 10分钟未回复,请及时回复          │
├────────────────────────────────────┤
│ 📩 李先生 (客户)          35分钟前   │
│ "预算大概多少?"                     │
│ 🚨 超过35分钟未回复                  │
├────────────────────────────────────┤
│ [打开群聊] [刷新消息]                │
└────────────────────────────────────┘
@Input() groupChat: FmodeObject | null;  // 群聊对象
@Input() contact: FmodeObject | null;     // 客户对象
@Input() cid: string;                     // 公司ID
interface ChatMessage {
  id: string;           // 消息ID
  sender: string;       // 发送者ID
  senderName: string;   // 发送者姓名
  content: string;      // 消息内容
  time: Date;           // 发送时间
  isCustomer: boolean;  // 是否为客户消息
  needsReply: boolean;  // 是否需要回复
  replyTime?: Date;     // 回复时间
}
{
  data: {
    // 聊天记录
    chatHistory: [{
      msgid: string,        // 消息ID
      from: string,         // 发送者
      fromName: string,     // 发送者姓名
      msgtype: string,      // 消息类型 (text/image/file/voice/video)
      text: {
        content: string     // 文本内容
      },
      msgtime: number,      // 时间戳(秒)
      replyTime?: number    // 回复时间戳(可选)
    }],
    
    // 群介绍
    introSent: boolean,     // 是否已发送群介绍
    introSentAt: Date       // 发送时间
  }
}
// 发送群介绍
await wecorp.appchat.send({
  chatid: string,           // 群聊ID
  msgtype: 'text',          // 消息类型
  text: {
    content: string         // 群介绍文案
  }
});
// 打开群聊(可选)
await wecorp.openChat?.(chatId);
HTML:
<!-- 群聊信息汇总(新增) -->
@if (groupChat) {
  <app-group-chat-summary
    [groupChat]="groupChat"
    [contact]="contact"
    [cid]="cid">
  </app-group-chat-summary>
}
TypeScript:
// 1. 导入组件
import { GroupChatSummaryComponent } from '../../components/group-chat-summary/group-chat-summary.component';
// 2. 添加到 imports
@Component({
  imports: [
    // ... 其他组件
    GroupChatSummaryComponent
  ]
})
默认文案位于组件的 loadGroupIntro() 方法中,可根据需求修改:
this.groupIntro = `
欢迎加入映三色设计服务群!👋
我是您的专属设计顾问,很高兴为您服务。
📋 服务流程:
1️⃣ 需求沟通 - 了解您的设计需求
2️⃣ 方案设计 - 提供专业设计方案
3️⃣ 方案优化 - 根据您的反馈调整
4️⃣ 交付执行 - 完成设计并交付
⏰ 服务时间:工作日 9:00-18:00
📞 紧急联系:请直接拨打客服电话
有任何问题随时在群里@我,我会及时回复您!💙
`.trim();
在组件中可配置不同等级的提醒时间:
// 10分钟未回复 - 黄色警告
if (diff > 10 * 60 * 1000) {
  // 显示警告
}
// 30分钟未回复 - 红色警告
if (diff > 30 * 60 * 1000) {
  // 显示紧急提醒
}
/**
 * 发送未回复通知
 */
async sendUnreadNotification() {
  console.log(`⚠️ 有 ${this.unreadCount} 条消息超过10分钟未回复`);
  
  // TODO: 实现企微应用消息推送
  // 需要后端配合实现推送到技术人员手机
}
// 后端API实现
POST /api/wxwork/send-app-message
{
  "touser": "技术人员ID",
  "msgtype": "text",
  "text": {
    "content": "【紧急】有2条客户消息超过10分钟未回复,请及时处理!"
  }
}
// 在技术人员群里推送
POST /api/wxwork/send-bot-message
{
  "chatid": "技术支持群ID",
  "msgtype": "markdown",
  "markdown": {
    "content": "### ⚠️ 未回复提醒\n\n**项目**: XXX项目\n**客户**: 张女士\n**消息**: \"我想看看效果图\"\n**时长**: 15分钟\n\n[立即处理](链接)"
  }
}
组件会实时统计以下数据:
| 指标 | 说明 | 显示位置 | 
|---|---|---|
| totalMessages | 群聊总消息数 | 头部 | 
| customerMessageCount | 客户消息数 | 头部 | 
| unreadCount | 未回复消息数 | 徽章 | 
GroupChat.data.chatHistory[图片]、[文件] 等占位符wm 或 wo 开头isCustomerMessage() 方法自动识别通过引入群聊信息汇总组件,项目管理页面实现了:
原有功能完全保留,数据对接逻辑不变!
实现日期: 2025-10-30
文档版本: v1.0
开发者: AI Assistant