Browse Source

测风塔页面three模型修改,测风塔模块修改

Koishi 3 years ago
parent
commit
76d0f72c66

+ 1 - 1
public/static/config/modeConfig.js

@@ -16,7 +16,7 @@ const tilesMaxLevel = 18;
 const adapterUrl = "http://10.155.32.4:8011/";
 
 // 切换模块时是否提示当前模块名称(用于对内介项目时便捷显示模块名称)
-const showModuleName = 0;
+const showModuleName = 1;
 
 if (localTest) {
     // baseURL = "http://192.168.10.13:8082/" // 联机调试 - 石林

+ 156 - 133
src/components/three/wave.vue

@@ -1,153 +1,176 @@
 <template>
-    <div class="wave"></div>
+  <div class="wave"></div>
 </template>
 
 <script>
-    import * as THREE from 'three';
+import * as THREE from "three";
+import $ from "jquery";
 
-    let scene, camera, renderer, particles;
+let scene, camera, renderer, particles;
 
-    export default {
-        // 名称
-        name: "wave",
-        // 使用组件
-        components: {},
-        // 传入参数
-        props: {},
-        // 自定义事件
-        emits: {},
-        // 数据
-        data() {
-            return {
-                SEPARATION: 100,
-                AMOUNTX: 100,
-                AMOUNTY: 100,
-                count: 0,
-                mouseX: 0,
-                mouseY: -400,
-                windowHalfX: window.innerWidth / 2,
-                windowHalfY: window.innerHeight / 2,
-            }
+export default {
+  // 名称
+  name: "wave",
+  // 使用组件
+  components: {},
+  // 传入参数
+  props: {},
+  // 自定义事件
+  emits: {},
+  // 数据
+  data() {
+    return {
+      SEPARATION: 100,
+      AMOUNTX: 100,
+      AMOUNTY: 100,
+      count: 0,
+      mouseX: 0,
+      mouseY: -400,
+      windowHalfX: window.innerWidth / 2,
+      windowHalfY: window.innerHeight / 2,
+    };
+  },
+  // 函数
+  methods: {
+    init() {
+      camera = new THREE.PerspectiveCamera(
+        50,
+        window.innerWidth / window.innerHeight,
+        1,
+        10000
+      );
+      camera.position.z = 1000;
+      scene = new THREE.Scene();
+      const numParticles = this.AMOUNTX * this.AMOUNTY;
+      const positions = new Float32Array(numParticles * 3);
+      const scales = new Float32Array(numParticles);
+      let i = 0,
+        j = 0;
+      for (let ix = 0; ix < this.AMOUNTX; ix++) {
+        for (let iy = 0; iy < this.AMOUNTY; iy++) {
+          positions[i] =
+            ix * this.SEPARATION - (this.AMOUNTX * this.SEPARATION) / 2; // x
+          positions[i + 1] = 0; // y
+          positions[i + 2] =
+            iy * this.SEPARATION - (this.AMOUNTY * this.SEPARATION) / 2; // z
+          scales[j] = 1;
+          i += 3;
+          j++;
+        }
+      }
+      const geometry = new THREE.BufferGeometry();
+      geometry.setAttribute(
+        "position",
+        new THREE.BufferAttribute(positions, 3)
+      );
+      geometry.setAttribute("scale", new THREE.BufferAttribute(scales, 1));
+      const material = new THREE.ShaderMaterial({
+        uniforms: {
+          color: {
+            value: new THREE.Color(
+              this.$store.state.themeName === "dark" ? 0x05bb4c : 0x36348e
+            ),
+          },
         },
-        // 函数
-        methods: {
-            init: function() {
-                camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
-                camera.position.z = 1000;
-                scene = new THREE.Scene();
-                const numParticles = this.AMOUNTX * this.AMOUNTY;
-                const positions = new Float32Array(numParticles * 3);
-                const scales = new Float32Array(numParticles);
-                let i = 0,
-                    j = 0;
-                for (let ix = 0; ix < this.AMOUNTX; ix++) {
-                    for (let iy = 0; iy < this.AMOUNTY; iy++) {
-                        positions[i] = ix * this.SEPARATION - ((this.AMOUNTX * this.SEPARATION) / 2); // x
-                        positions[i + 1] = 0; // y
-                        positions[i + 2] = iy * this.SEPARATION - ((this.AMOUNTY * this.SEPARATION) / 2); // z
-                        scales[j] = 1;
-                        i += 3;
-                        j++;
-                    }
-                }
-                const geometry = new THREE.BufferGeometry();
-                geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));
-                geometry.setAttribute('scale', new THREE.BufferAttribute(scales, 1));
-                const material = new THREE.ShaderMaterial({
-                    uniforms: {
-                        color: {
-                            value: new THREE.Color(0x05bb4c),
-                        },
-                    },
-                    vertexShader: `attribute float scale;
+        vertexShader: `attribute float scale;
                         void main() {
                             vec4 mvPosition = modelViewMatrix * vec4( position, 2.0 );
                             gl_PointSize = scale * ( 200.0 / - mvPosition.z );
                             gl_Position = projectionMatrix * mvPosition;
                         }`,
-                    fragmentShader: `uniform vec3 color;
+        fragmentShader: `uniform vec3 color;
                         void main() {
                             if ( length( gl_PointCoord - vec2( 0.5, 0.5 ) ) > 0.475 ) discard;
                             gl_FragColor = vec4( color, 0.7 );
                         }`,
-                    transparent: true,
-                });
-                particles = new THREE.Points(geometry, material);
-                scene.add(particles);
-                renderer = new THREE.WebGLRenderer({
-                    antialias: true,
-                    alpha: true,
-                });
-                renderer.setSize(window.innerWidth, window.innerHeight);
-                renderer.setPixelRatio(window.devicePixelRatio);
-                renderer.setAnimationLoop(this.render);
-                this.$el.appendChild(renderer.domElement);
-            },
-            render: function() {
-                camera.position.x += (this.mouseX - camera.position.x) * .05;
-                camera.position.y += (-this.mouseY - camera.position.y) * .05;
-                camera.lookAt(scene.position);
-                const positions = particles.geometry.attributes.position.array;
-                const scales = particles.geometry.attributes.scale.array;
-                let i = 0,
-                    j = 0;
-                for (let ix = 0; ix < this.AMOUNTX; ix++) {
-                    for (let iy = 0; iy < this.AMOUNTY; iy++) {
-                        positions[i + 1] = (Math.sin((ix + this.count) * 0.3) * 50) +
-                            (Math.sin((iy + this.count) * 0.5) * 50);
-                        scales[j] = (Math.sin((ix + this.count) * 0.3) + 1) * 20 +
-                            (Math.sin((iy + this.count) * 0.5) + 1) * 20;
-                        i += 3;
-                        j++;
-                    }
-                }
-                particles.geometry.attributes.position.needsUpdate = true;
-                particles.geometry.attributes.scale.needsUpdate = true;
-                renderer.render(scene, camera);
-                this.count += 0.1;
-            }
-        },
-        // 生命周期钩子
-        beforeCreate() {
-            // 创建前
-        },
-        created() {
-            // 创建后
-        },
-        beforeMount() {
-            // 渲染前
-        },
-        mounted() {
-            // 渲染后
-            camera = null;
-            scene = null;
-            renderer = null;
-            this.init();
-        },
-        beforeUpdate() {
-            // 数据更新前
-        },
-        updated() {
-            // 数据更新后
-        },
-        beforeUnmount() {
-            // 销毁前
-            renderer.setAnimationLoop(null);
-            camera = null;
-            scene = null;
-            renderer = null;
-        },
-    }
+        transparent: true,
+      });
+      particles = new THREE.Points(geometry, material);
+      scene.add(particles);
+      renderer = new THREE.WebGLRenderer({
+        antialias: true,
+        alpha: true,
+      });
+      renderer.setSize(window.innerWidth, window.innerHeight);
+      renderer.setPixelRatio(window.devicePixelRatio);
+      renderer.setAnimationLoop(this.render);
+      this.$el.appendChild(renderer.domElement);
+    },
+    render() {
+      camera.position.x += (this.mouseX - camera.position.x) * 0.05;
+      camera.position.y += (-this.mouseY - camera.position.y) * 0.05;
+      camera.lookAt(scene.position);
+      const positions = particles.geometry.attributes.position.array;
+      const scales = particles.geometry.attributes.scale.array;
+      let i = 0,
+        j = 0;
+      for (let ix = 0; ix < this.AMOUNTX; ix++) {
+        for (let iy = 0; iy < this.AMOUNTY; iy++) {
+          positions[i + 1] =
+            Math.sin((ix + this.count) * 0.3) * 50 +
+            Math.sin((iy + this.count) * 0.5) * 50;
+          scales[j] =
+            (Math.sin((ix + this.count) * 0.3) + 1) * 20 +
+            (Math.sin((iy + this.count) * 0.5) + 1) * 20;
+          i += 3;
+          j++;
+        }
+      }
+      particles.geometry.attributes.position.needsUpdate = true;
+      particles.geometry.attributes.scale.needsUpdate = true;
+      renderer.render(scene, camera);
+      this.count += 0.1;
+    },
+  },
+  // 生命周期钩子
+  beforeCreate() {
+    // 创建前
+  },
+  created() {
+    // 创建后
+  },
+  beforeMount() {
+    // 渲染前
+  },
+  mounted() {
+    // 渲染后
+    camera = null;
+    scene = null;
+    renderer = null;
+    this.init();
+  },
+  beforeUpdate() {
+    // 数据更新前
+  },
+  updated() {
+    // 数据更新后
+  },
+  beforeUnmount() {
+    // 销毁前
+    renderer.setAnimationLoop(null);
+    camera = null;
+    scene = null;
+    renderer = null;
+  },
+
+  watch: {
+    "$store.state.themeName"() {
+      $(".wave").empty();
+      renderer.setAnimationLoop(null);
+      this.init();
+    },
+  },
+};
 </script>
 
 <style lang="less">
