diff --git a/resources/java/app/application.yml b/resources/java/app/application.yml index 7536787..e353dfa 100644 --- a/resources/java/app/application.yml +++ b/resources/java/app/application.yml @@ -1,7 +1,7 @@ server: host: 127.0.0.1 port: 8849 - path: C:\Users\MSI\AppData\Roaming\dzsp_shijingjun_offline_Y_save + path: C:\Users\Administrator\AppData\Roaming\dzsp_shijingjun_offline_Y_save poi: global: enabled: false diff --git a/src/main/index.ts b/src/main/index.ts index 8903001..0512eff 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -12,9 +12,10 @@ import { GetHomeDir } from './config' import { start, getServer } from "./app"; const http = require("http"); const yaml = require("js-yaml"); -let Store = require('electron-store') -Store.initRenderer(); -const store = new Store() +// 移除 electron-store,使用 Electron 提供的用户数据目录 +// let Store = require('electron-store') +// Store.initRenderer(); +// const store = new Store() process.on('unhandledRejection', (reason) => { @@ -147,7 +148,8 @@ function createWindow(): void { ymlBatPath = process.platform === 'win32' ? ymlBatPath.replace(/^(\w:)/, '/$1') : ymlBatPath let ymlPath = ymlBatPath.substring(1, 200) const ymlContent = yaml.load(fs.readFileSync(ymlPath, 'utf8')); - ymlContent.server.path = path.dirname(store.path) + ymlContent.server.path = app.getPath('userData') + // ymlContent.server.path = path.dirname(store.path) fs.writeFileSync(ymlPath, yaml.dump(ymlContent)); ipcMain.on("getIniConfig", (event, option) => { let ymlPath = ymlBatPath.substring(1, 200) @@ -215,6 +217,38 @@ function createWindow(): void { event.sender.send("selectedItem", arr); }); }); + ipcMain.handle('get-user-data-path', () => { + return app.getPath('userData') + }); + ipcMain.on('import-project-override', async (event, { srcZip, dst }) => { + try { + const compressing = require('compressing') + await compressing.zip.uncompress(srcZip, dst) + event.sender.send('import-project-override-res', { ok: true }) + } catch (e: any) { + event.sender.send('import-project-override-res', { ok: false, error: e.message }) + } + }); + ipcMain.on("export-project", (event, { dst }) => { + try { + const archiver = require('archiver'); + const output = fs.createWriteStream(dst); + const archive = archiver('zip', { zlib: { level: 9 } }); + output.on('close', () => { + event.sender.send('export-project-res', { ok: true }); + }); + archive.on('error', (err) => { + event.sender.send('export-project-res', { ok: false, error: err.message }); + }); + archive.pipe(output); + const dbPath = path.join(app.getPath('userData'), 'app.db'); + console.log('dbPath', dbPath); + archive.file(dbPath, { name: 'app.db' }); + archive.finalize(); + } catch (e: any) { + event.sender.send('export-project-res', { ok: false, error: e.message }); + } + }); ipcMain.on("saveFile", (event, { title, filename, filters }) => { dialog .showSaveDialog({ diff --git a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue index a3448fc..d9d31a0 100644 --- a/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue +++ b/src/renderer/src/views/components/headers/components/setPup/components/engineering.vue @@ -521,35 +521,28 @@ const importProject = () => { if (paths.length > 0) { // let loadingInstance = this.$openLoading('拼命导入中...') importWin = false - let arr = getElectronPath().replaceAll('\\', '/').split('/') - console.log(arr, 'arrarr') - arr.pop() - // let path: any = 'C:/Users/Administrator/AppData/Roaming/yjearth' - console.log(paths[0], arr.join('/'), 'pathpath') - unzip_file(paths[0], arr.join('/')) - .then((res) => { - // loadingInstance.close() - // ElMessage({ - // message: '导入成功', - // type: 'success' - // }) - setTimeout(() => { + const { ipcRenderer } = require('electron') + ipcRenderer.invoke('get-user-data-path').then((userDataPath) => { + ipcRenderer.send('import-project-override', { srcZip: paths[0], dst: userDataPath }) + ipcRenderer.once('import-project-override-res', (ev, res) => { + if (res && res.ok) { + setTimeout(() => { + ElMessage({ + message: '载入成功,将在2s后自动重启', + type: 'success' + }) + }, 1000) + setTimeout(() => { + $sendElectronChanel('restart') + }, 3000) + } else { ElMessage({ - message: '载入成功,将在2s后自动重启', - type: 'success' + message: res?.error || '导入失败', + type: 'warning' }) - }, 1000) - setTimeout(() => { - $sendElectronChanel('restart') - }, 3000) - }) - .catch((err) => { - console.log(err) - ElMessage({ - message: err, - type: 'warning' - }) + } }) + }) } else { importWin = false } @@ -657,31 +650,41 @@ function derive() { $sendElectronChanel('saveFile', option) $recvElectronChanel('selectedFileItem', (e, path) => { if (path) { - // if (result.canceled) { - // this.exportWin = !this.exportWin - // return - // } - // let loadingInstance = this.$openLoading('拼命导出中...') - // exportWin = !exportWin - let arr = getElectronPath().replaceAll('\\', '/').split('/') - arr.pop() - arr[arr.length - 1] = 'yjearth/app.db' - let db_path: any = arr.join('/') - // let db_path: any = 'C:/Users/Administrator/AppData/Roaming/yjearth/app.db' - try { - zip_file([db_path], path, () => { - // loadingInstance.close() + const { ipcRenderer } = require('electron') + ipcRenderer.send('export-project', { dst: path }) + ipcRenderer.once('export-project-res', (ev, res) => { + if (res && res.ok) { ElMessage({ message: '导出完成', type: 'success' }) - }) - } catch (error) { - ElMessage({ - message: error, - type: 'error' - }) - } + } else { + ElMessage({ + message: res?.error || '导出失败', + type: 'error' + }) + } + }) + + // let arr = getElectronPath().replaceAll('\\', '/').split('/') + // arr.pop() + // arr[arr.length - 1] = 'yjearth/app.db' + // let db_path: any = arr.join('/') + // console.log(db_path, 'db_pathdb_path') + // try { + // zip_file([db_path], path, () => { + // // loadingInstance.close() + // ElMessage({ + // message: '导出完成', + // type: 'success' + // }) + // }) + // } catch (error) { + // ElMessage({ + // message: error, + // type: 'error' + // }) + // } } })