Procházet zdrojové kódy

流光直线功能修改

chenxg před 1 rokem
rodič
revize
671a15c148

+ 35 - 1
report-ui/src/views/bigscreenDesigner/designer/tools/configure/styleWidget/widget-decorate-flow-line.js

@@ -27,6 +27,14 @@ export const widgetDecorateFlowLine =  {
           placeholder: '',
           placeholder: '',
           value: ''
           value: ''
         },
         },
+        {
+          type: 'vue-color',
+          label: '流光颜色',
+          name: 'lightColor',
+          required: false,
+          placeholder: '',
+          value: '#fff'
+        },
         {
         {
           type: 'el-select',
           type: 'el-select',
           label: '流动方向',
           label: '流动方向',
@@ -39,6 +47,32 @@ export const widgetDecorateFlowLine =  {
           ],
           ],
           value: 'left'
           value: 'left'
         },
         },
+        {
+          type: 'el-select',
+          label: '流动速度',
+          name: 'flowingLightSpeed',
+          required: false,
+          placeholder: '',
+          selectOptions: [
+            { code: 'low', name: '低' },
+            { code: 'medium', name: '中' },
+            { code: 'high', name: '高' },
+          ],
+          value: 'medium'
+        },
+        {
+          type: 'el-select',
+          label: '旋转中心',
+          name: 'flowingLightRotationCenter',
+          required: false,
+          placeholder: '',
+          selectOptions: [
+            { code: 'left', name: '左' },
+            { code: 'center', name: '中' },
+            { code: 'right', name: '右' },
+          ],
+          value: 'center'
+        },
         {
         {
           type: 'el-input-number',
           type: 'el-input-number',
           label: '旋转角度',
           label: '旋转角度',
@@ -82,7 +116,7 @@ export const widgetDecorateFlowLine =  {
           name: 'height',
           name: 'height',
           required: false,
           required: false,
           placeholder: '该容器在1080px大屏中的高度',
           placeholder: '该容器在1080px大屏中的高度',
-          value: 300,
+          value: 4,
         },
         },
       ],
       ],
     }
     }

+ 22 - 5
report-ui/src/views/bigscreenDesigner/designer/widget/styleWidget/widgetDecorateFlowLine.vue

@@ -19,7 +19,11 @@ export default ({
       direction: 'left', // 控制流光的方向,可选值: 'left' 和 'right'
       direction: 'left', // 控制流光的方向,可选值: 'left' 和 'right'
       background: 'red', // 控制底色的值
       background: 'red', // 控制底色的值
       containerWidth: '400px',
       containerWidth: '400px',
+      containerHeight: '4px',
       rotationAngle: 0, // 旋转的角度
       rotationAngle: 0, // 旋转的角度
+      flowingLightColor: null,
+      flowingLightSpeed: 'medium',
+      flowingLightRotationCenter: 'center',
     }
     }
   },
   },
   props: {
   props: {
@@ -64,20 +68,30 @@ export default ({
       return {
       return {
         background: this.background,
         background: this.background,
         width: '100%',
         width: '100%',
-        height: '4px',
+        height: this.containerHeight + "px",
         position: 'relative',
         position: 'relative',
         overflow: 'hidden',
         overflow: 'hidden',
         flexDirection: this.direction === 'left' ? 'row-reverse' : 'row', // 根据流光方向设置进度条的方向
         flexDirection: this.direction === 'left' ? 'row-reverse' : 'row', // 根据流光方向设置进度条的方向
-        transform: `rotate(${this.rotationAngle}deg)` // 添加旋转角度
+        transform: `rotate(${this.rotationAngle}deg)`, // 添加旋转角度
+        transformOrigin: this.flowingLightRotationCenter, // 设置旋转中心
       }
       }
     },
     },
     flowingLightStyle() {
     flowingLightStyle() {
+      let duration = 0; // 初始化动画持续时间
+
+      if (this.flowingLightSpeed === 'low') {
+        duration = 8; // 低速持续时间
+      } else if (this.flowingLightSpeed === 'medium') {
+        duration = 4; // 中速持续时间
+      } else if (this.flowingLightSpeed === 'high') {
+        duration = 2; // 高速持续时间
+      }
       return {
       return {
         height: '4px',
         height: '4px',
         width: '80px',
         width: '80px',
-        background: 'linear-gradient(to right, transparent, #fff)',
+        background: 'linear-gradient(to right, transparent,' + this.flowingLightColor + ')',
         position: 'absolute',
         position: 'absolute',
-        animation: this.direction === 'left' ? 'right_to_left 4s 0s infinite' : 'left_to_right 4s 0s infinite' // 根据流光方向设置动画
+        animation: this.direction === 'right' ? `right_to_left ${duration}s 0s infinite` : `left_to_right ${duration}s 0s infinite` // 根据流光方向设置动画
       }
       }
     },
     },
   },
   },
@@ -89,13 +103,16 @@ export default ({
       this.direction = optionsSetup.flowDirection;
       this.direction = optionsSetup.flowDirection;
       this.rotationAngle = optionsSetup.rotationAngle;
       this.rotationAngle = optionsSetup.rotationAngle;
       this.containerWidth = optionsStyle.width;
       this.containerWidth = optionsStyle.width;
+      this.containerHeight = optionsStyle.height;
+      this.flowingLightColor = optionsSetup.lightColor;
+      this.flowingLightSpeed = optionsSetup.flowingLightSpeed;
+      this.flowingLightRotationCenter = optionsSetup.flowingLightRotationCenter;
     },
     },
   }
   }
 })
 })
 </script>
 </script>
 <style>
 <style>
 .container {
 .container {
-  height: 4px;
   display: flex;
   display: flex;
   justify-content: center;
   justify-content: center;
   align-items: center;
   align-items: center;