動作
Bug #182
進行中
SC
SC
複製病歷、ICD10 按鈕失效
Bug #182:
複製病歷、ICD10 按鈕失效
SC 是由 Sashiba Chou 於 4 個月 前更新
- 主旨 從 複製病歷按鈕失效 變更為 複製病歷、ICD10 按鈕失效
SC 是由 Sashiba Chou 於 約 2 個月 前更新
- 完成日期 從 2026-03-27 變更為 2026-06-13
- 完成比例 從 0 變更為 100
環境¶
- 部署:Windows,急診部內網 http://10.101.13.120:3000(HTTP,非 secure context)
- 本機:http://localhost:3000(正常)
問題描述¶
在本機(localhost)按下「複製病歷」按鈕功能正常,但在部署環境
(http://10.101.13.120:3000)按下複製按鈕完全沒有反應,也無錯誤訊息。
根因¶
navigator.clipboard API 僅在 secure context(HTTPS 或 localhost/127.0.0.1)
下可用。部署環境走 HTTP + 區網 IP,navigator.clipboard 為 undefined,
舊程式 navigator.clipboard.writeText() 直接拋 TypeError,且發生在 async
handler 中被吞掉,導致按鈕無反應、無提示。
解法¶
新增 copyToClipboard() 工具函式(frontend/src/lib/utils.ts):
- secure context:維持使用原生
navigator.clipboard.writeText() - 非 secure context:fallback 改用隱藏 textarea +
document.execCommand("copy"),
HTTP 下亦可運作
全部複製進入點(病歷複製、ICD-10 代碼複製)統一改呼叫此函式。
影響範圍 / 變更檔案¶
- frontend/src/lib/utils.ts # 新增 copyToClipboard()
- frontend/src/components/ReviewTab.tsx # 病歷複製、ICD 代碼複製改用新函式
- frontend/src/components/SkeletalTab.tsx # ICD 代碼複製改用新函式
- frontend/src/components/SoftTissueTab.tsx# ICD 代碼複製改用新函式
(附帶)ICD-10 擷取結果狀態自 ReviewTab 提升至 TraumaAssessmentForm,
切換頁籤時不再遺失:
- frontend/src/components/TraumaAssessment.tsx
- frontend/src/components/ReviewTab.tsx
驗收條件¶
- 部署環境(HTTP)按「複製病歷」可成功複製,貼上驗證內容正確
- 部署環境按 ICD-10 代碼複製鈕可成功複製
- 本機(localhost)複製功能維持正常(走原生 API)
- 切換頁籤後 ICD-10 擷取結果仍保留
備註¶
根治方案為導入 HTTPS(見 https_todo.md 方案 A/B);上 HTTPS 後會走回原生
clipboard API,fallback 作為永久安全網保留。
動作