Kaynağa Gözat

Merge branch 'master' of http://39.97.59.228:8013/hrx/mky-vent-base

lxh 5 ay önce
ebeveyn
işleme
af532119fb

+ 13 - 12
README.md

@@ -319,17 +319,14 @@ function addElementIdentifiers(svgData, keys) {
       // 确保group有属性对象
       // 确保group有属性对象
       if (!group.$) group.$ = {};
       if (!group.$) group.$ = {};
 
 
-      // 添加唯一标识
-      group.$['data-anim-id'] = elementId;
-
-      // 保存初始transform
-      const transform = group.$.transform || '';
+      // 添加唯一标识,同时该标识应支持组件索引以免多个组件复用后动画元素定位错误
+      group.$[':data-anim-id'] = `\`${elementId}\${identify}\``;
 
 
       // 存储元素信息
       // 存储元素信息
       elementInfoMap.set(elementId, {
       elementInfoMap.set(elementId, {
         key,
         key,
-        initialTransform: transform,
         transforms: [], // 将在后续步骤填充
         transforms: [], // 将在后续步骤填充
+        opacity: [],
       });
       });
     });
     });
   });
   });
@@ -369,6 +366,7 @@ async function collectTransforms(workspaceDir, files, elementInfoMap) {
   // 为每个元素初始化transform序列
   // 为每个元素初始化transform序列
   for (const [elementId, info] of elementInfoMap) {
   for (const [elementId, info] of elementInfoMap) {
     info.transforms = [];
     info.transforms = [];
+    info.opacity = [];
   }
   }
 
 
   // 按顺序处理所有SVG文件
   // 按顺序处理所有SVG文件
@@ -385,10 +383,9 @@ async function collectTransforms(workspaceDir, files, elementInfoMap) {
       const elementIndex = parseInt(elementId.split('_').pop());
       const elementIndex = parseInt(elementId.split('_').pop());
       if (groups[elementIndex] && groups[elementIndex].$ && groups[elementIndex].$.transform) {
       if (groups[elementIndex] && groups[elementIndex].$ && groups[elementIndex].$.transform) {
         info.transforms.push(groups[elementIndex].$.transform);
         info.transforms.push(groups[elementIndex].$.transform);
-      } else {
-        // 如果找不到transform,使用前一个值或初始值
-        const lastTransform = info.transforms.length > 0 ? info.transforms[info.transforms.length - 1] : info.initialTransform;
-        info.transforms.push(lastTransform);
+      }
+      if (groups[elementIndex] && groups[elementIndex].$ && groups[elementIndex].$.opacity) {
+        info.opacity.push(groups[elementIndex].$.opacity);
       }
       }
     }
     }
   }
   }
@@ -407,14 +404,18 @@ function generateVueComponent(svgContent, elementInfoMap, keys) {
   return `
   return `
 <template>\n${svgContent}\n</template>\n\n
 <template>\n${svgContent}\n</template>\n\n
 <script setup lang="ts">
 <script setup lang="ts">
-import { onMounted, defineExpose } from "vue";
+import { onMounted, defineExpose, withDefaults, defineProps } from "vue";
 import { useSvgAnimation } from '/@/hooks/vent/useSvgAnimation';
 import { useSvgAnimation } from '/@/hooks/vent/useSvgAnimation';
 
 
+const props = withDefaults(defineProps<{
+  /** 组件唯一标识符,提供后可以确保多个组件复用时的元素定位依旧准确 */
+  identify?: string;
+}>(), { identify: '' })
 
 
 // 元素信息(常量数据,使用Map)
 // 元素信息(常量数据,使用Map)
 const elementInfo = new Map([
 const elementInfo = new Map([
 ${Array.from(elementInfoMap.entries())
 ${Array.from(elementInfoMap.entries())
-  .map(([key, value]) => `  ["${key}", ${JSON.stringify(value)}]`)
+  .map(([key, value]) => `[\`${key}\${props.identify}\`, ${JSON.stringify(value)}]`)
   .join(',\n')}
   .join(',\n')}
 ]);
 ]);
 
 

+ 1 - 1
src/views/vent/internalManager/procedures-modal.vue

@@ -86,7 +86,7 @@
       const res = await getRegDataList({
       const res = await getRegDataList({
         pagetype: 'left',
         pagetype: 'left',
         pageSize: 500,
         pageSize: 500,
-        deviceKind: formStates.deviceKind,
+        devicekind: formStates.deviceKind,
       });
       });
       monitorDataOptions.value = res.records;
       monitorDataOptions.value = res.records;
     } catch (error) {
     } catch (error) {

Dosya farkı çok büyük olduğundan ihmal edildi
+ 619 - 0
src/views/vent/monitorManager/gateMonitor/components/gateDualSVG.ssl.vue


Dosya farkı çok büyük olduğundan ihmal edildi
+ 599 - 0
src/views/vent/monitorManager/gateMonitor/components/gateSVG.ssl.vue


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor