From 6e173210a874ff7601aa68eab56e912f5619c79c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 21 五月 2026 15:32:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_宁夏_英泽防锈' into dev_宁夏_英泽防锈

---
 src/views/aiIndustrialBrain/components/AiAssistantWorkspace.vue |  198 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 198 insertions(+), 0 deletions(-)

diff --git a/src/views/aiIndustrialBrain/components/AiAssistantWorkspace.vue b/src/views/aiIndustrialBrain/components/AiAssistantWorkspace.vue
new file mode 100644
index 0000000..1eb5e7b
--- /dev/null
+++ b/src/views/aiIndustrialBrain/components/AiAssistantWorkspace.vue
@@ -0,0 +1,198 @@
+<template>
+  <transition name="fade">
+    <section v-if="visible" class="assistant-workspace">
+      <div class="assistant-workspace__panel">
+        <button
+          v-if="assistantMode === 'pending'"
+          type="button"
+          class="workspace-back-btn"
+          @click="$emit('close')"
+        >
+          <el-icon><ArrowLeftBold /></el-icon>
+          <span>杩斿洖宸ヤ笟澶у睆</span>
+        </button>
+
+        <div class="assistant-workspace__body">
+          <AIChatSidebar
+            v-if="assistantMode !== 'pending'"
+            :key="assistantMode"
+            class="workspace-chat"
+            :assistants="resolvedAssistants"
+            :default-assistant="assistantMode"
+            :hide-trigger="true"
+            :auto-open="true"
+            drawer-size="100%"
+            drawer-direction="ttb"
+            header-extra-action-text="杩斿洖宸ヤ笟澶у睆"
+            @header-extra-action="$emit('close')"
+          />
+
+          <div v-else class="workspace-pending">
+            <div class="workspace-pending__content">
+              <h3>{{ agentTitle }}</h3>
+              <p>姝e湪寮�鍙戯紝鏁鏈熷緟......</p>
+            </div>
+          </div>
+        </div>
+      </div>
+    </section>
+  </transition>
+</template>
+
+<script setup>
+import { computed } from "vue";
+import { ArrowLeftBold } from "@element-plus/icons-vue";
+import AIChatSidebar from "@/components/AIChatSidebar/index.vue";
+import { assistantRegistry } from "@/components/AIChatSidebar/assistants";
+
+const props = defineProps({
+  visible: {
+    type: Boolean,
+    default: false,
+  },
+  agent: {
+    type: Object,
+    default: () => ({}),
+  },
+});
+
+defineEmits(["close"]);
+
+const agentKey = computed(() => String(props.agent?.key || ""));
+const agentTitle = computed(() => String(props.agent?.name || "AI鍔╂墜"));
+
+/**
+ * 缁存姢瑙勫垯锛�
+ * AI宸ヤ笟澶ц剳鏂板鏅鸿兘浣撴椂锛岃嫢甯屾湜鍙充晶寮圭獥鍙敤锛岄渶淇濊瘉鏅鸿兘浣� key 鍦� assistantRegistry 涓湁鍚屽悕閰嶇疆銆�
+ * 鏈厤缃椂浼氳繘鍏� pending锛堝紑鍙戜腑锛夋�侊紝浣滀负鏄惧紡鎻愰啋銆�
+ */
+const resolvedAssistant = computed(() => assistantRegistry[agentKey.value] || null);
+const assistantMode = computed(() => {
+  return resolvedAssistant.value ? agentKey.value : "pending";
+});
+const resolvedAssistants = computed(() => (resolvedAssistant.value ? [resolvedAssistant.value] : []));
+</script>
+
+<style scoped>
+.assistant-workspace {
+  position: fixed;
+  inset: 0;
+  z-index: 2100;
+  padding: 12px;
+  background: rgba(33, 49, 63, 0.24);
+  backdrop-filter: blur(2px);
+}
+
+.assistant-workspace__panel {
+  position: relative;
+  height: 100%;
+  border-radius: 22px;
+  border: 1px solid var(--surface-border);
+  background: linear-gradient(180deg, #f9fcfb 0%, #f0f5f2 100%);
+  box-shadow: var(--shadow-md);
+  overflow: hidden;
+}
+
+.assistant-workspace__body {
+  height: 100%;
+  min-height: 100%;
+}
+
+.workspace-back-btn {
+  position: absolute;
+  top: 16px;
+  right: 20px;
+  z-index: 5;
+  height: 36px;
+  padding: 0 14px;
+  border: 1px solid rgba(38, 112, 183, 0.3);
+  border-radius: 10px;
+  background: rgba(255, 255, 255, 0.92);
+  color: #25528f;
+  display: inline-flex;
+  align-items: center;
+  gap: 6px;
+  font-size: 14px;
+  font-weight: 600;
+  cursor: pointer;
+  transition: all 0.2s ease;
+}
+
+.workspace-back-btn:hover {
+  border-color: rgba(31, 122, 114, 0.45);
+  color: #1f5ddf;
+  box-shadow: 0 8px 16px rgba(31, 122, 114, 0.14);
+  transform: translateY(-1px);
+}
+
+.workspace-chat {
+  width: 100%;
+  height: 100%;
+}
+
+.workspace-chat :deep(.ai-chat-sidebar-wrapper) {
+  height: 100%;
+}
+
+.workspace-chat :deep(.ai-chat-drawer) {
+  height: 100%;
+}
+
+.workspace-chat :deep(.el-drawer) {
+  height: 100% !important;
+  width: 100% !important;
+}
+
+.workspace-pending {
+  height: 100%;
+  display: grid;
+  place-items: center;
+  padding: 20px;
+  color: var(--text-secondary);
+}
+
+.workspace-pending__content {
+  display: grid;
+  gap: 12px;
+  text-align: center;
+}
+
+.workspace-pending__content h3 {
+  margin: 0;
+  font-size: 36px;
+  color: var(--text-primary);
+}
+
+.workspace-pending__content p {
+  margin: 0;
+  font-size: 24px;
+}
+
+.fade-enter-active,
+.fade-leave-active {
+  transition: opacity 0.2s ease;
+}
+
+.fade-enter-from,
+.fade-leave-to {
+  opacity: 0;
+}
+
+@media (max-width: 1600px) {
+  .workspace-back-btn {
+    top: 12px;
+    right: 14px;
+    height: 32px;
+    padding: 0 12px;
+    font-size: 13px;
+  }
+
+  .workspace-pending__content h3 {
+    font-size: 30px;
+  }
+
+  .workspace-pending__content p {
+    font-size: 20px;
+  }
+}
+</style>

--
Gitblit v1.9.3