项目详情

项目ID: {{ projectId }} @if (project) { {{ project.status }} }
@for (tab of tabs; track tab.id) { }
1
订单创建
2
确认需求
3
交付执行
4
售后
@if (showDropdown) {
@for (p of projects; track p.id) {
{{ p.name }} {{ p.status }}
}
}
@for (process of deliveryProcesses; track process.id) { @for (space of process.spaces; track space.id) { } }
@if (showImagePreview) {
} @if (showDesignerCalendar) {
} @if (reminderMessage) {
{{ reminderMessage }}
}
@if (isActiveTab('progress')) {

客户信息

@if (isSyncingCustomerInfo) { 同步中... } @else if (lastSyncTime) { 已同步: {{ formatTime(lastSyncTime) }} }
@if (project) {
@if (orderCreationData?.customerInfo) {
{{ orderCreationData.customerInfo.name }}
{{ orderCreationData.customerInfo.phone }}
@if (orderCreationData.customerInfo.wechat) {
{{ orderCreationData.customerInfo.wechat }}
}
{{ orderCreationData.customerInfo.customerType }}
@if (orderCreationData.customerInfo.source) {
{{ orderCreationData.customerInfo.source }}
} @if (orderCreationData.customerInfo.remark) {
{{ orderCreationData.customerInfo.remark }}
} } @else {
{{ project.assigneeName }}
}
{{ formatDate(project.createdAt) }}
{{ formatDate(project.deadline) }}

客户标签

@for (tag of project.customerTags; track $index) { {{ tag.source }} · {{ tag.needType }} · {{ tag.preference }} · {{ tag.colorAtmosphere }} } @if (project.customerTags.length === 0) { 暂无标签 }
} @else {
正在加载客户信息...
}

方案确认

{{ getRequiredStagesProgress() }}% 完成
@if (isAnalyzing) {

正在解析素材...

{{ analysisProgress.toFixed(0) }}%

AI正在分析您的需求,生成专属设计方案

} @if (proposalAnalysis && !isAnalyzing) {

{{ proposalAnalysis.name }}

{{ proposalAnalysis.version }} 可行性: {{ proposalAnalysis.feasibility.overall }}%
设计风格 {{ getStyleSummary() }}
色彩方案 {{ getColorSummary() }}
空间效率 {{ getSpaceEfficiency() }}%

材质规格与分类

{{ (proposalAnalysis && proposalAnalysis.materials ? proposalAnalysis.materials.length : 0) }} 类材质
@for (material of (proposalAnalysis && proposalAnalysis.materials ? proposalAnalysis.materials : []); track material.category) {
{{ material.category }}
{{ material.usage.percentage }}%
类型 {{ material.specifications.type }}
等级 {{ material.specifications.grade }}
应用区域 {{ material.usage.area }}
{{ material.properties.texture }} {{ material.properties.color }}
}

设计风格特征

{{ (proposalAnalysis && proposalAnalysis.designStyle ? proposalAnalysis.designStyle.primaryStyle : null) || '未定义' }}
@for (element of (proposalAnalysis && proposalAnalysis.designStyle && proposalAnalysis.designStyle.styleElements ? proposalAnalysis.designStyle.styleElements : []); track element.element) {
{{ element.element }} {{ element.influence }}%
{{ element.description }}
}
@for (char of (proposalAnalysis && proposalAnalysis.designStyle && proposalAnalysis.designStyle.characteristics ? proposalAnalysis.designStyle.characteristics : []); track char.feature) {
{{ char.feature }} {{ char.value }}
}

色彩搭配方案及占比分析

{{ (proposalAnalysis && proposalAnalysis.colorScheme && proposalAnalysis.colorScheme.harmony ? proposalAnalysis.colorScheme.harmony.type : null) || '未定义' }}
@for (color of (proposalAnalysis && proposalAnalysis.colorScheme && proposalAnalysis.colorScheme.palette ? proposalAnalysis.colorScheme.palette : []); track color.hex) {
{{ color.color }}
{{ color.percentage }}%
{{ color.role }}
{{ color.hex }} RGB({{ color.rgb }})
}
氛围营造 {{ (proposalAnalysis && proposalAnalysis.colorScheme && proposalAnalysis.colorScheme.psychology ? proposalAnalysis.colorScheme.psychology.mood : null) || '未定义' }}
空间感受 {{ (proposalAnalysis && proposalAnalysis.colorScheme && proposalAnalysis.colorScheme.psychology ? proposalAnalysis.colorScheme.psychology.atmosphere : null) || '未定义' }}

空间尺寸数据及功能分区

总面积 {{ (proposalAnalysis && proposalAnalysis.spaceLayout && proposalAnalysis.spaceLayout.dimensions ? proposalAnalysis.spaceLayout.dimensions.area : 0) || 0 }}㎡
长度 {{ (proposalAnalysis && proposalAnalysis.spaceLayout && proposalAnalysis.spaceLayout.dimensions ? proposalAnalysis.spaceLayout.dimensions.length : 0) || 0 }}m
宽度 {{ (proposalAnalysis && proposalAnalysis.spaceLayout && proposalAnalysis.spaceLayout.dimensions ? proposalAnalysis.spaceLayout.dimensions.width : 0) || 0 }}m
层高 {{ (proposalAnalysis && proposalAnalysis.spaceLayout && proposalAnalysis.spaceLayout.dimensions ? proposalAnalysis.spaceLayout.dimensions.height : 0) || 0 }}m
体积 {{ (proposalAnalysis && proposalAnalysis.spaceLayout && proposalAnalysis.spaceLayout.dimensions ? proposalAnalysis.spaceLayout.dimensions.volume : 0) || 0 }}m³
@for (zone of (proposalAnalysis && proposalAnalysis.spaceLayout && proposalAnalysis.spaceLayout.functionalZones ? proposalAnalysis.spaceLayout.functionalZones : []); track zone.zone) {
{{ zone.zone }}
{{ zone.area }}㎡ {{ zone.percentage }}%
功能需求
@for (req of zone.requirements; track req) { {{ req }} }
家具配置
@for (furniture of zone.furniture; track furniture; let isLast = $last) { {{ furniture }}@if (!isLast) {、} }
}

预算与时间线

总预算 ¥{{ ((proposalAnalysis && proposalAnalysis.budget ? proposalAnalysis.budget.total : 0) || 0).toLocaleString() }}
@for (item of (proposalAnalysis && proposalAnalysis.budget && proposalAnalysis.budget.breakdown ? proposalAnalysis.budget.breakdown : []); track item.category) {
{{ item.category }}
¥{{ item.amount.toLocaleString() }}
{{ item.percentage }}%
}
@for (phase of (proposalAnalysis && proposalAnalysis.timeline ? proposalAnalysis.timeline : []); track phase.phase) {
{{ phase.phase }}
{{ phase.duration }}天
}
} @if (areRequiredStagesCompleted() && !proposalAnalysis && !isAnalyzing) {
@if (requirementKeyInfo.colorAtmosphere.description) {
{{ requirementKeyInfo.colorAtmosphere.description }} @if (requirementKeyInfo.colorAtmosphere.mainColor) {
}
} @if (requirementKeyInfo.colorAtmosphere.materials && requirementKeyInfo.colorAtmosphere.materials.length > 0) {
@for (material of requirementKeyInfo.colorAtmosphere.materials; track material; let isLast = $last) { {{ material }}@if (!isLast) {, } }
} @if (requirementKeyInfo.spaceStructure.aspectRatio > 0) {
{{ requirementKeyInfo.spaceStructure.aspectRatio.toFixed(1) }}
} @if (requirementKeyInfo.spaceStructure.ceilingHeight > 0) {
{{ requirementKeyInfo.spaceStructure.ceilingHeight }}m
} @if (requirementKeyInfo.materialWeights.woodRatio > 0) {
{{ requirementKeyInfo.materialWeights.woodRatio }}%
} @if (requirementKeyInfo.materialWeights.fabricRatio > 0) {
{{ requirementKeyInfo.materialWeights.fabricRatio }}%
} @if (requirementKeyInfo.materialWeights.metalRatio > 0) {
{{ requirementKeyInfo.materialWeights.metalRatio }}%
} @if (requirementKeyInfo.presetAtmosphere.name) {
{{ requirementKeyInfo.presetAtmosphere.name }}
}
¥{{ orderAmount || 0 }}
} @else if (!areRequiredStagesCompleted()) {
等待需求信息完善

需求沟通阶段完成后,方案确认功能将自动开启

当前进度: {{ getRequiredStagesProgress() }}%
}
@if (expandedSection === 'aftercare') {

💰 尾款结算

技术完成验收后自动发起尾款结算流程,支持多种支付方式自动化处理

🤖

自动触发流程

技术验收完成后自动发起尾款结算申请

🔓

自动解密发送

小程序支付自动解密并发送大图给客户

📱

凭证智能识别

上传微信/支付宝截图自动提取金额和支付方式

🔔

自动通知

支付完成后自动发送"尾款已到账,大图已解锁"通知

@if (canEditSection('aftercare') && isTechnicalView()) {
}

🖼️ 全景图合成

集成内部全景图合成服务器,技术上传图片自动生成漫游式全景链接

🖥️

KR Panel集成

集成专业全景图合成工具,确保合成质量

📸

智能空间标注

技术上传图片并标注空间名称(如"客厅-角度1")

🔗

自动生成链接

自动生成漫游式全景链接并发送给客户

@if (panoramicSyntheses && panoramicSyntheses.length > 0) {
@for (item of panoramicSyntheses; track item.id) { }
} @else {
暂无最近合成记录
}
@if (canEditSection('aftercare')) {
}

⭐ 客户评价

邀请客户进行多维度评价并生成评价链接

@if (canEditSection('aftercare')) {
}

📋 投诉处理

支持人工创建和关键词自动抓取投诉,提升处理效率

👥

人工创建

组长或客服人工创建投诉记录

🔍

关键词抓取

自动监测企业微信群关键词(不满意、投诉、退款)

🏷️

智能标注

自动标注投诉环节和核心问题

📊

实时更新

处理进度实时更新至系统

@if (canEditSection('aftercare')) {
}

📊 项目复盘

基于SOP执行数据和经验总结,自动生成复盘报告

@if (canEditSection('aftercare')) { @if (projectReview) { } }
@if (activeReviewTab === 'sop') {
💬

需求沟通次数

{{ sopMetrics?.communicationCount || 0 }}
🔄

改图次数

{{ sopMetrics?.revisionCount || 0 }}
⏱️

交付周期

{{ sopMetrics?.deliveryCycle || 0 }}

客户满意度

{{ sopMetrics?.customerSatisfaction || 0 }}/5

各阶段执行详情

@for (stage of sopStagesData; track stage.name) {
@if (!$last) {
}

{{ stage.name }}

{{ stage.statusText }}
计划时长: {{ stage.plannedDuration }}天
实际时长: {{ stage.actualDuration }}天
执行评分: {{ stage.score }}/100
@if (stage.issues && stage.issues.length > 0) {
⚠️ 问题: {{ stage.issues.join('、') }}
}
}

数据分析图表

阶段耗时对比

@for (stage of sopStagesData; track stage.name) {
{{ stage.name }}
{{ stage.plannedDuration }}
{{ stage.actualDuration }}
}
计划时长 实际时长

执行评分雷达图

各阶段平均得分:{{ getAverageScore() }}/100

@for (stage of sopStagesData.slice(0, 5); track stage.name) {
{{ stage.name }}: {{ stage.score }}
}
} @if (activeReviewTab === 'experience') {

基于企业微信沟通记录智能提取关键信息,全面复盘项目过程

📝

客户需求

{{ experienceData?.customerNeeds?.length || 0 }}项
@if (experienceData?.customerNeeds && experienceData.customerNeeds.length > 0) {
    @for (need of experienceData.customerNeeds; track $index) {
  • {{ need.text }}

    {{ need.timestamp }} 来源:{{ need.source }}
  • }
} @else {
暂无客户需求记录
}
🤔

客户顾虑

{{ experienceData?.customerConcerns?.length || 0 }}项
@if (experienceData?.customerConcerns && experienceData.customerConcerns.length > 0) {
    @for (concern of experienceData.customerConcerns; track $index) {
  • ⚠️

    {{ concern.text }}

    {{ concern.timestamp }} @if (concern.resolved) { ✓ 已解决 } @else { 待处理 }
  • }
} @else {
暂无客户顾虑记录
}
📢

投诉点

{{ experienceData?.complaintPoints?.length || 0 }}项
@if (experienceData?.complaintPoints && experienceData.complaintPoints.length > 0) {
    @for (complaint of experienceData.complaintPoints; track $index) {
  • {{ complaint.text }}

    {{ complaint.timestamp }} {{ complaint.severityText }}
    @if (complaint.resolution) {
    解决方案: {{ complaint.resolution }}
    }
  • }
} @else {
✓ 暂无投诉记录
}

项目亮点

{{ experienceData?.projectHighlights?.length || 0 }}项
@if (experienceData?.projectHighlights && experienceData.projectHighlights.length > 0) {
    @for (highlight of experienceData.projectHighlights; track $index) {
  • {{ highlight.text }}

    {{ highlight.category }} @if (highlight.praised) { 👍 客户点赞 }
  • }
} @else {
暂无项目亮点记录
}

关键沟通记录

@if (experienceData?.communications && experienceData.communications.length > 0) { @for (comm of experienceData.communications; track $index) {
{{ comm.timestamp }}
{{ comm.participant }} {{ comm.typeText }}

{{ comm.message }}

@if (comm.attachments && comm.attachments.length > 0) {
📎 {{ comm.attachments.length }}个附件
}
} } @else {
暂无沟通记录
}
} @if (activeReviewTab === 'suggestions') {

智能分析与建议

基于项目执行数据和历史经验,为您提供具体可操作的优化建议

@if (optimizationSuggestions && optimizationSuggestions.length > 0) { @for (suggestion of optimizationSuggestions; track $index) {
{{ suggestion.priorityText }} {{ suggestion.category }}
预期提升:{{ suggestion.expectedImprovement }}

🔍 问题分析

{{ suggestion.problem }}

@for (data of suggestion.dataPoints; track $index) {
{{ data.label }}: {{ data.value }}
}

💡 优化建议

{{ suggestion.solution }}

📋 行动计划

    @for (action of suggestion.actionPlan; track $index) {
  • {{ $index + 1 }}. {{ action }}
  • }
@if (suggestion.references && suggestion.references.length > 0) {
📚 参考案例: @for (ref of suggestion.references; track $index) { {{ ref }} }
}
} } @else {
📊

暂无优化建议

项目数据收集完成后将自动生成智能优化建议

}
@if (optimizationSuggestions && optimizationSuggestions.length > 0) {

建议统计

🔴
{{ getSuggestionCountByPriority('high') }}
高优先级
🟡
{{ getSuggestionCountByPriority('medium') }}
中优先级
🟢
{{ getSuggestionCountByPriority('low') }}
低优先级
📈
{{ getAverageImprovementPercent() }}%
平均预期提升
}
}
}
@for (stage of getVisibleStages(); track stage) {
@if (stage !== '订单创建') {

{{ stage === '需求沟通' ? '需求映射' : (stage === '方案确认' ? '色彩分析报告' : stage) }}

}
@if (stage === '订单创建') {

订单分配

@if (orderCreationData?.customerInfo) {

客户信息(已同步)

{{ orderCreationData.customerInfo.name || '未填写' }}
{{ orderCreationData.customerInfo.phone || '未填写' }}
{{ orderCreationData.customerInfo.wechat || '未填写' }}
{{ orderCreationData.customerInfo.customerType || '未填写' }}
}

核心信息 (带 * 为必填项)

@if (orderCreationForm.get('orderAmount')?.invalid && orderCreationForm.get('orderAmount')?.touched) {
订单金额为必填项
}
报价明细需拆分至具体空间,便于后续分工
@if (orderCreationForm.get('smallImageDeliveryTime')?.invalid && orderCreationForm.get('smallImageDeliveryTime')?.touched) {
小图交付时间为必填项
}
确保时间安排合理,便于设计师规划工作
@if (orderCreationForm.get('decorationType')?.invalid && orderCreationForm.get('decorationType')?.touched) {
装修类型为必填项
}
选择合适的装修类型有助于匹配专业设计师
@if (orderCreationForm.get('requirementReason')?.invalid && orderCreationForm.get('requirementReason')?.touched) {
需求原因为必填项
}
详细的需求背景有助于设计师理解客户期望
@if (orderCreationForm.get('isMultiDesigner')?.invalid && orderCreationForm.get('isMultiDesigner')?.touched) {
请确认是否需要多设计师协作
}
复杂项目建议启用多设计师协作模式

报价明细

设计师分配

其他信息 (选填)

@if (isOptionalFormExpanded) {
}
} @else if (stage === '需求沟通') { } @else if (stage === '方案确认') {

🎯 需求映射

@if (mappingUploadedFiles.length > 0) {
📸 已同步 {{ mappingUploadedFiles.length }} 张参考图片
}
1 图片上传 @if (mappingUploadedFiles.length > 0) { ✅ 完成 } @else { ⭕ 待上传 }
2 图片分析 @if (mappingIsAnalyzing) { ⏳ 进行中 } @else if (mappingAnalysisResult) { ✅ 完成 } @else { ⭕ 待开始 }
3 需求映射 @if (mappingIsGeneratingMapping) { ⏳ 生成中 } @else if (mappingRequirementMapping) { ✅ 完成 } @else { ⭕ 待生成 }
@if (mappingAnalysisResult) {

图片分析摘要

主色{{ mappingAnalysisResult.primaryColor?.hex || '未知' }}
材质{{ getMaterialName(mappingAnalysisResult.materialType) }}
灯光{{ getLightingMoodName(mappingAnalysisResult.lightingMood) }}
对比{{ mappingAnalysisResult.contrast || '未知' }}
} @if (mappingRequirementMapping) {

需求映射结果

@if (mappingRequirementMapping.color) {
色彩参数
和谐度{{ getColorHarmonyName(mappingRequirementMapping.color?.harmony) }}
色温{{ getTemperatureName(mappingRequirementMapping.color?.temperature) }}
} @if (mappingRequirementMapping.space) {
空间参数
布局{{ getLayoutTypeName(mappingRequirementMapping.space?.layoutType) }}
流线{{ getFlowTypeName(mappingRequirementMapping.space?.flowType) }}
}
} @if (mappingIsAnalyzing) {
正在解析图片...
} @if (mappingIsGeneratingMapping) {
正在生成需求映射...
} @if (!mappingAnalysisResult && !mappingIsAnalyzing && mappingUploadedFiles.length === 0) {
📊
在需求沟通中上传图片后,这里将实时显示需求映射结果
}
} @else if (stage === '建模') {

空间列表

@if (canEditSection('delivery')) { }
@if (showAddSpaceInput['modeling']) {
}
@for (space of getActiveProcessSpaces('modeling'); track space.id) {
{{ space.name }} {{ getSpaceProgress('modeling', space.id) }}%
@if (canEditSection('delivery')) { }
@if (space.isExpanded) {
@if (canEditSection('delivery')) {
@if (getSpaceImages('modeling', space.id).length === 0) {
点击上传或拖拽文件到此处
支持 JPG、PNG 格式,单个文件最大 10MB
} @else { @if (canEditSection('delivery') && getSpaceImages('modeling', space.id).length > 0) {
}
@for (img of getSpaceImages('modeling', space.id); track img.id) {
{{ img.name }}
@if (canEditSection('delivery')) { }
} @if (canEditSection('delivery')) {
+
添加更多
}
}
} @else {
@if (getSpaceImages('modeling', space.id).length > 0) {
@for (img of getSpaceImages('modeling', space.id); track img.id) {
{{ img.name }}
}
} @else {
暂无上传的图片
}
}
@if (canEditSection('delivery')) { } @else {
{{ getSpaceNotes('modeling', space.id) || '暂无备注' }}
}
}
}
} @else if (stage === '软装') {

空间列表

@if (canEditSection('delivery')) { }
@if (showAddSpaceInput['softDecor']) {
}
@for (space of getActiveProcessSpaces('softDecor'); track space.id) {
{{ space.name }} {{ getSpaceProgress('softDecor', space.id) }}%
@if (canEditSection('delivery')) { }
@if (space.isExpanded) {
@if (canEditSection('delivery')) {
@if (getSpaceImages('softDecor', space.id).length === 0) {
点击上传或拖拽文件到此处
建议 ≤1MB 的 JPG/PNG 小图
} @else { @if (canEditSection('delivery') && getSpaceImages('softDecor', space.id).length > 0) {
}
@for (img of getSpaceImages('softDecor', space.id); track img.id) {
{{ img.name }}
@if (canEditSection('delivery')) { }
} @if (canEditSection('delivery')) {
+
添加更多
}
}
} @else {
@if (getSpaceImages('softDecor', space.id).length > 0) {
@for (img of getSpaceImages('softDecor', space.id); track img.id) {
{{ img.name }}
}
} @else {
暂无上传的图片
}
}
@if (canEditSection('delivery')) { } @else {
{{ getSpaceNotes('softDecor', space.id) || '暂无备注' }}
}
}
}
} @else if (stage === '渲染') {

空间列表

@if (canEditSection('delivery')) { }
@if (showAddSpaceInput['rendering']) {
}
@for (space of getActiveProcessSpaces('rendering'); track space.id) {
{{ space.name }} {{ getSpaceProgress('rendering', space.id) }}%
@if (canEditSection('delivery')) { }
@if (space.isExpanded) {
@if (canEditSection('delivery')) {
@if (getSpaceImages('rendering', space.id).length === 0) {
点击上传或拖拽文件到此处
需满足4K标准(最长边 ≥ 4000px)
} @else { @if (canEditSection('delivery') && getSpaceImages('rendering', space.id).length > 0) {
}
@for (img of getSpaceImages('rendering', space.id); track img.id) {
{{ img.name }}
@if (canEditSection('delivery')) { }
} @if (canEditSection('delivery')) {
+
添加更多
}
}
} @else {
@if (getSpaceImages('rendering', space.id).length > 0) {
@for (img of getSpaceImages('rendering', space.id); track img.id) {
{{ img.name }}
}
} @else {
暂无上传的图片
}
}
@if (canEditSection('delivery')) { } @else {
{{ getSpaceNotes('rendering', space.id) || '暂无备注' }}
}
}
}
} @else if (stage === '后期') {

空间列表

@if (canEditSection('delivery')) { }
@if (showAddSpaceInput['postProduction']) {
}
@for (space of getActiveProcessSpaces('postProcess'); track space.id) {
{{ space.name }} {{ getSpaceProgress('postProduction', space.id) }}%
@if (canEditSection('delivery')) { }
@if (space.isExpanded) {
@if (canEditSection('delivery')) {
@if (getSpaceImages('postProduction', space.id).length === 0) {
点击上传或拖拽文件到此处
支持 JPG、PNG 格式,后期处理图片
} @else { @if (canEditSection('delivery') && getSpaceImages('postProduction', space.id).length > 0) {
}
@for (img of getSpaceImages('postProduction', space.id); track img.id) {
{{ img.name }}
@if (canEditSection('delivery')) { }
} @if (canEditSection('delivery')) {
+
添加更多
}
}
} @else {
@if (getSpaceImages('postProduction', space.id).length > 0) {
@for (img of getSpaceImages('postProduction', space.id); track img.id) {
{{ img.name }}
}
} @else {
暂无上传的图片
}
}
@if (canEditSection('delivery')) { } @else {
{{ getSpaceNotes('postProduction', space.id) || '暂无备注' }}
}
}
}
} @else if (stage === '尾款结算') { }
}
@if (isActiveTab('members')) {

项目成员

共 {{ projectMembers.length }} 名成员

@for (member of projectMembers; track member.id) {

{{ member.name }}

{{ member.role }}

技能匹配度
{{ member.skillMatch }}%
项目进度
{{ member.progress }}%
贡献度
{{ member.contribution }}%
}
@if (projectMembers.length === 0) {

暂无项目成员信息

}
} @if (isActiveTab('files')) {

项目文件

共 {{ projectFiles.length }} 个文件

@for (file of projectFiles; track file.id) {
{{ file.type.toUpperCase() }}

{{ file.name }}

{{ file.size }} {{ file.date }}
}
@if (projectFiles.length === 0) {

暂无项目文件

}
}
} @if (true) { }