diff --git a/electron/main.js b/electron/main.js index 59f050d..8cc49f2 100644 --- a/electron/main.js +++ b/electron/main.js @@ -368,6 +368,11 @@ app.whenReady().then(() => { return "stopped"; }); + ipcMain.on("restart-app", () => { + app.relaunch(); + app.exit(0); + }); + app.on("activate", () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); diff --git a/electron/preload.js b/electron/preload.js index 1965a88..ee1b5ab 100644 --- a/electron/preload.js +++ b/electron/preload.js @@ -4,7 +4,8 @@ contextBridge.exposeInMainWorld("electronAPI", { // 获取PDF(绕过CORS) fetchPdf: (pdfUrl) => ipcRenderer.invoke("fetch-pdf", pdfUrl), // 打印PDF - printPdf: (pdfUrl, options) => ipcRenderer.invoke("print-pdf", pdfUrl, options), + printPdf: (pdfUrl, options) => + ipcRenderer.invoke("print-pdf", pdfUrl, options), // 获取打印机列表 getPrinters: () => ipcRenderer.invoke("get-printers"), startIdCardListen: () => ipcRenderer.invoke("start_idcard_listen"), @@ -18,4 +19,5 @@ contextBridge.exposeInMainWorld("electronAPI", { ipcRenderer.removeAllListeners("idcard-data"); ipcRenderer.removeAllListeners("idcard-error"); }, + restartApp: () => ipcRenderer.send("restart-app"), }); diff --git a/src/App.tsx b/src/App.tsx index d4b605d..2be3291 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,5 +1,5 @@ import { Routes, Route } from "react-router-dom"; -import { useEffect, useState } from "react"; +import { useEffect, useState, useRef } from "react"; // import { listen } from "@tauri-apps/api/event"; import "./App.css"; import icon from "./assets/icon.png"; @@ -16,6 +16,7 @@ import UI81 from "./pages/UI81/UI81"; function App() { const [time, setTime] = useState(() => formatDate(new Date())); + const restartTimerRef = useRef(null); useEffect(() => { const id = setInterval(() => setTime(formatDate(new Date())), 1000); @@ -36,13 +37,35 @@ function App() { }; }, []); + const handleTouchStart = () => { + restartTimerRef.current = window.setTimeout(() => { + window.electronAPI.restartApp(); + }, 5000); + }; + + const handleTouchEnd = () => { + if (restartTimerRef.current) { + clearTimeout(restartTimerRef.current); + restartTimerRef.current = null; + } + }; + return (
{/* 全局背景层 */}
{/* 顶部固定区域 - 始终显示 */}
- logo + logo 医疗自助服务系统
{time} diff --git a/src/electron.d.ts b/src/electron.d.ts index 5661719..27ae0d3 100644 --- a/src/electron.d.ts +++ b/src/electron.d.ts @@ -27,6 +27,7 @@ interface ElectronAPI { onIdCardError: (callback: (error: any) => void) => void; log: (level: string, message: any) => void; removeIdCardListeners: () => void; + restartApp: () => void; } interface Window {