From b1ec910ae7c0c19f6afabafd3cb75722a6b059dd Mon Sep 17 00:00:00 2001
From: jihongshun <1151753686@qq.com>
Date: 星期三, 30 七月 2025 15:54:33 +0800
Subject: [PATCH] 鼠标缩放控制视锥体

---
 src/utils/components/init-map.vue |  476 +++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 346 insertions(+), 130 deletions(-)

diff --git a/src/utils/components/init-map.vue b/src/utils/components/init-map.vue
index 3442bf7..4ecd9e3 100644
--- a/src/utils/components/init-map.vue
+++ b/src/utils/components/init-map.vue
@@ -4,18 +4,44 @@
     <div ref="cesiumContainer" id="cesiumContainer"></div>
     <!-- 鐩告満瑙嗚瀹瑰櫒 -->
     <div ref="cesiumCamera" id="cesiumCamera"></div>
+    <div class="zoom-ui-container" @wheel="handleWheel">
+       <!-- 涓棿榛勮壊鍑嗘槦妗� -->
+    <div
+      class="reticle"
+      :style="{ width: boxWidth + 'px', height: boxHeight + 'px' }"
+    ></div>
+
+    <!-- 浣跨敤 ElementUI 鐨� Slider 鏇夸唬鍙樺�嶈酱 -->
+    <div class="zoom-bar-slider">
+      <el-slider
+        v-model="zoomRatio"
+        vertical
+        height="200px"
+        :min="minZoom"
+        :max="maxZoom"
+        :step="0.1"
+        :format-tooltip="formatTooltip"
+        :marks="marks"
+        @input="onSliderInput"
+      />
+    </div>
+
+      <!-- 宸︿笅瑙掑�嶇巼淇℃伅 -->
+      <div class="zoom-info">
+        <el-tag type="success">鍊嶇巼: {{ zoomRatio.toFixed(1) }}X</el-tag>
+      </div>
+    </div>
+
+    
+    
     <!-- botton -->
     <div class="cesiumBotton">
       <div class="cesiumButtonGroup">
         <el-button id="groundPoi" @click="addGroundPoi()" type="primary">鍦伴潰鐐�</el-button>
-        <!-- <el-button id="groundPoi" @click="addGroundPoi()" type="primary">鍋滅暀鏃堕棿</el-button> -->
         <el-input v-model="mergeNumber" placeholder="璇疯緭鍏ュ悎骞惰寖鍥�" type="number" style="width: 150px;"></el-input>
         <el-button  @click="mergePoint()" type="success">鍚堝苟</el-button>
-        <el-button  @click="renderData()" type="success">鏁版嵁娓叉煋</el-button>
-        <!-- <el-button  @click="VisualCone()" type="success">鐢熸垚瑙嗛敟浣�</el-button> -->
-
       </div>
-      <div class="key-container">
+      <!-- <div class="key-container">
         <div class="arrow-row">
           <div
               class="arrow"
@@ -65,7 +91,7 @@
               @mousedown="handleClick('ArrowRight')"
             >鈫�</div>
           </div>
-      </div>
+      </div> -->
     </div>
 
     <!-- 鍔ㄦ�佸潗鏍囥�佸姩鎬佺浉鏈哄弬鏁版樉绀� -->
@@ -91,7 +117,11 @@
 let  globalon  = 0
 let  globalat = 0
 let  pois = [globalon, globalat,0] 
-
+let cameraVideo 
+let ScopeElement; //鍏夎酱銆佽棰�
+let preVideoScopePrimitiveArrTie = [];
+let scratchSetViewMatrix3 = new Cesium.Matrix3();
+let chooseId
 // let  pois = [0, 0,0] 
 let holdingPosition;
 let rightKeyMove = false
@@ -129,13 +159,29 @@
         mergeNumber:null,
         activeKey: null,
         timer: null,
