From 223363388fb5a8e2bd1a23a37bd6d790e1d67671 Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Fri, 10 May 2024 17:33:52 +0800 Subject: [PATCH] init --- src/main/config/StaticPath.js | 2 - src/main/services/ipcMain.js | 8 +- src/main/services/windowManager.js | 12 +- src/renderer/layout/components/Navbar.vue | 2 + .../layout/components/Sidebar/index.vue | 6 +- src/renderer/layout/index.vue | 3 + src/renderer/permission.js | 22 +- src/renderer/router/index.js | 4 +- src/renderer/store/user.js | 2 + src/renderer/views/login/index.vue | 207 +++++------------- 10 files changed, 95 insertions(+), 173 deletions(-) diff --git a/src/main/config/StaticPath.js b/src/main/config/StaticPath.js index d1cb688..a833ace 100644 --- a/src/main/config/StaticPath.js +++ b/src/main/config/StaticPath.js @@ -13,8 +13,6 @@ if (process.env.NODE_ENV !== 'development') { } export const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}` : `file://${__dirname}/index.html` export const loadingURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}/static/loader.html` : `file://${__static}/loader.html` - -export const noticeURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}/static/notice.html` : `file://${__static}/loader.html` export const libPath = process.env.libPath export const adminWebUri = process.env.NODE_ENV === 'development' ? "http://contract-sqhj-test.ali251.langye.net/admin_test/#/" : "http://contract-sqhj.ali251.langye.net/admin/#/" diff --git a/src/main/services/ipcMain.js b/src/main/services/ipcMain.js index 5a9cec8..ac7aca9 100644 --- a/src/main/services/ipcMain.js +++ b/src/main/services/ipcMain.js @@ -4,11 +4,17 @@ import { winURL } from '../config/StaticPath' import downloadFile from './downloadFile' import Update from './checkupdate' import { updater } from './HotUpdater' -import { createAdminWindow } from "./windowManager" +import { createAdminWindow, toggleMainWindowResizable, mainWindowResize } from "./windowManager" export default { Mainfunc(IsUseSysTitle) { const allUpdater = new Update(); + ipcMain.handle('main-window-resize', (event, arg) => { + mainWindowResize(arg.width, arg.height) + }) + ipcMain.handle('toggle-main-window-resizable', (event, arg) => { + toggleMainWindowResizable(arg) + }) ipcMain.handle("create-admin-window", async (event) => { createAdminWindow() }) diff --git a/src/main/services/windowManager.js b/src/main/services/windowManager.js index 8143026..1bfd93c 100644 --- a/src/main/services/windowManager.js +++ b/src/main/services/windowManager.js @@ -10,6 +10,12 @@ var loadWindow = null var mainWindow = null setIpc.Mainfunc(IsUseSysTitle) var adminWindow = null +export function toggleMainWindowResizable (status) { + mainWindow.setResizable(status) +} +export function mainWindowResize (w,h) { + mainWindow.setSize(w,h) +} function createAdminWindow() { adminWindow = new BrowserWindow({ height: 800, @@ -63,10 +69,10 @@ function createMainWindow() { * Initial window options */ mainWindow = new BrowserWindow({ - height: 800, + height: 504, useContentSize: true, - width: 1700, - minWidth: 1366, + width: 302, + resizable: false, show: false, frame: IsUseSysTitle, titleBarStyle: platform().includes('win32') ? 'default' : 'hidden', diff --git a/src/renderer/layout/components/Navbar.vue b/src/renderer/layout/components/Navbar.vue index 4e5dd15..163b185 100644 --- a/src/renderer/layout/components/Navbar.vue +++ b/src/renderer/layout/components/Navbar.vue @@ -99,6 +99,7 @@ const logout = () => { height: 62px; .hamburger-container { + -webkit-app-region: no-drag; line-height: 58px; height: 50px; float: left; @@ -153,6 +154,7 @@ const logout = () => { } .select-right { + -webkit-app-region: no-drag; .el-dropdown-link { color: #333333; font-weight: 400; diff --git a/src/renderer/layout/components/Sidebar/index.vue b/src/renderer/layout/components/Sidebar/index.vue index 41acb2e..61ac1c5 100644 --- a/src/renderer/layout/components/Sidebar/index.vue +++ b/src/renderer/layout/components/Sidebar/index.vue @@ -4,6 +4,10 @@ + @@ -48,4 +52,4 @@ const isCollapse = computed(() => !sidebarStatus.opened) overflow: hidden; width: 180px; } - \ No newline at end of file + diff --git a/src/renderer/layout/index.vue b/src/renderer/layout/index.vue index 12106de..5dfdbdb 100644 --- a/src/renderer/layout/index.vue +++ b/src/renderer/layout/index.vue @@ -59,4 +59,7 @@ const classObj = computed(() => { .NoUseSysTitle { top: 38px } +.sidebar-container { + -webkit-app-region: no-drag; +} diff --git a/src/renderer/permission.js b/src/renderer/permission.js index 2802214..90f9992 100644 --- a/src/renderer/permission.js +++ b/src/renderer/permission.js @@ -2,32 +2,33 @@ import router from './router' import Performance from '@/tools/performance' import { usePermissionStore } from "@/store/permission" import { useUserStore } from "@/store/user" - +import { ipcRenderer } from "electron" export function usePermission() { let end = null const whiteList = ['/login'] // 不重定向白名单 router.beforeEach(async (to, from, next) => { const { GenerateRoutes, routers } = usePermissionStore() - const { GetUserInfo, token, roles, logOut } = useUserStore() + const { getUserInfo, token, roles, logOut } = useUserStore() end = Performance.startExecute(`${from.path} => ${to.path} 路由耗时`) /// 路由性能监控 if (token) { if (to.path === '/login') { next({ path: '/' }) } else { const hasRoles = roles && roles.length > 0; - if (hasRoles && routers && routers.length > 0) { + if (hasRoles) { next() } else { try { - const roles = await GetUserInfo() - const accessRoutes = await GenerateRoutes(roles) - accessRoutes.forEach(item => { - router.addRoute(item) - }) + const roles = await getUserInfo() next({ ...to, replace: true }) } catch (error) { await logOut() console.error(error) + await ipcRenderer.invoke("toggle-main-window-resizable",false) + await ipcRenderer.invoke("main-window-resize",{ + width: 320, + height: 504 + }) next('/login') } } @@ -37,6 +38,11 @@ export function usePermission() { if (whiteList.includes(to.path)) { next() } else { + await ipcRenderer.invoke("toggle-main-window-resizable",false) + await ipcRenderer.invoke("main-window-resize",{ + width: 320, + height: 504 + }) next('/login') } } diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js index f9ab4d4..8b54d38 100644 --- a/src/renderer/router/index.js +++ b/src/renderer/router/index.js @@ -8,7 +8,7 @@ export const constantRouterMap = [{ component: Layout, redirect: '/dashboard', name: '主页', - hidden: true, + hidden: false, children: [{ path: 'dashboard', name: '总览', @@ -18,7 +18,7 @@ export const constantRouterMap = [{ path: '/login', component: () => import('@/views/login'), hidden: true -}, { +},{ path: '*', component: () => import('@/views/404'), hidden: true diff --git a/src/renderer/store/user.js b/src/renderer/store/user.js index 8e8c31f..1aac1a2 100644 --- a/src/renderer/store/user.js +++ b/src/renderer/store/user.js @@ -57,6 +57,8 @@ export const useUserStore = defineStore({ getInfo().then(res => { this.info = res this.isLogin = true + this.roles = ['admin'] + localStorage.setItem("roles", JSON.stringify(this.roles)); localStorage.setItem("name", res.name); resolve(res) }).then(err => { diff --git a/src/renderer/views/login/index.vue b/src/renderer/views/login/index.vue index 3c24cda..574e454 100644 --- a/src/renderer/views/login/index.vue +++ b/src/renderer/views/login/index.vue @@ -1,73 +1,57 @@ @@ -158,10 +80,6 @@ import { useRouter } from "@/hooks/use-router"; const userStore = useUserStore() -init(".form-container") -if (userStore.token) { - userStore.getUserInfo() -} const validateUsername = (rule, value, callback) => { if (!isvalidUsername(value)) { callback(new Error("请输入正确的用户名")); @@ -226,7 +144,13 @@ const handleLogin = () => { userStore.login(loginForm.value).then(res => { loading.value = false; - ipcRenderer.invoke("create-admin-window") + //ipcRenderer.invoke("create-admin-window") + ipcRenderer.invoke("toggle-main-window-resizable",true) + ipcRenderer.invoke("main-window-resize",{ + width: 1200, + height: 800 + }) + router.push('/') if (isRemember.value) { window.localStorage.setItem('lgif',window.btoa(JSON.stringify(loginForm.value))) } else { @@ -319,20 +243,8 @@ $light_gray: #eee; .form-container { - transition: all .2s; - width: 930px; - max-width: 100vw; - background: #fff; - border-radius: 14px; - padding-bottom: 53px; - filter: drop-shadow(0px 5px 24.5px rgba(74, 113, 240, 0.23)); + padding: 20px; - - .left { - img { - width: 310px; - } - } } .tips { @@ -347,13 +259,6 @@ $light_gray: #eee; } } - .form-item { - width: 361px; - height: 51px; - - margin-bottom: 0; - - } .svg-container { padding: 6px 0; color: $dark_gray; @@ -364,16 +269,6 @@ $light_gray: #eee; margin-left: 15px; } - .title-container { - display: flex; - justify-content: center; - position: relative; - margin-top: 85px; - img { - width: 754px; - } - } - .show-pwd { position: absolute; right: 10px;