-    .wave {
-        position: absolute;
-        left: 0;
-        top: 0;
-        width: 100%;
-        height: 60%;
-        z-index: -1;
-        overflow: hidden;
-    }
+.wave {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 60%;
+  z-index: -1;
+  overflow: hidden;
+}
 </style>

+ 15 - 0
src/views/WindSite/WindSite.vue

@@ -53,58 +53,72 @@ export default {
         {
           icon: "svg-s场站监视",
           path: "/monitor/windsite/home",
+          text: "场站监视",
         },
         {
           icon: "svg-s指标列表",
           path: "/monitor/windsite/draughtfanlist",
+          text: "指标列表",
         },
         // {
         //   icon: "svg-agc",
         //   path: "/monitor/windsite/matrix",
+        //   text: "指标列表",
         // },
         // {
         //   icon: "svg-agc",
         //   path: "/monitor/windsite/lightmatrix",
+        //   text: "指标列表",
         // },
         // {
         //   icon: "svg-intranet-involvement",
         //   path: "/monitor/windsite/box",
+        //   text: "指标列表",
         // },
         // {
         //   icon: "svg-matrix",
         //   path: "/monitor/windsite/info",
+        //   text: "指标列表",
         // },
         {
           icon: "svg-s测风塔",
           path: "/monitor/windsite/tower",
+          text: "测风塔",
         },
         // {
         //   icon: "svg-easy-compass",
         //   path: "/monitor/windsite/Inverter-Info",
+        //   text: "测风塔",
         // },
         // {
         //   icon: "svg-easy-compass",
         //   path: "/monitor/windsite/map",
+        //   text: "测风塔",
         // },
         // {
         //   icon: "svg-easy-compass",
         //   path: "/monitor/windsite/map1",
+        //   text: "测风塔",
         // },
         {
           icon: "svg-matrix",
           path: "/monitor/windsite/matrix",
+          text: "矩阵",
         },
         {
           icon: "svg-s总貌",
           path: "/monitor/windsite/generalappearance",
+          text: "总貌图",
         },
         {
           icon: "svg-s升压站",
           path: "/monitor/windsite/boosterstation",
+          text: "升压站",
         },
         {
           icon: "svg-s地图",
           path: "/monitor/windsite/map",
+          text: "地图",
         },
       ],
     };
