SNAPSHOT W7 已部署稳定态 — 凯迪ERP+OA一体化平台 (MET 73.3%)

恢复点(restore point)。别人改崩后可 git reset --hard 回到此提交。

== 此快照内容 ==
- 后端 oa-backend: 734 控制器 / 711 实体 (Spring Boot 3.2.5 + SQLite, 端口8091)
- 前端 modern-ui/app: Vue3+Vite, 约700页 (构建产物已在 oa-backend/src/main/resources/static)
- 数据库 oa-backend/data/oa.db: 含全部演示数据 (强制入库, 6.6MB)
- 交接文档 go.md + go-code-reference/endpoints/entities/database.md
- 多代理建设脚本 .claude/wf-*.js

== 状态 ==
- 对 凯迪科技ERP_20260507.xlsx 合规 MET ~73.3% (PARTIAL 75: 34可建+6种子/bug+35外部硬天花板)
- 安全: 5轮红队+5轮复检, default-deny分级鉴权, 连续零可利用
- W3~W7 累计补完436缺口; W8末轮(40缺口)为半成品(源码树可编译但未集成)
- 运行: cd oa-backend; java -jar build/libs/oa-backend-0.1.0.jar --server.port=8091; admin/123456

== 排除(gitignore, 可再生) ==
node_modules / oa-backend/build / .jdks / *.log / Backup-ERP-* / 弃用的OFBiz核心(只保留modern-ui)
完整文件夹备份见同目录 Backup-ERP-20260615-191517/ (含上述全部, 仅缺 node_modules)

