浏览代码

feat: 添加文件删除功能

HeWang 9 月之前
父节点
当前提交
20264e2be3
共有 3 个文件被更改,包括 39 次插入8 次删除
  1. 20 0
      electron/main.js
  2. 3 2
      electron/preload.js
  3. 16 6
      src/views/ReportView.vue

+ 20 - 0
electron/main.js

@@ -197,3 +197,23 @@ ipcMain.handle('download-file', async (event, { url, fileName, savePath }) => {
 });
 });
 
 
 
 
+// 监听从渲染进程传来的删除文件请求
+ipcMain.on('delete-file', (event, {fileName, savePath}) => {
+    const filePath = path.join(savePath, fileName);
+    // 检查文件是否存在
+    if (fs.existsSync(filePath)) {
+        // 文件存在,尝试删除
+        fs.unlink(filePath, (err) => {
+            if (err) {
+                event.reply('delete-file-response', { success: false, message: err.message });
+            } else {
+                event.reply('delete-file-response', { success: true, message: 'File deleted successfully' });
+            }
+        });
+    } else {
+        // 文件不存在
+        event.reply('delete-file-response', { success: false, message: 'File does not exist' });
+    }
+});
+
+

+ 3 - 2
electron/preload.js

@@ -38,7 +38,7 @@ contextBridge.exposeInMainWorld('electronAPI', {
         // 发送事件到主进程
         // 发送事件到主进程
         ipcRenderer.send('generate-world', {rosbag_path});
         ipcRenderer.send('generate-world', {rosbag_path});
     },
     },
-    generateWorldResult: (callback) =>  ipcRenderer.on('generate-world-result', callback),
+    onGenerateWorldResult: (callback) =>  ipcRenderer.on('generate-world-result', callback),
     downloadFile: async (url, fileName, savePath) => {
     downloadFile: async (url, fileName, savePath) => {
         try {
         try {
             return await ipcRenderer.invoke('download-file', { url, fileName, savePath });
             return await ipcRenderer.invoke('download-file', { url, fileName, savePath });
@@ -47,7 +47,8 @@ contextBridge.exposeInMainWorld('electronAPI', {
             return { success: false, error: error.message };
             return { success: false, error: error.message };
         }
         }
     },
     },
-
+    deleteFile: (fileName, savePath) => ipcRenderer.send('delete-file', {fileName, savePath}),
+    onDeleteFileResponse: (callback) => ipcRenderer.on('delete-file-response', callback),
 
 
 });
 });
 
 

+ 16 - 6
src/views/ReportView.vue

@@ -389,7 +389,6 @@ const updateMap = () => {
   }
   }
 }
 }
 
 
-
 const handleSelectionChange = (rows: []) => {
 const handleSelectionChange = (rows: []) => {
   multipleSelection.value = rows
   multipleSelection.value = rows
   const isEquipmentSame = isPropertySame(rows, "equipmentId")
   const isEquipmentSame = isPropertySame(rows, "equipmentId")
@@ -449,7 +448,7 @@ const generateWorld = async (row) => {
 
 
   const url = "http://127.0.0.1:8888/map/downloadmapbagfile?id=" + id
   const url = "http://127.0.0.1:8888/map/downloadmapbagfile?id=" + id
   const fileName = "map-" + id + ".bag"
   const fileName = "map-" + id + ".bag"
-  const savePath = "/home/cicv/work"
+  const savePath = "/home/cicv/work/pji_desktop/tmp_download/map_bag"
 
 
   const result = await window.electronAPI.downloadFile(url, fileName, savePath);
   const result = await window.electronAPI.downloadFile(url, fileName, savePath);
   if (!result.success) {
   if (!result.success) {
@@ -462,15 +461,26 @@ const generateWorld = async (row) => {
     window.electronAPI.generateWorld(result.filePath);
     window.electronAPI.generateWorld(result.filePath);
     const loadingInstance = ElLoading.service({fullscreen: false, target: '.el-dialog'})
     const loadingInstance = ElLoading.service({fullscreen: false, target: '.el-dialog'})
 
 
-    window.electronAPI.generateWorldResult( (event, result) => {
+    window.electronAPI.onGenerateWorldResult( (event, result) => {
       loadingInstance.close()
       loadingInstance.close()
       if (result.success) {
       if (result.success) {
-        console.log('脚本执行成功');
+        console.log('Script execution completed successfully.')
+        // 使用 Electron 进行文件删除操作
+        window.electronAPI.deleteFile(fileName, savePath)
+
+        // 监听删除文件的响应
+        window.electronAPI.onDeleteFileResponse((event, response) => {
+          if (response.success) {
+            console.log("File deleted successfully.")
+          } else {
+            console.log(`Error: ${response.message}`)
+          }
+        })
       } else {
       } else {
-        console.error('脚本执行失败');
+        console.error('Script execution failed.');
         ElMessage.error("world生成发生错误!");
         ElMessage.error("world生成发生错误!");
       }
       }
-    });
+    })
   }
   }
 }
 }