diff --git a/code/fms/.codebuddy/plans/fms-module-list_查询区升级为常用条件网格_可用的高级查询_4b130def.md b/code/fms/.codebuddy/plans/fms-module-list_查询区升级为常用条件网格_可用的高级查询_4b130def.md new file mode 100644 index 00000000..11a81382 --- /dev/null +++ b/code/fms/.codebuddy/plans/fms-module-list_查询区升级为常用条件网格_可用的高级查询_4b130def.md @@ -0,0 +1,238 @@ +--- +name: fms-module-list 查询区升级为常用条件网格+可用的高级查询 +overview: 把 `fms-module-list` 的查询区改造成 dashboard 的布局(常用条件 4 列网格 + 更多条件展开 + 左侧高级查询面板),并让高级查询真正生效(AST → SQL → `/data/page`)。常用与高级复用同一套查询构造器:常用条件按字段类型取默认操作符(文本一律 like),高级条件由用户选操作符并支持嵌套条件组。全程只改前端,后端零改动。 +design: + architecture: + framework: vue + styleKeywords: + - 企业级简约 + - 白卡分区 + - 定宽网格 + - 轻阴影 + - 微交互反馈 + fontSystem: + fontFamily: PingFang SC + heading: + size: 15px + weight: 600 + subheading: + size: 13px + weight: 600 + body: + size: 13px + weight: 400 + colorSystem: + primary: + - "#1677FF" + - "#EDF5FF" + background: + - "#F5F6F8" + - "#FFFFFF" + - "#FAFBFC" + text: + - "#1F2329" + - "#646A73" + - "#A3ACB8" + functional: + - "#F53F3F" + - "#FF7D00" + - "#D8E5F7" +todos: + - id: query-ast-builder + content: 在 queryUtils.js 实现统一 AST 构造器(OPERATORS、defaultOperator、buildConditionSql、buildGroupSql、astToSql、buildQuickAst、buildAdvancedAst),并让 buildQueryCondition 内部转发保持兼容 + status: completed + - id: toolbar-quick-layout + content: 改造 FmsQueryToolbar 为 dashboard 布局:常用条件 4 列网格 + 更多条件展开 + 生效条件 chips 条,emit 改为 { mode, ast } + status: completed + dependencies: + - query-ast-builder + - id: toolbar-advanced-panel + content: 新增高级查询面板:条件行(复用 FmsQueryControl 按操作符渲染)、条件组与嵌套逻辑、根逻辑、条件计数与应用查询 + status: completed + dependencies: + - toolbar-quick-layout + - id: page-ast-wiring + content: FmsModuleListPage 接入 AST:fetchData 用 astToSql 生成条件,resetSearch 回到默认条件,保留 fixedSearchCondition 组合 + status: completed + dependencies: + - toolbar-advanced-panel + - id: user-pref + content: 新增 useModulePref 实现偏好读写与合并(query 分区顺序、view 列显隐/顺序/宽度),按默认→偏好→权限裁剪顺序合并并落库 s_user_module_pref + status: completed + dependencies: + - page-ast-wiring + - id: query-settings-drawer + content: 实现查询设置抽屉:常用/高级/隐藏分区、拖拽排序、恢复默认、无查询权限字段灰显,改动在关闭时一次性保存 + status: completed + dependencies: + - user-pref + - id: dashboard-cleanup-and-tests + content: 删除 dashboard 中重复的 AST computed,补充 query-ast / module-pref 单测并跑通 fms-vue 全量测试 + status: completed + dependencies: + - query-settings-drawer +--- + +## 产品概述 + +把 `fms-module-list`(生产通用列表组件)的查询区改造为 dashboard 原型已验证的形态,并让高级查询**真正生效**。改造后:常用条件以 4 列网格平铺、超出部分「更多条件」展开;高级查询提供可选操作符、可嵌套条件组、条件摘要 chips;两种模式共用同一套查询构造逻辑,最终都生成同一份 `search_condition` 交给 `/data/page` 执行。 + +## 核心功能 + +- **常用条件区**:4 列定宽网格(容器查询在窄容器降为 3 列),默认展示 4 个条件,其余收进「更多条件」并带生效条件数角标;支持查询、重置。 +- **高级查询**:根逻辑(满足全部/任一)+ 条件行(字段 + 操作符 + 值)+ 条件组(组内 and/or,可嵌套、可增删)+ 「已配置 N 个条件」+ 应用查询,点击后真正请求数据。 +- **统一构造**:常用条件用默认操作符(文本 `like`、日期/数值区间 `between`、枚举 `eq`),高级条件用用户选择的操作符,二者生成同一种 AST,经同一个构造器产出 SQL。 +- **生效条件 chips 条**:展示当前生效条件,可单个移除、可全部清除;树/页面固定条件也以 chip 呈现(保持现有 `fixedSearchCondition` 语义)。 +- **查询设置(用户个性化)**:每个字段可设为「常用/仅高级/隐藏」并拖拽排序,只影响当前用户;无查询权限的字段灰显且不可调整。 +- **个性化持久化**:只记布局(查询字段分区与顺序、列显隐/顺序/宽度),不记条件值;语言、主题保持本地存储,不做表格密度。 +- **后端零改动**:沿用通用 `/data/loaddata`、`/data/page`、`/data/saveobjt`。 + +## 技术栈 + +- 前端:Vue 3 ` @@ -168,41 +244,73 @@ onBeforeUnmount(() => { v-show="visible" ref="rootEl" class="fps-monitor" - :class="{ 'is-dragging': dragStart }" + :class="{ 'is-dragging': isDragging, 'is-collapsed': collapsed }" :style="pos ? { left: pos.x + 'px', top: pos.y + 'px' } : undefined" aria-label="FPS 性能监控" v-bind="$attrs" @pointerdown="onPointerDown" @dblclick="onDblClick" > -
- FPS - - {{ currentFps || '--' }} - - -
+ +