按照用户最新需求,为交付执行阶段添加了消息发送功能,集成在右侧上传区域,不添加左侧消息面板。组员上传文件后,可选择预设话术或自定义消息,配合图片灵活发送,消息记录保存在Project.data.deliveryMessages中。
文件: src/app/pages/services/delivery-message.service.ts
核心功能:
数据存储:
Project.data.deliveryMessages = [
{
id: string;
project: string; // 项目ID
stage: string; // 阶段 (white_model/soft_decor/rendering/post_process)
messageType: MessageType; // 消息类型 (text/image/text_with_image)
content: string; // 文本内容
images?: string[]; // 图片URL数组
sentBy: string; // 发送人ID
sentByName?: string; // 发送人姓名
sentAt: Date; // 发送时间
}
]
预设话术:
{
white_model: [
'老师我这里硬装模型做好了,看下是否有问题,如果没有,我去做渲染',
'老师,白模阶段完成,请查看确认',
'硬装结构已完成,请审阅'
],
soft_decor: [
'软装好了,准备渲染,有问题可以留言',
'老师,软装设计已完成,请查看',
'家具配置完成,准备进入渲染阶段'
],
rendering: [
'老师,渲染图已完成,请查看效果',
'效果图已出,请审阅',
'渲染完成,请查看是否需要调整'
],
post_process: [
'老师,后期处理完成,请验收',
'最终成品已完成,请查看',
'所有修图完成,请确认'
]
}
修改文件:
src/modules/project/pages/project-detail/stages/stage-delivery.component.tssrc/modules/project/pages/project-detail/stages/stage-delivery-new.component.htmlsrc/modules/project/pages/project-detail/stages/stage-delivery-new.component.scss集成内容:
在每张图片缩略图右下角添加发送按钮:
<button class="send-image-btn"
(click)="sendSingleImage(space.id, type.id, file.url)"
title="发送图片">
<svg>发送图标</svg>
</button>
特性:
在每个阶段的"添加文件"按钮旁边添加"发送消息"按钮:
<button class="send-message-btn"
(click)="openMessageModal(space.id, type.id)">
<svg>发送图标</svg>
发送消息
</button>
特性:
位置: 全屏居中弹窗
内容:
阶段信息
话术选择
自定义消息
图片预览
操作按钮
StageDeliveryComponent新增方法:
// 打开消息弹窗
openMessageModal(spaceId: string, stage: string, imageUrls?: string[]): void
// 关闭消息弹窗
closeMessageModal(): void
// 选择话术模板
selectTemplate(template: string): void
// 发送消息
async sendMessage(): Promise<void>
// 快捷发送单张图片
async sendSingleImage(spaceId: string, stage: string, imageUrl: string): Promise<void>
// 上传完成后提示发送消息(可选)
promptSendMessageAfterUpload(spaceId: string, stage: string): void
上传图片 → 悬停缩略图 → 点击发送按钮 → 即刻发送
上传多张图片 → 点击"发送消息"按钮 → 选择话术或输入自定义消息 → 预览图片 → 点击发送
点击"发送消息"按钮 → 选择话术或输入自定义消息 → 点击发送
{
deliveryMessages: [
{
id: "msg_1699999999999_abc123def",
project: "项目ID",
stage: "white_model",
messageType: "text_with_image",
content: "老师我这里硬装模型做好了,看下是否有问题...",
images: [
"https://example.com/image1.jpg",
"https://example.com/image2.jpg"
],
sentBy: "用户ID",
sentByName: "张三",
sentAt: "2025-11-18T12:00:00.000Z"
}
]
}
showMessageModal: boolean // 弹窗显示状态
messageModalConfig: {...} // 弹窗配置
selectedTemplate: string // 选中的话术
customMessage: string // 自定义消息
sendingMessage: boolean // 发送中状态
messageTemplates = MESSAGE_TEMPLATES // 话术模板
Project.data.deliveryMessages数组// 在DeliveryMessageService中
private async notifyWechat(message: DeliveryMessage): Promise<void> {
// TODO: 调用企业微信API发送通知
}
src/app/pages/services/
└── delivery-message.service.ts // 消息服务
src/modules/project/pages/project-detail/stages/
├── stage-delivery.component.ts // 组件逻辑
├── stage-delivery-new.component.html // UI模板
└── stage-delivery-new.component.scss // 样式
DELIVERY_MESSAGE_IMPLEMENTATION.md // 实施总结(本文档)
DELIVERY_REVISION_IMPLEMENTATION.md // 改图工单实施总结
DELIVERY_ENHANCEMENT_OVERVIEW.md // 增强方案总览
完成时间:2025-11-18 实施人:Cascade AI Assistant