Commit Graph
10 Commits
Author SHA1 Message Date
chenxing 66bb272004 feat(p91): 我的填写新增「可填写」视图——会话菜单树推导的填报入口列表
build / build (push) Successful in 1m48s
- routes.ts 增 /my/fillable(子页面路由不占模块行不进导航,手册 §2.2 注记)。
- My.vue 三视图化:Tab 增「可填写」(居首);数据源=store.modules(App.vue
  已拉的 GetUserMod 原始树)经 buildNavTree+flattenNav 同一套解析(与左侧
  导航同口径,含 menuRoute 的 /f/{code} 修复),按 page 形如 /f/ 挑填报行并
  去重;**不按角色过滤**——树里有什么就是什么,授权语义在后端(T8 红线同源)。
- 卡片列表:菜单名+寻址 path+「进入填报」router.push(page);空态文案引导
  找管理员配 /f/{code} 模块行并授权。
- 该视图纯前端零请求(答卷两视图行为不变)。

验证:vue-tsc --noEmit 干净;vite build 通过。
2026-10-15 23:42:51 +08:00
chenxing 79c98e4280 feat(p89+p90): 复制表单链接 + 设计器整表预览
build / build (push) Failing after 32s
P89 复制填报链接(旧系统先例对齐:Cms AttachmentManage 的 copyToClipboard
+ 文案「链接已复制」;svc-hall 同款 execCommand 兜底):
- 新增 utils/fillLink.ts:buildFillLink 从当前地址推导部署根(生产
  /form-center/front/、本地 dev=/),hash 路由 query 进 hash(#/f/{code}?appCode=),
  中心表单不带 appCode;copyToClipboard=navigator.clipboard 优先 +
  临时 textarea+execCommand 兜底,双失败亮链接提示手动复制不静默。
- Forms.vue 行操作「复制链接」文字链(P51 形态,收「更多」逻辑不动);
  FormDesigner 头部「复制链接」按钮(草稿态可复制,发布后链接即生效)。

P90 设计器整表预览:
- 新增 components/designer/PreviewModal.vue:全屏 Modal 按填报视角渲染当前
  画布内容(含未保存改动);控件件与填报页同源(fieldWidget pc),选项解析
  与 DesignerCanvas.resolvedOptions 同规则(inline 直用/字典引用展开,字典
  缺域显式降级);必填红星/占位/约束 tip 同 Fill.vue 位;值容器本地可试填,
  不校验不提交;locked 只读态也可用;空分组/未知类型显式空态。
- FormDesigner 头部「预览」按钮。

验证:vue-tsc --noEmit 干净;vite build 通过。
2026-10-15 23:42:25 +08:00
chenxing 82a9801ac6 fix(p88-fill): 填报页文本类字段把 InputEvent 存进值 + 壳内卡片收缩成窄条
build / build (push) Successful in 1m47s
- [object InputEvent]:text/textarea/phone 三个控件在 view-ui-plus Input 上
  监听 @input——该组件 emits 表里没有 input(源码取证:on-*/update:modelValue),
  监听器穿透到根元素收原生 InputEvent,事件对象被当作字段值写入答卷,
  提交即被后端值类型校验拒(「字段「单行文本」必须是字符串」)。
  值通道改 @update:model-value;其余六类控件走 @on-change 取值本就正确未动。
- 窄卡:base.layout.css 把 .yh-fill 定为纵向 flex 卡片模型,flex 子项水平
  margin:auto 放弃 stretch 收缩到内容宽(~300px)。Fill 卡片改 width:100% +
  max-width:800px + align-self:center,底色/边框/外距交还平台卡片规则;
  同叶删掉 min-height:100vh(壳内双滚动来源),嵌入态 fill-plain 不受影响。
- 验证:view-ui-plus 源码 emits 表逐控件核对;vue-tsc + vite build 双绿。
2026-10-15 21:24:47 +08:00
chenxing f630c3aa0f fix(p87-menu): 填报模块行 /f/{code} 解析失败致菜单点击报「未配置有效页面路径」
build / build (push) Successful in 1m47s
- 根因:resolveMenuPage 的 ROUTE_PATHS 构建时排除带参数路由(含 : ),
  /f/:code 永远不在精确匹配集;填报行的文档形态 path=/f/{code}
  (方案 §6.2 / H2 登记脚本)任何写法都解析不出页面,点击只弹告警。
  T8 快应用桩的 /f/drill-honour 行同样失败,演练轮未点过该行未暴露。
- 修复:matchRoute 增补第 3 判据——形态识别 /f/{code}(code 字符集同表单
  code:字母/数字/下划线/中划线),ctx 前缀剥除后复用同一条链;命中原样
  交回由注册的 /f/:code 吃参数,code 大小写即表单身份不归一化。
- 附带生效面:layout 侧边栏填报行可点;AppContext 单表单直落
  (isSingleForm 判 navItems[0].page 形如 /f/)与轻导航填报跳转恢复可用。
- 验证:esbuild 打包真实模块跑断言 15/0(四种配置形态 + 六项回归 +
  四项仍须拒绝形态);vue-tsc --noEmit 干净、vite build 通过。
2026-10-15 21:03:31 +08:00
chenxing d8f1a1fbfa feat(t10-admin): 管理员体系前端——应用设置双 tab+单表单管理员+选人组件移植
build / build (push) Successful in 3m8s
- AppSettings.vue 应用设置页(基础/字典两 tab);修复 P86:Tabs 写 :value 而受控 prop 是 modelValue,致 ?tab=dicts 深链静默失效,改后深链实拍生效
- UserCheckModal.vue 自 notice 移植(view-ui-plus+ztree,sources 注入式数据源);public/libs 收录 jquery+ztree 本地件(index.html 引用)
- api/module/admin.ts + mock/adminapi.ts + types/admin.ts;AdminListPanel/FormAdminModal 组件
- routes/menuNav/menuRoute/modulePerms 适配管理员菜单与权限位;tree-icon 图标资源
2026-10-15 20:25:39 +08:00
chenxing 14d45f7e3c feat(t9): P76 导出锚点判树修正 + P77 应用内详情形态 + 观察项①勾选回填 + 演练桩
build / build (push) Successful in 3m17s
P76(T8 验收遗留):快应用上下文的导出按钮此前恒按中心会话树判"导出"锚点
(Data.vue exportable 读 store.modules),锚点判定不生效(fail-closed 方向,
有授权也不画按钮)。本轮把 AppContext 拉到的**目标应用树**经 modules prop 下传,
Data.vue 的权限判据改为 permsTree(app=应用树 / center=会话树),canExport 纯函数不动。
Stats.vue 未接:本页无锚点判定也无 store.modules 引用,加 prop 是死代码(差异记 T9 报告)。

P77(T8 验收遗留):应用上下文内的"详情"不再跳回中心路由 /admin/data/detail。
形态二选一取**子路由 /app/:appCode/data/detail**(同一个 AnswerDetail.vue):
地址保留 uuid 可深链/刷新、详情页只有一份实现、back() 本就按 app 回应用数据视图,
写 parentPath 反而造假(menuRoute 的 ROUTE_PATHS 只收静态 path,应用段导航在页内轻导航)。
goDetail 按 props.context 分派;back() 改读 route.params.appCode,撤掉 query.app 双轨。

观察项①(T8 验收记档):确认跨触底页勾选**会被清空**——view-ui-plus 的 data 监听器
用 makeObjBaseData 重建 objData,_isChecked 只认行上的 _checked(点选不回写行),
整组替换后勾选视觉与 getSelection 归零而"已选 N 条"仍累计。新增 withSelectionState()
在 reload/loadMore 两条装载路径按 selected 回填 _checked,selected 为唯一事实源。

演练桩(本地件,dev:mock 生效):baseapi 增 fc-drill 快应用模块树(方案 §6.2 五行含
导入/导出两个 path 空锚点),dataapi 增 /api/form/resolve 桩(快应用数据视图唯一的
合规取数路径是 code→resolve→uuid,契约 §1)。其余外指 appCode 仍旧返回空树(P3 口径)。

门禁:npm run build ✓ / npm run type-check 0 错 ✓;
t1~t9 全量复跑:t5 13/0/1、t6 22/0/2、t7 12/0/0、t8 21/0/1、t9 12/0/1
(skip 均为 headless Edge --dump-dom 吐 0 字节的 P73 环境事实,不假通过)。
本提交含 T6~T8 三轮堆在工作区的既有改动(沿 T8 验收 §5 推送分层)。
2026-10-15 12:57:10 +08:00
chenxing fdd9aaaa3b feat(shell): T5 前端·壳与管理端框架——fork notice/front 基线并剥领域
build / build (push) Successful in 3m10s
- A 类主题 loader 原文接入 + env-config 引导 + vite /static 与 /api(8086) 代理(P6/P11)
- GetUserMod 左导航:utils/menuNav.ts 单点实现 path 空锚点跳过、分组收敛、icon 兜底、面包屑基线(对齐 Notice 13afb22 refined 版)
- alova 封装 + api/module/base.ts(getUserMod 可选 appCode,P2 定名;H4 前空树不回落,P3)
- 路由骨架一 SPA 四形态:/admin/{forms,data,stats,dicts}、/f/:code、/app/:appCode/*、/my;self!=top 剥壳(方案 §3.3)
- 规范件落位:tableActions.ts(UserBase 同构源,正文 MD5 不变)、TablePageAlovaNew + useElementHeight、page-wrapper yh-fill 骨架
- view-ui-plus 精确锁 1.3.24;本地零 layout.css/icons.css;avatar 两件由 YschTheme sync 下发
- 剥除:notice 领域 views/api/mock/menu 兜底、alova-vant(mobiapi)、ztree+jquery 与重依赖(按需回补,见 service/docs/T5-report.md 问题单 P52)
2026-10-14 20:35:41 +08:00
chenxing cebc32fbef feat(skeleton): T1 前端工程壳——vite5 + vue3 + TS 最小壳
build / build (push) Successful in 1m23s
- 只建壳:index.html / src/main.ts / src/App.vue(占位)/ src/env.d.ts / vite.config.ts / tsconfig{,.node}.json / .npmrc / .gitignore
- base="./"(同 notice / flow-center 口径),保证 projman /form-center/ 挂载下静态资源可取;dev 端口 8089
- package-lock.json 入库:CI 走 npm ci,无锁即红
- typescript 5.2.2 + vue-tsc 1.8.27 锁死配对(^5.2.2 会解析到 5.9,vue-tsc 1.8 直接崩在 supportedTSExtensions patch)
- 自验:npm run build 过、npm run type-check 无报错
- 平台约定(A 类 loader / view-ui-plus 1.3.24 / alova / router / layout)留 T5 落地
2026-10-14 12:21:19 +08:00
admin fd28372b69 ci: init build workflow [skip ci] 2026-10-14 11:41:46 +08:00
admin 68b663841c Initial commit 2026-10-14 11:41:41 +08:00