Commit Graph
70 Commits
Author SHA1 Message Date
chenxing 650665224c [ysch-flow] S2.1 修向导④条件查看按钮(P0,Vue3 render 形态)
Onboarding 向导④流程清单的「查看条件」入口断裂两处:Button 未从 view-ui-plus 导入,
且 render 用了 Vue2 的 { props: {...}, on: { click } } 形态——Vue3 h() 把它们当普通
prop 名传入,点击不绑、type/size 全丢,变量契约自查入口因此不可用(实测报告缺陷#2)。
改为 h(Button, { type, size, onClick }, () => 文本);同仓 AppSetting「查推送日志」列
同一写法残留一并修正。npm run build 绿,diff 仅涉事 2 文件 4 行。
2026-10-17 23:06:57 +08:00
chenxing 98ea069691 feat(onboarding): 接入向导五步页 + 配置生成器(议题二 P1)
build / build (push) Successful in 1m58s
把子应用接入从「人背文档 + 逐字对齐字符串」变成「向导引导 + 机器生成正确配置 + 每步可自检」。

- Onboarding.vue:五步(应用档案 / 工程接入 / 回调注册 / 流程编排 / 联调验收),步骤条可任意跳转不强制线性
- STEP② 配置生成器为核心:按「端点形态(平台验签式/X-Flw 式)× 接入场景(新接入/存量升级)× ① 的 context-path/bizType」实时生成 yh.flow-callback 块、Maven 依赖、FlowCallbackHandler 骨架。X-Flw 式追加「端点第二段非 oapi、必须显式 callback-url 直连」警示;无 ctx 时 base-path 整行注释。对齐规范 §7.2 推导式
- 前置条件清单把散落文档里的前置变成可勾选待办;Redis 公共组件与 trust-registry 两条高危静默断点红底强调
- STEP③ 登记检查:私网/开发机地址、base_path 漏填、与声明的 target 不一致逐条判定给修复建议;「发一条 flow.ping」复用 callbackProbe
- STEP④ 变量契约显性化:解析 contentJson 取 CONDITION 节点出边表达式,与已知变量(近 50 条办件 formData 聚合 + 内置 8 个,口径同编辑器)核对,引用从未出现的键即警示「运行时会挂起」
- STEP⑤ 六项自检 + 一键生成 markdown 自检报告(纯前端拼装不落库)

数据源全部复用已有接口(appList/regList/callbackProbe/defList/defGet/callbackLogs/adminInstances),零新增表、零新增写接口。路由 /admin/onboarding(modId 108,需 UserBase 配 app_module)。vite build 通过,产物已构建进 front/dist/。
2026-10-15 15:50:08 +08:00
chenxing 1369b103ee feat(condition): 条件路由变量契约收口 + 子应用对接健康度面板(议题一 P0/P1 + 议题二 P2)
build / build (push) Successful in 2m51s
议题一(条件路由体验收口):
- 编辑器动作入口上移顶栏与「保存草稿」同排,右栏「快捷入口」整块删除(流程图痛点 7)
- 发布期变量引用静态校验:validateModel 增加 knownVars 参数,出边表达式引用未在已知变量中的标识符给 warn 级提示。只提示不阻断——拼错与「运行时才有的动态变量」在静态期无法区分,宁可放过
- CONDITION 判断方式文案业务语言化:「服务(外部判断接口)/表达式」→「到达该节点时才能确定/提交时就已确定」,各补一行说明;syncFromNode 取值归一化逻辑未动,零兼容风险
- 内置 8 变量与表达式变量提取抽到 def-editor/model.ts 单一来源(EXPR_BUILTIN_VARS/extractExprVars/unknownExprVars),ConditionBox 与 ExprEvalModal 改为消费,去掉两份本地重复实现

议题二(子应用接入健康度):
- AppSetting.vue 新增 tab3「对接健康度」:每应用一行(评分色块/结论/六项检查 chips/结论说明),问题应用 bad>warn>ok 置顶;首次切入该 tab 才请求,避免进页面就多打一次聚合查询
- Callbacks.vue 新增 appKey 筛选框 + query.appKey 预填,承接健康度面板「查推送日志」跳转
- api 层新增 callbackHealth()

数据来源为已有资产(flw_callback_reg / flw_callback_log),零新增表。对齐《子应用接入流程中心规范.md》§4.2/§7 与《条件路由与子应用接入-痛点调研-20261014.md》。vite build --mode base 通过,产物已构建进 front/dist/。
2026-10-15 14:51:04 +08:00
chenxing 0542279636 feat(condition): 条件表达式内联变量 chips(议题一 P0)
编辑器出口表达式下展示可用变量(近期 50 条办件 formData 顶层键聚合去重截 40 + 内置,口径同调试弹窗),点击插入光标处;未知标识符内联提示疑似拼错(仅提示不拦截,去字符串/函数名/属性访问后比对)。EditorCtx 增 availableVars,index.vue 载入一次(拉取失败退化为仅内置,不阻塞编辑)。vite build:base 通过。
2026-10-14 18:18:42 +08:00
chenxing fbd428b913 chore: 实施前基线快照(条件路由/接入改造前)
表格加载去图形资产:删除 public/assets 下 loading.gif,.table-spin-load 改用 .ysch-spin(CSS 通道,随 --brand),TablePage/Alova/AlovaNew 三处同步。
2026-10-14 18:12:32 +08:00
chenxing 859210bf07 fix(def/ui): 「生效/在途」列 190→240——列内有 render(Tag 组件)时,用 innerText 克隆估宽会漏掉 Tag 自身的 padding/间距,实测两徽标并排真占 94+16+77=187px,+单元格内边距 36 需 ≥223,190 会换行成两行
build / build (push) Successful in 2m26s
2026-10-14 16:57:03 +08:00
chenxing 6998152c88 chore(ci): 空提交触发前端重建——上一次构建(Gitea task 1491, commit 26d9314)在 npm ci 阶段被并发任务杀死(exit 137):本仓与 aca-syllabu-front 的 build workflow 都用固定容器名 frontbuild,对方 08:33:39 的 docker rm -f frontbuild 把我的容器干掉(日志时间戳对齐)。代码零改动,仅重跑构建
build / build (push) Successful in 2m9s
2026-10-14 16:50:04 +08:00
chenxing 26d93148dc fix(def/ui): 子表列宽再校正——创建时间 150→160(实测该单元行盒=2 仍折行;同文案在主表「发布时间」160 下已证单行)、创建人 100→110(留长登录名余量);VERSIONS_TABLE_WIDTH 880→890
build / build (push) Failing after 39s
2026-10-14 16:32:48 +08:00
chenxing 070f2f5ee8 fix(def/ui): 列宽按实测校正(上线后复验发现 200 不够,guid 仍折行)——GUID 200→320(32 位 guid 单行实测最宽 265px + 单元格左右内边距 36px = 301)、编码 160→200(实测 155+36=191)、子表创建时间 140→150(实测 101+36=137)、生效/在途 230→190(实测 134+36=170,收紧);平铺态同步 GUID 320 / 编码 200
build / build (push) Successful in 2m27s
2026-10-14 16:24:08 +08:00
chenxing 8962dac7d2 fix(def/ui): 分组态列表六项样式——①固定列层容器 pointer-events:none(根因:fixed:right 固定层在展开行只渲染 visibility:hidden 占位格,命中测试落到其 <table> 上,吞掉子表「更多」等控件的 hover/click,表现为看得见点不动);②标题列定宽 260 + ellipsis + Tooltip(列上写 render 时 iView 内置 column.tooltip 不生效,故手挂 Tooltip;并补 .ivu-table-cell-ellipsis 内 Tooltip 两层包装降级 inline——否则省略号变硬裁切,无头 Edge 实测);③当前生效/在途 两徽标拆出独立列「生效/在途」(230);④GUID 列 130→200,32 位 guid 全显不再截 8 位;⑤主操作列 140→190(140 装不下「版本历史+编辑信息」138px 内容);⑥展开仅响应左侧箭头(Table on-expand,行内点击不再切换);另:子表「改动说明」压到 260+Tooltip,并给内层 Table 传 width=870,避免 iView 把展开行余宽摊回该列(顺带让子表右端不再压到固定条带下方)
build / build (push) Successful in 2m59s
2026-10-14 16:13:50 +08:00
chenxing 0a060ab22a feat: 审批节点发起时指派配置(开关/单选多选/必选)与转换无损
build / build (push) Successful in 5m34s
2026-10-13 12:05:22 +08:00
chenxing ec810afd14 fix(trace): 科室视图抄送行遮蔽——新增 utils/flowTrace.ts(collapseCcRows 按 nodeId#round 折叠 CC 行记 ccCount、ccActorText 科室显 deptName‖短码/其余显"抄送对象"、不回落姓名;user/缺省档原引用直返);TraceTimeline/InstanceBody 三视图接折叠与 CC 分支(时间线由组件内折叠、节点/列表走 displayTrace 防二次折叠);EmbedInstance 头部补流程 nodeSummary。真机三视图走查并入全流程重走 P2-E
build / build (push) Successful in 1m57s
2026-10-12 20:45:41 +08:00
chenxing e01ef87380 fix(def/ui): 验收审计补丁——调试弹窗内置变量口径与 chips 区分;分组态空 flowGuid 兜底
build / build (push) Successful in 1m56s
- ExprEvalModal:内置变量条 submitterId 改显真实 id(原用 submitterName 冒充,用户照抄进
  样例 JSON 会填错类型);可用变量 chips 区分内置变量(灰底,对齐原型 .chip.bt)并让手动模式
  同样提供内置键(原型 S5「内置变量同款可插」);chips 去重,避免 formData 键与内置键同名重复。
- Defs:分组视图空 flowGuid 行不再被整体丢弃,各自单列一行;openMap 改用合成 key(__noguid__{id})
  防止与其他行共用 "" 键互相牵连;GUID 列空值显示「—」。
- 验证:npm run build 通过(1m16s,产物含 Defs / ExprEvalModal chunk);
  npx tsc --noEmit 48 条与既有基线完全一致、本次改动文件 0 条。

来源:流程中心改造-验收审计报告-B2-B6-20261012.md §三.3c / §三.5
2026-10-12 18:03:34 +08:00
chenxing 94f263d489 feat(condition): 新建条件分支缺省翻转为表达式(EXPRESSION 主路径)——抽屉初值+createCondition 默认;SERVICE 分支补提示文案(仅实时业务数据场景使用,端点与登记由流程中心接入件 starter 代办);来源列注释订正 starter 名 2026-10-12 17:13:21 +08:00
chenxing adcdd1217e B4 补充:办件下拉给 Option 显式 label(#id 标题),filterable 搜索与选中回显不依赖槽内富文本 2026-10-12 17:09:33 +08:00
chenxing b96d3d6451 B4+B5 表达式调试三模式弹窗(共享组件)+ 编辑器出口内联试算
- 新增 views/flow/components/ExprEvalModal.vue(原型 S1-S5,宽 560→700):
  1) 从办件导入:adminInstances(page1,size50) 的 filterable Select(#id·bizType/bizId·标题·提交人·时间+状态Tag)、
     bizType distinct chips 筛选、选中即 formData 解析缩进填充(解析失败填原文+红字)、内置变量只读条
     (instanceId/instanceVersion/bizType/bizId/submitterId;nodeId/nodeName 提示按调试目标自填;schId 不展示)
  2) 从路由日志导入:detail(instanceId) 取 kind=ROUTE 行,表格 节点名/注册键/命中出口(空=未命中)/attempt/时间
     + 每行 rawResponse <pre>(>200 字截断、title 全量、无留痕显示「(无留痕)」);
     「载入该办件变量并复现」= 填 formData + 保留表达式再求值;无 ROUTE 行给空态文案
  3) 手动编写:原 textarea 语义保留 + 最近 50 条办件 formData 键聚合 chips(点击插光标处)+ 引导文案
  可用变量 chips 点击插入表达式光标(selectionStart/End,无焦点退化追加);求值仍走 /admin/router/eval,
  结果区四态文案(true/false/error/未求值)含线上行为说明与「宁挂起不误放行」口径
- Routers.vue:删旧内联求值弹窗(evalForm/evalResult/doEval),改挂 <ExprEvalModal v-model="exprVisible">
- ConditionBox.vue(B5/S6):EXPRESSION 模式出口表达式行右侧加「试算」小钮(@click.stop 不触发容器交互),
  带该出口表达式打开同一弹窗

注意:本提交连带纳入了并发会话在 Routers.vue 的 6 行「来源」列改动(regAppKey 自注册标识,
属 SERVICE 收口工作),非本批次内容,review 时请单独留意
2026-10-12 16:35:26 +08:00
chenxing dda7336323 B3-2 编辑器顶栏精简 + 底部状态栏退役(配 B3-1 面板,两步提交可单独回滚)
- 顶栏只留 返回/「流程编辑器」/状态 Tag + 右侧「保存草稿」(名称/编码/应用三个输入框从 hd-mid 迁走,
  双向同源仍是 model.name/model.code/appKey 同一 ref)
- 删 footer.ed-status:错误/警告汇总进右面板分区3,「保存仅生成草稿;发布校验以后端为准」并入分区2 提示行
- 顺带删 .hd-mid/.ed-status/.st-* 死样式;.ed-canvas 加 min-width:0(1360px 档不出横向滚动)

验证:npm run build 通过
2026-10-12 16:21:54 +08:00
chenxing f0ec500348 B3-1 编辑器右信息面板 + 校验清单定位(先加面板,保存链路不动)
- index.vue:画布与面板包进 .ed-body(flex row),新增 aside.ed-info 五分区——
  流程信息(名称/编码/归属应用,与画布同源同一 ref,编码沿用 !!editId||!!baseGuid 禁用)/
  状态与版本(状态 Tag + v 版本号 + flowGuid 等宽 + 复制,新建态显示「保存后生成」)/
  校验问题清单(错误在前警告在后,项内 path+msg)/ 结构统计(walkItems 递归四类计数)/
  快捷入口(流程设置/源码/图示预览,:disabled=!editId 同现状)
- sourceFlowGuid ref:load() 里 defGet 后取 d.flowGuid,新建态空串
- locateIssue:清单项点击 scrollIntoView 居中 + .nd-locate 高亮 2.8s;三张卡片根元素加 :id="'nd-'+node.uid",
  uid 为空的清单项 class=fix 不可点;高亮样式走 :deep(卡片在子组件内)
- 画布左对齐:.ed-canvas align-items center→flex-start

验证:npm run build 通过;npx tsc --noEmit 48 条=基线无新增;convert 往返 ALL PASS
2026-10-12 16:19:51 +08:00
chenxing 5cf1ce8d1f B2 议题二前端:版本历史补全 + 升版本改动说明 + 列表分组 + 在途可见
- Defs.vue 版本历史弹窗 640→820,补 创建人/创建时间/改动说明 三列(存量说明显示「(未填写)」)
- def-editor 升版本保存弹「本次改动说明(可跳过)」:doSave 入口设闸(!editId&&baseGuid 或
  editId&&sourceStatus!==0),主体抽成 submitSave(changeLog) 防递归;常用类型 chips 分号追加,
  500 字上限;跳过与填写两条路径都放行并按说明有无区分 toast;草稿直改不弹不传
- Defs.vue 列表默认分组态(同 flowGuid 折叠一行,代表行=已发布最高版,无已发布标「无生效版」),
  展开行复用 rowActions;可切「显示全部版本」回现状平铺
- 在途(议题二④):defList 落位后批量取 distinct flowGuid → 新接口 defInflight,
  分组行/平铺 GUID 旁展示「在途 N 件」(0 也展示,接口失败降级「—」);停用确认 N>0 追加在途文案
- flow.ts:defSave 加 changeLog 入参、新增 defInflight(未跑 api:gen,按方案手工改)

验证:npm run build 通过;vue-tsc 1.8.27 与 TS 5.9.3 不兼容无法作门禁(另记)
2026-10-12 16:14:32 +08:00
chenxing ecd082bb99 fix(def-editor): 空出口分支(直接通过)往返支持——解析不再造无审批人占位卡(曾致打开即报"未选择科室映射"且保存凭空加节点改语义);序列化空分支=起点→汇合点命名+条件直连边(Tail 携带出口属性);校验空分支降为 warn(并行分支保持 error:后端禁 SPLIT 直连 JOIN);ConditionBox 空分支渲染"直达汇合点"提示。convert 往返 64/64(新增空分支/空泳道 6 例+修正 1 处过期负例文案)
build / build (push) Successful in 1m53s
2026-10-12 11:29:07 +08:00
chenxing 2a1ec48b25 feat(workbench): 四页签加「按应用筛选」(appKey)+页签重排(我提交的→3、抄送我的→4)
build / build (push) Successful in 1m52s
列宽/展示:待办办件标题 minWidth 220→160、四页签时间列 170→190、已办意见列
ellipsis+tooltip(长意见单行截断 hover 看全文);应用管理停用态 Tag 改用 iView
默认样式(原 gray 非预设色)。应用筛选下拉数据源同流程定义页(flw_app enabled=1)。

门禁:vite build ✓;vue-tsc 本机不可用(TS 5.9.3 与 vue-tsc 1.8.27 不兼容)
2026-10-12 11:25:58 +08:00
chenxing 955c1e55f6 feat(def): 归属应用必填化——编辑器保存校验+必选标记,列表未归属标记
build / build (push) Successful in 2m33s
配合后端 save 必填化(2026-10-12 拍板):
- def-editor:保存前校验归属应用非空(新建必选;升版本/存量草稿继承源行,
  源行未归属必须补选),头部 Select 改必选样式
- Defs.vue:应用列存量 NULL 行显示「未归属」橙色 Tag;「编辑信息」弹窗
  归属应用改必填(原地补填通道)
2026-10-12 10:44:17 +08:00
chenxing 9f80630db3 fix(workbench): 待办列「提交人」显示真实提交人
build / build (push) Successful in 1m59s
- 列头本为「提交人」,但 render 回落 assigneeName ⇒ 每行显示的都是当前办理人(=用户自己)
- 去掉错误兜底改取 submitterName(后端本次补齐该字段),空值显示 "-"
2026-10-12 10:27:39 +08:00
chenxing fdc661f509 feat(workbench): 我的办件并入工作台为「我提交的」页签
build / build (push) Successful in 1m58s
- Workbench.vue 新增第4个页签「我提交的」,迁移原 MyInstances 列表(状态筛选/业务类型/详情·撤回·催办),惰性加载,默认页签仍为我的待办
- 删除独立路由 /my (modId 101) 及 MyInstances.vue
- 提示:UserBase 侧 app_module 的 modId=101(我的办件)需另行清理
2026-10-12 10:13:31 +08:00
chenxing ff1c50931a feat(callback/app): 回调管理增强——注册操作列加「探测」(width 140→240 修复挤压溢出)+探测结果弹窗;推送日志加详情抽屉(完整 payload pretty JSON+响应摘要+重试链);应用管理加搜索框+回调注册数列+停用二次确认
build / build (push) Successful in 2m1s
2026-10-11 22:40:56 +08:00
chenxing 8506ad80d7 feat(detail): 列表详情改为抽屉弹出+业务信息只认 summaryFields
build / build (push) Successful in 3m11s
- 新增 InstanceDrawer.vue(Drawer 740px + InstanceBody full 口径,非 iframe)
- Workbench/MyInstances/admin.Instances 详情按钮改为打开抽屉
- InstanceBody 移除 snapshotRows 回落,业务信息只显示子应用传递的
  summaryFields(中文 label),无值整块隐藏不再平铺英文 key
2026-10-11 12:01:43 +08:00
chenxing ecd4b9f4ea refactor(detail): 办件详情与嵌入页整合共用 InstanceBody——详情页升级三视图+流程信息五项+表单数据,嵌入页表现不变
build / build (push) Successful in 2m55s
2026-10-11 11:24:09 +08:00
chenxing a998e455d2 fix(ui): 用户验收反馈 R2——单卡片骨架+实测高度对齐 Notice、应用管理启用/停用、Tag 真组件、科室行 deptKey、成员多选、顶栏去房子图标钮
build / build (push) Successful in 4m4s
2026-10-10 22:42:58 +08:00
chenxing affb1bdeb7 fix(ui): tab 改线型对齐 Notice;操作列 when→disabledWhen 置灰保位(用户验收反馈 R1)
build / build (push) Successful in 2m8s
- 工作台/回调管理两页 Tabs 去 type=card,改通道线型 .tabs-panel(对齐 Notice)
- 7 页 14 处按行隐藏动作改 disabledWhen 置灰保位(互斥钮恒一灰一活),
  规范 §5.2 新增按钮位置稳定性红线:按行变化一律 disabledWhen,when 仅限行无关全局模式
2026-10-10 21:47:30 +08:00
chenxing 43753f4f59 refactor(theme): A 类主题通道接入+本地样式回收、操作列统一 actionColumn、顶栏三态头像
build / build (push) Successful in 2m9s
- P1 通道:view-ui-plus 锁 1.3.24(A 类 loader + vite /static dev 代理核验,五档/断源降级走查)
- P2 回收:删本地 layout.css/icons.css(+bak) 并清 main.ts import;骨架六类对齐 + 品牌色 var(--brand) 化;index CSS 779→393kB
- P3 操作列:新增 utils/tableActions.ts(同构 UserBase,7 函数+2 表,无 AUTO_MODE);7 页迁 actionColumn text 形态;旧 operatingHandle/operatingTextHandle 薄封装保留、签名不变
- P4 外观:接入三态头像 avatar.ts+UserAvatar.vue(同步自 YschTheme),顶栏裸 img 替换;外观三键红线零写
- 失效注释订正(layout.vue/def-editor)
2026-10-10 21:24:39 +08:00
chenxing ed5f818c1a feat(dept): 应用设置-科室管理 tab(组+成员维护+一键拉取);办理人映射页下线
build / build (push) Successful in 2m3s
- AppSetting tab2:科室表格(成员维护 Modal 复用 UserSelectInput/改名/停启用/删除)+ 拉取预览确认导入
- 编辑器科室下拉/校验数据源切 deptList(停用科室不进下拉);Maps.vue 与 104 路由删除
- flow.ts:dept 系列 API;map 系列 CRUD 删除(保留 mapLookupUser 选人检索)
2026-10-10 19:48:00 +08:00
chenxing f835965e29 feat(def): 流程定义列表增「编辑信息」弹窗(原地改名称/归属应用)+ 编辑器非草稿进入提示
- 弹窗限 name+appKey(当前 appKey 不在启用集时兜底选项提示);保存后 version 不变
- 编辑器打开已发布/停用时提示:结构改动将升版本,仅改属性请用「编辑信息」
2026-10-10 19:23:45 +08:00
chenxing e8f9af534b feat(app): 应用设置页(107)+ 流程定义/编辑器应用下拉改读白名单显示应用名
- AppSetting.vue:tab1 应用管理(学校池同步说明+开关 i-switch);tab2 科室管理占位(Part E)
- Defs.vue 筛选下拉与表格应用列显示 appName;编辑器归属应用下拉去 allow-create、限启用集合
- flow.ts 增 appList/appEnable(defAppKeys 保留 deprecated)
2026-10-10 19:17:39 +08:00
chenxing acbf601e7a feat(condition): 编辑器支持表达式判断——判断方式切换 + 出口条件就地编辑 + 表达式调试
- ConditionNode 增 judgeMode/conditions(SERVICE 缺省,旧定义天然兼容);DefEdgeJson/DefNodeJson 透传 condition/judgeMode
- convert.ts 双向透传:CONDITION 分支首边带 condition,序列化顺序=分支顺序(求值优先级保序)
- ConditionDrawer 判断方式 Radio(服务/表达式);ConditionBox 表达式模式分支头部条件输入(序号即优先级)
- validate.ts 镜像校验:表达式模式每出口条件必填(语法由后端发布期拦)
- Routers 页加「表达式调试」Modal(/admin/router/eval,与线上同一求值核心)
- addBranch/removeBranch 同步维护 conditions 占位
2026-10-10 18:52:54 +08:00
chenxing a4cc8ea2fa fix(flow-embed): 口径切换器改「人员视图/科室视图」,与视图切换器同排常驻
build / build (push) Successful in 1m57s
- 文案:按人员/按科室 → 人员视图/科室视图
- 排列(方案 A):口径切换器移入 .embed-sec-h 标题行、紧跟视图切换器
  (.embed-mode-seg margin-left:14px,与父级 10px gap 叠加为 24px),不再独立成行右对齐
- 常驻修复:原在 <template v-if="viewMode==='node'"> 内 ⇒ 切到时间线/列表即消失,
  但口径对三视图都生效(时间线走 :mode、列表办理人列走 recordActor)⇒ 移出模板、三视图常驻
- CSS:删除已无引用的 .embed-mode-row;新增 .embed-mode-seg 并显式 font-weight:normal
  (同 .embed-view-seg:落在 .embed-sec-h(600) 内会继承粗体)
- 版式宽 740 下实测:标题 68 + 视图组 187 + 口径组 156 + 间隔 24 = 435 < 可用 700,不溢出
2026-10-10 17:56:14 +08:00
chenxing 8bd8fcc57a fix(flow-embed): 视图切换器字重对齐——不再继承 .embed-sec-h 的粗体
build / build (push) Successful in 1m53s
- 根因:.embed-sec-h{font-size:14px;font-weight:600} 会被其内的 RadioGroup 继承,
  「按节点/时间线/列表」呈粗体;而下方「按人员/按科室」在 .embed-mode-row 内为常规 ⇒ 两处
  同为 iView small button group 却看着不一致。管理面同款控件早有此写法(InstanceDetail.vue:183、
  TaskHandle.vue:307 的 .trace-mode{font-weight:normal}),嵌入页漏了这条覆盖
- 改法:.embed-view-seg 显式 font-weight:normal,按「按人员/按科室」那档统一
- 像素取证(用户截图 867x466 @DPR1.25):两盒几何一致(「按节点」与「按人员」同宽 66.4 CSS、
  高 30px),配色一致(活动态边框+文字 #0d9488、非活动文字 #515a6e、非活动边框 #dcdee2);
  唯一差异是文字像素密度 2.1~3.1 倍(按节点 249 : 按人员 79;时间线 245 : 按科室 117)⇒ 纯字重差异
2026-10-10 17:39:30 +08:00
chenxing 32b01f9bf3 fix(flow-embed): 嵌入页旁路全局 body min-width——740 抽屉里整体右偏/右侧被裁
build / build (push) Successful in 2m0s
- App.vue:/embed/** 路由下给 body 置内联 min-width:0(内联优先级高于样式表),
  离开嵌入路由 removeProperty 回落到原值;不动全局样式表,管理面零影响
- 根因:isEmbed 只旁路了组件壳(layout / base-wrap-main),管不到全局 CSS——
  assets/styles/base/_base.scss:13 的 body{min-width:1200px} 让 740px 的 iframe
  仍按 ≥1200px 排版,表现为可见区里所有元素整体右偏、右侧被裁
- 实测(截图 1910x873,DPR 1.25):.diagram-img 外框左边 1540px=1232 CSS,
  按 1200 布局反推 1237;开始按钮中心 1749px=1399 CSS,按 1200 反推 1400;
  按 740 布局应为 1000 / 370 —— 两条独立测算都落在 6px 内,1200 布局成立
2026-10-10 16:23:41 +08:00
chenxing c189ad70a7 feat(flow-embed): 办件进度嵌入页 v2.4 改版——三视图 + 折叠块 + 业务摘要
build / build (push) Successful in 2m11s
- 「办理进度」三视图(按节点默认 / 时间线 / 列表),节点内办理人保持后端顺序
- 「流程示意图」「业务信息」各为折叠块、默认收缩;业务信息只渲染 bizSnapshot.summaryFields,无值整块不渲染
- 删「业务表单数据」Card 与 bizSnapshot/formDataJson 平铺
- 办理人行动作用页面内展示层映射(已提交/已同意/待审核…),不改全站共用的 TASK_STATUS
- TraceTimeline 增可选 statusText prop(不传=原行为,管理面零影响)
2026-10-10 14:56:37 +08:00
chenxing 570eec74ff feat(def): 流程定义按应用筛选——列表应用列+筛选下拉、编辑器归属应用选择
build / build (push) Successful in 5m37s
- Defs.vue:工具栏"按应用筛选"下拉(/def/appkeys 数据源,clearable/filterable)+ 应用列(空显示 -)
- 编辑器:头部"应用"Select(clearable/filterable/allow-create,可手输新值),载入回显、保存透传 appKey
- defList 支持 appKey 可选参数、新增 defAppKeys;新参数全部可选,与后端部署顺序无依赖
2026-10-10 14:34:33 +08:00
chenxing 1a07c2f39a fix(diagram): 嵌入页补滚动容器(裸渲染页被全局 body overflow:hidden 裁剪无滚动条)+ 流程图 PNG 按逻辑尺寸显示(SCALE=2 图按自然尺寸渲染整体放大一倍,四处 PNG 消费点统一走 fitDiagram)
build / build (push) Successful in 3m46s
2026-10-09 22:09:48 +08:00
chenxing 053eb0047b feat(diagram): 前端竖排镜像——edgePath/标签锚点方向自适应(发布顺序无关)、名单 2 行 tspan+等N人、补 instance 图例、auto-fit 与 375px 适配
build / build (push) Successful in 3m30s
2026-10-09 19:42:51 +08:00
chenxing 8b02f05494 revert(顶栏): 移除 LOGO 文字显示(用户反馈子应用不展示,仅门户展示)(LOGO文字与主题JSON化增补)
build / build (push) Successful in 1m58s
2026-10-09 12:29:44 +08:00
chenxing ec5f73a81b fix(顶栏): LOGO 文字字号对齐应用名层级(19px/700)(LOGO文字与主题JSON化增补)
build / build (push) Successful in 2m51s
2026-10-09 11:56:46 +08:00
chenxing ae39eed665 feat(顶栏): LOGO 徽标旁显示平台文字(yh-logo-text 键接入)(LOGO文字与主题JSON化)
build / build (push) Failing after 58s
2026-10-09 10:36:26 +08:00
chenxing dadfabe036 外观偏好异步补齐C:接 A 类主题通道 loader + 顶栏云海 logo 徽标 + 平台键 yh-logo-url
build / build (push) Successful in 2m7s
- index.html env-config 引导后插入 A 类免插件 loader(svc-hall cf11ef8 样板:staticHost > baseHost > %VITE_THEME_HOST% 仅 dev > 同源 /static,document.write parser-blocking,纯叠加)
- vite.config 补 /static dev 代理(YH_THEME_PROXY_TARGET 可覆盖,默认线上通道)
- header-container 首位插入 .logo-badge(结构与 Notice 对齐,皮肤由通道 base.layout.css 提供);拷贝平台 yunhai-logo.svg 资产兜底
- localStorage["yh-logo-url"] 优先,@error 回落兜底;mounted 读一次 + 监听 yh-appearance-updated 即时切换
2026-10-08 18:53:04 +08:00
chenxing 5b83fd7144 feat(embed): 嵌入页新增审批记录完整流水表
build / build (push) Successful in 3m42s
2026-10-03 23:52:11 +08:00
chenxing d3a2b08ba2 feat(embed): 新增办件进度嵌入页与无鉴权旁路 2026-10-03 16:51:29 +08:00
chenxing 79866a05e1 fix(flow-editor): NodeList 插入的 OutletLanes 独立 v-if,修被截断的 NotifyCard 条件链(浏览器冒烟发现:无出口审批落进 ConditionBox v-else 分支致 vnode 崩溃) 2026-10-03 16:12:00 +08:00
chenxing 138cb36800 chore(flow-editor)!: 移除 bpmn-js 依赖与画布文件 2026-10-03 15:13:35 +08:00
chenxing ffa196954e refactor(flow-editor)!: 删除画布模式,卡片树成为唯一编辑形态 2026-10-03 14:13:37 +08:00
chenxing 656c0d1bf5 feat(flow-editor): 多出口泳道 UI(抽屉开关+出口路由容器+分支增删/恢复单出口) 2026-10-03 14:09:02 +08:00
chenxing 16717a0867 feat(flow-editor): 多出口审批实时校验(非空唯一/数量上限/泳道递归) 2026-10-03 14:06:19 +08:00
chenxing 2dd7135753 feat(flow-editor): convert 双向支持多出口审批(命名出边⇄出口泳道) 2026-10-03 14:05:39 +08:00
chenxing e057e3bd8b feat(flow-editor): ApprovalNode 增多出口 outlets/branches,遍历链路打通 2026-10-03 13:59:20 +08:00
chenxing 678cb96801 feat(flow-editor): 默认卡片模式,画布降级为高级入口 2026-10-03 13:58:35 +08:00
chenxing 2c65e5adc9 feat(flow): 图示页砍画布视图档,布局改后端 positions 单源 2026-10-03 13:57:49 +08:00
chenxing e30e7ab665 feat(admin): 抄送(NOTIFY)与条件分支(CONDITION)全栈接入编辑器/轨迹/管理面
build / build (push) Successful in 1m55s
NOTIFY(2026-09-23):编辑器抄送卡片+抽屉+画布 bpmn:ServiceTask 映射、工作台「抄送我的」页签、轨迹 kind=CC 行、示意图青框卡片
CONDITION(2026-09-24):ConditionBox 互斥分支容器(分支列出口名就地编辑、无 JOIN 语义分支尾隐式汇合)、ConditionDrawer 判断服务下拉(flw_router)、convert 双向序列化(CONDITION+命名出边、uid+c 尾缀往返收敛)、validate 镜像后端口径、画布 bpmn:ExclusiveGateway 映射、轨迹「系统判断→出口」行(失败挂起提示)、示意图紫菱形(SVG 与服务端 PNG 同配色)、管理面 flw_router 维护页(/admin/routers)与办件记录「重跑路由」入口
convert 往返 54 项全过、npm run build 通过
2026-09-24 01:19:15 +08:00
chenxing cdf04f0930 feat(ui): 应用页规范全量重构 + 工作台与流程轨迹优化
build / build (push) Successful in 3m17s
应用页规范(bsch)重构:
- 6 个列表页迁规范骨架: page-wrapper/tabs-wrapper + search-wrap 搜索区(关键字 200px 即输即搜, 去查询按钮) + link-table table-bottom-box 定高表格 + page-panel 分页栏
- 分页列表统一接 TablePageAlovaNew(页长 [10,20,30,40]/customPageCount 记忆/增删智能翻页); dataApi 须返回 Method, 调 .send() 会导致表格静默空数据
- 操作列统一图标式 operatingHandle(Tooltip+fixed right 居中); 各列表补序号列; 危险操作统一 MyConfirm 二次确认
- 弹窗表单必填红星 + 统一提示「请填写红色星号内容!」
- TablePageAlovaNew 补页长记忆与重载后清空勾选; 新增 src/types OperatorEnum

工作台与流程轨迹优化:
- 已办列表去重: 每办件一行, doneCount>1 显示「共办理 N 次」标签
- 新增 TraceTimeline 轨迹时间流(时间升序/kind/轮次, 按人员/科室切换写回 URL), 接入详情/办理页
- 新增流程源码只读抽屉 SourceDrawer, 接入定义列表与图示页
- 办理人映射/流程定义新增「启用」回路(/admin/map/enable, /admin/def/enable)
- 图示视图口径统一 dept/user 两档, 缺省人员视图; 状态列 Tag 色映射统一导出
2026-09-18 16:52:40 +08:00
chenxing 0083246039 fix(ui): 配置审批节点·多人审批方式「或签」置前为默认选项(新建节点默认或签已在上一提交,仅调整展示顺序)
build / build (push) Successful in 2m8s
2026-09-17 14:58:22 +08:00
chenxing b76c419a6f feat(admin): 画布↔卡片数据打通——卡片树为唯一数据源(uid 即 contentJson 节点 id, 画布=contentJson 投影/反解); 多人审批默认或签; 选人弹窗换 /admin/user/teacherTree 教师树; 示意图页三视图(示意图/画布视图/进度图PNG)
build / build (push) Successful in 2m3s
2026-09-17 14:52:55 +08:00
chenxing f9d52d2f5d fix(ui): 流程编辑器补引 bpmn-js/diagram-js CSS——连线黑条、锚点黑点外露、左侧调色板不可见
build / build (push) Successful in 2m0s
2026-09-17 11:33:30 +08:00
chenxing 2e591e7a54 feat(admin): 选人组件接入——UserCheckModal 加单选模式+UserSelectInput 单选封装;映射办理人/审批节点指定用户弃手输 ID 改弹窗选人 (/admin/user/tree);删休眠 UserCheckInput 死代码
build / build (push) Successful in 1m56s
2026-09-17 11:09:53 +08:00
chenxing 07275c6e3d fix(ui): 流程编辑器载图报 no diagram to display——minimalXml 补空 BPMNDiagram/BPMNPlane DI 段(新建/编辑载图均受影响)
build / build (push) Failing after 56s
2026-09-17 11:09:08 +08:00
chenxing 32116b7363 fix(ui): 详情页内嵌流程图 img 补 serviceHost 前缀(/{ctx}/front/ 子路径部署裸 /api 404)
build / build (push) Successful in 1m54s
2026-09-17 01:46:58 +08:00
chenxing 429a7f9152 feat(ui): 详情页父子导航/列表链接按钮/办件详情内嵌流程图(办件进度抽屉数据源就绪)
build / build (push) Successful in 3m6s
2026-09-17 01:03:59 +08:00
chenxing e52c4324f6 feat: 流程编辑器 bpmn-js 画布模式 + 引擎多出口/退回/移交/或签前端接线
build / build (push) Successful in 4m6s
- def-editor 新增画布模式(默认):bpmn-js 内存画布(精简 palette/汉化/撤销重做/缩放/出口命名/导出 BPMN),
  toBpmn/fromBpmn 双向序列化,contentJson 仍为持久格式(+layout 坐标);卡片模式保留回退
- 新增 utils/flowLayout.ts 分层布局(设计器与查看器共用)
- TaskHandle:多出口节点出口选择下拉;退回/移交按钮与弹窗;轨迹显示已退回/已移交及所选出口
- FlowDiagram:优先使用保存坐标;边画出口名标签;办件状态着色/当前节点高亮
- api/flow:approve 带 edgeName,新增 returnBack/transfer
2026-09-16 22:22:26 +08:00
chenxing 842a4cfb14 feat: 办理人映射页一键拉取教师组(预览确认+批量导入)+ 流程编辑器存量
build / build (push) Successful in 2m6s
- Maps.vue:一键拉取教师组按钮 + 预览弹窗(科室/成员明细)+ 确认导入
- flow.ts:mapGroupPreview/mapImportGroups API
- 含流程编辑器(def-editor)、路由 catch-all、示意图入口存量
2026-09-16 01:21:10 +08:00
chenxing 670988816c fix(api): 修正 POST 请求体丢失致 def/save 报 body missing
build / build (push) Successful in 3m17s
alova 的 Method 请求体是构造函数第 5 个参数(instance.data),不是 config 上的键。
原 post() 把 body 塞进 config,被适配器静默忽略,POST 恒发空 body,
后端 @RequestBody 直接抛 HttpMessageNotReadableException: Required request body is missing。

受影响的接口(同一 helper):
- def/save、map/save、callback/repush:一律 400 Required request body is missing
- task/reject:opinion 送不到,而 FlowTaskService 强制要求非空,拒绝必然失败
- task/approve:请求成功但审批意见被静默丢弃

同时:
- Defs.vue 保存时回传 baseGuid,否则「升版本」会另起流程线而非同线升版本
- 补上调用方已在使用但 FlowApi 未定义的 callbackHung / callbackMarkDead

验证:本地后端实测 def/save 带 body 返回 code=0(新建草稿、编辑草稿、
baseGuid 升版本 version+1 且 flowGuid 不变);alova 运行时对照确认
config.body 与 config.data 均发不出 body,仅第 5 参有效。
2026-09-15 19:04:46 +08:00
chenxing 2969d235e4 docs(router): 更新路由表注释——菜单改由 UserBase app_module 下发
build / build (push) Successful in 2m24s
后端 GetUserMod 已不再返回硬编码 MENUS(改为平台下发模块树),本文件头注释仍写着
「菜单不接 app_module、modId 为本应用内部约定(与 FlowBaseController.MENUS 同源)」,
已失效。改为写明两处新的对齐约束:① path 必须与 app_module.path 逐字一致(layout 优先
按 path 匹配高亮,modId 仅兜底);② meta.modId = 对应 app_module.custom_id(后端映射时
modId 取 custom_id)。路由表本身零改动。
2026-09-15 18:44:30 +08:00
chenxing 90db00cf16 feat: 提交流程中心前端代码
build / build (push) Successful in 3m21s
Vue3 + Vite + view-ui-plus 前端源码,含流程工作台、实例详情、
任务处理、管理端(定义/实例/映射/回调)等页面。
保留远程 .gitea/workflows/build.yml CI 配置。
2026-09-15 10:42:45 +08:00