chore: 🔨 合并冲突解决
This commit is contained in:
@@ -2,10 +2,7 @@
|
||||
<section class="app-main" :style="{ height: appMainHeight }">
|
||||
<router-view>
|
||||
<template #default="{ Component, route }">
|
||||
<transition
|
||||
enter-active-class="animate__animated animate__fadeIn"
|
||||
mode="out-in"
|
||||
>
|
||||
<transition enter-active-class="animate__animated animate__fadeIn" mode="out-in">
|
||||
<keep-alive :include="cachedViews">
|
||||
<component :is="Component" :key="route.path" />
|
||||
</keep-alive>
|
||||
|
||||
@@ -31,12 +31,7 @@
|
||||
class="w400px flex-x-between p-1"
|
||||
>
|
||||
<div class="flex-center">
|
||||
<DictLabel
|
||||
v-model="item.type"
|
||||
code="notice_type"
|
||||
size="small"
|
||||
class="mr-1"
|
||||
/>
|
||||
<DictLabel v-model="item.type" code="notice_type" size="small" class="mr-1" />
|
||||
<el-text
|
||||
type="primary"
|
||||
size="small"
|
||||
@@ -83,16 +78,8 @@
|
||||
class="w400px flex-x-between p-1"
|
||||
>
|
||||
<div>
|
||||
<DictLabel
|
||||
v-model="item.type"
|
||||
code="notice_type"
|
||||
size="small"
|
||||
/>
|
||||
<el-link
|
||||
type="primary"
|
||||
class="ml-1"
|
||||
@click="readNotice(item.id)"
|
||||
>
|
||||
<DictLabel v-model="item.type" code="notice_type" size="small" />
|
||||
<el-link type="primary" class="ml-1" @click="readNotice(item.id)">
|
||||
{{ item.title }}
|
||||
</el-link>
|
||||
</div>
|
||||
@@ -127,22 +114,10 @@
|
||||
|
||||
<el-tab-pane label="待办" name="task">
|
||||
<template v-if="tasks.length > 0">
|
||||
<div
|
||||
v-for="(item, index) in tasks"
|
||||
:key="index"
|
||||
class="w400px flex-x-between p-1"
|
||||
>
|
||||
<div v-for="(item, index) in tasks" :key="index" class="w400px flex-x-between p-1">
|
||||
<div>
|
||||
<DictLabel
|
||||
v-model="item.type"
|
||||
code="notice_type"
|
||||
size="small"
|
||||
/>
|
||||
<el-link
|
||||
type="primary"
|
||||
class="ml-1"
|
||||
@click="readNotice(item.id)"
|
||||
>
|
||||
<DictLabel v-model="item.type" code="notice_type" size="small" />
|
||||
<el-link type="primary" class="ml-1" @click="readNotice(item.id)">
|
||||
{{ item.title }}
|
||||
</el-link>
|
||||
</div>
|
||||
@@ -196,11 +171,9 @@ const noticeDetailRef = ref();
|
||||
|
||||
// 获取未读消息列表并连接 WebSocket
|
||||
onMounted(() => {
|
||||
NoticeAPI.getMyNoticePage({ pageNum: 1, pageSize: 5, isRead: 0 }).then(
|
||||
(data) => {
|
||||
notices.value = data.list;
|
||||
}
|
||||
);
|
||||
NoticeAPI.getMyNoticePage({ pageNum: 1, pageSize: 5, isRead: 0 }).then((data) => {
|
||||
notices.value = data.list;
|
||||
});
|
||||
|
||||
WebSocketManager.subscribeToTopic("/user/queue/message", (message) => {
|
||||
console.log("收到消息:", message);
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
<template>
|
||||
<el-dropdown trigger="click">
|
||||
<div class="flex-center h100% p13px">
|
||||
<img
|
||||
:src="userStore.userInfo.avatar"
|
||||
class="rounded-full mr-10px w24px h24px"
|
||||
/>
|
||||
<img :src="userStore.userInfo.avatar" class="rounded-full mr-10px w24px h24px" />
|
||||
<span>{{ userStore.userInfo.username }}</span>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
@@ -12,10 +9,7 @@
|
||||
<el-dropdown-item @click="handleOpenUserProfile">
|
||||
{{ $t("navbar.profile") }}
|
||||
</el-dropdown-item>
|
||||
<a
|
||||
target="_blank"
|
||||
href="https://gitee.com/youlaiorg/vue3-element-admin"
|
||||
>
|
||||
<a target="_blank" href="https://gitee.com/youlaiorg/vue3-element-admin">
|
||||
<el-dropdown-item>{{ $t("navbar.gitee") }}</el-dropdown-item>
|
||||
</a>
|
||||
<a target="_blank" href="https://juejin.cn/post/7228990409909108793">
|
||||
|
||||
@@ -1,28 +1,16 @@
|
||||
<template>
|
||||
<el-drawer
|
||||
v-model="settingsVisible"
|
||||
size="300"
|
||||
:title="$t('settings.project')"
|
||||
>
|
||||
<el-drawer v-model="settingsVisible" size="300" :title="$t('settings.project')">
|
||||
<el-divider>{{ $t("settings.theme") }}</el-divider>
|
||||
|
||||
<div class="flex-center">
|
||||
<el-switch
|
||||
v-model="isDark"
|
||||
active-icon="Moon"
|
||||
inactive-icon="Sunny"
|
||||
@change="changeTheme"
|
||||
/>
|
||||
<el-switch v-model="isDark" active-icon="Moon" inactive-icon="Sunny" @change="changeTheme" />
|
||||
</div>
|
||||
|
||||
<el-divider>{{ $t("settings.interface") }}</el-divider>
|
||||
|
||||
<div class="py-1 flex-x-between">
|
||||
<span class="text-xs">{{ $t("settings.themeColor") }}</span>
|
||||
<ThemeColorPicker
|
||||
v-model="settingsStore.themeColor"
|
||||
@update:model-value="changeThemeColor"
|
||||
/>
|
||||
<ThemeColorPicker v-model="settingsStore.themeColor" @update:model-value="changeThemeColor" />
|
||||
</div>
|
||||
|
||||
<div class="py-1 flex-x-between">
|
||||
@@ -47,10 +35,7 @@
|
||||
|
||||
<el-divider>{{ $t("settings.navigation") }}</el-divider>
|
||||
|
||||
<LayoutSelect
|
||||
v-model="settingsStore.layout"
|
||||
@update:model-value="changeLayout"
|
||||
/>
|
||||
<LayoutSelect v-model="settingsStore.layout" @update:model-value="changeLayout" />
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -92,9 +92,7 @@ const onMenuOpen = (index: string) => {
|
||||
* @param index 当前收起的菜单项索引
|
||||
*/
|
||||
const onMenuClose = (index: string) => {
|
||||
expandedMenuIndexes.value = expandedMenuIndexes.value.filter(
|
||||
(item) => item !== index
|
||||
);
|
||||
expandedMenuIndexes.value = expandedMenuIndexes.value.filter((item) => item !== index);
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,17 +9,10 @@
|
||||
:active-text-color="variables['menu-active-text']"
|
||||
@select="handleMenuSelect"
|
||||
>
|
||||
<el-menu-item
|
||||
v-for="route in topMenus"
|
||||
:key="route.path"
|
||||
:index="route.path"
|
||||
>
|
||||
<el-menu-item v-for="route in topMenus" :key="route.path" :index="route.path">
|
||||
<template #title>
|
||||
<template v-if="route.meta && route.meta.icon">
|
||||
<el-icon
|
||||
v-if="route.meta.icon.startsWith('el-icon')"
|
||||
class="sub-el-icon"
|
||||
>
|
||||
<el-icon v-if="route.meta.icon.startsWith('el-icon')" class="sub-el-icon">
|
||||
<component :is="route.meta.icon.replace('el-icon-', '')" />
|
||||
</el-icon>
|
||||
<svg-icon v-else :icon-class="route.meta.icon" />
|
||||
@@ -99,8 +92,6 @@ const navigateToFirstLeftMenu = (menus: RouteRecordRaw[]) => {
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
topMenus.value = permissionStore.routes.filter(
|
||||
(item) => !item.meta || !item.meta.hidden
|
||||
);
|
||||
topMenus.value = permissionStore.routes.filter((item) => !item.meta || !item.meta.hidden);
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<template>
|
||||
<div class="tags-container">
|
||||
<el-scrollbar
|
||||
class="scroll-container"
|
||||
:vertical="false"
|
||||
@wheel.prevent="handleScroll"
|
||||
>
|
||||
<el-scrollbar class="scroll-container" :vertical="false" @wheel.prevent="handleScroll">
|
||||
<router-link
|
||||
v-for="tag in visitedViews"
|
||||
ref="tagRef"
|
||||
@@ -64,12 +60,7 @@ import { useRoute, useRouter, RouteRecordRaw } from "vue-router";
|
||||
import { resolve } from "path-browserify";
|
||||
import { translateRouteTitle } from "@/utils/i18n";
|
||||
|
||||
import {
|
||||
usePermissionStore,
|
||||
useTagsViewStore,
|
||||
useSettingsStore,
|
||||
useAppStore,
|
||||
} from "@/store";
|
||||
import { usePermissionStore, useTagsViewStore, useSettingsStore, useAppStore } from "@/store";
|
||||
|
||||
const { proxy } = getCurrentInstance()!;
|
||||
const router = useRouter();
|
||||
|
||||
Reference in New Issue
Block a user