-        handler: null,
-      frustumPrimitive: null,
-      selected: false,
+        zoomRatio: 1,
+        minZoom: 1,
+        maxZoom: 56,
+        baseBoxSize: 400,
+        marks: {
+          1: '1X',
+          7: '7X',
+          14: '14X',
+          28: '28X',
+          56: '56X'
+        }
     }
   },
   mounted(){
      this.initCesium();
+  },
+  computed: {
+    boxWidth() {
+      return this.baseBoxSize / this.zoomRatio;
+    },
+    boxHeight() {
+      return (this.baseBoxSize * 0.75) / this.zoomRatio; // 楂樺害淇濇寔 4:3 姣斾緥
+    }
   },
   beforeDestroy() {
     counter = 0
@@ -156,14 +202,13 @@
         this.loadModel()
         this.addSyncListener()
         this.registerKeyboardEvents();
-        
         let control = viewerC.scene.screenSpaceCameraController;
         control.enableRotate = false;
         control.enableTranslate = false;
         control.enableZoom = false;
         control.enableTilt = false;
         control.enableLook = false;
-        this.cammove_measure_point();
+        viewerC.scene.camera.percentageChanged = 0.05聽
       },1000)
     },
 
@@ -202,13 +247,6 @@
           fullscreenButton: false,
           vrButton: false,
       });
-       // 鍏抽棴澶╃┖鐩掓晥鏋�
-      // viewer.scene.skyAtmosphere = undefined; // 鎴栬�呰缃负 null
-      
-      // // 鍏抽棴鍏夌収鏁堟灉
-      // viewer.scene.globe.enableLighting = false; // 鍏抽棴鍏夌収鏁堟灉
-      
-    //    viewer.imageryLayers.add(bdtvectoranoimagery);
       viewer._cesiumWidget._creditContainer.style.display="none";  
       return viewer;
       
@@ -225,7 +263,6 @@
       // 璁剧疆瑙嗚锛屼娇鍏堕粯璁ゆ煡鐪嬫煇涓湴鐞嗕綅缃�
       viewerM.scene.camera.setView({
           destination: Cesium.Cartesian3.fromDegrees(globalon, globalat, 349.0), // 浠ョ粡绾害璁剧疆浣嶇疆锛堜緥濡傦細澶у簡榫欏叴璺級
-          // destination: Cesium.Cartesian3.fromDegrees(0.0005, 0.0017, 207.8), // 浠ョ粡绾害璁剧疆浣嶇疆锛堜緥濡傦細澶у簡榫欏叴璺級
           orientation: {
               heading: Cesium.Math.toRadians(194.65),  // 鏂瑰悜
               pitch: Cesium.Math.toRadians(-31.43), // 淇
@@ -257,12 +294,10 @@
     },
     addSyncListener() {
       // 瀛樹笅鍥炶皟浠ヤ究閿�姣�
-      // this._preRenderCallback = () => this.syncViewer();
       viewerM.scene.preRender.addEventListener( this.syncViewer());
       window.addEventListener("keydown", this.handleKeydown);
     },
     syncViewer(){
-      console.log(viewerM.camera)
       viewerC.camera.flyTo({
           destination: viewerM.camera.position,
           orientation: {
@@ -305,7 +340,6 @@
                 let lng = Cesium.Math.toDegrees(cartographic.longitude);
                 let lat = Cesium.Math.toDegrees(cartographic.latitude);
                 height = cartographic.height;
-                console.log(lng+','+lat+','+height)
             }
 
             //鍦ㄤ袱涓獥鍙e垱寤烘爣娉�
@@ -334,9 +368,34 @@
                 //鏍规嵁鍋忕Щ閲忔眰鍋忕Щ鍚戦噺
             聽聽聽聽const scalerNormalize聽=聽Cesium.Cartesian3.multiplyByScalar(normalize,distance,new聽Cesium.Cartesian3());
                 const tagert = Cesium.Cartesian3.add(holdingPosition,scalerNormalize,new聽Cesium.Cartesian3());
-                console.log(Cesium.Cartographic.fromCartesian(tagert))
+                //鍒涘缓绌轰腑鐐筽in
                 _this.creatPin("aerialPoiId"+counter,tagert,`绌�${counter}`,Cesium.Color.RED,viewerM);
+                //鏇存柊閿洏浜嬩欢
                 _this.updateCameraMovement();
+                //褰撳墠閫夋嫨鐨刬d
+                chooseId = crypto.randomUUID()
+                //鍒涘缓瑙嗛敟浣�
+                let data = {
+                    "altitude":  Cesium.Cartographic.fromCartesian(tagert).height,
+                    "id": chooseId,
+                    "latitude": Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude),
+                    "longitude":  Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude),
+                }
+                //濉旂殑璺濈鍜岃娴嬬偣鐨勮窛绂�
+                const point1 = Cesium.Cartesian3.fromDegrees(0, 0, 50);
+                const point2 = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).longitude), Cesium.Math.toDegrees(Cesium.Cartographic.fromCartesian(tagert).latitude), Cesium.Cartographic.fromCartesian(tagert).height);
+
+                // 璁$畻璺濈锛堝崟浣嶏細绫筹級
+                const distanceCalculate = Cesium.Cartesian3.distance(point1, point2)
+                data.distance = distanceCalculate
+                //鍙抽敭缁撴潫鍚庢妸缂╂斁閲嶇疆涓�1
+                _this.zoomRatio = 1
+                _this.createVideoScope(data)
+                setTimeout(() => {
+                  viewerC.camera.changed.addEventListener(_this.onCameraChange)
+                }, 100);
+                
+
                 //缁撴潫鍙抽敭鐩戝惉
                 createPinHandler.destroy();
                 //缁撴潫涓诲浘鑱斿姩楣扮溂鐩戝惉
