Skip to content

修复配置页错误码输入与详细日志复制按钮 - #443

Merged
su-kaka merged 3 commits into
su-kaka:masterfrom
wan0ge:fix/config-csv-numbers-input
Oct 28, 2026
Merged

su-kaka merged 3 commits into
su-kaka:masterfrom
wan0ge:fix/config-csv-numbers-input

Conversation

@wan0ge

@wan0ge wan0ge commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

问题

  1. 配置页「详细日志错误码」(csv_numbers 类型) 输入框无法录入内容:原实现为受控组件,
    value 直接由解析后的数组派生,onChange 在每次按键即时解析并回写数组,分隔符被即时切分丢弃、
    小于 100 的中间输入被即时过滤为空,导致无法录入多个错误码,也无法输入过程中的中间数字。
  2. 请求体详细日志弹窗的「复制 JSON」按钮点击无响应:原实现仅调用 navigator.clipboard.writeText,
    该 API 仅在安全上下文(https / localhost)可用;通过 http + 局域网 IP 访问面板时
    navigator.clipboard 为 undefined,复制失败;且成功/失败提示走全局 Modal(z-50),
    被详细日志弹窗(z-60)遮挡,界面表现为点击无反应。

修复

  • 错误码输入:新增独立组件 CsvNumbersField。编辑态保留原始文本,按键时把已解析的数组回写配置
    (保证点击保存时取到最新值),失焦时再归一化显示;解析仅保留 100-599 的合法状态码、去重升序。
    组件置于文件顶部、主组件之前,与页面既有辅助函数约定一致。
  • 复制按钮:增加非安全上下文兜底——navigator.clipboard 不可用时退回临时 textarea + execCommand;
    反馈改为弹窗内就地显示(按钮左侧的「已复制 / 复制失败」),不再依赖被遮挡的全局 Modal。

行为范围

  • 错误码:多码逗号/空白分隔,仅 100-599 生效,去重升序;越界与非法 token 静默丢弃。
  • 复制按钮:安全上下文走 navigator.clipboard;非安全上下文走 execCommand 兜底;
    反馈在弹窗内就地显示,关闭按钮位置固定。

测试

本地验证(未随仓库提交,位于 _localtests/):

  • test_csv_numbers.mjs:覆盖 CsvNumbersField 解析契约(单码/多码/去重/非法 token/越界/空白换行分隔/
    空输入/边界 100 与 599/负数小数),以及上游原受控输入实现对比(无法录入多码、单码亦损坏)。
  • test_copy_json.mjs:覆盖分支实现的复制策略(安全上下文走 clipboard、非安全走 execCommand 兜底、
    成功/失败映射),以及上游原实现(无兜底、非安全上下文直接失败)对照。
  • 前端 dist 已随源码重新构建并提交(Docker 直接 COPY 仓库内 dist)。

原实现把错误码输入框设计为受控组件,value 直接由解析后的数组派生,且 onChange
在每次按键即时解析并回写数组:分隔符(逗号/空格)被立即切分丢弃,小于 100 的
中间输入(如 4、40)因不满足范围被过滤成空,导致无法录入多个错误码,也无法输入
过程中的中间数字,表现为输入框无法填写内容。

新实现新增独立输入组件:编辑态保留原始文本,按键时把已解析的数组回写配置(保证
点击保存时取到最新值),失焦时再归一化显示,仅保留 100-599 的合法状态码。

前端无测试约定,故不引入测试文件。Docker 直接 COPY 仓库内的 dist,已重新构建并提交。
复制 JSON 原仅调用 navigator.clipboard.writeText,该 API 仅在安全上下文
(https / localhost)可用;通过 http + 局域网 IP 访问面板时 navigator.clipboard
为 undefined,复制失败,且失败提示走全局 Modal(z-50)被详细日志弹窗(z-60)遮挡,
表现为点击无响应。

现增加非安全上下文兜底:navigator.clipboard 不可用时退回临时 textarea + execCommand;
反馈改为弹窗内就地显示(按钮旁已复制/复制失败),不再依赖被遮挡的全局 Modal。
复制成功/失败提示原为按钮右侧,出现时会把关闭按钮向右推挤、改变布局。
现移至「复制 JSON」按钮左侧,关闭按钮位置固定,按钮布局不被破坏。
@wan0ge wan0ge changed the title # 修复配置页错误码输入与详细日志复制按钮 修复配置页错误码输入与详细日志复制按钮 Oct 27, 2026
@su-kaka
su-kaka merged commit 07ec1aa into su-kaka:master Oct 28, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants