3.3 KiB
3.3 KiB
AI Context — 模块设计器原型
项目目标
这是一个 FMS 模块管理系统的"字段设计器"交互原型,用 React 实现,用于验证设计思路和交互方案。
解决的问题:原有系统将字段的列表、编辑、查询配置分散在 4 个 Tab 中,操作碎片化。目标是把所有配置围绕"字段"聚合,所见即所得。
技术栈
| 项 | 值 |
|---|---|
| 框架 | React 19 + TypeScript 6 |
| 构建 | Vite 8 |
| 样式 | Tailwind CSS v4 (@tailwindcss/vite) |
| 拖拽 | @dnd-kit/core + @dnd-kit/sortable |
| 包管理 | pnpm |
文件结构
src/
├── types/index.ts # 所有 TS 类型定义 + FieldTypeDef 常量
├── data/moduleData.ts # Mock 数据 + 工厂函数
├── components/
│ ├── ModuleSettings.tsx # 顶部模块设置面板(编码/名称/编辑模式等)
│ ├── FormPreview.tsx # 左侧:表单预览(按分组排列,可拖拽排序)
│ ├── TablePreview.tsx # 左侧:表格预览(可拖拽列排序 + 列宽调整)
│ ├── FieldConfigList.tsx # 右侧:字段配置列表(L/E/Q 拨动开关 + 展开快捷编辑)
│ └── DataSourceDrawer.tsx # 下拉数据源配置抽屉(视图/静态选项)
├── App.tsx # 主布局 + 全局状态
├── main.tsx # 入口
└── index.css # Tailwind + 自定义 CSS(toggle、drawer 等)
核心设计理念
- 两栏布局:左侧实时预览(表单/表格切换),右侧字段配置列表
- 零点击高频操作:列表/编辑/查询开关做成拨动开关(toggle),直接拨不用展开
- 内联快捷编辑:点击字段行 → 下方展开标签/编码/类型/分组/列宽等基础配置
- 拖拽排序:表单模式和表格模式都支持拖拽调整字段顺序
- 表格列宽调整:表格预览下拖拽列头右边缘可调整列宽
- 数据源配置:下拉字段才有的复杂配置,用右侧抽屉单独处理
数据结构
ModuleField(核心)
{
id: number, code: string, label: string, type: string,
groupId: string | null, order: number,
// 列表
listOn: boolean, listW: number, listAlign: "left"|"center"|"right",
// 编辑
editOn: boolean, editReq: boolean, editRO: boolean,
// 查询
queryOn: boolean, queryOp: string, queryDef: string,
// 数据源(下拉字段专用)
ds: { type:"view"|"static", ... } | null
}
FieldGroup
{ id: string, name: string }
当前状态
- 基本功能:模块设置、表单预览、表格预览、字段配置列表、数据源抽屉 均已实现
- 无 lint 错误
- 表单预览可拖拽排序
- 表格预览可拖拽列排序 + 列宽调整
- 右侧 L/E/Q 拨动开关正常
- 安装依赖
pnpm install - 启动
pnpm dev(端口 3000)
注意事项
@dnd-kit/modifiers不可用,用本地Modifier函数替代了restrictToVerticalAxis/restrictToHorizontalAxis- 所有样式在
src/index.css中,使用 class 名而非 Tailwind 原子类的地方(toggle、drawer、field-row 等)是因为这些需要状态驱动的复杂样式 - 类型定义在
src/types/index.ts,修改字段结构时记得同步更新src/data/moduleData.ts中的makeField()工厂函数