@@ -367,8 +426,6 @@
       return result;
     },
     changeCamera(position,heading){
-        console.log(position)
-        console.log(heading)
         viewerC.camera.flyTo({
             destination: position,
             orientation: {
@@ -470,7 +527,6 @@
         } else {
           groupEntity.position = position;
         }
-        console.log(groupEntity)
       }
       const key = event.key;
       const lower = key.toLowerCase();
@@ -530,7 +586,6 @@
       }
     },
     updateCameraMovement() {
-      console.log('111111111111111111111111111111111111111111')
       const camera = viewerC.camera;
       // Adjust speed by modifiers
       let currentSpeed = this.moveSpeed;
@@ -638,15 +693,6 @@
       // Fly back to the initial view (home) in 1 second
       viewerC.camera.flyHome(1.0);
     },
-    move_measure_point(){
-      CesiumSurvey.measureMovePoint(viewerM,'moveResultCon');
-    },
-    cammove_measure_point(){
-      CesiumSurvey.cammeasureMovePoint(viewerM,'cammoveResultCon');
-    },
-    renderData(){
-        this.$emit('renderData',viewerM)
-    },
     mergePoint(){
       let allEntities = viewerM.entities.values; // 鎵�鏈夊疄浣撳璞$粍鎴愮殑鏁扮粍
       const grouped = {};
@@ -713,97 +759,215 @@
     },
     handleKeydown(e) {
       const key = e.key;
-      console.log(key)
       const validKeys = ["a", "s", "d", "w",'q','e','ArrowUp','ArrowDown','ArrowLeft','ArrowRight','q','e'];
       if (validKeys.includes(key)) {
         this.triggerKey(key);
       }
       this.updateCameraMovement()
     },