时间戳: 20260615-191517

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Qiufeng
2026-06-15 19:19:15 +08:00
co-authored by Claude Opus 4.8
commit 5e51dc3f56
10584 changed files with 2501339 additions and 0 deletions
+147
View File
@@ -0,0 +1,147 @@
# OA 还原度对照 — 差距清单(第1轮)
> 致远 A6-V5 OA(参照)vs 现系统逐模块功能对照。第1轮只读审计产出;第2轮按此修复。
**第1轮基线:10 个原生 OA 模块平均还原度 ≈ 78%**
| 模块 | 还原度 | 差距数 |
|------|--------|--------|
| 知识社区 | 62% | 10 |
| 文化建设 | 68% | 7 |
| HR管理 | 68% | 8 |
| 应用定制平台 | 76% | 8 |
| 协同工作 | 82% | 6 |
| 会议管理 | 82% | 6 |
| 目标管理 | 82% | 5 |
| 文档协作 | 82% | 4 |
| 报表中心 | 85% | 3 |
| 通讯录 | 95% | 3 |
## HIGH15
- **[协同工作] 流程中心模板管理的增删改/设计器/启停为演示态**
- center.vue 的 流程设计器/新建流程/编辑/复制/刷新/进入设计器/启用停用(act, 第103-105行) 全部仅 ElMessage.success(...(演示))。模板数据(templates, 第56-67行)为页面内本地构造的假数据(BPM-T101.. mock), 非来自后端, 查看抽屉只读展示。即模板管理 CRUD 与发布/启停 完全未实现, 仅列表+只读详情可用。
- **[会议管理] 新建会议:参会人/议题/列席部门/会议说明 提交时被丢弃,未持久化**
- create.vue 的 submit() (第87-94行) 只向 oaApi.createMeeting 传 subject/startTime/endTime/roomId/organizer/status。表单虽用 v-model 收集了 form.attendees(参会人)、form.agendas(议题)、form.ccDepts(列席部门)、form.host(主持人)、form.desc(会议说明),但这些字段在提交时全部被丢弃——createMeeting 入参类型(meetings.ts 第42-51行)根本不含这些字段。致远把『参会人』和『议题』列为新建会议的核心要素,此处属于功能未真正落地:填了也不会保存/通知。
- **[目标管理] 项目/任务 缺甘特图(Gantt)**
- 致远 项目/任务 期望 列表+看板+甘特 三视图。project.vue 仅有 view='board'(项目卡片网格) 与 view='tasks'(扁平任务表 ErpDataTable),全文无任何甘特/时间轴视图,也无切换甘特的入口。grep 'gantt/甘特' 在 goal 目录零命中。这是该模块最大功能缺口。
- **[知识社区] 文档中心 - 版本管理 (version management) entirely missing**
- doccenter.vue header subtitle says '文件夹 · 文档 · 版本管理' but there is NO version history. The list/preview only show a static 'V{row.version}.0' string. There is no version-history list, no compare, no rollback, no upload-new-version. The API (oa/api/docs.ts) exposes only getFolderTree/listDocuments/uploadMeta — no version endpoint. mock.ts defines DocVersion/buildVersions but those are never imported by doccenter.vue. 致远's 文档中心 core feature (multi-version with history) is absent.
- **[知识社区] 文档中心 - download is non-functional**
- doccenter.vue download(file) (line 215) only calls ElMessage.success('开始下载…(演示,仅登记元数据)'). No real file download/blob/href. Both the list '下载' button and the preview-drawer '下载' button are dead stubs.
- **[知识社区] 我的收藏 - all action controls are dead (no @click)**
- favorites.vue: page is fully mock (allRows from mock.ts, no API). '新建收藏夹' (line 85), drawer '打开原文' / '移动收藏夹' / '取消收藏' (lines 118-120), and '刷新' (line 102) have NO @click handlers. The ErpDataTable secondary-action '取消收藏' is wired to @primary-action=openRow only — secondary emits nowhere. Nothing is persisted; the whole page is a static view.
- **[知识社区] 文档库管理 - most management actions are dead (no @click)**
- libmgr.vue: lib row buttons '编辑' '权限' '停用' (lines 169-171) have no @click; settings '保存设置' / '重置' (lines 231-232) have no @click; roles '新增角色' / '保存权限' (lines 261-262) have no @click; '新建文档库' dialog '创建' (line 315) just sets libDialogOpen=false without persisting. Only the 分类标签 add/remove (addCat/removeCat) actually work, and that is local-only state.
- **[文化建设] 调查 - 问卷作答/投票 (answer questionnaire / cast vote)**
- /Users/qiu/Desktop/ERP/ofbiz-framework/plugins/modern-ui/app/src/oa/pages/culture/survey.vue only lists surveys, creates surveys, and shows read-only result bars via a drawer (openDetail -> getSurvey). There is NO answer/vote flow: no respondent form, no vote submission, no vote API. The questionnaire form data surveyQuestions (single/multiple/rate/text questions) is defined in mock.ts but is never imported or rendered by any .vue. grep confirms no voteSurvey/submitSurvey/answerSurvey API exists anywhere in src, and community.ts exposes only listSurveys/getSurvey/createSurvey (no vote endpoint). Votes/responseCount come purely from seed data; a user cannot actually participate. 致远's core '作答' operation is missing.
- **[文化建设] 讨论 - 回帖/回复 (post reply to forum thread)**
- discuss.vue lists threads and openDetail navigates to /reader/article?type=discuss&id=, which renders the read-only ErpArticleReader component (its own doc comment: '仅负责展示'). There is no reply composer and no post-reply action on the detail page; reader/article.vue has zero reply/comment handling (only displays replyCount as a tag). The discussReplies mock array in mock.ts is never rendered. So a user can start a thread but cannot reply to one - 致远's forum reply interaction is absent.
- **[HR管理] 工作时间设置 - 保存/重置无功能**
- worktime.vue 第68-70行的『重置』和『保存设置』按钮均无 @click 绑定,无任何保存/重置逻辑,也未调用任何 API;整页表单虽有 v-model 但改动无法持久化。对应致远『工作时间设置』的核心保存操作完全缺失(dead control)。
- **[HR管理] 员工档案管理 - 新建档案按钮被禁用**
- staff.vue 第177行 `<el-button type="primary" :icon="Plus" disabled>新建档案</el-button>` 显式 disabled 且无 @click,无法新增员工档案。致远员工档案管理的新增/录入是核心操作,此处为占位死按钮。
- **[应用定制平台] 运维中心: 头部 保存设置/还原默认 按钮无功能**
- /Users/qiu/Desktop/ERP/ofbiz-framework/plugins/modern-ui/app/src/oa/pages/appdev/ops.vue 第77-78行 <el-button>还原默认</el-button> 与 <el-button type="primary">保存设置</el-button> 均无 @click 处理。五大设置分组(基础/发布灰度/集成数据源/定时任务/安全)的所有表单字段虽 v-model 绑定到本地 ref,但没有任何持久化/保存动作,刷新即丢失,无后端写回。运维配置实质不可保存。
- **[应用定制平台] 运维中心: 数据源 新增/测试连接/编辑 无功能**
- /Users/qiu/Desktop/ERP/.../appdev/ops.vue 第158行 <el-button>新增数据源</el-button>、第176-177行 测试连接/编辑 行操作按钮均无 @click,纯静态。数据源仅为硬编码 dataSources 数组展示,无法新增、测试或编辑——集成与数据源能力为占位。
- **[应用定制平台] 运维中心: 定时任务 新建/立即执行/日志 无功能**
- /Users/qiu/Desktop/ERP/.../appdev/ops.vue 第187行 新建任务、第205-206行 立即执行/日志 按钮均无 @click。jobs 为硬编码数组;致远运维中心的队列与任务调度(手动触发、查看日志)在此不可操作。
- **[应用定制平台] 工作台/运维中心: 字段类型转换(可修改字段类型)未真正实现**
- workbench.vue 第152-156行 fieldConvertChips(文本转日期/数字/日期时间)与第283-286行提示文案均为静态展示,并指向运维中心执行;但 ops.vue 中并无任何字段类型转换的 UI 或操作入口(无对应分组/按钮/接口调用)。致远运维中心的字段类型转换+待执行队列异步处理这一核心运维操作仅有文字描述,功能缺失。
## MEDIUM24
- **[协同工作] 列表页行级「转发」操作缺失**
- CollabListPage.vue 每行只有 办理/查看 一个主操作(ErpDataTable primary-action, showSecondaryAction=false), 没有致远列表行内的「转发」行操作。转发只以批处理工具条按钮形式存在且是演示态(见下条)。
- **[协同工作] 列表批处理工具条按钮为演示态(无真实行为)**
- CollabListPage.vue 第194-198行的 转发/归档/批处理/导出/删除 五个按钮全部 @click="toolbarAction(name)", 而 toolbarAction(第161-163行)只 ElMessage.success(`${name}(演示)`), 不做任何真实操作, 也未与表格选中行联动(表格无多选框)。属非功能控件。
- **[协同工作] 流程督办监控的督办/催办/导出为演示态**
- monitor.vue 中 批量督办/导出报表(urge, 第107-109行) 与行级 督办(onUrgeRow, 第111-113行) 均仅 ElMessage.success(...(演示)), 不发起任何后端催办请求, 也无督办记录留痕。督办是该页核心动作, 实为占位。查看(openInstance->抽屉)是真实的。
- **[会议管理] 附件上传完全缺失**
- 致远新建会议要素含『附件』。create.vue 与整个 meeting 目录无任何 el-upload / 上传控件 / attachment 字段,meetings.ts API 也无附件相关接口。该功能点彻底缺失(非占位,是完全没有)。
- **[会议管理] 会议纪要只读,无法新建/编辑纪要**
- minutes.vue 仅提供列表 + 详情抽屉 + window.print() 打印;无『新建纪要』『编辑纪要』入口,api/meetings.ts 也只有 listMinutes,没有 createMinute/updateMinute。致远的会议纪要支持从已开会议产出/录入纪要并归档,此处纪要数据只能被动展示后端已有记录,无法在前端创建。mine.vue 详情里的『查看纪要』按钮(第306行)只是 router.push('/meeting/minutes') 跳到列表,并不按会议过滤定位对应纪要。
- **[目标管理] 看板并非真正的任务看板(Kanban)**
- project.vue 的『项目看板』实为项目汇总卡片网格(gp-grid, line 244-266),点击卡片下钻到一个扁平任务表格(line 278-286)。任务不能按状态列(待办/办理中/已办结)分列展示,也无法在列间拖拽流转。致远的看板是按任务状态分列的 Kanban,此处未复刻。
- **[目标管理] 工作计划缺 日/周/月 结构化填报**
- plan.vue 页头描述写『日/周/月计划的填报』,但 tabs 是从已存在的 status 字符串动态枚举(line 31-47),并非 日/周/月 分类;新建表单(line 191-216)的『所属周期』是一个自由文本 el-input(line 204),没有 日/周/月 计划类型选择器或按周期的日历式填报。致远的工作计划按日/周/月计划分别列表与填报,此结构未实现。
- **[知识社区] 文档中心 - preview shows only a static placeholder**
- doccenter.vue preview drawer (lines 458-468) renders a fixed 'kn-pv__placeholder' with text '...在线预览(演示,仅登记元数据)'. No Word/PDF/Excel/PPT/image is actually rendered. 致远 offers real online preview; here it is decorative text only.
- **[知识社区] 知识地图 - related-knowledge content is fabricated, not linked to real docs**
- map.vue: mapTree, tagCloud and docRows are hardcoded mock arrays (docRows built via pick()/dateStr from mock.ts, lines 109-118). Only the 4 summary metrics use real listDocuments data. The '订阅' button (line 188) has no handler; tag cloud tags are not clickable to filter; ErpDataTable '查看' primary-action has no @primary-action handler so it does nothing. 致远's knowledge map drills into real knowledge nodes/documents.
- **[知识社区] 我的博客 - compose save and refresh are no-ops**
- blog.vue: '写博客' dialog '存草稿' and '发布' (lines 165-166) both only set composeOpen=false; the compose form (title/category/tags/body) is never submitted anywhere (no API, no mock append). '刷新' button (line 80) has no @click. List/filters/reading work (reading navigates to /reader/article), but creating a blog post is non-functional.
- **[知识社区] RSS订阅 - mark-all-read / refresh / add-feed / favorite are non-functional**
- rss.vue: '全部标记已读' (line 79) and '刷新' (line 137) have no @click; add-subscription dialog '添加' (line 169) just closes without pushing to feeds[]; '收藏' tab count is hardcoded to 3 (line 34) and the star tab returns all articles unfiltered (line 45); secondary-action '收藏' is not handled. Reading an article works (navigates to /reader/article).
- **[文档协作] 在线协同编辑(实时多人协作)**
- create.vue 的正文录入仅为一个静态 el-input type=textareav-model=form.content,第140-149行),保存走 oaApi.createCollabDoc 单次 POST。没有富文本编辑器、版本/修订、在线锁定或多人实时协同(无 WebSocket/协同光标/差异合并)。致远 A6-V5 的“协作文档”核心是在线协同编辑,此处退化为普通单作者表单提交,属功能深度缺口。
- **[文档协作] 文档详情仅只读,无再次编辑/续编入口**
- list.vue 的详情抽屉(第206-248行)为纯只读展示(正文用 div 渲染 current.content),底部只有“关闭”按钮。打开已有协作文档后无法编辑正文、无法增删参与人、无法更新状态——协作文档创建后不可再协作/修改,违背“协同”语义。后端虽有 getCollabDoc,但前端无 update/edit 调用,api/collabdocs.ts 也未提供 updateCollabDoc。
- **[文化建设] 享空间 - 评论 / 转发 (comment / forward on feed item)**
- /Users/qiu/Desktop/ERP/ofbiz-framework/plugins/modern-ui/app/src/oa/pages/culture/share.vue lines 129-130: the comment button (<button ...><ChatLineRound/> {{ f.comments }}</button>) and the 转发 button (<button ...><Promotion/> 转发</button>) have NO @click handler - they are dead controls. Only 点赞 (toggleLike) and text 发布 (publishFeed) actually work.
- **[文化建设] 享空间 - 发布工具: 图片 / 链接 / 话题**
- share.vue lines 80-82: the compose-bar buttons 图片(Picture), 链接(Promotion), 话题(Pointer) have no @click handlers and do nothing - static/dead controls. Image upload and link/topic insertion are not implemented; publishFeed always creates a plain text 动态 with images:0, tags:[].
- **[文化建设] 享空间 - 后端持久化 (no API wiring)**
- share.vue is pure front-end mock: it imports only from ./mock (feedList/feedHotTopics/feedActiveUsers) and never calls oaApi/http. Published feeds, likes, and the 刷新 button all operate on in-memory state; 刷新 (line 99) re-seeds items from feedList, discarding anything the user just posted. Unlike news/notice/discuss/survey which are backed by real APIs, the 享空间 feed has no persistence.
- **[报表中心] 报表管理 - 设计入口/新建报表 (design entry)**
- manage.vue 的文件头注释声明 '报表列表/设计入口',但实际模板里没有任何 '设计'/'新建报表'/'新增报表' 按钮,也没有指向报表设计器的 @click 或路由,全站亦无报表设计/designer 路由。报表清单是对后端 getOverview() 聚合指标的只读罗列,用户无法自定义/创建新报表。致远 报表管理的设计入口能力缺失。
- **[HR管理] 工作时间设置 - 数据为硬编码且不落库**
- worktime.vue 的 schedule/attendance 为本地 reactive 默认值,holidays(第42-49行)为硬编码数组,无 load() 从后端读取、无 onMounted 拉取、无对应 API。节假日『新增安排』按钮(第165行)无 @click,仅删除是本地数组过滤(removeHoliday)。整页为前端独立态,刷新即丢失。
- **[HR管理] 员工档案管理 - 缺编辑/停用/删除等档案维护操作**
- staff.vue 详情抽屉(第208-247行)仅展示『基本信息/联系方式』只读 descriptions,footer 仅『关闭』按钮,无编辑、停启用、删除、调岗等任何写操作;getUser 仅读。相比致远档案详情可维护,缺写能力。
- **[HR管理] 信息项设置 - 编辑/预览表单按钮无功能**
- fields.vue 第186行『编辑』(`<el-button link type="primary">编辑</el-button>`)无 @click,无法编辑已有信息项;第124行『预览表单』按钮无 @click。两者均为死控件。新增(openAdd/saveField)与删除(removeField)有效,必填/显示开关 v-model 有效。
- **[HR管理] 组织机构设置 - 仅只读浏览,无部门增删改/移动**
- org.vue 为组织树+成员只读视图(getDeptTree/listUsers),仅『刷新』按钮,无新建部门/编辑部门/删除/拖动调整层级等管理操作;成员表 primary-action-label="查看" 未绑定 @primary-action 处理函数(为死按钮)。致远『组织机构设置』含部门维护操作,此处缺失。
- **[应用定制平台] 监测中心: 导出报表 与 告警 处理/忽略 无功能**
- /Users/qiu/Desktop/ERP/.../appdev/monitor.vue 第103行 <el-button :icon="Download">导出报表</el-button> 无 @click;第169-170行告警 处理/忽略 行操作按钮无 @click。alerts/apps/trend/health 均为硬编码 mock(仅 KPI 表单模板数 与 刷新 接真实 listTemplates),告警处置与报表导出不可用。
- **[应用定制平台] 监测中心: 时间范围切换不影响数据**
- /Users/qiu/Desktop/ERP/.../appdev/monitor.vue 第100-102行 range 单选(近24h/7天/30天)有 v-model 但 trend/kpis/apps/alerts 全为常量,切换范围不触发任何重算或请求,时间维度筛选为视觉占位。
- **[应用定制平台] 应用管理中心: 应用清单为 mock,导出/权限/版本/停用 仅提示**
- /Users/qiu/Desktop/ERP/.../appdev/appmgr.vue 第71-81行 allApps 由代码生成的假数据(非后端);导出清单(第409行)、应用管理 Tab 刷新(第474行)、抽屉内 权限配置/版本记录/停用(第521-523行) 均调用 notImplemented() 仅弹 info 提示。注意:表单 Tab 是真实的(listTemplates 后端+设计器发布闭环 createTemplate),仅应用维度的发布管理/灰度/停用未实现。
## LOW21
- **[协同工作] 新建事项缺少独立的「选流程」步骤**
- 致远新建为 选模板->填表单->选流程->提交 四步。在 OaCreateItemDialog.vue 中, 使用模板后直接进入填表单对话框(OaFormRenderer v-model)->提交(submitItem), 流程仅通过 OaProcessSpecModal.vue 的「预览」可只读查看(form/flow/spec 三个 tab), 用户无法在发起时选择/调整审批人或流程分支。流程被绑定在模板上, 算可只读可见但不可选, 属功能弱化而非完全缺失。
- **[协同工作] 门户「我的待办」行点击与常用流程入口粒度粗**
- portal.vue 中 collab-todo 每行点击统一 go('/collab/todo')(第80行)而非跳到该条事项的办理详情; 常用流程按钮统一 go('/collab/create')(第108行)不预选模板。功能可达但定位不精确, 属体验性弱化。
- **[会议管理] 会议室日历为只读视图,不支持点位预订**
- room.vue 是一个完成度较高的周/日资源占用日历(含冲突检测、占用时长、详情弹窗),但点击空闲时段不能直接预订,只有顶部『新建会议』跳转到 create.vue。致远会议室预订可在日历上直接选时段下单,此处为间接预订,属轻度差距。
- **[会议管理] 会议纪要列表『关联会议』次操作与『查看』重复**
- minutes.vue 第181-183行 primary-action(查看) 与 secondary-action(关联会议) 都绑定到同一个 openDetail,点击两者行为完全一致,未单独跳转到关联会议;属冗余而非死控件。
- **[会议管理] 快速会议『会议方式』(视频/电话/屏幕共享)为装饰性**
- quick.vue 的 mode 切换(第91-103行)有 @click 且驱动预览/needRoom 逻辑,是活控件;但 start() 仅以 status='进行中' 落库,不区分会议方式、不生成真实会议号/外呼,侧栏『生成会议号、同步日程』为静态文案。对复刻而言可接受,记为低。
- **[目标管理] 主题空间多块为静态mock非后端数据**
- space.vue 中『我的关键目标』objectives 为硬编码数组(line 97-102),『我的待办任务』myTasks(line 105-113) 与『近期工作计划』recentPlans(line 116-124) 由 mock.ts 的 pick/dateStr 生成,未接 oaApi。仅概览瓷砖与『今日日程』走真实 listEvents。门户展示项部分为占位数据。
- **[目标管理] 主题空间 MoreFilled 图标为无功能死控件**
- space.vue line 173 的 <el-icon class="gs-more"><MoreFilled /></el-icon> 带 cursor:pointer 样式但无 @click 处理,点击无任何行为,是装饰性死控件。
- **[知识社区] 知识门户 - global search input is decorative**
- portal.vue: the '全库搜索文档、知识、博客' input has v-model='keyword' but keyword is never read by any computed/handler — no search/filter/submit. The two header buttons '上传文档' and '进入文档中心' both just router.push to doccenter (upload does not open an upload flow).
- **[知识社区] 文档中心 - pagination is static / not wired**
- doccenter.vue el-pagination (line 427) has :total and :page-size=20 but no current-page binding and no @current-change; visibleFiles is rendered in full regardless of page, so paging does nothing.
- **[文档协作] 参与人选择为前端假数据,非真实组织/人员**
- create.vue 的选人弹窗候选人来自硬编码常量 people/depts(第11-12行 candidatePool),并非来自组织架构接口。功能可用(v-model、确认、增删均已接通 confirmPicker/removeParticipant),但人员数据非真实,参与人范围受限于 10 个写死姓名。
- **[文档协作] 无删除/归档/导出等文档生命周期操作**
- 列表页(list.vue)每行操作仅“打开/详情”(均调用 openDoc 打开只读抽屉),缺少删除、归档、导出、转交等常见文档管理操作。状态(编辑中/评审中/已定稿/已归档)仅为创建时下拉选项,列表中无状态流转动作。
- **[文化建设] 新闻/公告 - 子分类 (sub-category classification)**
- news.vue and notice.vue hardcode category to '新闻'/'公告' (the module discriminator only) and offer just 全部/置顶 tabs. 致远 classifies news/notices into sub-categories (newsCategories: 公司要闻/行业动态/党建工作/员工风采/通知速递 and noticeCategories: 行政通知/人事任免/制度发布/会议通知/放假安排/系统维护, both defined in mock.ts) - but the publish dialog has no sub-category picker and the list has no sub-category filter, so the '分类' dimension expected by 致远 is not reproduced.
- **[文化建设] 新闻/公告 - 发布范围 not persisted**
- notice.vue collects a 发布范围 (form.range, multi-select of 全体员工/部门, lines 77-83/180-184) but submitPublish (lines 84-111) never sends it to createAnnouncement (only category/title/content/author/top are passed). The visibility/scope selection is collected then silently dropped.
- **[报表中心] 报表管理 - 报表项均为系统固定聚合指标,非真正可管理的报表对象**
- manage.vue allRows 是 7 条硬编码的指标卡(RPT-FLOW-001 等),由 overview 字段填充。没有编辑、删除、收藏、权限/可见范围设置等报表管理动作,详情弹窗(el-dialog)的 '刷新数据'/'导出清单' 按钮是可用的但不针对单条报表做任何对象级管理。相对致远报表管理的报表对象 CRUD 能力为浅实现。
- **[报表中心] 报表分析 - 缺少时间/维度筛选**
- analysis.vue 顶部 report-analysis__filter 区只有静态标题 '综合运营概览' 和 '数据截至 {{updatedAt}}' 文本,没有时间区间/部门/维度下拉等筛选控件(无 v-model 绑定的筛选器)。图表为当前快照,无法按时间或维度钻取,弱于致远报表分析看板的筛选/钻取交互。
- **[HR管理] 信息项设置 - 拖拽排序为装饰且不落库**
- fields.vue 第154-158行的拖动手柄(Rank 图标)仅为静态图标,无 draggable/sortable 实现,提示文案(第191行)声称『拖动可调整顺序』但实际不可拖动。且所有 fields 为本地 reactive、无 API 持久化,刷新即还原。
- **[HR管理] 统计分析 - 无导出与筛选控件**
- stats.vue 概览卡片/部门分布/状态构成/部门明细均基于真实数据计算且渲染正确,但仅有『刷新』,无导出(Excel/打印)、无时间区间或部门维度筛选;相对致远统计分析功能略简,但核心分析非占位。
- **[应用定制平台] 流程设计器: 条件分支与节点流程为前端 mock,未与后端流程引擎双向同步**
- OaFlowDesigner.vue 与 OaFormDesigner.vue 顶部注释标明为纯前端 mocksave 仅 emit;最终经 appmgr publishTemplate 调 createTemplate 落库(此路径真实有效)。但设计器自身的条件分支/分组等高级编排是否被后端流程执行引擎完整消费、回读编辑既有内置模板流程的保真度,未在本模块内验证,存在轻度功能-引擎一致性风险。
- **[通讯录] 人员头像照片 (avatar photo)**
- 在 /Users/qiu/Desktop/ERP/ofbiz-framework/plugins/modern-ui/app/src/oa/OaContactsPage.vue 第273行,名片抽屉的 el-avatar 仅渲染姓名首字 currentInitial,不显示真实头像照片。致远名片通常含头像。OaUser 类型 (api/org.ts) 也无 avatar 字段。属增强项,非核心字段缺失。
- **[通讯录] 导出 / vCard / 名片导出**
- OaContactsPage.vue 无任何导出按钮(导出 Excel / 导出 vCard)。致远通讯录常见“导出”能力,但不在本次明确的预期范围(树+列表+详情)内。
- **[通讯录] 个人通讯录 / 外部联系人分组**
- OaContactsPage.vue 仅有“全部成员/在职/已停用”三个 tab(基于 enabled 状态),没有致远典型的“单位通讯录 / 个人通讯录 / 外部联系人”分组维度。属范围外增强,不影响所要求的组织架构+人员目录核心。