yangg 1 napja
szülő
commit
f9818ecda6

BIN
src/assets/arrow_arrow01.png


BIN
src/assets/arrow_arrow02.png


BIN
src/assets/arrow_arrow03.png


BIN
src/assets/arrow_arrow04.png


BIN
src/assets/arrow_arrow05.png


BIN
src/assets/arrow_arrow16.png


+ 55 - 14
src/components/SystemGraph/index.vue

@@ -7,6 +7,11 @@
         :key="item.id"
         :style="{ backgroundColor: item.color || '#f0f0f0' }"
       >
+        <img 
+          :src="getSystemIcon(item.name)" 
+          :alt="item.name"
+          class="system-icon"
+        />
         <div class="system-item-label">{{ item.name }}</div>
       </div>
     </div>
@@ -430,6 +435,21 @@ const handleMatch = () => {
 
 const systemList = ref([]);
 
+// 获取系统对应的图标
+const getSystemIcon = (systemName) => {
+  const iconMap = {
+    'ERP': '/src/assets/arrow_arrow01.png',
+    'MES': '/src/assets/arrow_arrow02.png',
+    'PLM': '/src/assets/arrow_arrow03.png',
+    'QMS': '/src/assets/arrow_arrow04.png',
+    'PMS': '/src/assets/arrow_arrow05.png',
+    'WMS': '/src/assets/arrow_arrow16.png',
+   
+  };
+  
+  return iconMap[systemName] || '/src/assets/svg/setting.svg'; // 默认图标
+};
+
 const transformSystemsToArray = (systems) => {
   return Object.entries(systems).map(([name, data]) => ({
     id: name,
@@ -636,39 +656,60 @@ onUnmounted(() => {
 
 .system-list {
   width: 100%;
-  padding: 20px;
+  padding: 24px;
   display: flex;
-  
-  gap: 10px;
+  gap: 16px;
   justify-content: flex-start;
   flex-wrap: wrap;
+  background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
+  border-radius: 12px;
+  margin: 16px;
+  box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
 }
 
 .system-item {
-  padding: 10px 10px;
-  border-radius: 6px;
+  padding: 12px 16px;
+  border-radius: 8px;
   cursor: pointer;
   transition: all 0.3s ease;
-  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
   display: flex;
   align-items: center;
-  gap: 8px;
-  min-width: 120px;
+  gap: 10px;
+  min-width: 140px;
   justify-content: center;
+  border: 1px solid rgba(255,255,255,0.2);
 }
 
-.system-item:hover {
-  transform: translateY(-2px);
-  box-shadow: 0 4px 8px rgba(0,0,0,0.15);
+.system-icon {
+  width: 22px;
+  height: 22px;
+  filter: brightness(0) invert(1); /* 让图标变成白色 */
   opacity: 0.9;
+  transition: all 0.3s ease;
+  flex-shrink: 0;
+}
+
+.system-item:hover .system-icon {
+  opacity: 1;
+  transform: scale(1.1) rotate(5deg);
+}
+
+.system-item:hover {
+  transform: translateY(-3px);
+  box-shadow: 0 6px 16px rgba(0,0,0,0.2);
+  opacity: 0.95;
+  border-color: rgba(255,255,255,0.4);
 }
 
 .system-item-label {
   color: #fff;
-  font-size: 14px;
-  font-weight: 500;
-  text-shadow: 0 1px 2px rgba(0,0,0,0.1);
+  font-size: 15px;
+  font-weight: 600;
+  text-shadow: 0 1px 3px rgba(0,0,0,0.2);
   text-align: center;
+  letter-spacing: 0.5px;
+  white-space: nowrap;
 }
 
 #container {

+ 1 - 1
src/views/report.vue

@@ -1538,7 +1538,7 @@ const sendMessage = async () => {
   )
     return;
   isTyping.value = true;
-  
+  scrollToBottom()
   // 保存当前输入内容
   const currentMessage = inputContent.value.trim();