-    VisualCone(){
-      this.addFrustum();
-      this.initDragHandler();
-    },
-    addFrustum() {
-      // 鍒涘缓涓�涓� PerspectiveFrustum
-      const frustum = new Cesium.PerspectiveFrustum({
-        fov: Cesium.Math.PI_OVER_THREE,
-        aspectRatio: 1.0,
-        near: 1.0,
-        far: 500.0,
-      });
-
-      // 璁剧疆鐭╅樀浣嶇疆
-      const position = Cesium.Cartesian3.fromDegrees(110.0, 30.0, 100.0);
-      const direction = Cesium.Cartesian3.normalize(
-        new Cesium.Cartesian3(1.0, 0.0, -1.0),
-        new Cesium.Cartesian3()
-      );
-      const up = Cesium.Cartesian3.UNIT_Z;
-      const right = Cesium.Cartesian3.cross(direction, up, new Cesium.Cartesian3());
-      const rotation = Cesium.Matrix3.setColumns(
-        new Cesium.Matrix3(),
-        right,
-        up,
-        Cesium.Cartesian3.negate(direction, new Cesium.Cartesian3())
-      );
-
-      const modelMatrix = Cesium.Matrix4.fromRotationTranslation(rotation, position);
-
-      this.frustumPrimitive = this.viewer.scene.primitives.add(
-        new Cesium.DebugCameraPrimitive({
-          frustum,
-          modelMatrix,
-          color: Cesium.Color.LIME.withAlpha(0.5),
-        })
-      );
-    },
-
-    initDragHandler() {
-      const scene = viewerM.scene;
-      const canvas = scene.canvas;
-      this.handler = new Cesium.ScreenSpaceEventHandler(canvas);
-
-      let isDragging = false;
-      let lastPosition = null;
-
-      this.handler.setInputAction((movement) => {
-        const pickedObject = scene.pick(movement.position);
-        if (pickedObject && pickedObject.primitive === this.frustumPrimitive) {
-          this.selected = true;
-          isDragging = true;
-          lastPosition = movement.position;
-        } else {
-          this.selected = false;
-        }
-      }, Cesium.ScreenSpaceEventType.LEFT_DOWN);
-
-      this.handler.setInputAction((movement) => {
-        if (isDragging && this.selected) {
-          const start = scene.pickPosition(lastPosition);
-          const end = scene.pickPosition(movement.endPosition);
-          if (start && end) {
-            const delta = Cesium.Cartesian3.subtract(
-              end,
-              start,
-              new Cesium.Cartesian3()
+     // 鍒涘缓鍒濆鍖栫殑鍏夎酱
+    createVideoScope(data) {
+      if (data == undefined) {
+        this.$message({
+          showClose: true,
+          message: '鏆傛棤鏁版嵁',
+          type: "warning",
+        });
+      } else {
+        ScopeElement = this.createVideoElementOld(
+            "http://192.168.5.122:9998/live?port=1234&app=live&stream=mystream",
+            data.id,
+            1.7778
+        );
+        // let poi = data.camPosition.split(",");
+        // let hight = data.pe_offset.split(",");
+        let positionCt3 = Cesium.Cartesian3.fromDegrees(
+            Number(data.longitude),
+            Number(data.latitude),
+            // Number(data.altitude) + Number(hight[1]) + 1.7
+            Number(data.altitude)
+        );
+        let inverseViewMatrix = this.hpr2m({
+          position: positionCt3, // 鐩告満鍧愭爣
+          // heading: Cesium.Math.toRadians(Number(120)),
+          // pitch: Cesium.Math.toRadians(Number(-5)),
+          // roll: Cesium.Math.toRadians(Number(0)),
+          heading: Cesium.Math.toRadians(180),
+          pitch: Cesium.Math.toRadians(0),
+          roll: Cesium.Math.toRadians(0),
+        });
+        let frustum = new Cesium.PerspectiveFrustum({
+          fov: Cesium.Math.toRadians(56),
+          aspectRatio: Number(1.77778), // 瀹介珮姣�
+          near: Number(0.05), // 璁惧鐒﹁窛
+          far: Number(data.distance), // 鎷嶆憚璺濈
+        });
+         cameraVideo = new Cesium.XbsjCameraVideo({
+          inverseViewMatrix: inverseViewMatrix,
+          frustum: frustum,
+          videoElement: ScopeElement,
+          showHelperPrimitive: true,
+        });
+        cameraVideo._primitive.classificationType = 2; //聽鍚屾椂鎶曞奖鍦板舰鍜�3dtiles鏁版嵁
+        cameraVideo.id =  data.id;
+        let isHole = false;
+        cameraVideo._primitive.appearance.material = new Cesium.Material({
+          fabric: {
+            type: "Color",
+            uniforms: {
+              color: new Cesium.Color(0, 1, 0, 0.2),
+            },
+          },
+        });
+        cameraVideo._helperPrimitive.geometryInstances.attributes.color =
+            Cesium.ColorGeometryInstanceAttribute.fromColor(
+                new Cesium.Color(0, 1.0, 0, 1.0)
             );
-            const newMatrix = Cesium.Matrix4.multiplyByTranslation(
-              this.frustumPrimitive.modelMatrix,
-              delta,
-              new Cesium.Matrix4()
-            );
-            this.frustumPrimitive.modelMatrix = newMatrix;
-            lastPosition = movement.endPosition;
+        // viewer.scene.primitives.add(cameraVideo);
+        let pmObj = {};
+        pmObj.id = data.id;
+        pmObj.primitive = cameraVideo;
+        viewerM.scene.primitives.add(cameraVideo);
+        preVideoScopePrimitiveArrTie.push(pmObj);
+        preVideoScopePrimitiveArrTie.map((item)=>{
+          if(item.id != chooseId){
+            item.primitive.show = false
           }
-        }
-      }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
-
-      this.handler.setInputAction(() => {
-        isDragging = false;
-        lastPosition = null;
-      }, Cesium.ScreenSpaceEventType.LEFT_UP);
+        })
+      }
+      // }
     },
+    // 鍒涘缓鍏夎酱涓嬬殑骞曞竷
+    createVideoElementOld(videoSrc, id) {
+      var videoElement = document.createElement("div");
+      videoElement.id = "video" + id;
+      videoElement.style.position = "absolute";
+      videoElement.style.zIndex = "-100";
+      videoElement.style.background = "green";
+      document.getElementById("videoSource").appendChild(videoElement);
+      return videoElement;
+    },
+    //h,p,r杞琺atrix4
+    hpr2m(obj, result) {
+      // const inverseViewMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(position, headingPitchRoll, undefined, undefined, result);
+      const inverseViewMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
+          obj.position,
+          undefined,
+          result
+      );
+      let rotMat = Cesium.Matrix3.fromRotationX(
+          Cesium.Math.PI_OVER_TWO,
+          scratchSetViewMatrix3
+      );
+      Cesium.Matrix4.multiplyByMatrix3(
+          inverseViewMatrix,
+          rotMat,
+          inverseViewMatrix
+      );
+      rotMat = Cesium.Matrix3.fromRotationY(
+          -obj.heading,
+          scratchSetViewMatrix3
+      );
+      Cesium.Matrix4.multiplyByMatrix3(
+          inverseViewMatrix,
+          rotMat,
+          inverseViewMatrix
+      );
+
+      rotMat = Cesium.Matrix3.fromRotationX(obj.pitch, scratchSetViewMatrix3);
+      Cesium.Matrix4.multiplyByMatrix3(
+          inverseViewMatrix,
+          rotMat,
+          inverseViewMatrix
+      );
+
+      rotMat = Cesium.Matrix3.fromRotationZ(-obj.roll, scratchSetViewMatrix3);
+      Cesium.Matrix4.multiplyByMatrix3(
+          inverseViewMatrix,
+          rotMat,
+          inverseViewMatrix
+      );
+
+      return inverseViewMatrix;
+    },
+    onCameraChange() {
+      const camera = viewerC.camera;
+      const position = camera.positionCartographic;
+      const heading = Cesium.Math.toDegrees(camera.heading);
+      const pitch = Cesium.Math.toDegrees(camera.pitch);
+      const roll = Cesium.Math.toDegrees(camera.roll);
+      const point1 = Cesium.Cartesian3.fromDegrees(0, 0, 50);
+      const point2 = Cesium.Cartesian3.fromDegrees(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height)
+      
+      var camResult =
+        position.longitude.toFixed(4) +
+        '\u00B0' +
+        ',' +
+        position.latitude.toFixed(4) +
+        '\u00B0' +
+        ',' +
+        position.height.toFixed(1) +
+        '绫�,' +
+        heading.toFixed(2) +
+        '\u00B0' +
+        ',' +
+        pitch.toFixed(2) +
+        '\u00B0' +
+        ',' +
+        roll.toFixed(1) +
+        '\u00B0';
+      document.getElementById('cammoveResultCon').innerHTML = camResult;
+      // 璁$畻璺濈锛堝崟浣嶏細绫筹級
+      const distanceBetween = Cesium.Cartesian3.distance(point1, point2)
+      console.log(preVideoScopePrimitiveArrTie)
+      preVideoScopePrimitiveArrTie.map((item)=>{
+        if(item.id == chooseId){
+          let obj = this.updateSZScope(Cesium.Math.toDegrees(position.longitude),Cesium.Math.toDegrees(position.latitude),position.height,heading,pitch,roll,this.zoomRatio,distanceBetween)
+          item.primitive.inverseViewMatrix = obj.M
+          item.primitive.frustum = obj.F
+          item.primitive.zoomRatio  = this.zoomRatio
+        }
+      })
+    },
+    //鏇存柊瑙嗘浣撲綅缃�
+    updateSZScope(lon, lat, alt, camHeading, camPitch, camRoll, LightView,distanceBetween) {
+      let positionCt3 = Cesium.Cartesian3.fromDegrees(
+          Number(lon),
+          Number(lat),
+          Number(alt)
+      );
+      let frustum = new Cesium.PerspectiveFrustum({
+        fov: Cesium.Math.toRadians(56/LightView),
+        aspectRatio: Number(1.77778),
+        near: Number(0.05),
+        far: Number(distanceBetween),
+      });
+      let inverseViewMatrixNew = this.hpr2m({
+        position: positionCt3,
+        heading: Cesium.Math.toRadians(Number(camHeading)),
+        pitch: Cesium.Math.toRadians(Number(camPitch)),
+        roll: Cesium.Math.toRadians(Number(camRoll)),
+      });
+      return {M: inverseViewMatrixNew, F: frustum};
+    },
+    handleWheel(event) {
+      const delta = event.deltaY;
+      const step = 0.5;
+      if (delta > 0) {
+        this.zoomRatio = Math.min(this.zoomRatio + step, this.maxZoom);
+      } else {
+        this.zoomRatio = Math.max(this.zoomRatio - step, this.minZoom);
+      }
+      this.onCameraChange()
+    },
+    formatTooltip(val) {
+      if(val){
+        return `${val.toFixed(1)}X`;
+      }
+    },
+    onSliderInput(val) {
+      this.zoomRatio = val;
+    }
   }
 }
 </script>
@@ -816,20 +980,23 @@
 #cesiumContainer {
     margin: 0;
     padding: 0;
-    width: 60%;
+    width: 74%;
     height: calc(100vh - 205px);
 }
 #cesiumCamera {
     position: absolute;
     z-index: 2;
     background-color: rgba(47, 53, 60, 1);
