diff --git a/auto-imports.d.ts b/auto-imports.d.ts
deleted file mode 100644
index e6d5032..0000000
--- a/auto-imports.d.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-/* eslint-disable */
-/* prettier-ignore */
-// @ts-nocheck
-// noinspection JSUnusedGlobalSymbols
-// Generated by unplugin-auto-import
-export {}
-declare global {
- const IconEpAvatar: typeof import('~icons/ep/avatar')['default']
- const IconEpCloseBold: typeof import('~icons/ep/close-bold')['default']
-}
diff --git a/components.d.ts b/components.d.ts
index d74c0b2..0ae7b95 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -7,11 +7,14 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
- BackgroundComp: typeof import('./src/components/BackgroundComp.vue')['default']
+ '菜单': typeof import('./src/assets/icons/菜单.svg')['default']
+ AppHeaderMenu: typeof import('./src/components/app/AppHeaderMenu.vue')['default']
+ AppHeaderUser: typeof import('./src/components/app/AppHeaderUser.vue')['default']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElButton: typeof import('element-plus/es')['ElButton']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDialog: typeof import('element-plus/es')['ElDialog']
+ ElDrawer: typeof import('element-plus/es')['ElDrawer']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
@@ -27,20 +30,16 @@ declare module 'vue' {
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
- FestivalMenuItem: typeof import('./src/components/FestivalMenuItem.vue')['default']
- Game2048: typeof import('./src/components/game2048/Game2048.vue')['default']
- Game2048Button: typeof import('./src/components/game2048/Game2048Button.vue')['default']
- Game2048Score: typeof import('./src/components/game2048/Game2048Score.vue')['default']
IconCsClub: typeof import('~icons/cs/club')['default']
IconCsLock: typeof import('~icons/cs/lock')['default']
+ IconCsMenu: typeof import('~icons/cs/menu')['default']
IconCsUser: typeof import('~icons/cs/user')['default']
IconCsValidate: typeof import('~icons/cs/validate')['default']
IconEpLoading: typeof import('~icons/ep/loading')['default']
IconEpUserFilled: typeof import('~icons/ep/user-filled')['default']
- LoginRegisterDialog: typeof import('./src/components/LoginRegisterDialog.vue')['default']
+ Menu: typeof import('./src/assets/icons/Menu.svg')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
- VerifyInput: typeof import('./src/components/VerifyInput.vue')['default']
}
export interface ComponentCustomProperties {
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
diff --git a/src/App.vue b/src/App.vue
index f609ad0..b2d50b6 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,49 +1,32 @@
@@ -56,7 +39,46 @@
+
+
+
+ 退出登录
+
+
+
+
diff --git a/src/components/app/AppHeaderUser.vue b/src/components/app/AppHeaderUser.vue
new file mode 100644
index 0000000..216dd50
--- /dev/null
+++ b/src/components/app/AppHeaderUser.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
diff --git a/src/stores/page.ts b/src/stores/page.ts
index 5fdf547..f4992bb 100644
--- a/src/stores/page.ts
+++ b/src/stores/page.ts
@@ -1,6 +1,7 @@
import router from '@/router';
import { IdPool } from '@/utils';
import type { PageErrorReason } from '@/views/ErrorPage.vue';
+import { useMediaQuery } from '@vueuse/core';
import { defineStore } from 'pinia';
import { computed } from 'vue';
import {
@@ -14,7 +15,8 @@ export const usePageStore = defineStore('page-store', () => {
const routeIdPool = new IdPool();
const routeIds = routeIdPool.usedIdSet;
const pageLoadingCount = computed(() => routeIds.size);
-
+ const mobileScreen = useMediaQuery('(max-width: 576px)');
+ const smallMobileScreen = useMediaQuery('(max-width: 400px)');
function setNewRouteId(route: RouteLocationNormalized) {
return (route.meta.routeId = routeIdPool.newId());
}
@@ -51,6 +53,8 @@ export const usePageStore = defineStore('page-store', () => {
return {
pageLoadingCount,
+ mobileScreen,
+ smallMobileScreen,
setNewRouteId,
removeRouteId,
createTempErrorRoute,
diff --git a/src/stores/user.ts b/src/stores/user.ts
index c5bd66d..a199012 100644
--- a/src/stores/user.ts
+++ b/src/stores/user.ts
@@ -20,7 +20,7 @@ export const useUserStore = defineStore('user', () => {
});
const permissions = computed(() => userInfo.value?.auth.permissions ?? []);
const initializing = ref(false);
- const logined = computed(() => userInfo.value && userInfo.value.id !== -1);
+ const logined = computed(() => (userInfo.value && userInfo.value.id !== -1) ?? false);
watch(
userInfo,
() => {
@@ -30,8 +30,6 @@ export const useUserStore = defineStore('user', () => {
);
async function updateSelfUserInfo(showErrorMessage: boolean): Promise {
initializing.value = true;
- console.log('called');
-
try {
const raw = await axiosInstance
.get('/api/user/info')
diff --git a/vite.config.ts b/vite.config.ts
index a64629f..0312ebe 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,6 +1,6 @@
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
-import legacy from "@vitejs/plugin-legacy";
+import legacy from '@vitejs/plugin-legacy';
import { resolve } from 'node:path';
import AutoImport from 'unplugin-auto-import/vite';
import { FileSystemIconLoader } from 'unplugin-icons/loaders';
@@ -12,51 +12,41 @@ import { defineConfig } from 'vite';
// https://vitejs.dev/config/
export default defineConfig({
build: {
- target: "es2015",
+ target: 'es2015',
},
plugins: [
legacy({
targets: ['defaults', 'Chrome >= 100', 'Edge >= 100', 'FireFox >= 110'],
- polyfills: ["es.promise.with-resolvers"],
- modernPolyfills: ["es.promise.with-resolvers"],
+ polyfills: ['es.promise.with-resolvers'],
+ modernPolyfills: ['es.promise.with-resolvers'],
}),
vue(),
- vueJsx(),
- AutoImport({
- resolvers: [
- ElementPlusResolver(),
- IconsResolver({
- prefix: 'icon',
- enabledCollections: ['ep'],
- customCollections: ['cs']
- })
- ]
- }),
Components({
resolvers: [
ElementPlusResolver(),
IconsResolver({
prefix: 'icon',
enabledCollections: ['ep'],
- customCollections: ['cs']
- })
- ]
+ customCollections: ['cs'],
+ }),
+ ],
+ globs: ['!src/components/*.vue', '!src/views/*.vue'],
}),
Icons({
autoInstall: true,
customCollections: {
- cs: FileSystemIconLoader('./src/assets/icons')
- }
- })
+ cs: FileSystemIconLoader('./src/assets/icons'),
+ },
+ }),
],
resolve: {
alias: {
- '@': resolve('./src')
+ '@': resolve('./src'),
// vue: 'vue/dist/vue.esm-bundler.js'
- }
+ },
},
server: {
host: '0.0.0.0',
- port: 18081
- }
+ port: 18081,
+ },
});