feat(redis-query): 查询页 Redis 结果面板补导出按钮(CSV / JSON / 导出全部)

问题:上一轮把导出按钮只加在了「键浏览页」(RedisDetailPage → RedisKeyDetailPanel),
用户在「查询页」(/queries → RedisKeyValuePanel)看结果,那边一个导出按钮都没有。

两个面板是不同组件,只改一个另一个不会生效:
  /queries          → features/query/components/RedisKeyValuePanel.tsx   ← 本次补
  /redis(键浏览)  → features/redis/components/RedisKeyDetailPanel.tsx  ← 上一轮已加

改动:
1. RedisKeyValuePanel 新增 instanceId / db 两个 props(导出需要)
2. 组件内新增导出逻辑:
   - buildPageText()      把当前已加载值转 CSV / JSON(纯前端,不发请求)
   - exportCurrent()      导出当前页,瞬时完成
   - exportAll()          申请一次性票据 → 浏览器原生下载,服务端流式导出全部
3. 选中 key 的头部右侧新增按钮组:CSV / JSON / 导出全部
   (搜索框宽度 64 → 56,给按钮腾位置)
4. QueriesPage 传入 instanceId={Number(instanceId)} db={Number(database||0)}

实测:
  分页详情 type=zset total=83 本页=100条内 ✅
  票据获取 ✅
  无 Authorization 的浏览器式下载 HTTP 200,CSV 84 行 ✅
  bundle: QueriesPage-*.js 含「导出全部」×1、「Redis 键值可视化」×1 ✅
          RedisDetailPage-*.js 含「导出全部」×1(键浏览页仍在)✅

镜像:lghost/opsxsql:latest + v0.1 = sha256:7d72f2a96875
This commit is contained in:
opsx committed 2026-10-27 10:20:25 +00:00
1 parent 71d5afff03
commit 4c2c5e182a
2 files changed
+119 -2

No files matched your search

+2
View File
@@ -502,6 +502,8 @@ export default function QueriesPage() {
onValueSearchChange={setRedisValueSearch}
onCopy={copyRedisText}
onInspect={handleInspectRedisValue}
instanceId={Number(instanceId)}
db={Number(database || 0)}
/>
)}