-    padding: 0 5px;
-    right: 0px;
-    top: 0px;
+    /* padding: 0 5px; */
+    right: 10px;
+    /* top: 0px; */
+    bottom: 80px;
     margin: 0;
-    width: 33%;
-    height:  calc(100vh - 400px);
-    border: 1px solid #000;
+    width: 400px;
+    height: 300px;
+    z-index: 6;
+    /* height:  calc(100vh - 400px); */
+    /* border: 1px solid #000; */
 }
 .cesiumBotton {
     position: absolute;
@@ -838,14 +1005,16 @@
     /* padding: 0 5px; */
     margin-top: 10px;
     right: 0px;
+    width: 410px;
+    height: calc(100vh - 210px);
     bottom: 30px;
     margin: 0;
-    width: 33%;
-    height: calc(30% - 30px);
 }
 .cesiumButtonGroup{
-  margin-top: 10px;
-  margin-left: 10px;
+  position: absolute;
+  bottom: 0;
+  /* margin-top: 10px;
+  margin-left: 10px; */
 }
 .moveResult{position:absolute;z-index:2;background-color:rgba(47,53,60,1);padding:0 5px;right:50%;bottom:30px;
     border:1px solid rgba(255,255,255,.1);box-sizing:content-box;width:220px;height:30px;font-size:14px;text-align:center}
