feat: OA(ecology)项目拉取 + 会议邀请函PDF/微信分享 + 参会人/执行意向增强

OA ecology:
- BizEcologyController + EcologyProjectService: 项目编号搜索/详情回填, 负责人静默建档
- ComplianceLoginService: 合规/负责人登录校验 + 视图 role 匹配
- application-prod/test.yml: ecology 只读库数据源

会议邀请函/分享:
- InvitationPdfService + WxShareService: 邀请函 PDF 生成 + 微信分享
- PdfViewer.vue (pdfjs-dist) + MeetingInvitation.vue: PDF 预览 + 邀请函页

参会人/执行意向:
- BizMeetingAttendee*: 参会人模块增强
- BizExecutionIntent*: 执行意向增强

签到/劳务/导入:
- BizSignServiceImpl + SignFill.vue: 签到劳务
- FieldMismatch/ImportMismatch: 导入校验 VO

公示/会议详情:
- PublicityDetail.vue / MeetingDetail.vue 等前端增强

配置:
- test 短信 mock + 供应商/招标接口切生产域名
This commit is contained in:
郭庆泰
2026-09-03 20:12:15 +08:00
parent beb9799a06
commit 56615f9806
55 changed files with 3296 additions and 516 deletions
+5 -1
View File
@@ -27,6 +27,9 @@ const routes = [
{ path: 'roles', name: 'admin-roles', component: () => import('@/views/admin/Roles.vue'), meta: { title: '角色管理' } },
{ path: 'projects', name: 'admin-projects', component: () => import('@/views/manager/Projects.vue'), meta: { title: '项目管理' } },
{ path: 'projects/detail/:projectId', name: 'admin-projects-detail', component: () => import('@/views/manager/ManagerProjectDetail.vue'), meta: { title: '项目详情' } },
{ path: 'projects/new', name: 'admin-projects-new', component: () => import('@/views/manager/ProjectsNew.vue'), meta: { title: '新建项目' } },
{ path: 'projects/edit/:projectId', name: 'admin-projects-edit', component: () => import('@/views/manager/ProjectsNew.vue'), meta: { title: '编辑项目' } },
{ path: 'projects/assign', name: 'admin-projects-assign', component: () => import('@/views/manager/ManagerProjectsAssign.vue'), meta: { title: '项目分配' } },
{ path: 'meetings', name: 'admin-meetings', component: () => import('@/views/meetings/Meetings.vue'), meta: { title: '会议管理' } },
{ path: 'meetings/detail/:meetingId', name: 'admin-meetings-detail', component: () => import('@/views/meetings/MeetingDetail.vue'), meta: { title: '会议详情' } },
{ path: 'meetings/view/:meetingId', name: 'admin-meetings-view', component: () => import('@/views/meetings/MeetingDetail.vue'), meta: { title: '会议详情', readonly: true } },
@@ -107,7 +110,8 @@ const routes = [
{ path: 'account', name: 'doctor-account', component: () => import('@/views/doctor/Account.vue'), meta: { title: '账号信息' } },
{ path: 'sign-fill', name: 'doctor-sign-fill', component: () => import('@/views/doctor/SignFill.vue'), meta: { title: '填写劳务信息', role: 'doctor', hideMenu: true } },
{ path: 'sign-contract', name: 'doctor-sign-contract', component: () => import('@/views/doctor/SignContract.vue'), meta: { title: '签署劳务协议', role: 'doctor', hideMenu: true } },
{ path: 'sign-success', name: 'doctor-sign-success', component: () => import('@/views/doctor/SignSuccess.vue'), meta: { title: '签字成功', role: 'doctor', hideMenu: true } }
{ path: 'sign-success', name: 'doctor-sign-success', component: () => import('@/views/doctor/SignSuccess.vue'), meta: { title: '签字成功', role: 'doctor', hideMenu: true } },
{ path: 'invitation/:attendeeId', name: 'doctor-meeting-invitation', component: () => import('@/views/doctor/MeetingInvitation.vue'), meta: { title: '会议邀请函', role: 'doctor' } }
]
},
{ path: '/executor', component: AdminLayout, meta: { role: 'executor' }, children: [