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