/designer/dashboard/wxwork/:cid/designer/dashboardlocalStorage 获取 cid(公司ID)。WxworkAuth({ cid, appId: 'crm' }) 并调用 authenticateAndLoadData()。user 与 profile,并验证角色:profile.roleName !== '组员',则弹出提示「您不是设计师(组员),无权访问此页面」并跳转首页。loadDashboardData():loadRealTasks():加载当前设计师的任务列表(来自 DesignerTaskService.getMyTasks(profile.id))。loadShiftTasks():加载代班任务。calculateWorkloadPercentage():计算个人项目饱和度(工作量百分比)。loadProjectTimeline():加载项目时间轴信息。loadDesignerProjects():加载与当前设计师相关的项目负载数据。activeDashboard: 'main' | 'skills' | 'personal',在主工作台 / 技能雷达 / 个人看板之间切换。viewMode: 'card' | 'list' 让任务视图在卡片/列表模式之间切换。overdueTasks(isOverdue === true)。urgentTasks(例如距截止时间 3 小时内且属于渲染阶段的任务)。/wxwork/:cid/project/:projectId 或设计师端项目详情)。/designer/project-detail/:id/wxwork/:cid/designer/project-detail/:idroleName 或路径识别视图角色。角色视图与权限控制
roleContext: 'customer-service' | 'designer' | 'team-leader' | 'technical' = 'designer'?roleName= 获取:
customer-service → 客服视角technical → 技术视角team-leader → 组长视角/customer-service/、/team-leader/、/technical/。currentUser.roleName)进行判断:
team-leader → 组长视角designer。isDesignerView() / isTeamLeaderView() / isCustomerServiceView() / isTechnicalView()isReadOnly():当为客服视角时返回 true,限制编辑能力。canEditSection(sectionKey):
order(订单分配)、requirements(确认需求)、aftercare(售后)板块;canEditStage(stage: ProjectStage):
订单分配、需求沟通、方案确认(订单分配与确认需求板块)尾款结算、客户评价、投诉处理(售后板块)交付执行相关操作(设计师核心日常)
whiteModelImages:白模阶段图片数组。softDecorImages:软装阶段图片数组。renderLargeImages:大图渲染阶段图片数组。postProcessImages:后期阶段图片数组。id: stringname: stringurl: stringsize?: stringreviewStatus?: 'pending' | 'approved' | 'rejected'(审核状态,主要由组长操作)synced?: boolean(是否已与后台/组长端同步)allowedImageTypes='.jpg,.jpeg,.png' 限制)。renderLargeImages),并在 UI 中展示缩略图和状态。showRenderUploadModal 控制渲染大图上传弹窗;pendingRenderLargeItems 暂存待确认大图。deliveryProcesses: DeliveryProcess[]:
id: 'modeling' | 'softDecor' | 'rendering' | 'postProcess'name: '建模' | '软装' | '渲染' | '后期'isExpanded: boolean:在 UI 中是否展开。spaces: 空间列表(如卧室/客厅/厨房),包含 id, name, order, isExpanded。content: 以空间 ID 为键的状态对象:
images: any[]:该空间在该流程下的图片或交付物;progress: number:该流程在该空间下的完成进度;status: 'pending' | 'in_progress' | 'completed' | ...:状态;notes: string:备注;lastUpdated: Date:最后更新时间。质量自查与模型检查
modelCheckItems: ModelCheckItem[]:id: stringname: stringisPassed: booleannotes?: stringisPassed。notes 说明问题或经过。组长视角下的同步与审核(设计师端可见,但只在组长视角可操作)
syncUploadedImages(phase):
isTeamLeaderView() 为 true 时生效;synced=true,并在未设置 reviewStatus 时初始化为 pending;reviewImage(imageId, phase, status)(代码略):
approved 或 rejected,同时记录审核结果以便后续统计。/designer/personal-board/wxwork/:cid/designer/personal-board/team-leader/... 复用该组件查看设计师个人表现。ProjectService 加载以下数据:skillTags: SkillTag[]:技能标签及熟练度与项目数量。performanceData: PerformanceData[]:按月统计的绩效数据:
month: string:月份(如 2024-01)projectCompletionRate: number:项目完成率customerSatisfaction: number:客户满意度deliveryOnTimeRate: number:交付准时率matchingOrders: MatchingOrder[]:匹配度较高的推荐订单:
projectName、requiredSkills[]、matchRate、customerLevel 等。settlements: Settlement[]:结算记录列表:
totalSettlementAmount:已结算总金额。pendingSettlementAmount:待结算总金额。isJuniorDesigner: boolean 用于控制部分功能权限(例如某些高级数据或操作仅限资深设计师)。ngAfterViewInit 中,当 performanceData 加载完毕后:initCustomChart() 使用原生 DOM 构建自定义柱状图。设计师端沿用
src/app/models/project.model.ts中的通用Project、Task、SkillTag、PerformanceData等接口,并在各自页面(Dashboard、Project Detail、Personal Board)上做视图层的再封装。
Task 接口)
id: string:任务 ID。projectId: string:所属项目 ID。projectName: string:所属项目名称。title: string:任务标题,一般会使用项目名称。stage: ProjectStage:任务所在项目阶段(如 建模、渲染、后期 等)。deadline: Date:任务截止时间。priority: any:任务优先级(高/中/低)。isOverdue: boolean:是否逾期。isCompleted: boolean:是否完成。assignee: any:任务负责人(设计师)。description: any:任务描述(例如「渲染阶段 - 客户姓名」)。ShiftTask(代班任务)
id: stringprojectId: stringprojectName: stringtaskDescription: stringpriority: '高' | '中' | '低'shiftDate: stringstatus: '待处理' | '处理中' | '已完成'ProjectTimelineItem(个人项目时间轴)
id: stringname: string:项目名称或阶段名称。deadline: string:截止时间(字符串形式)。status: string:当前状态(进行中/已完成/逾期等)。CurrentUser(顶部用户信息)
userid: string:企微用户ID。name: string:姓名。avatar: string:头像 URL。roleName: string:角色名称(一般为「组员」)。department?: string:部门名称。position?: string:职位。SkillTag
id: stringname: string:技能名称(如风格、软件等)。level: number:技能等级(1–5)。count: number:该技能相关的完成项目数量。PerformanceData
month: string:月份。projectCompletionRate: number:项目完成率。customerSatisfaction: number:客户满意度。deliveryOnTimeRate: number:交付准时率。MatchingOrder
id: stringprojectName: string:推荐项目名称。requiredSkills: string[]:所需技能。matchRate: number:匹配度(百分比)。customerLevel: '优质' | '普通':客户等级。Settlement(结算记录)
id: stringprojectId: stringstage?: ProjectStagetype?: 'deposit' | 'progress' | 'final_payment'amount: number:金额。status: '待结算' | '已结算' | '逾期' | '已取消' | 'pending' | 'completed'createdAt: Date:创建时间。settledAt、paidDate、dueDate 等)用于详细的财务追踪。如需,我可以再为设计师端补充: