osCtl.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { os } from "../service/os/os";
  2. import { logger } from "ee-core/log";
  3. /**
  4. * 窗口控制(用于无边框窗口拖拽)
  5. * @class
  6. */
  7. class OsCtl {
  8. /**
  9. * 最小化窗口
  10. */
  11. async minimizeWindow() {
  12. await os.minimizeWindow();
  13. }
  14. /**
  15. * 最大化窗口
  16. */
  17. async maximizeWindow() {
  18. await os.maximizeWindow();
  19. }
  20. /**
  21. * 取消最大化窗口
  22. */
  23. async unmaximizeWindow() {
  24. await os.unmaximizeWindow();
  25. }
  26. /**
  27. * 关闭窗口
  28. */
  29. async closeWindow() {
  30. await os.closeWindow();
  31. }
  32. /**
  33. * 是否最大化窗口
  34. */
  35. async isMaximized() {
  36. return await os.isMaximized();
  37. }
  38. /**
  39. * 切换开发工具
  40. */
  41. async toggleDevTools() {
  42. await os.toggleDevTools();
  43. }
  44. /**
  45. * 打开用户数据目录
  46. */
  47. async openUserDataFolder() {
  48. await os.openUserDataFolder();
  49. }
  50. /**
  51. * 打开安装目录
  52. */
  53. async openInstallFolder() {
  54. await os.openInstallFolder();
  55. }
  56. /**
  57. * 选择目录(返回目录路径)
  58. */
  59. async selectDirectory() {
  60. return await os.selectDirectory();
  61. }
  62. /**
  63. * 获取应用信息
  64. */
  65. async getAppInfo() {
  66. return await os.getAppInfo();
  67. }
  68. /**
  69. * 使用系统默认浏览器打开外部链接
  70. */
  71. async openExternal(url) {
  72. return await os.openExternal(url);
  73. }
  74. /**
  75. * 通过 Node.js 主进程流式上传清鉴数据源文件
  76. * 在 controller 层捕获异常并返回结构化结果,避免异常被 Electron
  77. * 的 ipcMain.handle 包装成 "Error occurred in handler for ..." 前缀
  78. * @param params { dirPath, uploadUrl, token }
  79. * @returns { success: boolean, data?, message? }
  80. */
  81. async uploadQingJianFiles(params) {
  82. try {
  83. const data = await os.uploadQingJianFiles(params);
  84. return { success: true, data };
  85. } catch (e) {
  86. const msg = e instanceof Error ? e.message : String(e);
  87. logger.error('[osCtl] uploadQingJianFiles failed:', msg);
  88. return { success: false, message: msg };
  89. }
  90. }
  91. }
  92. OsCtl.toString = () => "OsCtl";
  93. export default OsCtl;