From 9cecea613e29bb152bb6ea69a3cca94aa537c621 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 20 五月 2026 14:56:34 +0800
Subject: [PATCH] bom同一层级只能选一样的工序,增加提示
---
src/layout/index.vue | 88 +++++++++++++++++++++++++++++---------------
1 files changed, 58 insertions(+), 30 deletions(-)
diff --git a/src/layout/index.vue b/src/layout/index.vue
index a1bb724..11949df 100644
--- a/src/layout/index.vue
+++ b/src/layout/index.vue
@@ -7,36 +7,48 @@
@click="handleClickOutside" />
<sidebar v-if="!sidebar.hide"
class="sidebar-container" />
- <div :class="{ hasTagsView: needTagsView, sidebarHide: sidebar.hide }"
- class="main-container">
- <div :class="{ 'fixed-header': fixedHeader }">
+ <div :class="{ hasTagsView: showTagsView, sidebarHide: sidebar.hide }"
+ class="main-container main-layout">
+ <div :class="{ 'fixed-header': fixedHeader, 'with-tags': showTagsView }">
<navbar @setLayout="setLayout" />
- <tags-view v-if="needTagsView" />
+ <tags-view v-if="showTagsView" />
</div>
<app-main />
<settings ref="settingRef" />
</div>
- <AIChatSidebar />
+ <AIChatSidebar v-if="showGlobalAiChat" />
</div>
</template>
<script setup>
import { useWindowSize } from "@vueuse/core";
+ import { useRoute } from "vue-router";
import Sidebar from "./components/Sidebar/index.vue";
import { AppMain, Navbar, Settings, TagsView } from "./components";
import AIChatSidebar from "@/components/AIChatSidebar/index.vue";
import defaultSettings from "@/settings";
import useAppStore from "@/store/modules/app";
+ import useUserStore from "@/store/modules/user";
import useSettingsStore from "@/store/modules/settings";
+ import useTagsViewStore from "@/store/modules/tagsView";
const settingsStore = useSettingsStore();
+ const tagsViewStore = useTagsViewStore();
+ const userStore = useUserStore();
+ const route = useRoute();
const theme = computed(() => settingsStore.theme);
const sideTheme = computed(() => settingsStore.sideTheme);
const sidebar = computed(() => useAppStore().sidebar);
const device = computed(() => useAppStore().device);
const needTagsView = computed(() => settingsStore.tagsView);
+ const showTagsView = computed(() => needTagsView.value && tagsViewStore.visitedViews.length > 1);
const fixedHeader = computed(() => settingsStore.fixedHeader);
+ const aiEnabled = computed(() => Number(userStore.aiEnabled) === 1);
+ const showGlobalAiChat = computed(() => {
+ const isIndustrialBrainRoute = String(route.path || "").startsWith("/ai-industrial-brain");
+ return !isIndustrialBrainRoute && aiEnabled.value;
+ });
const classObj = computed(() => ({
hideSidebar: !sidebar.value.opened,
@@ -78,19 +90,16 @@
<style lang="scss" scoped>
@import "@/assets/styles/mixin.scss";
- @import "@/assets/styles/variables.module.scss";
.app-wrapper {
@include clearfix;
position: relative;
- height: 100%;
+ min-height: 100%;
width: 100%;
- background: radial-gradient(
- circle at top,
- rgba(223, 232, 226, 0.95),
- transparent 32%
- ),
- linear-gradient(180deg, #f7faf8 0%, var(--app-bg) 100%);
+ background:
+ radial-gradient(circle at 14% -8%, rgba(59, 130, 246, 0.14), transparent 36%),
+ radial-gradient(circle at 88% -12%, rgba(56, 189, 248, 0.1), transparent 30%),
+ linear-gradient(165deg, #f3f7fc 0%, #eef5ff 56%, #f8fbff 100%);
&.mobile.openSidebar {
position: fixed;
@@ -99,8 +108,7 @@
}
.drawer-bg {
- background: #000;
- opacity: 0.3;
+ background: rgba(15, 23, 42, 0.22);
width: 100%;
top: 0;
height: 100%;
@@ -108,26 +116,46 @@
z-index: 999;
}
- .fixed-header {
- position: fixed;
- top: 0px;
- padding-top: 12px;
- right: 16px;
- z-index: 9;
- width: calc(100% - #{$base-sidebar-width} - 32px);
- transition: width 0.28s, right 0.28s;
- padding-bottom: 8px;
- background-color: #f3f6f4;
- }
- .hideSidebar .fixed-header {
- width: calc(100% - 100px);
+ .main-layout {
+ min-height: 100vh;
+ margin-left: var(--sidebar-width);
+ transition: margin-left 0.25s ease;
+ display: flex;
+ flex-direction: column;
}
- .sidebarHide .fixed-header {
- width: calc(100% - 32px);
+ .fixed-header {
+ position: sticky;
+ top: 0;
+ z-index: var(--layout-header-z);
+ width: 100%;
+ padding: 8px var(--content-gap) 0;
+ display: flex;
+ flex-direction: column;
+ gap: 6px;
+ background: transparent;
+ backdrop-filter: none;
+ }
+
+ .fixed-header.with-tags {
+ padding-bottom: 6px;
+ }
+
+ .hideSidebar .fixed-header {
+ width: 100%;
+ }
+
+ .hideSidebar .main-layout {
+ margin-left: var(--sidebar-collapsed-width);
}
.mobile .fixed-header {
width: 100%;
+ padding: 8px 10px 0;
+ }
+
+ .mobile .main-layout,
+ .sidebarHide.main-layout {
+ margin-left: 0;
}
</style>
--
Gitblit v1.9.3