@@ -900,4 +1069,51 @@
 .key.active {
   background-color: #00aaff;
 }
+</style>
+<style scoped>
+.zoom-ui-container {
+  /* width: 100%;
+  height: 100%;
+  position: relative;
+  background: #1e1e1e; /* 浣犲彲浠ユ浛鎹㈡垚鍥惧儚鎴栬棰戣儗鏅� */
+  /* overflow: hidden; */
+  width: 400px;
+  height: 300px;
+  position: absolute;
+  right: 10px;
+  bottom:80px;
+  /* background-color: red; */
+  z-index: 9;
+
+}
+/* 榛勮壊鍑嗘槦妗� */
+.reticle {
+  position: absolute;
+  left: 50%;
+  top: 50%;
+  border: 2px dashed orange;
+  transform: translate(-50%, -50%);
+  pointer-events: none;
+}
+
+/* ElementUI 婊戝潡鏍峰紡鍖哄煙 */
+.zoom-bar-slider {
+  position: absolute;
+  right: 20px;
+  top: 50px;
+  height: 200px;
+}
+
+/* 宸︿笅瑙掑�嶇巼鏍囩 */
+.zoom-info {
+  position: absolute;
+  bottom: 20px;
+  left: 20px;
+}
+
+</style>
+<style>
+.el-slider.is-vertical .el-slider__marks-text{
+  width: 30px!important;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3