## 5. 核心功能页面优化方案 本章针对 SQL-Platform 三个核心功能模块——审批变更(工单系统)、查询数据、系统设置——进行逐页拆解分析,提出可落地的 UI/UX 优化方案。每个方案均包含具体的组件选型、布局参数、交互细节与视觉规范,确保开发团队能够直接转化为实现任务。 --- ### 5.1 审批变更工单系统优化 审批变更是平台的核心业务流,涉及工单列表、工单创建、工单详情三个主要页面。当前实现存在布局松散、信息层级不清、操作流程割裂等问题。以下按页面逐一给出优化方案。 #### 5.1.1 工单列表页优化 **组件选型与布局重构** 将原生 `` 全面替换为 `@tanstack/react-table` + `shadcn/ui DataTable` 组合。DataTable 内置列排序、列过滤、行选择、分页等能力,可显著减少 742 行中的手写逻辑。表格容器采用 `rounded-xl border border-border/60 bg-card` 样式,阴影参数为 `shadow-sm`。 **状态卡片升级** 原状态卡片(全部/待审批/执行中/完成/失败)改为 Stats Cards。每张卡片包含:状态图标(`Lucide`)、工单数量(`text-2xl font-bold`)、环比趋势箭头(绿色上升/红色下降)、环比百分比(`text-xs text-muted-foreground`)。卡片使用 `cn()` 动态绑定激活状态的边框色——激活时边框为 `ring-2 ring-primary/40 border-primary`,未激活为 `border-transparent hover:border-border/80`。卡片网格采用 `grid grid-cols-5 gap-4`,在 < 1024px 下退化为 `grid-cols-3` + `grid-cols-2`。 **高级筛选栏** 在状态卡片下方新增折叠式筛选栏,包含以下控件: | 筛选项 | 组件 | 说明 | |---------|------|------| | 实例 | `Select`(多选) | 从实例列表异步加载 | | 数据库类型 | `Select`(多选) | MySQL/PostgreSQL/MongoDB 等 | | 提交人 | `Input` + `Avatar` | 支持用户名/邮箱搜索 | | 时间范围 | `DateRangePicker` | shadcn/ui 官方组件 | | 优先级 | `ToggleGroup` | 高/中/低三态切换 | 筛选栏默认折叠,点击"高级筛选"按钮展开,展开高度动画 `duration-300 ease-in-out`。所有筛选条件通过 URL query params 同步,支持刷新后状态保持。 **表格交互增强** - **优先级标识**:每行左侧增加 4px 宽色条,高=`bg-red-500`、中=`bg-amber-500`、低=`bg-slate-400`,使用绝对定位贴左边框。 - **行 Hover 效果**:`hover:bg-muted/60`,同时左侧出现 `border-l-2 border-primary` 指示条,过渡 `transition-colors duration-150`。 - **操作列优化**:将分散的查看/通过/拒绝/执行/撤销按钮收缩为图标按钮组(`Eye`, `CheckCircle`, `XCircle`, `Play`, `RotateCcw`)。当操作超过 3 个时,溢出部分收入 `DropdownMenu`。按钮使用 `variant="ghost" size="icon"`。 - **批量操作**:顶部新增批量操作栏,选中行后出现(`AnimatePresence` 滑入),包含"批量审批"、"批量拒绝"、"导出选中"三个主操作,危险操作使用 `variant="destructive"`。 - **列自定义**:列头右键菜单支持"隐藏此列"、"重置列宽",列宽拖拽使用 `react-resizable` 实现,拖拽手柄 4px 宽,hover 时显示 `bg-primary/30`。 **搜索与分页** 搜索框使用 `Input` + `Search` 图标,支持 `Cmd+K` 快捷键聚焦。分页组件采用 `shadcn/ui Pagination`,页码按钮尺寸 `h-9 w-9`,当前页 `bg-primary text-primary-foreground`。每页条数可选 10/25/50/100。 --- #### 5.1.2 工单创建页优化 **布局重构:左右分栏** 将当前 1192 行的单栏布局改为左右分栏:左侧编辑器区占 `w-3/5`(60%),右侧辅助信息面板占 `w-2/5`(40%),中间分隔线 `border-r border-border/60`。两栏均独立滚动,避免编辑器滚动时右侧信息丢失。分栏在 < 1280px 下退化为上下堆叠布局。 **步骤指示器(Step Indicator)** 在分栏顶部增加横向步骤条,共三步: ``` ① 填写信息 ──→ ② SQL 审核 ──→ ③ 提交审批 ``` 步骤条使用 `shadcn/ui` 风格的自定义组件。已完成步骤圆圈 `bg-primary text-primary-foreground`,当前步骤 `bg-primary ring-4 ring-primary/20`,未到达步骤 `bg-muted text-muted-foreground`。连线使用 `h-0.5 w-16`,已完成段 `bg-primary`,未完成段 `bg-border`。步骤切换允许回退(已填写内容保留),但前进需通过当前步骤的验证(如 SQL 审核必须通过才能到第三步)。 **左侧编辑器区** - **顶部工具栏**:实例选择 + 数据库选择使用 `Popover` + `Command` 组合(支持搜索筛选),定时执行使用 `Switch` + `DateTimePicker`,格式化按钮(`AlignLeft` 图标)使用 `variant="outline" size="sm"`。工具栏使用 `flex items-center gap-3 p-3 border-b border-border/60 bg-muted/30`。 - **SQL 编辑器**:保留 CodeMirror 6,新增配置:行号显示(`lineNumbers()`)、迷你地图(`@codemirror/view showMinimap` 或自定义 SVG 缩略图)、当前行高亮(`highlightActiveLineGutter()`)。编辑器高度 `h-[480px]`,边框 `border-0`(融入容器)。 - **SQL 模板快捷插入**:编辑器左下角增加"模板"按钮,点击弹出 `Popover`,内含分类模板列表(DDL/DML/查询),点击后 `editor.dispatch()` 插入模板 SQL。 **右侧辅助面板** - **审核结果卡片**:使用三个独立卡片分别展示 Error(`bg-red-50 border-red-200`)、Warning(`bg-amber-50 border-amber-200`)、Info(`bg-blue-50 border-blue-200`)。每张卡片包含:数量 badge(`rounded-full px-2 py-0.5 text-xs font-medium`)、发现项列表(每项包含行号、规则名、描述)、展开/折叠按钮。Error 卡片默认展开,其他折叠。 - **变更原因输入**:将 `