diff --git a/.env b/.env new file mode 100644 index 0000000..b620126 --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +APIFOX_PROJECT_ID = 7574669 +APIFOX_ACCESS_TOKEN = APS-20xZ4VqkdY1I1GC63EPVJHbJGsM4VMqy + +VITE_SERVICE_URL = http://8.138.234.141/ingress \ No newline at end of file diff --git a/global.d.ts b/global.d.ts index ca97b9b..1948951 100644 --- a/global.d.ts +++ b/global.d.ts @@ -60,7 +60,8 @@ declare global { isWindowMaximized: () => Promise, viewIsReady: () => void app: { - setFrameless: (route?: string) => void + setFrameless: (route?: string) => void, + loadPage: (page: string) => void }, tabs: { create: (url?: string) => void, diff --git a/package-lock.json b/package-lock.json index b91a42e..2316c60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1631,47 +1631,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, "node_modules/@iconify-json/material-symbols": { "version": "1.2.50", "resolved": "https://registry.npmmirror.com/@iconify-json/material-symbols/-/material-symbols-1.2.50.tgz", @@ -7502,7 +7461,7 @@ }, "node_modules/js-base64": { "version": "3.7.8", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.8.tgz", "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", "license": "BSD-3-Clause" }, diff --git a/src/common/constants.ts b/src/common/constants.ts index 297c68c..a958ff3 100644 --- a/src/common/constants.ts +++ b/src/common/constants.ts @@ -7,6 +7,7 @@ export enum IPC_EVENTS { WINDOW_CLOSE = 'window-close', IS_WINDOW_MAXIMIZED = 'is-window-maximized', APP_SET_FRAMELESS = 'app:set-frameless', + APP_LOAD_PAGE = 'app:load-page', TAB_CREATE = 'tab:create', TAB_LIST = 'tab:list', TAB_NAVIGATE = 'tab:navigate', diff --git a/src/main/service/window-service/index.ts b/src/main/service/window-service/index.ts index 3160ff1..2ff29f0 100644 --- a/src/main/service/window-service/index.ts +++ b/src/main/service/window-service/index.ts @@ -90,6 +90,10 @@ class WindowService { ipcMain.on(IPC_EVENTS.WINDOW_MINIMIZE, handleMinimizeWindow); ipcMain.on(IPC_EVENTS.WINDOW_MAXIMIZE, handleMaximizeWindow); ipcMain.handle(IPC_EVENTS.IS_WINDOW_MAXIMIZED, handleIsWindowMaximized); + ipcMain.handle(IPC_EVENTS.APP_LOAD_PAGE, (e: IpcMainInvokeEvent, page: string) => { + const win = BrowserWindow.fromWebContents(e.sender); + if (win) this._loadPage(win, page); + }); } public static getInstance(): WindowService { @@ -211,12 +215,16 @@ class WindowService { } } - private _loadWindowTemplate(window: BrowserWindow, name: WindowNames) { - // 检查是否存在开发服务器 URL,若存在则表示处于开发环境 + private _loadPage(window: BrowserWindow, pageName: string) { if (MAIN_WINDOW_VITE_DEV_SERVER_URL) { - return window.loadURL(`${MAIN_WINDOW_VITE_DEV_SERVER_URL}${'/html/' + (name === 'main' ? '' : name)}`); + return window.loadURL(`${MAIN_WINDOW_VITE_DEV_SERVER_URL}/html/${pageName}.html`); } - window.loadFile(path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/html/${name === 'main' ? 'login' : name}.html`)); + window.loadFile(path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/html/${pageName}.html`)); + } + + private _loadWindowTemplate(window: BrowserWindow, name: WindowNames) { + const page = name === 'main' ? 'login' : name; + this._loadPage(window, page); } diff --git a/src/preload.ts b/src/preload.ts index e4d87eb..271aae7 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -16,7 +16,8 @@ const api: WindowApi = { viewIsReady: () => ipcRenderer.send(IPC_EVENTS.RENDERER_IS_READY), app: { - setFrameless: (route?: string) => ipcRenderer.invoke(IPC_EVENTS.APP_SET_FRAMELESS, route) + setFrameless: (route?: string) => ipcRenderer.invoke(IPC_EVENTS.APP_SET_FRAMELESS, route), + loadPage: (page: string) => ipcRenderer.invoke(IPC_EVENTS.APP_LOAD_PAGE, page) }, tabs: { diff --git a/src/renderer/api/oauth2.ts b/src/renderer/api/oauth2.ts index 6fa72c4..8eb4315 100644 --- a/src/renderer/api/oauth2.ts +++ b/src/renderer/api/oauth2.ts @@ -16,6 +16,7 @@ export function authOauth2TokenUsingPost({ method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': 'Basic Y3VzdG9tUEM6Y3VzdG9tUEM=', }, data: body, ...(options || {}), diff --git a/src/renderer/main.ts b/src/renderer/main.ts index ed0ca32..69c1e7b 100644 --- a/src/renderer/main.ts +++ b/src/renderer/main.ts @@ -3,8 +3,12 @@ import { createPinia } from "pinia" import errorHandler from "@utils/errorHandler" import router from "./router" import App from "./App.vue" + +// 引入 Element Plus 组件库 import ElementPlus from 'element-plus' import locale from 'element-plus/es/locale/lang/zh-cn' + +// 引入 i18n 插件 import i18n from './i18n' // import './permission' diff --git a/src/renderer/router/index.ts b/src/renderer/router/index.ts index 43d79b4..8d8bc14 100644 --- a/src/renderer/router/index.ts +++ b/src/renderer/router/index.ts @@ -1,20 +1,16 @@ -/* - * @Author: kongbeiwu lishaohua-520@qq.com - * @Date: 2025-12-22 01:28:13 - * @LastEditors: kongbeiwu lishaohua-520@qq.com - * @LastEditTime: 2025-12-22 01:31:48 - * @FilePath: /project/zn-ai/src/renderer/router/index.ts - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ import { createRouter, createMemoryHistory } from "vue-router"; const routes = [ { - path: "/", - component: () => import("@renderer/views/login/index.vue"), - name: "Login", - meta: { requiresAuth: false }, - } + path: '/', + redirect: '/home' + }, + { + path: "/home", + component: () => import("@renderer/views/home/index.vue"), + name: "Home", + meta: { requiresAuth: true }, + }, ]; const router = createRouter({ @@ -29,24 +25,4 @@ const router = createRouter({ }, }); -// router.beforeEach((to: any, from: any, next: any) => { -// const token = localStorage.getItem("token"); -// if (to.meta && (to.meta as any).requiresAuth && !token) { -// next({ path: "/login" }); -// return; -// } - -// if (token && to.path === "/login") { -// next({ path: "/home" }); -// return; -// } - -// if (token && to.path === "/") { -// next({ path: "/home" }); -// return; -// } - -// next(); -// }); - export default router; diff --git a/src/renderer/utils/request.ts b/src/renderer/utils/request.ts index ef02742..6d83c7b 100644 --- a/src/renderer/utils/request.ts +++ b/src/renderer/utils/request.ts @@ -6,7 +6,8 @@ import { getToken } from '@utils/auth' import { tansParams } from '@utils/tansParams' // 获取.env中的服务地址 -const { VITE_SERVICE_URL } = (import.meta as any).env +const { VITE_SERVICE_URL, DEV } = (import.meta as any).env +console.log("🚀 ~ DEV:", DEV) // 是否显示重新登录 export let isRelogin = { show: false } @@ -15,7 +16,7 @@ axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' // 创建axios对象 const instance = axios.create({ - baseURL: VITE_SERVICE_URL, + baseURL: DEV ? '/ingress' : VITE_SERVICE_URL, // 超时 timeout: 10000 }) diff --git a/src/renderer/views/home/index.vue b/src/renderer/views/home/index.vue index 8075179..60ac872 100644 --- a/src/renderer/views/home/index.vue +++ b/src/renderer/views/home/index.vue @@ -1,5 +1,5 @@ diff --git a/src/renderer/views/login/index.ts b/src/renderer/views/login/index.ts index 5f12f73..b5ad8d5 100644 --- a/src/renderer/views/login/index.ts +++ b/src/renderer/views/login/index.ts @@ -1,16 +1,38 @@ -import '@renderer/styles/index.css' - +import { createApp, type Plugin } from "vue" import errorHandler from '@utils/errorHandler' + +// 引入 Element Plus 组件库 +import ElementPlus from 'element-plus' +import locale from 'element-plus/es/locale/lang/zh-cn' + +// 引入 i18n 插件 import i18n from '@renderer/i18n' -import HeaderBar from '@renderer/components/HeaderBar/index.vue' -import DragRegion from '@renderer/components/DragRegion/index.vue' import Login from './index.vue' -createApp(Login) - .use(i18n) - .use(createPinia()) - .use(errorHandler) - .component('HeaderBar', HeaderBar) - .component('DragRegion', DragRegion) - .mount('#app') +// 样式文件隔离 +import '@renderer/styles/index.css' +import 'element-plus/dist/index.css' + +// 引入全局组件 +import HeaderBar from '@components/HeaderBar/index.vue' +import DragRegion from '@components/DragRegion/index.vue' + +const components: Plugin = (app) => { + app.component('HeaderBar', HeaderBar); + app.component('DragRegion', DragRegion); +} + +// 创建 Vue 应用实例 +const app = createApp(Login); +const pinia = createPinia(); + +// 使用 Pinia 状态管理 +app.use(pinia); +app.use(ElementPlus, { locale }) +app.use(components) +app.use(i18n) +app.use(errorHandler) + +// 挂载应用到 DOM +app.mount("#app"); diff --git a/src/renderer/views/login/index.vue b/src/renderer/views/login/index.vue index 56190c0..0416a2a 100644 --- a/src/renderer/views/login/index.vue +++ b/src/renderer/views/login/index.vue @@ -32,7 +32,8 @@
密码
- + @@ -75,12 +76,12 @@ -
+
- + @@ -122,8 +123,7 @@ const onSubmit = async () => { try { userStore.login(form).then(() => { - // window.location.href = 'index.html' - console.log(form) + window.api.app.loadPage('index'); }) } finally { getVerifyCode() diff --git a/vite.renderer.config.ts b/vite.renderer.config.ts index 3edb2c2..d907b1a 100644 --- a/vite.renderer.config.ts +++ b/vite.renderer.config.ts @@ -25,6 +25,7 @@ export default defineConfig(async () => { resolve(__dirname, 'html/index.html'), resolve(__dirname, 'html/dialog.html'), resolve(__dirname, 'html/setting.html'), + resolve(__dirname, 'html/login.html'), ] } }, @@ -44,5 +45,14 @@ export default defineConfig(async () => { "@locales": resolve(__dirname, "locales"), }, }, + + server: { + proxy: { + '/ingress': { + target: 'http://8.138.234.141', + changeOrigin: true, + }, + }, + }, } });