@@ -113,6 +127,7 @@ export default {
   methods: {
     clickMenu: function (index) {
       this.activeIndex = index;
+      this.$store.dispatch("changeModuleName", this.menuDatas[index].text);
     },
   },
 

+ 23 - 22
src/views/WindSite/pages/Home/wind-site-weather.vue

@@ -2,8 +2,12 @@
 <template>
   <div class="wind-site-weather">
     <!-- <div class="title">风场 {{ nowTime }} 实况</div> -->
-        <div class="title" v-if="paramsId.includes('FDC')">风场 {{ nowTime }} 实况</div>
-        <div class="title" v-else-if="paramsId.includes('GDC')">光电场 {{ nowTime }} 实况</div>
+    <div class="title" v-if="paramsId.includes('FDC')">
+      风场 {{ nowTime }} 实况
+    </div>
+    <div class="title" v-else-if="paramsId.includes('GDC')">
+      光电场 {{ nowTime }} 实况
+    </div>
     <div class="weather">
       <div class="weather-info">
         <span class="svg-icon">
@@ -62,20 +66,20 @@
 </template>
 
 <script>
-import Home from "./Home.vue"
+import Home from "./Home.vue";
 import Col from "@/components/coms/grid/col.vue";
 import Row from "@/components/coms/grid/row.vue";
 import SvgIcon from "@/components/coms/icon/svg-icon.vue";
 
 export default {
-  components: { Home,Row, Col, SvgIcon },
-  props:{
+  components: { Home, Row, Col, SvgIcon },
+  props: {
     time: String,
-    data:{
-      type:Object,
-      default:() => { }
+    data: {
+      type: Object,
+      default: () => {},
     },
-    paramsId:'',
+    paramsId: "",
   },
   data() {
     return {
@@ -93,25 +97,22 @@ export default {
       sunset: "18:50", // 日落
     };
   },
-  created(){
+  created() {
     // let that = this;
     // that.paramsId = that.$route.params.wpId
-    // console.log("paramsId:",that.$route.params.wpId)
   },
-  mounted(){
-    this.sourceMap=this.data;
-   
+  mounted() {
+    this.sourceMap = this.data;
   },
 
-  watch:{
-    data(res){
-      this.sourceMap=res;
-      //  console.log('map:',this.sourceMap)
+  watch: {
+    data(res) {
+      this.sourceMap = res;
     },
-    time(value){
-      this.nowTime = value
-    }
-  }
+    time(value) {
+      this.nowTime = value;
+    },
+  },
 };
 </script>
 

+ 34 - 30
src/views/WindSite/pages/Map.vue

@@ -13,7 +13,14 @@
         <div class="sub-title-item">
           <img src="../../../assets/map/fan/black.png" />
           <span class="sub-title gray">接入台数</span>
-          <span class="sub-count font-num gray">{{ wpnumMap.djts + wpnumMap.yxts + wpnumMap.xdts +wpnumMap.gzts +wpnumMap.whts + wpnumMap.lxts}}</span>
+          <span class="sub-count font-num gray">{{
+            wpnumMap.djts +
+            wpnumMap.yxts +
+            wpnumMap.xdts +
+            wpnumMap.gzts +
+            wpnumMap.whts +
+            wpnumMap.lxts
+          }}</span>
         </div>
         <div class="sub-title-item">
           <img src="../../../assets/map/fan/green.png" />
@@ -49,16 +56,16 @@
     </div>
     <div class="panel-body">
       <MHSFDC wpId="MHS_FDC" v-if="wpId.indexOf('MHS_FDC') !== -1" />
-	  <NSSFDC wpId="NSS_FDC" v-if="wpId.indexOf('NSS_FDC') !== -1" />
-	  <QSFDC wpId="QS_FDC" v-if="wpId.indexOf('QS_FDC') !== -1" />
-	  <SBQFDC wpId="SBQ_FDC" v-if="wpId.indexOf('SBQ_FDC') !== -1" />
-	  <XSFDC wpId="XS_FDC" v-if="wpId.indexOf('XS_FDC') !== -1" />
-	  
+      <NSSFDC wpId="NSS_FDC" v-if="wpId.indexOf('NSS_FDC') !== -1" />
+      <QSFDC wpId="QS_FDC" v-if="wpId.indexOf('QS_FDC') !== -1" />
+      <SBQFDC wpId="SBQ_FDC" v-if="wpId.indexOf('SBQ_FDC') !== -1" />
+      <XSFDC wpId="XS_FDC" v-if="wpId.indexOf('XS_FDC') !== -1" />
+
       <PLGDC wpId="PL_GDC" v-if="wpId.indexOf('PL_GDC') !== -1" />
-	  <DWKGDC wpId="DWK_GDC" v-if="wpId.indexOf('DWK_GDC') !== -1" />
-	  <XHGDC wpId="XH_GDC" v-if="wpId.indexOf('XH_GDC') !== -1" />
-	  <MCHGDC wpId="MCH_GDC" v-if="wpId.indexOf('MCH_GDC') !== -1" />
-	  <HZJGDC wpId="HZJ_GDC" v-if="wpId.indexOf('HZJ_GDC') !== -1" />
+      <DWKGDC wpId="DWK_GDC" v-if="wpId.indexOf('DWK_GDC') !== -1" />
+      <XHGDC wpId="XH_GDC" v-if="wpId.indexOf('XH_GDC') !== -1" />
+      <MCHGDC wpId="MCH_GDC" v-if="wpId.indexOf('MCH_GDC') !== -1" />
+      <HZJGDC wpId="HZJ_GDC" v-if="wpId.indexOf('HZJ_GDC') !== -1" />
       <div class="map-popup-panel" v-show="showPopup">
         <!-- <div class="map-popup-panel-header">
           <div class="map-popup-panel-title green">
@@ -187,15 +194,15 @@ export default {
   components: {
     BtnGroup2,
     MHSFDC,
-	NSSFDC,
-	QSFDC,
-	SBQFDC,
-	XSFDC,
+    NSSFDC,
+    QSFDC,
+    SBQFDC,
+    XSFDC,
     PLGDC,
-	DWKGDC,
-	XHGDC,
-	MCHGDC,
-	HZJGDC
+    DWKGDC,
+    XHGDC,
+    MCHGDC,
+    HZJGDC,
   },
   // 数据
   data() {
@@ -204,7 +211,7 @@ export default {
       wpId: undefined,
       wpnumMap: {}, //风机监视数量
       wpInfoMap: {}, //风机详情
-      fjmap: [],   // 风机名
+      fjmap: [], // 风机名
       selectIndex: 0,
       rowIndex: 0,
       btnGroups: [
@@ -232,13 +239,13 @@ export default {
       mapToolIndex: 0,
       fans: [],
       colors: {
-        "0": ["#05bb4c", "#4ad476", "#9fedb2"],
-        "1": ["#4b55ae", "#959dc7", "#d3d6e0"],
-        "2": ["#BA3237", "#d4807d", "#eddad8"],
-        "3": ["#606769", "#757575", "#AFAFAF"],
-        "4": ["#e17e23", "#fabf78", "#ffebcc"],
-        "5": ["#c531c7", "#e080dc", "#fadef7"],
-        "6": ["#c531c7", "#e080dc", "#fadef7"],
+        0: ["#05bb4c", "#4ad476", "#9fedb2"],
+        1: ["#4b55ae", "#959dc7", "#d3d6e0"],
+        2: ["#BA3237", "#d4807d", "#eddad8"],
+        3: ["#606769", "#757575", "#AFAFAF"],
+        4: ["#e17e23", "#fabf78", "#ffebcc"],
+        5: ["#c531c7", "#e080dc", "#fadef7"],
+        6: ["#c531c7", "#e080dc", "#fadef7"],
       },
       syzImg: require("@assets/png/booster-station.png"),
     };
@@ -305,7 +312,6 @@ export default {
         },
         success(res) {
           if (res.code == 200) {
-			  console.log(res)
             that.wpnumMap = res.data.fczbmap.jczbmap;
             that.wpInfoMap = res.data.wxssmap;
             that.fjmap = res.data.fjmap[0];
@@ -323,15 +329,13 @@ export default {
         });
       });
     },
-    
+
     clickMap: function (info) {
-      console.log(info);
       //   this.showPopup = true;
     },
     clickFan: function (code) {
       let wtId = code.replace("G", "G01_");
       this.$router.push(`/monitor/windsite/info/${this.wpId}/${wtId}`);
-      //   console.log(wtId);
       //   this.showPopup = true;
     },
     popupBack: function () {

+ 3 - 0
src/views/WindSite/pages/Tower.vue

@@ -21,6 +21,7 @@
       :value="cftmap.KQMD || 0"
       height="9.722vh"
       width="9.722vh"
+      :style="$store.state.themeName === 'dark' ? '' : 'left:100px'"
     />
     <dash-pie-chart
       class="pie-right"
@@ -29,6 +30,7 @@
       height="9.722vh"
       width="9.722vh"
       max="500"
+      :style="$store.state.themeName === 'dark' ? '' : 'left:230px'"
     />
     <Panel class="panel-top" title="日资源玫瑰图" :bgBlur="true">
       <div class="direction-chart">
@@ -415,6 +417,7 @@ export default {
   .pie-right {
     position: fixed;
     top: 11vh;
+    transition: left 0.2s;
   }
 
   .pie-left {

+ 291 - 33
src/views/WindSite/pages/Tower/WindTower.vue

@@ -1,5 +1,11 @@
 <template>
-  <svg class="wind-tower" version="1.1" viewBox="0 0 695 625" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <svg
+    class="wind-tower"
+    version="1.1"
+    viewBox="0 0 695 625"
+    xmlns="http://www.w3.org/2000/svg"
+    xmlns:xlink="http://www.w3.org/1999/xlink"
+  >
     <defs>
       <g id="wind-tower">
         <!-- 塔横岗 -->
@@ -30,13 +36,41 @@
           y="0"
         />
         <!-- 边框左 -->
-        <rect fill="none" height="25" stroke="#05bb4caa" stroke-width="1" width="165" x="103" y="0" />
+        <rect
+          fill="none"
+          height="25"
+          :stroke="$store.state.themeName === 'dark' ? '#05bb4caa' : '#36348e'"
+          stroke-width="1"
+          width="165"
+          x="103"
+          y="0"
+        />
         <rect fill="#ffffff33" height="25" width="82.5" x="103" y="0" />
-        <rect fill="#05bb4c66" height="25" width="82.5" x="185.5" y="0" />
+        <rect
+          :fill="$store.state.themeName === 'dark' ? '#05bb4c66' : '#36348e'"
+          height="25"
+          width="82.5"
+          x="185.5"
+          y="0"
+        />
         <!-- 边框右 -->
-        <rect fill="none" height="25" stroke="#05bb4caa" stroke-width="1" width="165" x="427" y="0" />
+        <rect
+          fill="none"
+          height="25"
+          :stroke="$store.state.themeName === 'dark' ? '#05bb4caa' : '#36348e'"
+          stroke-width="1"
+          width="165"
+          x="427"
+          y="0"
+        />
         <rect fill="#ffffff33" height="25" width="82.5" x="509.5" y="0" />
-        <rect fill="#05bb4c66" height="25" width="82.5" x="427" y="0" />
+        <rect
+          :fill="$store.state.themeName === 'dark' ? '#05bb4c66' : '#36348e'"
+          height="25"
+          width="82.5"
+          x="427"
+          y="0"
+        />
       </g>
     </defs>
     <!-- 塔柱子 -->
@@ -57,52 +91,276 @@
     />
     <g>
       <use xlink:href="#wind-tower" y="30" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="47">{{ cftMap.FCCFTFS80 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="47">80米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="47">{{ cftMap.FCCFTFX80 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="47">80米风向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="47"
+      >
+        {{ cftMap.FCCFTFS80 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="47"
+      >
+        80米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="47"
+      >
+        {{ cftMap.FCCFTFX80 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="47"
+      >
+        80米风向
+      </text>
     </g>
     <g>
       <use xlink:href="#wind-tower" y="110" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="127">{{ cftMap.FCCFTFS70 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="127">70米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="127">{{ cftMap.FCCFTFX70 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="127">70米风向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="127"
+      >
+        {{ cftMap.FCCFTFS70 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="127"
+      >
+        70米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="127"
+      >
+        {{ cftMap.FCCFTFX70 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="127"
+      >
+        70米风向
+      </text>
     </g>
     <g>
       <use xlink:href="#wind-tower" y="190" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="207">{{ cftMap.FCCFTFS60 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="207">60米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="207">{{ cftMap.FCCFTFX60 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="207">60米向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="207"
+      >
+        {{ cftMap.FCCFTFS60 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="207"
+      >
+        60米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="207"
+      >
+        {{ cftMap.FCCFTFX60 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="207"
+      >
+        60米向
+      </text>
     </g>
     <g>
       <use xlink:href="#wind-tower" y="270" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="287">{{ cftMap.FCCFTFS50 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="287">50米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="287">{{ cftMap.FCCFTFX50 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="287">50米风向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="287"
+      >
+        {{ cftMap.FCCFTFS50 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="287"
+      >
+        50米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="287"
+      >
+        {{ cftMap.FCCFTFX50 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="287"
+      >
+        50米风向
+      </text>
     </g>
     <g>
       <use xlink:href="#wind-tower" y="350" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="367">{{ cftMap.FCCFTFS40 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="367">40米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="367">{{ cftMap.FCCFTFX40 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="367">40米风向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="367"
+      >
+        {{ cftMap.FCCFTFS40 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="367"
+      >
+        40米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="367"
+      >
+        {{ cftMap.FCCFTFX40 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="367"
+      >
+        40米风向
+      </text>
     </g>
     <g>
       <use xlink:href="#wind-tower" y="430" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="447">{{ cftMap.FCCFTFS30 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="447">30米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="447">{{ cftMap.FCCFTFX30 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="447">30米风向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="447"
+      >
+        {{ cftMap.FCCFTFS30 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="447"
+      >
+        30米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="447"
+      >
+        {{ cftMap.FCCFTFX30 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="447"
+      >
+        30米风向
+      </text>
     </g>
     <g>
       <use xlink:href="#wind-tower" y="510" />
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="123" y="527">{{ cftMap.FCCFTFS10 || 0 }}m/s</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="196" y="527">10米风速</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="529" y="527">{{ cftMap.FCCFTFX10 || 0 }}度</text>
-      <text fill="#ffffff" font-size="14" stroke-width="0" x="438" y="527">10米风向</text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="123"
+        y="527"
+      >
+        {{ cftMap.FCCFTFS10 || 0 }}m/s
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="196"
+        y="527"
+      >
+        10米风速
+      </text>
+      <text
+        :fill="$store.state.themeName === 'dark' ? '#fff' : '#000'"
+        font-size="14"
+        stroke-width="0"
+        x="529"
+        y="527"
+      >
+        {{ cftMap.FCCFTFX10 || 0 }}度
+      </text>
+      <text
+        fill="#fff"
+        font-size="14"
+        stroke-width="0"
+        x="438"
+        y="527"
+      >
+        10米风向
+      </text>
     </g>
   </svg>
 </template>