/** * 项目管理 Mock 数据 * * 用于模拟平台管理中的项目和菜单配置 */ // 菜单项类型 export interface ProjectMenuItem { key: string label: string icon?: string // 图标名称 path?: string children?: ProjectMenuItem[] } // 项目版本类型 export interface ProjectVersion { id: string version: string // 版本号,如 1.0.0 description: string // 版本描述 createdAt: string // 创建时间 createdBy: string // 创建人 isCurrent?: boolean // 是否是当前运行版本 // 版本关联的文件列表 files?: { name: string; size: number; path?: string }[] // 版本快照数据 snapshot: { name: string shortName: string logo: string color?: string description?: string baseUrl?: string menus: ProjectMenuItem[] } } // 平台项目类型 export interface PlatformProject { id: string name: string shortName: string logo: string color?: string description?: string enabled: boolean menuCount: number createdAt: string // 项目的访问地址(用于iframe嵌套) baseUrl?: string // 项目的菜单配置 menus: ProjectMenuItem[] // 当前版本号 currentVersion?: string // 版本历史 versions?: ProjectVersion[] // 新增字段 group?: string // 分组 domain?: string // 域名 port?: number // 端口 alias?: string // 代号 enableHttps?: boolean // 启用HTTPS acmeAccount?: string // Acme账户 certificate?: string // 证书 serverAddress?: string // 服务器地址 remark?: string // 备注 } // CodePort 的菜单配置 const codePortMenus: ProjectMenuItem[] = [ { key: 'codePort-dashboard', label: '控制台', icon: 'DashboardOutlined', path: '/dashboard' }, { key: 'codePort-community', label: '社区管理', icon: 'TeamOutlined', children: [ { key: 'codePort-posts', label: '帖子管理', path: '/community/posts' }, { key: 'codePort-comments', label: '评论管理', path: '/community/comments' }, { key: 'codePort-tags', label: '标签管理', path: '/community/tags' }, { key: 'codePort-circles', label: '城市圈子', path: '/community/circles' } ] }, { key: 'codePort-content', label: '内容管理', icon: 'ReadOutlined', children: [ { key: 'codePort-articles', label: '文章管理', path: '/content/articles' } ] }, { key: 'codePort-support', label: '客服管理', icon: 'CustomerServiceOutlined', children: [ { key: 'codePort-support-console', label: '接入会话', path: '/support/console' }, { key: 'codePort-support-conversations', label: '会话列表', path: '/support/conversations' } ] }, { key: 'codePort-project', label: '项目管理', icon: 'ProjectOutlined', children: [ { key: 'codePort-projects', label: '项目列表', path: '/project/list' }, { key: 'codePort-recruitment', label: '招募管理', path: '/project/recruitment' }, { key: 'codePort-signed-projects', label: '已成交项目', path: '/project/signed' }, { key: 'codePort-contracts', label: '合同管理', path: '/project/contract' }, { key: 'codePort-sessions', label: '会话管理', path: '/project/sessions' } ] }, { key: 'codePort-talent', label: '人才管理', icon: 'IdcardOutlined', children: [ { key: 'codePort-talent-list', label: '人才列表', path: '/talent' }, { key: 'codePort-resume-templates', label: '简历模板', path: '/talent/resume-templates' } ] }, { key: 'codePort-user', label: '用户管理', icon: 'UserOutlined', children: [ { key: 'codePort-users', label: '用户列表', path: '/user/list' }, { key: 'codePort-certification', label: '认证管理', path: '/user/certification' }, { key: 'codePort-roles', label: '角色管理', path: '/user/roles' }, { key: 'codePort-positions', label: '岗位管理', path: '/user/positions' }, { key: 'codePort-levels', label: '等级配置', path: '/user/levels' } ] } ] // Mock 项目数据 - 包含 codePort 项目 export const mockProjects: PlatformProject[] = [ { id: 'codePort', name: 'CodePort 码头', shortName: 'CodePort', logo: '码', color: '#1890ff', description: '人才外包平台管理后台', enabled: true, menuCount: 25, createdAt: '2024-01-01T00:00:00Z', baseUrl: 'http://localhost:5174', menus: codePortMenus, currentVersion: '1.0.0', versions: [ { id: 'v1.2.0', version: '1.2.0', description: '新增了客服系统和会话管理模块', createdAt: '2024-03-15T10:00:00Z', createdBy: '管理员', isCurrent: true, files: [ { name: 'dist.zip', size: 5242880, path: '/opt/1panel/www/sites/codeport/index' } ], snapshot: { name: 'CodePort 码头', shortName: 'CodePort', logo: '码', color: '#1890ff', description: '人才外包平台管理后台', baseUrl: 'http://localhost:5174', menus: codePortMenus } }, { id: 'v1.1.0', version: '1.1.0', description: '优化了用户管理和项目列表', createdAt: '2024-02-01T10:00:00Z', createdBy: '管理员', isCurrent: false, files: [ { name: 'dist.zip', size: 4718592, path: '/opt/1panel/www/sites/codeport/index' } ], snapshot: { name: 'CodePort 码头', shortName: 'CodePort', logo: '码', color: '#1890ff', description: '人才外包平台管理后台', baseUrl: 'http://localhost:5174', menus: codePortMenus } }, { id: 'v1.0.0', version: '1.0.0', description: '初始版本', createdAt: '2024-01-01T00:00:00Z', createdBy: '管理员', isCurrent: false, snapshot: { name: 'CodePort 码头', shortName: 'CodePort', logo: '码', color: '#1890ff', description: '人才外包平台管理后台', baseUrl: 'http://localhost:5174', menus: codePortMenus } } ] } ] /** * 获取所有启用的项目 */ export function getEnabledProjects(): PlatformProject[] { return mockProjects.filter(p => p.enabled) } /** * 根据ID获取项目 */ export function getProjectById(id: string): PlatformProject | undefined { return mockProjects.find(p => p.id === id) } /** * 获取项目的菜单配置 */ export function getProjectMenus(projectId: string): ProjectMenuItem[] { const project = getProjectById(projectId) return project?.menus || [] } /** * 生成新版本号 */ export function generateNextVersion(currentVersion?: string): string { if (!currentVersion) return '1.0.0' const parts = currentVersion.split('.').map(Number) parts[2] = (parts[2] || 0) + 1 return parts.join('.') }