From 5eebeba2a160192d48344ab587e90faaf6135dd8 Mon Sep 17 00:00:00 2001 From: ZhangXianQiang <1135831638@qq.com> Date: 星期一, 03 六月 2024 15:45:44 +0800 Subject: [PATCH] feat:用户信息面板 --- dist-electron/background.js | 9 ++- src/layout/components/Header/index.vue | 6 +- src/assets/icons/icon1.png | 0 src/views/home/index.vue | 9 ++ src/assets/icons/icon2.png | 0 src/views/home/components/user-panel/index.vue | 92 ++++++++++++++++++++++++++++++ components.d.ts | 4 + src/background.js | 9 ++- src/layout/index.vue | 1 src/App.vue | 6 + src/utils/randomColor.js | 15 +++++ 11 files changed, 138 insertions(+), 13 deletions(-) diff --git a/components.d.ts b/components.d.ts index c0ddc14..d14fc28 100644 --- a/components.d.ts +++ b/components.d.ts @@ -7,7 +7,11 @@ /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { + ElAvatar: typeof import('element-plus/es')['ElAvatar'] ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] Header: typeof import('./src/components/Header/index.vue')['default'] HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] diff --git a/dist-electron/background.js b/dist-electron/background.js index 594cf04..aedb9c8 100644 --- a/dist-electron/background.js +++ b/dist-electron/background.js @@ -1,11 +1,14 @@ "use strict"; -const { app, BrowserWindow } = require("electron"); +const { app, BrowserWindow, screen } = require("electron"); const { join } = require("path"); process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"; const createWindow = () => { + const { width, height } = screen.getPrimaryDisplay().bounds; const win = new BrowserWindow({ - width: 800, - height: 600 + width, + height, + minWidth: 1280, + minHeight: 720 }); if (process.env.VITE_DEV_SERVER_URL) { win.loadURL(process.env.VITE_DEV_SERVER_URL); diff --git a/src/App.vue b/src/App.vue index ab49f3c..26b1552 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,9 +2,11 @@ </script> <template> - <div class="page-container w-screen h-screen"> + <div class="page-container"> <RouterView /> </div> </template> -<style scoped></style> +<style scoped> + +</style> diff --git a/src/assets/icons/icon1.png b/src/assets/icons/icon1.png new file mode 100644 index 0000000..87c8480 --- /dev/null +++ b/src/assets/icons/icon1.png Binary files differ diff --git a/src/assets/icons/icon2.png b/src/assets/icons/icon2.png new file mode 100644 index 0000000..9c800c6 --- /dev/null +++ b/src/assets/icons/icon2.png Binary files differ diff --git a/src/background.js b/src/background.js index 5d81b89..c7c4802 100644 --- a/src/background.js +++ b/src/background.js @@ -1,5 +1,5 @@ // src-electron/main.js -const { app, BrowserWindow } = require('electron'); +const { app, BrowserWindow,screen } = require('electron'); const { join } = require('path'); // 灞忚斀瀹夊叏璀﹀憡 @@ -8,9 +8,12 @@ // 鍒涘缓娴忚鍣ㄧ獥鍙f椂锛岃皟鐢ㄨ繖涓嚱鏁般�� const createWindow = () => { + const {width, height} = screen.getPrimaryDisplay().bounds; const win = new BrowserWindow({ - width: 800, - height: 600, + width: width, + height: height, + minWidth: 1280, + minHeight: 720, }); // win.loadURL('http://localhost:3000') diff --git a/src/layout/components/Header/index.vue b/src/layout/components/Header/index.vue index b7082a9..a7351aa 100644 --- a/src/layout/components/Header/index.vue +++ b/src/layout/components/Header/index.vue @@ -29,10 +29,10 @@ <script setup> import { ref, watchEffect } from 'vue'; -import { useRoute,useRouter } from 'vue-router'; +import { useRoute } from 'vue-router'; const route = useRoute(); -console.log(route); + const menuList = ref([ { name: '棣栭〉', @@ -63,7 +63,7 @@ <style lang="scss" scoped> .header-container { - box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.5) + box-shadow: 0 1px 20px 0 rgb(0 0 0 / 0.1); } @media (min-width: 1836px) { diff --git a/src/layout/index.vue b/src/layout/index.vue index 6811d3f..9e50aa0 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -5,6 +5,7 @@ <template> <div class="page-container w-screen h-screen flex flex-col"> <Header></Header> + <div class="page-content w-screen grow relative"> <div class="page-wrapper bg-slate-50 absolute top-0 left-0 right-0 bottom-0 overflow-y-auto"> <el-scrollbar> diff --git a/src/utils/randomColor.js b/src/utils/randomColor.js new file mode 100644 index 0000000..59d7f05 --- /dev/null +++ b/src/utils/randomColor.js @@ -0,0 +1,15 @@ + +const colorList = [ + '#E74C3C', + '#8E44AD', + '#F39C12', + '#27AE60', + '#FFD1DC', + '#2471A3', + '#88D8B0', + '#154360', + '#F78F1E' +]; +export default function randomColor() { + return colorList[Math.floor(Math.random() * colorList.length)]; +} \ No newline at end of file diff --git a/src/views/home/components/user-panel/index.vue b/src/views/home/components/user-panel/index.vue new file mode 100644 index 0000000..22d1f13 --- /dev/null +++ b/src/views/home/components/user-panel/index.vue @@ -0,0 +1,92 @@ +<template> + <div class="user-panel sticky left-10 top-5 max-w-sm"> + <el-card class="card"> + <div class="panel-content flex flex-col items-center"> + <div class="avatar-container w-40 h-40 rounded-full overflow-hidden"> + <div class="avatar-content"> + <img src="@/assets/image/avatar/avatar.png" class="avatar-img" alt=""> + </div> + <!-- <div class="avatar-content" :style="{backgroundColor: getColor}"> + <div class="name text-5xl font-bold text-white">寮�</div> + </div> --> + </div> + + <div class="name-container text-lg font-bold mt-5 mb-2"> + 娴嬭瘯娴嬭瘯 + </div> + + <div class="department-container text-base mb-10"> + 娴嬭瘯娴嬭瘯 + </div> + + <div class="tool-container grid grid-cols-3 gap-10"> + <div class="tool-item text-center cursor-pointer" v-for="item in toolList"> + <div class="tool-icon mb-1"> + <img :src="item.iconPath" class="width-img" alt=""> + </div> + <div class="tool-title"> + {{ item.title }} + </div> + </div> + </div> + + </div> + </el-card> + </div> +</template> + +<script setup> +import { ref, computed } from 'vue'; +import randomColor from '@/utils/randomColor.js'; + +const toolList = ref([ + { + id: 1, + title: '璧勬簮鍏变韩', + iconPath: new URL('@/assets/icons/icon1.png', import.meta.url).href + }, + { + id: 2, + title: '鎴戠殑璇剧▼', + iconPath: new URL('@/assets/icons/icon2.png', import.meta.url).href + }, + { + id: 3, + title: '鎴戠殑璇剧▼', + iconPath: new URL('@/assets/icons/icon2.png', import.meta.url).href + }, + { + id: 4, + title: '鎴戠殑璇剧▼', + iconPath: new URL('@/assets/icons/icon2.png', import.meta.url).href + }, +]); + + +const getColor = computed(() => { + return randomColor(); +}) + +</script> + +<style lang="scss" scoped> + + +.card { + border-radius: 30px; +} + +.avatar-content { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.avatar-img { + width: 100%; + height: 100%; + object-fit: cover; +} +</style> \ No newline at end of file diff --git a/src/views/home/index.vue b/src/views/home/index.vue index a95cc65..a8cf7f0 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -1,10 +1,15 @@ <template> - + <UserPanel></UserPanel> + <div class="test"></div> </template> <script setup> +import UserPanel from './components/user-panel/index.vue'; + </script> <style lang="scss" scoped> - +.test { + height: 500px; +} </style> \ No newline at end of file -- Gitblit v1.8.0