2026-05-14 09:05:08 +08:00
|
|
|
import dayjs from 'dayjs';
|
|
|
|
|
import type {
|
|
|
|
|
WorkbenchActivityItemSource,
|
|
|
|
|
WorkbenchBannerSummarySource,
|
2026-05-21 21:42:23 +08:00
|
|
|
WorkbenchFavoriteItemSource,
|
2026-05-14 09:05:08 +08:00
|
|
|
WorkbenchKpiSource,
|
2026-05-21 21:42:23 +08:00
|
|
|
WorkbenchMyRequirementGroupSource,
|
|
|
|
|
WorkbenchMyTaskItemSource,
|
|
|
|
|
WorkbenchProgressBarSource,
|
|
|
|
|
WorkbenchProjectHealthCardSource,
|
2026-05-14 09:05:08 +08:00
|
|
|
WorkbenchProjectItemSource,
|
2026-05-21 21:42:23 +08:00
|
|
|
WorkbenchTeamTodoRowSource,
|
2026-05-14 09:05:08 +08:00
|
|
|
WorkbenchTodoItemSource
|
|
|
|
|
} from './homepage';
|
|
|
|
|
|
|
|
|
|
const now = dayjs();
|
|
|
|
|
const iso = (date: dayjs.Dayjs) => date.format('YYYY-MM-DD HH:mm:ss');
|
|
|
|
|
|
|
|
|
|
export const workbenchBannerSummaryMock = {
|
|
|
|
|
todoCount: 8,
|
|
|
|
|
upcomingCount: 2,
|
|
|
|
|
weekDone: 12,
|
|
|
|
|
weekTotal: 18,
|
|
|
|
|
weekInProgress: 5,
|
|
|
|
|
weekOverdue: 1
|
|
|
|
|
} satisfies WorkbenchBannerSummarySource;
|
|
|
|
|
|
|
|
|
|
export const workbenchKpiMock = {
|
|
|
|
|
todo: { count: 8, diffFromYesterday: 1 },
|
|
|
|
|
task: { count: 14, diffFromYesterday: -1 },
|
|
|
|
|
project: { count: 3, activeCount: 2 },
|
|
|
|
|
requirement: { count: 6, pendingReview: 2 }
|
|
|
|
|
} satisfies WorkbenchKpiSource;
|
|
|
|
|
|
|
|
|
|
export const workbenchTodoMock = [
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-1',
|
|
|
|
|
category: 'review',
|
|
|
|
|
title: '订单导出 V2 需求评审',
|
|
|
|
|
deadline: iso(now.add(2, 'day').hour(18).minute(0)),
|
|
|
|
|
source: '张三 · 收银台 V3',
|
|
|
|
|
highPriority: true,
|
|
|
|
|
routeKey: 'product_list'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-2',
|
|
|
|
|
category: 'task',
|
|
|
|
|
title: '支付回调接口联调',
|
|
|
|
|
deadline: iso(now.add(1, 'day').hour(17).minute(30)),
|
|
|
|
|
source: '收银台 V3 · 后端联调',
|
|
|
|
|
routeKey: 'project_list'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-3',
|
|
|
|
|
category: 'ticket',
|
|
|
|
|
title: '工单 #1024 等待我处理',
|
|
|
|
|
deadline: iso(now.hour(20).minute(0)),
|
|
|
|
|
source: '王五 · 客户反馈',
|
|
|
|
|
routeKey: 'ticket'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-4',
|
|
|
|
|
category: 'mention',
|
|
|
|
|
title: '需求「会员等级」中 @ 了你',
|
|
|
|
|
deadline: null,
|
|
|
|
|
source: '李四 · 会员中心',
|
|
|
|
|
routeKey: 'product_list'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-5',
|
|
|
|
|
category: 'task',
|
|
|
|
|
title: '订单中心结算文档评审',
|
|
|
|
|
deadline: iso(now.add(4, 'day').hour(15).minute(0)),
|
|
|
|
|
source: '订单中心 · 文档',
|
|
|
|
|
routeKey: 'project_list'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-6',
|
|
|
|
|
category: 'review',
|
|
|
|
|
title: 'API 返回结构调整评审',
|
|
|
|
|
deadline: iso(now.subtract(1, 'day').hour(18).minute(0)),
|
|
|
|
|
source: '赵六 · 收银台 V3',
|
|
|
|
|
overdue: true,
|
|
|
|
|
highPriority: true,
|
|
|
|
|
routeKey: 'product_list'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-7',
|
|
|
|
|
category: 'task',
|
|
|
|
|
title: '会员等级提示文案校对',
|
|
|
|
|
deadline: iso(now.add(3, 'day').hour(11).minute(0)),
|
|
|
|
|
source: '会员中心 · 文案',
|
|
|
|
|
routeKey: 'project_list'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'todo-8',
|
|
|
|
|
category: 'ticket',
|
|
|
|
|
title: '工单 #1018 用户登录异常',
|
|
|
|
|
deadline: iso(now.add(1, 'day').hour(10).minute(0)),
|
|
|
|
|
source: '客户支持 · 紧急',
|
|
|
|
|
highPriority: true,
|
|
|
|
|
routeKey: 'ticket'
|
|
|
|
|
}
|
|
|
|
|
] satisfies WorkbenchTodoItemSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchActivityMock = [
|
|
|
|
|
{
|
|
|
|
|
id: 'act-1',
|
|
|
|
|
actor: '张三',
|
|
|
|
|
action: '提交了需求评审申请',
|
|
|
|
|
target: '订单导出 V2',
|
|
|
|
|
targetKind: 'requirement',
|
|
|
|
|
time: iso(now.subtract(10, 'minute'))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'act-2',
|
|
|
|
|
actor: '李四',
|
|
|
|
|
action: '完成了任务',
|
|
|
|
|
target: '支付回调接口联调',
|
|
|
|
|
targetKind: 'task',
|
|
|
|
|
time: iso(now.subtract(2, 'hour'))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'act-3',
|
|
|
|
|
actor: '李四',
|
|
|
|
|
action: '在需求中 @ 了你',
|
|
|
|
|
target: '会员等级',
|
|
|
|
|
targetKind: 'requirement',
|
|
|
|
|
time: iso(now.subtract(1, 'day').hour(17).minute(23)),
|
|
|
|
|
mentioned: true
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'act-4',
|
|
|
|
|
actor: '王五',
|
|
|
|
|
action: '提交了工单',
|
|
|
|
|
target: '#1024 · 客户反馈',
|
|
|
|
|
targetKind: 'ticket',
|
|
|
|
|
time: iso(now.subtract(1, 'day').hour(15).minute(8))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'act-5',
|
|
|
|
|
actor: '赵六',
|
|
|
|
|
action: '把项目状态调整为',
|
|
|
|
|
target: '试运行(订单中心)',
|
|
|
|
|
targetKind: 'project',
|
|
|
|
|
time: iso(now.subtract(2, 'day').hour(10).minute(0))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'act-6',
|
|
|
|
|
actor: '系统',
|
|
|
|
|
action: '提醒:你有 1 项任务即将逾期',
|
|
|
|
|
target: 'API 返回结构调整评审',
|
|
|
|
|
targetKind: 'requirement',
|
|
|
|
|
time: iso(now.subtract(3, 'day').hour(9).minute(30))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'act-7',
|
|
|
|
|
actor: '钱七',
|
|
|
|
|
action: '更新了产品资料',
|
|
|
|
|
target: '收银台 V3 · 定位说明',
|
|
|
|
|
targetKind: 'product',
|
|
|
|
|
time: iso(now.subtract(4, 'day').hour(16).minute(45))
|
|
|
|
|
}
|
|
|
|
|
] satisfies WorkbenchActivityItemSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchProjectMock = [
|
|
|
|
|
{
|
|
|
|
|
id: 'prj-1',
|
|
|
|
|
name: '收银台 V3',
|
|
|
|
|
code: 'CASHIER-V3',
|
|
|
|
|
status: 'active',
|
|
|
|
|
myRole: '项目负责人',
|
|
|
|
|
progress: 72,
|
|
|
|
|
myTaskCount: 6,
|
|
|
|
|
myPendingTaskCount: 2,
|
|
|
|
|
lastActiveTime: iso(now.subtract(35, 'minute'))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'prj-2',
|
|
|
|
|
name: '会员中心',
|
|
|
|
|
code: 'MEMBER',
|
|
|
|
|
status: 'active',
|
|
|
|
|
myRole: '后端负责人',
|
|
|
|
|
progress: 58,
|
|
|
|
|
myTaskCount: 4,
|
|
|
|
|
myPendingTaskCount: 1,
|
|
|
|
|
lastActiveTime: iso(now.subtract(3, 'hour'))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'prj-3',
|
|
|
|
|
name: '订单中心',
|
|
|
|
|
code: 'ORDER-CENTER',
|
|
|
|
|
status: 'preview',
|
|
|
|
|
myRole: '产品经理',
|
|
|
|
|
progress: 95,
|
|
|
|
|
myTaskCount: 4,
|
|
|
|
|
myPendingTaskCount: 0,
|
|
|
|
|
lastActiveTime: iso(now.subtract(2, 'day').hour(10))
|
|
|
|
|
}
|
|
|
|
|
] satisfies WorkbenchProjectItemSource[];
|
2026-05-21 21:42:23 +08:00
|
|
|
|
|
|
|
|
export const workbenchMyTaskMock = [
|
|
|
|
|
{
|
|
|
|
|
id: 't-1',
|
|
|
|
|
title: '支付回调接口联调',
|
|
|
|
|
statusCode: 'inProgress',
|
|
|
|
|
statusLabel: '进行中',
|
|
|
|
|
executionName: '收银台 V3 · 后端联调',
|
|
|
|
|
projectName: '收银台 V3',
|
|
|
|
|
priority: 'high',
|
|
|
|
|
deadline: iso(now.add(1, 'day').hour(17))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 't-2',
|
|
|
|
|
title: '订单导出 V2 文档编写',
|
|
|
|
|
statusCode: 'inProgress',
|
|
|
|
|
statusLabel: '进行中',
|
|
|
|
|
executionName: '订单中心 · 文档',
|
|
|
|
|
projectName: '订单中心',
|
|
|
|
|
priority: 'mid',
|
|
|
|
|
deadline: iso(now.add(3, 'day').hour(12))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 't-3',
|
|
|
|
|
title: 'API 返回结构调整',
|
|
|
|
|
statusCode: 'pending',
|
|
|
|
|
statusLabel: '待开始',
|
|
|
|
|
executionName: '收银台 V3 · 后端联调',
|
|
|
|
|
projectName: '收银台 V3',
|
|
|
|
|
priority: 'mid',
|
|
|
|
|
deadline: iso(now.subtract(1, 'day').hour(18))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 't-4',
|
|
|
|
|
title: '会员等级文案校对',
|
|
|
|
|
statusCode: 'inProgress',
|
|
|
|
|
statusLabel: '进行中',
|
|
|
|
|
executionName: '会员中心 · 文案',
|
|
|
|
|
projectName: '会员中心',
|
|
|
|
|
priority: 'low',
|
|
|
|
|
deadline: iso(now.add(2, 'day').hour(15))
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 't-5',
|
|
|
|
|
title: '收银台 H5 适配',
|
|
|
|
|
statusCode: 'inProgress',
|
|
|
|
|
statusLabel: '进行中',
|
|
|
|
|
executionName: '收银台 V3 · 前端',
|
|
|
|
|
projectName: '收银台 V3',
|
|
|
|
|
priority: 'high',
|
|
|
|
|
deadline: iso(now.hour(20))
|
|
|
|
|
}
|
|
|
|
|
] satisfies WorkbenchMyTaskItemSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchMyRequirementMock = [
|
|
|
|
|
{ statusCode: 'pendingReview', statusLabel: '待评审', count: 3, tone: 'amber' },
|
|
|
|
|
{ statusCode: 'reviewing', statusLabel: '评审中', count: 2, tone: 'sky' },
|
|
|
|
|
{ statusCode: 'developing', statusLabel: '开发中', count: 5, tone: 'emerald' },
|
|
|
|
|
{ statusCode: 'paused', statusLabel: '已暂停', count: 1, tone: 'rose' }
|
|
|
|
|
] satisfies WorkbenchMyRequirementGroupSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchTeamTodoMock = [
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-1',
|
|
|
|
|
projectName: '收银台 V3',
|
|
|
|
|
memberId: 'm-1',
|
|
|
|
|
memberName: '张三',
|
|
|
|
|
inProgress: 5,
|
|
|
|
|
overdue: 2,
|
|
|
|
|
weekDone: 3
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-1',
|
|
|
|
|
projectName: '收银台 V3',
|
|
|
|
|
memberId: 'm-2',
|
|
|
|
|
memberName: '李四',
|
|
|
|
|
inProgress: 3,
|
|
|
|
|
overdue: 0,
|
|
|
|
|
weekDone: 4
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-2',
|
|
|
|
|
projectName: '会员中心',
|
|
|
|
|
memberId: 'm-3',
|
|
|
|
|
memberName: '王五',
|
|
|
|
|
inProgress: 2,
|
|
|
|
|
overdue: 1,
|
|
|
|
|
weekDone: 2
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-3',
|
|
|
|
|
projectName: '订单中心',
|
|
|
|
|
memberId: 'm-4',
|
|
|
|
|
memberName: '赵六',
|
|
|
|
|
inProgress: 4,
|
|
|
|
|
overdue: 0,
|
|
|
|
|
weekDone: 5
|
|
|
|
|
}
|
|
|
|
|
] satisfies WorkbenchTeamTodoRowSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchProjectHealthMock = [
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-1',
|
|
|
|
|
projectName: '收银台 V3',
|
|
|
|
|
code: 'CASHIER-V3',
|
|
|
|
|
health: 'yellow',
|
|
|
|
|
riskCount: 2,
|
|
|
|
|
overdueTasks: 3,
|
|
|
|
|
backlogRequirements: 2
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-2',
|
|
|
|
|
projectName: '会员中心',
|
|
|
|
|
code: 'MEMBER',
|
|
|
|
|
health: 'green',
|
|
|
|
|
riskCount: 0,
|
|
|
|
|
overdueTasks: 0,
|
|
|
|
|
backlogRequirements: 1
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
projectId: 'prj-3',
|
|
|
|
|
projectName: '订单中心',
|
|
|
|
|
code: 'ORDER',
|
|
|
|
|
health: 'red',
|
|
|
|
|
riskCount: 4,
|
|
|
|
|
overdueTasks: 5,
|
|
|
|
|
backlogRequirements: 6
|
|
|
|
|
}
|
|
|
|
|
] satisfies WorkbenchProjectHealthCardSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchProgressChartMock = [
|
|
|
|
|
{ projectId: 'prj-1', projectName: '收银台 V3', weekCompletionRate: 78 },
|
|
|
|
|
{ projectId: 'prj-2', projectName: '会员中心', weekCompletionRate: 62 },
|
|
|
|
|
{ projectId: 'prj-3', projectName: '订单中心', weekCompletionRate: 45 }
|
|
|
|
|
] satisfies WorkbenchProgressBarSource[];
|
|
|
|
|
|
|
|
|
|
export const workbenchFavoriteMock = [
|
|
|
|
|
{ id: 'fav-1', kind: 'product', title: '收银台 V3', source: '产品库' },
|
|
|
|
|
{ id: 'fav-2', kind: 'project', title: '会员中心 · 一期', source: '项目库' },
|
|
|
|
|
{ id: 'fav-3', kind: 'requirement', title: '订单导出 V2', source: '收银台 V3' },
|
|
|
|
|
{ id: 'fav-4', kind: 'task', title: '支付回调接口联调', source: '收银台 V3 · 后端联调' }
|
|
|
|
|
] satisfies WorkbenchFavoriteItemSource[];
|