- {/* 返回 */}
+ {/* ====== 顶部:返回 + 工单标题 ====== */}
+
-
- {/* 工单标题 */}
setTitle(e.target.value)}
- className="px-3 py-1.5 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-sm focus:border-blue-400 focus:outline-none min-w-[180px] max-w-[280px]"
- placeholder="工单标题" />
+ className="flex-1 px-3 py-2 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-lg text-sm font-medium focus:border-blue-400 focus:outline-none transition-colors"
+ placeholder="输入工单标题" />
+
+ {/* ====== 工具栏:实例 + 数据库 + 操作 ====== */}
+
- {/* -- 定时执行提示 -- */}
- {enableSchedule && scheduledAt && (
-
- 定时执行:{new Date(scheduledAt).toLocaleString('zh-CN')}
-
- )}
-
- {/* -- 错误 -- */}
+ {/* ====== 错误提示 ====== */}
{error && (
-
+
)}
- {/* -- SQL 编辑器 -- */}
-
-
+ {/* ====== 编辑器 + 浏览面板 ====== */}
+
+ {/* 浏览面板 */}
+ {showBrowser && instanceId && database && (
+
+
+ {renderBrowserPanel()}
+
+
+ )}
+
+ {/* SQL 编辑器 */}
+
-
+
{sqlContent.trim() ? sqlContent.trim().split(/;\s*/).filter(Boolean).length + ' 条语句 · ' : ''}
{sqlContent.length} 字符
{validated && 检测通过}
- Ctrl+Enter 格式化
+ Ctrl+Enter 格式化
- {/* -- 变更原因 + 审核结果(底部面板) -- */}
-
- {/* 审核结果 */}
- {auditResult && (
-
-
-
- 审核结果
-
- {errorCount > 0 && {errorCount} 错误}
- {warnCount > 0 && {warnCount} 警告}
- {infoCount > 0 && {infoCount} 提示}
- {errorCount === 0 && warnCount === 0 && infoCount === 0 && (
- 通过
- )}
-
- {auditResult.findings.length > 0 && (
-
- {auditResult.findings.map((f, idx) => (
-
-
- {LEVEL_LABEL[f.level] || f.level}: {f.message}
-
- ))}
-
+ {/* ====== 审核结果 ====== */}
+ {auditResult && (
+
+
+
+ 审核结果
+
+ {errorCount > 0 && {errorCount} 错误}
+ {warnCount > 0 && {warnCount} 警告}
+ {infoCount > 0 && {infoCount} 提示}
+ {errorCount === 0 && warnCount === 0 && infoCount === 0 && (
+ 通过
)}
- )}
-
- {/* 变更原因 */}
-
-
变更原因 *
-
setReason(e.target.value)}
- className="flex-1 px-3 py-1.5 bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] rounded-md text-sm focus:border-blue-400 focus:outline-none"
- placeholder="请描述变更原因、影响范围、回滚方案等" />
+ {auditResult.findings.length > 0 && (
+
+ {auditResult.findings.map((f, idx) => (
+
+
+
{LEVEL_LABEL[f.level] || f.level}
+
·
+
{f.rule}
+
—
+
{f.message}
+
+ ))}
+
+ )}
+ )}
+
+ {/* ====== 变更原因 ====== */}
+
+
+
+
+ {/* ====== 底部操作栏 ====== */}
+
+ {/* SQL 检测 */}
+
+
+ {/* 提交审批 */}
+