杨宽 3 роки тому
батько
коміт
21e63a5762

+ 5 - 4
src/App.vue

@@ -1,7 +1,7 @@
 <template>
   <div v-if="isLogined" class="main">
     <div class="header-body">
-      <div class="header-title">
+      <div class="header-title" @mouseenter="showMenu">
         <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16.667vh" height="3.704vh" viewBox="0 0 377.437 91.615" enable-background="new 0 0 377.437 91.615" xml:space="preserve">
           <g id="图层_1">
             <g>
@@ -172,8 +172,8 @@ l16.229-16.229l16.229,16.229l42.867-42.867C115.034,45.228,109.133,42.189,102.956
       </div>
       <div class="header-menu-body"><Header @onMenuClick="HeaderMenuClick" /></div>
     </div>
-    <div class="menu-body" @mouseenter="showMenu" @mouseleave="hideMenu"><Menu :root="root" /></div>
-    <div class="main-body" :class="{ 'show-menu': isShowMenu }">
+    <div class="menu-body" :class="{ hover: isShowMenu }" @mouseenter="showMenu" @mouseleave="hideMenu"><Menu :root="root" /></div>
+    <div class="main-body">
       <router-view />
     </div>
   </div>
@@ -324,7 +324,8 @@ body {
     transition-timing-function: ease-in;
     transform: translate(-@menuWidth);
 
-    &:hover {
+    &:hover,
+    &.hover {
       opacity: 1;
       transition: opacity 0.2s;
       transition-timing-function: ease-out;

+ 2 - 1
src/assets/styles/el-override/el-table.less

@@ -1,6 +1,6 @@
 // el-table
 .main-body {
-  .el-table {
+  .custom-table.el-table {
     background: transparent;
     border: 0px;
 
@@ -25,6 +25,7 @@
       height: 27px;
       line-height: 27px;
       font-size: 12px;
+      color: @gray-l;
     }
 
     th {

+ 1 - 1
src/components/chart/bar/horizontal-bar-chart.vue

@@ -80,7 +80,7 @@ export default {
           containLabel: true,
         },
         tooltip: {
-          trigger: "item",
+          trigger: "axis",
           backgroundColor: "rgba(0,0,0,0.4)",
           borderColor: partten.getColor("gray"),
           textStyle: {

+ 9 - 9
src/components/chart/bar/single-bar-chart.vue

@@ -79,15 +79,15 @@ export default {
             show: false,
           },
         },
-        tooltip: {
-          trigger: "axis",
-          backgroundColor: "rgba(0,0,0,0.4)",
-          borderColor: partten.getColor("gray"),
-          textStyle: {
-            color: "#fff",
-            fontSize: 14,
-          },
-        },
+        // tooltip: {
+        //   trigger: "axis",
+        //   backgroundColor: "rgba(0,0,0,0.4)",
+        //   borderColor: partten.getColor("gray"),
+        //   textStyle: {
+        //     color: "#fff",
+        //     fontSize: 14,
+        //   },
+        // },
         grid: {
           left: 16,
           top: 16, // 设置条形图的边s距

+ 5 - 2
src/components/chart/combination/area-bar-chart.vue

@@ -171,7 +171,10 @@ export default {
         },
         tooltip: {
           show: true,
-          trigger: "item",
+          trigger: "axis",
+          axisPointer: {
+            type: "line",
+          },
           backgroundColor: "rgba(0,0,0,0.4)",
           borderColor: partten.getColor("gray"),
           textStyle: {
@@ -317,7 +320,7 @@ export default {
             opacity: 0.2,
           },
           tooltip: {
-            show: true,
+            show: false,
             formatter: function(params) {
               return params.marker + params.name + ": " + params.value[2] + "s";
             },

+ 78 - 51
src/components/chart/line/multiple-y-line-chart.vue

@@ -25,12 +25,7 @@ export default {
             default: () => [
                 {
                     title: "机舱震动x方向",
-                    yAxis: {
-                      min: -0.01,
-                      max: 0,
-                      unit: "",
-                      position: "left",
-                    },
+                    yAxisIndex: 0,
                     value: [
                         {
                             text: "-0.003",
@@ -72,12 +67,7 @@ export default {
                 },
                 {
                     title: "机舱震动y方向",
-                    yAxis: {
-                      min: -0.01,
-                      max: 0,
-                      unit: "",
-                      position: "right",
-                    },
+                    yAxisIndex: 1,
                     value: [
                         {
                             text: "-0.01",
@@ -119,12 +109,7 @@ export default {
                 },
                 {
                     title: "机舱震动最大偏移值",
-                    yAxis: {
-                      min: 0,
-                      max: 1,
-                      unit: "",
-                      position: "left",
-                    },
+                    yAxisIndex: 2,
                     value: [
                         {
                             text: "1",
@@ -166,12 +151,7 @@ export default {
                 },
                 {
                     title: "风速1",
-                    yAxis: {
-                      min: 0,
-                      max: 10,
-                      unit: "",
-                      position: "right",
-                    },
+                    yAxisIndex: 3,
                     value: [
                         {
                             text: "1",
@@ -213,12 +193,7 @@ export default {
                 },
                 {
                     title: "风速2",
-                    yAxis: {
-                      min: 0,
-                      max: 10,
-                      unit: "",
-                      position: "left",
-                    },
+                    yAxisIndex: 4,
                     value: [
                         {
                             text: "1",
@@ -264,6 +239,47 @@ export default {
             type: Boolean,
             default: false,
         },
+        // 轴
+        yAxises: {
+            type: Array,
+            default: () => [
+                {
+                    name: '机舱震动x方向',
+                    min: -0.01,
+                    max: 0,
+                    unit: "",
+                    position: "left",
+                },
+                {
+                    name: '机舱震动y方向',
+                    min: -0.01,
+                    max: 0,
+                    unit: "",
+                    position: "right",
+                },
+                {
+                    name: '机舱震动最大偏移值',
+                    min: 0,
+                    max: 1,
+                    unit: "",
+                    position: "left",
+                },
+                {
+                    name: '风速1',
+                    min: 0,
+                    max: 10,
+                    unit: "",
+                    position: "right",
+                },
+                {
+                    name: '风速2',
+                    min: 0,
+                    max: 10,
+                    unit: "",
+                    position: "left",
+                },
+            ],
+        },
     },
     data() {
         return {
@@ -286,15 +302,15 @@ export default {
         yAxis() {
             let result = [];
             let p = {left: 0, right: 0};
-            this.list.forEach((item, index) => {
+            this.yAxises.forEach((item, index) => {
                 result.push({
                     type: "value",
-                    name: `${item.title}${item.yAxis.unit}`,
-                    nameLocation: p[item.yAxis.position] % 2 == 0 ? "end" : "start",
-                    min: item.yAxis.min,
-                    max: item.yAxis.max,
-                    position: item.yAxis.position,
-                    offset: p[item.yAxis.position] * 60,
+                    name: `${item.name}${item.unit}`,
+                    nameLocation: p[item.position] % 2 == 0 ? "end" : "start",
+                    min: item.min,
+                    max: item.max,
+                    position: item.position,
+                    offset: p[item.position] * 60,
                     axisLabel: {
                         formatter: "{value}",
                         fontSize: util.vh(14),
@@ -313,7 +329,7 @@ export default {
                       show: true
                     }
                 });
-                p[item.yAxis.position]++;
+                p[item.position]++;
             });
 
             return result;
@@ -333,7 +349,7 @@ export default {
                             width: 1,
                         },
                     },
-                    yAxisIndex: index,
+                    yAxisIndex: value.yAxisIndex,
                     data: value.value.map((t) => {
                         return t.value;
                     }),
@@ -344,17 +360,31 @@ export default {
         },
     },
     methods: {
+        resize() {},
         initChart() {
             const chart = echarts.init(this.$el);
 
-            let option = {
+            let option = this.option();
+            console.log(option)
+            chart.clear();
+            chart.setOption(option);
+
+            this.resize = function() {
+                chart.resize();
+            };
+
+            window.addEventListener("resize", this.resize);
+        },
+        option: function () {
+            return {
                 color: this.color,
                 tooltip: {
                     trigger: "axis",
-                    backgroundColor: partten.getColor("gray"),
+                    backgroundColor: "rgba(0,0,0,0.4)",
+                    borderColor: partten.getColor("gray"),
                     textStyle: {
                         color: "#fff",
-                        fontSize: util.vh(16),
+                        fontSize: 14,
                     },
                 },
                 legend: {
@@ -418,15 +448,6 @@ export default {
                 yAxis: this.yAxis,
                 series: this.series,
             };
-            console.log(option)
-            chart.clear();
-            chart.setOption(option);
-
-            this.resize = function() {
-                chart.resize();
-            };
-
-            window.addEventListener("resize", this.resize);
         },
         datazoom: function (start, end) {
             const chart = echarts.getInstanceByDom(this.$el);
@@ -436,6 +457,12 @@ export default {
                 end: end,
             });
         },
+        reload: function () {
+            const chart = echarts.getInstanceByDom(this.$el);
+            chart.clear();
+            let option = this.option();
+            chart.setOption(option);
+        },
     },
     created() {
         this.id = "pie-chart-" + util.newGUID();

+ 0 - 1
src/components/coms/panel/panel-no-title.vue

@@ -33,7 +33,6 @@ export default {
     },
   },
 };
-s;
 </script>
 <style lang="less" scoped>
 .com-panel {

+ 1 - 1
src/components/coms/table/group-table.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-table :class="customClass" stripe :data="data.data" :height="height" style="width: 100%" @cell-click="onClick" @header-click="onHeaderClick">
+  <el-table class="custom-table" :class="customClass" stripe :data="data.data" :height="height" style="width: 100%" @cell-click="onClick" @header-click="onHeaderClick">
     <template v-for="col in data.column" :key="col">
       <el-table-column v-if="col.child && col.child.length > 0" :label="col.name" :key="col">
         <el-table-column

+ 1 - 1
src/components/coms/table/table2.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-table stripe :data="data.data" :height="height" style="width: 100%" @cell-click="onClick">
+  <el-table class="custom-table" stripe :data="data.data" :height="height" style="width: 100%" @cell-click="onClick">
     <el-table-column
       v-for="col in data.column"
       :key="col"

Різницю між файлами не показано, бо вона завелика
+ 1217 - 1132
src/views/Demo.vue


+ 267 - 2
src/views/HealthControl/fault-diagnosis.vue

@@ -31,7 +31,7 @@
             </div>
         </div>
         <div class="white font-md mg-t-16">测点选择</div>
-        <el-checkbox-group v-model="checkList" text-color="#05bb4c" fill="#05bb4c">
+        <el-checkbox-group v-model="checkList" text-color="#05bb4c" fill="#05bb4c" @change="check">
             <el-checkbox class="cb-item" label="C01">转子位置,值为:{{checkValue.C01}}</el-checkbox>
             <el-checkbox class="cb-item" label="C02">机舱震动×方向 ,值为:{{checkValue.C02}}</el-checkbox>
             <el-checkbox class="cb-item" label="C03">机舱震动×方向 ,值为:{{checkValue.C03}}</el-checkbox>
@@ -58,7 +58,7 @@
         </div>
         <div class="white font-md mg-t-16">风机故障回溯</div>
         <div class="fdp-sub-title font-sm">国电电力宁夏新能源集控系统</div>
-        <multiple-y-line-chart ref="chart" class="fdp-chart" height="32.407vh" :showLegend="true" />
+        <multiple-y-line-chart ref="chart" class="fdp-chart" height="32.407vh" :yAxises="yAxis" :list="lineData" :showLegend="true" />
     </div>
 </template>
 
@@ -68,6 +68,255 @@ export default {
     components: {MultipleYLineChart},
     data() {
         return {
+            yAxis: [
+                {
+                    name: '机舱震动x方向',
+                    min: -0.01,
+                    max: 0,
+                    unit: "",
+                    position: "left",
+                },
+                {
+                    name: '机舱震动y方向',
+                    min: -0.01,
+                    max: 0,
+                    unit: "",
+                    position: "right",
+                },
+                {
+                    name: '机舱震动最大偏移值',
+                    min: 0,
+                    max: 1,
+                    unit: "",
+                    position: "left",
+                },
+                {
+                    name: '风速1',
+                    min: 0,
+                    max: 10,
+                    unit: "",
+                    position: "right",
+                },
+                {
+                    name: '风速2',
+                    min: 0,
+                    max: 10,
+                    unit: "",
+                    position: "left",
+                },
+            ],
+            lineData: [
+                {
+                    title: "机舱震动x方向",
+                    yAxisIndex: 0,
+                    value: [
+                        {
+                            text: "-0.003",
+                            value: -0.003,
+                        },
+                        {
+                            text: "-0.002",
+                            value: -0.002,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.006,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.003,
+                        },
+                        {
+                            text: "-0.002",
+                            value: -0.002,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.006,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.003,
+                        },
+                        {
+                            text: "-0.002",
+                            value: -0.002,
+                        },
+                        {
+                            text: "-0.003",
+                            value: -0.006,
+                        },
+                    ],
+                },
+                {
+                    title: "机舱震动y方向",
+                    yAxisIndex: 1,
+                    value: [
+                        {
+                            text: "-0.01",
+                            value: -0.01,
+                        },
+                        {
+                            text: "-0.005",
+                            value: -0.005,
+                        },
+                        {
+                            text: "-0.008",
+                            value: -0.008,
+                        },
+                        {
+                            text: "-0.01",
+                            value: -0.01,
+                        },
+                        {
+                            text: "-0.005",
+                            value: -0.005,
+                        },
+                        {
+                            text: "-0.008",
+                            value: -0.008,
+                        },
+                        {
+                            text: "-0.01",
+                            value: -0.01,
+                        },
+                        {
+                            text: "-0.005",
+                            value: -0.005,
+                        },
+                        {
+                            text: "-0.008",
+                            value: -0.008,
+                        },
+                    ],
+                },
+                {
+                    title: "机舱震动最大偏移值",
+                    yAxisIndex: 2,
+                    value: [
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "0.05",
+                            value: 0.05,
+                        },
+                        {
+                            text: "0.5",
+                            value: 0.5,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "0.05",
+                            value: 0.05,
+                        },
+                        {
+                            text: "0.5",
+                            value: 0.5,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "0.05",
+                            value: 0.05,
+                        },
+                        {
+                            text: "0.5",
+                            value: 0.5,
+                        },
+                    ],
+                },
+                {
+                    title: "风速1",
+                    yAxisIndex: 3,
+                    value: [
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "5",
+                            value: 5,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "5",
+                            value: 5,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "5",
+                            value: 5,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                    ],
+                },
+                {
+                    title: "风速2",
+                    yAxisIndex: 4,
+                    value: [
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "2",
+                            value: 2,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "2",
+                            value: 2,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                        {
+                            text: "1",
+                            value: 1,
+                        },
+                        {
+                            text: "2",
+                            value: 2,
+                        },
+                        {
+                            text: "3",
+                            value: 1,
+                        },
+                    ],
+                },
+            ],
             options: [
                 {
                     value: "选项1",
@@ -114,6 +363,8 @@ export default {
             animationFrameId: null,
             start: 0,
             end: 10,
+            temp: null,
+            temp1: null,
         };
     },
     // 函数
@@ -167,6 +418,20 @@ export default {
                 this.endAnimate();
             }
         },
+        check: function () {
+            if (this.temp) {
+                this.lineData.splice(4, 0, this.temp);
+                this.yAxis.splice(4, 0, this.temp1);
+                this.temp = null;
+                this.temp1 = null;
+            } else {
+                this.temp = this.lineData[4];
+                this.temp1 = this.yAxis[4];
+                this.lineData.splice(4, 1);
+                this.yAxis.splice(4, 1);
+            }
+            this.$refs.chart.reload();
+        },
     },
 };
 </script>

+ 70 - 7
src/views/Home/components/map.vue

@@ -8,7 +8,7 @@
         <span class="unit">天</span>
       </div>
     </div>
-    <div class="tab-box">
+    <div class="tab-box" v-if="currentMode == 'NX'">
       <div class="tab-item" v-for="(tab, index) of tabs" :key="index" :class="{ active: activeTab == index }" @click.stop="selectTab(index, tab.show)">
         <span class="svg-icon svg-icon-sm" :class="activeTab == index ? 'svg-icon-green' : 'svg-icon-write'">
           <SvgIcon :svgid="tab.icon"></SvgIcon>
@@ -16,12 +16,19 @@
         <span>{{ tab.text }}</span>
       </div>
     </div>
-    <!-- <div class="return" @click="backMap" v-show="mapName !== 'nx'">
+    <div class="name-box" v-if="currentMode != 'NX'">
+      <div class="name-box-title">{{currentTitle}}</div>
+      <div class="name-box-period" v-show="currentPeriod != 'ZERO'">
+        <span class="name-box-period-label">期次:</span>
+        <span class="name-box-period-value" >{{currentName}}{{currentPeriod}}</span>
+      </div>
+    </div>
+    <div class="return" @click="backMap" v-show="mapIndex != -1">
       <span class="svg-icon svg-icon-sm">
         <svg-icon :svgid="'svg-arrow-dpwn-1'" />
       </span>
       返回
-    </div> -->
+    </div>
     <!-- 指南针 -->
     <div class="compass">
       <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="200px" height="200px" viewBox="0 0 200 200" enable-background="new 0 0 200 200" xml:space="preserve">
@@ -85,7 +92,11 @@
       <!-- 宁夏地图总览 -->
       <SvgMapNX v-if="mapName === 'nx'" :show="showType" :data="sourceMap" :xtData="xtMap" @clickLabel="clickLabel"></SvgMapNX>
       <!-- 麻黄山风电场 -->
-      <MHSFDC v-if="mapName === 'MHS_FDC'" :data="sourceMap" @clickFj="clickFj"></MHSFDC>
+      <MHSFDC v-if="mapName === 'MHS_FDC'" :data="sourceMap" @clickFj="clickFj" @changePeriod="changePeriod"></MHSFDC>
+      <SvgMapXS v-if="mapName === 'XS_FDC'" @changePeriod="changePeriod"></SvgMapXS>
+      <SvgMapNSS v-if="mapName === 'NSS_FDC'" @changePeriod="changePeriod"></SvgMapNSS>
+      <SvgMapQS v-if="mapName === 'QS_FDC'" @changePeriod="changePeriod"></SvgMapQS>
+      <SvgMapSBQ v-if="mapName === 'SBQ_FDC'" @changePeriod="changePeriod"></SvgMapSBQ>
     </div>
   </div>
 </template>
@@ -93,6 +104,10 @@
 <script>
 // 宁夏地图总览
 import SvgMapNX from "./map/svg-map-nx.vue";
+import SvgMapXS from "./map/svg-map-xs.vue";
+import SvgMapNSS from "./map/svg-map-nss.vue";
+import SvgMapQS from "./map/svg-map-qs.vue";
+import SvgMapSBQ from "./map/svg-map-sbq.vue";
 
 // 麻黄山风电场
 import MHSFDC from "./map/MHS_FDC.vue";
@@ -105,6 +120,10 @@ export default {
   // 使用组件
   components: {
     SvgMapNX,
+    SvgMapXS,
+    SvgMapNSS,
+    SvgMapQS,
+    SvgMapSBQ,
     MHSFDC,
     SvgIcon,
   },
@@ -161,7 +180,12 @@ export default {
       activeTab: 0,
       img: require("@assets/map/map-nx.png"),
       nxSvgFile: require("@assets/map/map-nx.svg"),
+      nxmap: true,
       mapName: "nx",
+      currentMode: 'NX',
+      currentTitle: '青山风电场',
+      currentName: '麻黄山',
+      currentPeriod: '一期',
     };
   },
   emits: {
@@ -179,16 +203,23 @@ export default {
       this.$emit("mapClick", wpId, this.tabs[index].text);
     },
     backMap() {
-      // this.mapName = "nx";
-      // this.$emit("mapClick", wpId);
+      this.currentMode = "NX";
+      this.mapName = "nx";      
+      this.$emit("mapClick", wpId);
     },
     clickLabel(wpId, planBtnName) {
       this.mapName = wpId;
+      this.currentTitle = planBtnName;
       this.$emit("mapClick", wpId, planBtnName);
     },
     clickFj(wpId, planBtnName){
       this.$emit("mapClick", wpId, planBtnName);
-    }
+    },
+    changePeriod: function (name, period) {
+      this.currentName = name;
+      this.currentPeriod = period;
+      this.currentMode = "SUB";
+    },
   },
   watch:{
     wpId(res){
@@ -245,6 +276,38 @@ export default {
     }
   }
 
+  .name-box {
+    margin: 1.852vh;
+    display: inline-block;
+    z-index: 2;
+    position: relative;
+
+    .name-box-title {
+      font-size: 2.222vh;
+      font-weight: 400;
+      color: #FFFFFF;
+      line-height: 1;
+    }
+
+    .name-box-period {
+      margin-top: 2.222vh;
+      .name-box-period-label, 
+      .name-box-period-value {
+        font-size: 1.481vh;
+        font-weight: 400;
+        line-height: 1;
+      }
+
+      .name-box-period-label {
+        color: #FEFEFE;
+      }
+
+      .name-box-period-value {
+        color: #05BB4C;
+      }
+    }
+  }
+
   .tab-box {
     margin: 1.852vh 2.778vh;
     display: inline-block;

Різницю між файлами не показано, бо вона завелика
+ 117 - 41
src/views/Home/components/map/MHS_FDC.vue


Різницю між файлами не показано, бо вона завелика
+ 551 - 0
src/views/Home/components/map/svg-map-nss.vue


Різницю між файлами не показано, бо вона завелика
+ 526 - 0
src/views/Home/components/map/svg-map-qs.vue


Різницю між файлами не показано, бо вона завелика
+ 593 - 0
src/views/Home/components/map/svg-map-sbq.vue


Різницю між файлами не показано, бо вона завелика
+ 127 - 43
src/views/Home/components/map/svg-map-xs.vue


Різницю між файлами не показано, бо вона завелика
+ 95 - 23
src/views/Home/components/map/svg-map.vue


Різницю між файлами не показано, бо вона завелика
+ 1673 - 0
src/views/WindSite/components/boosterstation/mch/BoosterStation.js


Різницю між файлами не показано, бо вона завелика
+ 1349 - 0
src/views/WindSite/components/boosterstation/mch/mch.vue


+ 697 - 0
src/views/WindSite/components/boosterstation/mch/previewPicture.vue

@@ -0,0 +1,697 @@
+<template>
+	<div class="pop-up-main">
+		<div class="paln-box">
+			<div class="movableItem" :style="{width:width,height:height}" @mousewheel="rollImg($event)"
+				@mousedown="drag($event,1)" ref="bigImage">
+				<!-- 图片不可选中 或不可拖拽到新标签打开-->
+				<slot name="svg" oncontextmenu="return false;" onselectstart="return false;" draggable="false"></slot>
+				<template v-if="isEdit &&iconWidth">
+					<img ref="signImage" :src="iconImgUrl" @mousedown="dragSign($event,key)"
+						v-for="(item,key) in equipment" :key="key"
+						:style="{top:equipment[key].top+'%',left:equipment[key].left+'%',width:iconWidth,height:iconHeight}"
+						class="equipment" />
+				</template>
+				<el-popover width="200" placement="bottom-start" trigger="hover" :close-delay="100" content="暂无描述"
+					v-else-if="!isEdit&&iconWidth &&arrIcon.length==equipment.length " v-for="(item,key) in equipment"
+					:key="key" popper-class="preview-popover">
+					<!-- &&arrIcon.length==equipment.length -->
+					<template>
+						<div v-if="equipment[key].describe" class="describe">
+							<p class="describe-top">{{equipment[key].describe.deviceName}}</p>
+							<p class="describe-center">{{equipment[key].describe.remark}}</p>
+							<p class="describe-bottom">{{equipment[key].describe.location}}</p>
+						</div>
+					</template>
+					<!-- <img oncontextmenu="return false;" onselectstart="return false;" draggable="false" slot="reference"
+						ref="signImage" :src="$baseUrl + equipment[key].iconImgUrl"
+						:style="{top:equipment[key].top+'%',left:equipment[key].left+'%',width:arrIcon[key].iconWidth,height:arrIcon[key].iconHeight}"
+						class="equipment" /> -->
+				</el-popover>
+			</div>
+		</div>
+	</div>
+</template>
+<script>
+	export default {
+		props: {
+			equipment: {
+				type: Array,
+				default: () => {
+					return [{
+						iconImgUrl: "",
+						top: 0,
+						left: 0,
+					}, ];
+				},
+			},
+			isEdit: {
+				default: false,
+			},
+			imgUrl: {},
+		},
+
+		data() {
+			return {
+				// 定时器
+				timer: "",
+				// 图片加载失败
+				imgOnerror: false,
+				imgIndex: 0,
+				isChange: true,
+				// 图片显示默认大小
+				width: "1400px",
+				height: "850px",
+				// 可缩小倍数,为空则可无限缩小
+				minification: 3,
+				// 可放大倍数 为空则可无限放大
+				magnification: "",
+				bigMaxWidth: 1600,
+				bigMaxHeight: 800,
+
+				// 小图标信息
+				iconImgUrl: "",
+				iconWidth: "",
+				// 存储每个小图标处理好的宽高
+				iconHeight: "",
+				arrIcon: [],
+				iconMaxWidth: 32,
+				iconMaxHeight: 32,
+				tog: 1,
+			};
+		},
+		methods: {
+			// 获取图片大小
+			getImgInfo(
+				imgUrl,
+				MaxWidth,
+				MaxHeight,
+				StrWidth,
+				StrHeight,
+				Array = false,
+				arr,
+				num = 0
+			) {
+				var img = new Image();
+
+				// img.src = imgUrl;
+				img = document.getElementsByClassName("svg")
+				let _this = this;
+				img.onerror = () => {
+					// console.log("加载失败!!", _this.arrIcon.length);
+					console.log(imgUrl, MaxWidth, MaxHeight, StrWidth, StrHeight);
+					_this.imgOnerror = true;
+					_this.imgIndex =
+						_this.arrIcon.length - 1 < 0 ? 0 : _this.arrIcon.length - 1;
+					this.timer = setTimeout(() => {
+						if (num <= 5) {
+							_this.getImgInfo(
+								imgUrl,
+								MaxWidth,
+								MaxHeight,
+								StrWidth,
+								StrHeight,
+								Array,
+								arr,
+								num + 1
+							);
+						}
+						clearInterval(this.timer);
+					}, 2000);
+				};
+				img.onload = function(e) {
+					//  显示时 初始 最大宽度
+					let maxWidth = MaxWidth;
+					//  显示时 初始 最大高度
+					let maxHeight = MaxHeight;
+					if (
+						e.path[0].naturalWidth <= maxWidth &&
+						e.path[0].naturalHeight <= maxHeight
+					) {
+						_this[StrWidth] = e.path[0].naturalWidth + "px";
+						_this[StrHeight] = e.path[0].naturalHeight + "px";
+					} else {
+						_this[StrWidth] = e.path[0].naturalWidth + "px";
+						_this[StrHeight] = e.path[0].naturalHeight + "px";
+						if (
+							e.path[0].naturalWidth > maxWidth &&
+							e.path[0].naturalHeight <= maxHeight
+						) {
+							let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+							_this[StrWidth] = "1600px";
+							_this[StrHeight] = maxWidth / ratio + "px";
+						} else if (
+							e.path[0].naturalWidth <= maxWidth &&
+							e.path[0].naturalHeight > maxHeight
+						) {
+							let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+							_this[StrWidth] = maxHeight * ratio + "px";
+							_this[StrHeight] = "800px";
+						} else if (
+							e.path[0].naturalWidth > maxWidth &&
+							e.path[0].naturalHeight > maxHeight
+						) {
+							let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+							let w = maxWidth;
+							let h = w / ratio;
+							if (h > maxHeight) {
+								let ratio2 = w / h;
+								h = maxHeight;
+								w = h * ratio2;
+							}
+							_this[StrWidth] = w + "px";
+							_this[StrHeight] = h + "px";
+						}
+					}
+					if (Array) {
+						_this[arr].push({
+							iconWidth: _this[StrWidth],
+							iconHeight: _this[StrHeight],
+						});
+						console.log(
+							"tow#################################arrIcon",
+							_this[arr].length
+						);
+					}
+					// _this[StrWidth] = `${e.path[0].naturalWidth}px`;
+					// _this[StrHeight] = `${e.path[0].naturalHeight}px`;
+					// vm.$set(vm.imgInfo, "width", img.width);
+					// vm.$set(vm.imgInfo, "height", img.height);
+					// console.log("打印图片信息", imgUrl, _this[StrWidth], _this[StrHeight]); // 打印图片信息
+
+					// console.log("打印图片信息", e.path[0].naturalHeight); // 打印图片信息
+					// console.log("打印图片信息", e); // 打印图片信息
+					// console.log("打印图片信息this.width", _this[StrWidth]); // 打印图片信息
+					// console.log("打印图片信息this.height", _this[StrHeight]); // 打印图片信息
+				};
+			},
+			// 缩放
+			rollImg() {
+				var that = this;
+				// var oImg = document.getElementsByClassName("movableItem")[0];
+				var oImg = this.$refs.bigImage;
+				console.log(
+					"length",
+					document.getElementsByClassName("movableItem").length
+				);
+				console.log("oImg", oImg);
+				var _this = this;
+
+				function fnWheel(obj, fncc) {
+					obj.onmousewheel = fn;
+					if (obj.addEventListener) {
+						obj.addEventListener("DOMMouseScroll", fn, false);
+					}
+
+					function fn(ev) {
+						var oEvent = ev || window.event;
+						var down = true;
+						if (oEvent.detail) {
+							down = oEvent.detail > 0;
+						} else {
+							down = oEvent.wheelDelta < 0;
+						}
+						if (fncc) {
+							fncc.call(this, down, oEvent);
+						}
+						if (oEvent.preventDefault) {
+							oEvent.preventDefault();
+						}
+						return false;
+					}
+				}
+				fnWheel(oImg, function(down, oEvent) {
+					var oldWidth = this.offsetWidth;
+					var oldHeight = this.offsetHeight;
+					var oldLeft = this.offsetLeft;
+					var oldTop = this.offsetTop;
+					var parent = oEvent.path[2];
+					// 获取父元素距离页面可视区域的位置
+					var parentLeft = parent.getBoundingClientRect().left;
+					var parentTop = parent.getBoundingClientRect().top;
+					// 比例 = (点击位置距离可视窗口位置 - 父元素距离可视窗口位置 - 相对定位的left)/ 本身宽度
+					var scaleX = (oEvent.clientX - parentLeft - oldLeft) / oldWidth; //比例
+					var scaleY = (oEvent.clientY - parentTop - oldTop) / oldHeight;
+
+					let nowWidth = this.style.width.split("p")[0];
+					let initWidth = _this.width.split("p")[0];
+					let initHeight = _this.height.split("p")[0];
+
+					let miniFlag = true;
+					let magniFlag = true;
+					if (_this.minification) {
+						// 限制缩小范围
+						if (nowWidth <= parseInt(initWidth / _this.minification)) {
+							miniFlag = false;
+							console.log("限制缩小范围");
+							console.log(
+								"限制缩小范围",
+								nowWidth,
+								parseInt(initWidth / _this.minification)
+							);
+							this.style.width = parseInt(initWidth / _this.minification) + "px";
+							this.style.height =
+								parseInt(initHeight / _this.minification) + "px";
+						}
+						if (_this.magnification) {
+							// 限制放大范围
+							if (nowWidth >= parseInt(initWidth * _this.magnification)) {
+								magniFlag = false;
+								console.log("限制放大范围");
+								this.style.width =
+									parseInt(initWidth * _this.magnification) + "px";
+								this.style.height =
+									parseInt(initHeight * _this.magnification) + "px";
+							}
+						}
+					}
+
+					if (down && miniFlag) {
+						console.log("缩小");
+						this.style.width = parseInt(this.offsetWidth * 0.9) + "px";
+						this.style.height = parseInt(this.offsetHeight * 0.9) + "px";
+						
+						that.width = parseInt(this.offsetWidth * 0.9) + "px";
+						that.height = parseInt(this.offsetHeight * 0.9) + "px";
+					} else if (!down && magniFlag) {
+						console.log("放大");
+						this.style.width = parseInt(this.offsetWidth * 1.1) + "px";
+						this.style.height = parseInt(this.offsetHeight * 1.1) + "px";
+						that.width = parseInt(this.offsetWidth * 1.1) + "px";
+						that.height = parseInt(this.offsetHeight * 1.1) + "px";
+					}
+					var newWidth = this.offsetWidth;
+					var newHeight = this.offsetHeight;
+
+					// 新的相对位置left = 原先的相对位置left - 比例 *(本身新的宽度-旧的宽度)
+					this.style.left =
+						Math.round(this.offsetLeft - scaleX * (newWidth - oldWidth)) + "px";
+					this.style.top =
+						Math.round(this.offsetTop - scaleY * (newHeight - oldHeight)) + "px";
+				});
+				// console.log(that.width)
+			},
+			// },
+			//拖拽
+			drag(ev) {
+				// var ie = document.all;
+				// console.log(ev / 0);
+
+				var nn6 = document.getElementById && !document.all;
+				var isdrag = false;
+				var y, x;
+				var nTY, nTX;
+				var oDragObj;
+
+				function moveMouse(e) {
+					if (isdrag) {
+						oDragObj.style.top =
+							(nn6 ? nTY + e.clientY - y : nTY + event.clientY - y) + "px";
+						oDragObj.style.left =
+							(nn6 ? nTX + e.clientX - x : nTX + event.clientX - x) + "px";
+						return false;
+					}
+				}
+
+				function initDrag(e) {
+					// console.log("点击图片initDrag");
+					var oDragHandle = nn6 ? e.target : event.srcElement;
+					var topElement = "HTML";
+					while (
+						oDragHandle.tagName != topElement &&
+						oDragHandle.className != "movableItem"
+					) {
+						oDragHandle = nn6 ?
+							oDragHandle.parentNode :
+							oDragHandle.parentElement;
+					}
+					if (oDragHandle.className == "movableItem") {
+						isdrag = true;
+						oDragObj = oDragHandle;
+						// 父元素宽高
+						let width = e.path[2].offsetWidth;
+						let height = e.path[2].offsetHeight;
+						// 这里判断第一次获取不到style 样式 默认为 居中50%
+						if (oDragObj.style.top == "") {
+							// nTY = parseInt((50 * height) / 100 + 0);
+							nTY = 0;
+							nTX = parseInt((50 * width) / 100 + 0);
+						} else {
+							nTY = parseInt(oDragObj.style.top + 0);
+							nTX = parseInt(oDragObj.style.left + 0);
+						}
+						y = nn6 ? e.clientY : event.clientY;
+						x = nn6 ? e.clientX : event.clientX;
+						oDragObj.style.cursor = "move";
+						document.onmousemove = moveMouse;
+						return false;
+					}
+				}
+				document.onmousemove = initDrag;
+				// document.onmouseup = new Function("isdrag=false");
+				document.onmouseup = function(e) {
+					isdrag = false;
+					document.onmousemove = null;
+					document.onmouseup = null;
+					var oDragHandle = nn6 ? e.target : event.srcElement;
+					var topElement = "HTML";
+					while (
+						oDragHandle.tagName != topElement &&
+						oDragHandle.className != "movableItem"
+					) {
+						oDragHandle = nn6 ?
+							oDragHandle.parentNode :
+							oDragHandle.parentElement;
+					}
+					if (oDragHandle.className == "movableItem") {
+						oDragObj = oDragHandle;
+						oDragObj.style.cursor = "Default";
+					}
+				};
+				ev = event || window.event;
+
+				// 取消事件冒泡行为
+				// window.event ? (window.event.cancelBubble = true) : ev.stopPropagation();
+			},
+			// 拖拽标记
+			// eslint-disable-next-line no-unused-vars
+			dragSign(ev, key) {
+				var nn6 = document.getElementById && !document.all;
+				var isdrag = false;
+				var y, x;
+				var nTY, nTX;
+				var oDragObj;
+				let _this = this;
+
+				function moveMouse(e) {
+
+					if (isdrag) {
+						this.equipmentKey = key;
+						// console.log("thisequipmentKey", this.equipmentKey);
+
+						let widthItem = e.path[1].style.width.split("p");
+						let heightItem = e.path[1].style.height.split("p");
+						let width = widthItem[0];
+						// eslint-disable-next-line no-unused-vars
+						let height = heightItem[0];
+						let top =
+							((nn6 ?
+									(nTY / 100) * height + e.clientY - y :
+									(nTY / 100) * height + event.clientY - y) /
+								height) *
+							100;
+						let left =
+							((nn6 ?
+									(nTX / 100) * width + e.clientX - x :
+									(nTX / 100) * width + event.clientX - x) /
+								width) *
+							100;
+
+						if (top >= 0 && top <= 100) {
+							_this.equipment[key].top = top;
+						}
+						if (left >= 0 && left <= 100) {
+							_this.equipment[key].left = left;
+						}
+
+						return false;
+					}
+				}
+				// eslint-disable-next-line no-unused-vars
+				function initDrag(e) {
+					// console.log("_this", _this);
+					var oDragHandle = nn6 ? e.target : event.srcElement;
+					var topElement = "HTML";
+					while (
+						oDragHandle.tagName != topElement &&
+						oDragHandle.className.indexOf("equipment") == -1
+					) {
+						oDragHandle = nn6 ?
+							oDragHandle.parentNode :
+							oDragHandle.parentElement;
+					}
+					if (oDragHandle.className.indexOf("equipment") != -1) {
+						isdrag = true;
+						oDragObj = oDragHandle;
+						// 父元素宽高
+						let width = e.path[1].offsetWidth;
+						let height = e.path[1].offsetHeight;
+						// console.log(width, height);
+						console.log("oDragObj.style", oDragObj.style);
+						// 这里判断第一次获取不到style 样式 默认为 居中50%
+						if (oDragObj.style.top == "") {
+							nTY = parseInt((50 * height) / 100 + 0);
+							nTX = parseInt((50 * width) / 100 + 0);
+						} else if (oDragObj.style.top.indexOf("%") != -1) {
+							nTY = oDragObj.style.top.split("%")[0];
+							nTX = oDragObj.style.left.split("%")[0];
+						} else {
+							nTY = parseInt(oDragObj.style.top + 0);
+							nTX = parseInt(oDragObj.style.left + 0);
+						}
+						y = nn6 ? e.clientY : event.clientY;
+						x = nn6 ? e.clientX : event.clientX;
+
+						oDragObj.style.cursor = "move";
+						document.onmousemove = moveMouse;
+						return false;
+					}
+				}
+
+				// document.onmousedown = initDrag;
+				document.onmousemove = initDrag;
+
+				document.onmouseup = function(e) {
+					isdrag = false;
+					document.onmousemove = null;
+					document.onmouseup = null;
+					var oDragHandle = nn6 ? e.target : event.srcElement;
+					var topElement = "HTML";
+					while (
+						oDragHandle.tagName != topElement &&
+						oDragHandle.className != "equipment"
+					) {
+						oDragHandle = nn6 ?
+							oDragHandle.parentNode :
+							oDragHandle.parentElement;
+					}
+					if (oDragHandle.className == "equipment") {
+						oDragObj = oDragHandle;
+						oDragObj.style.cursor = "Default";
+					}
+				};
+
+				// _this.equipmentKey = key;
+				// _this.equipment[_this.equipmentKey].left = l;
+				// _this.equipment[_this.equipmentKey].top = t;
+				ev = event || window.event;
+
+				// 取消事件冒泡行为
+				window.event ? (window.event.cancelBubble = true) : ev.stopPropagation();
+			},
+		},
+		
+		watch: {
+			equipment() {
+				if (this.equipment.length != 0) {
+					this.arrIcon = [];
+					let finish = true;
+					this.equipment.filter((item) => {
+						if (!item.iconImgUrl) {
+							finish = false;
+						}
+						return true;
+					});
+					console.log("finish", finish);
+					if (finish) {
+						this.equipment.filter((item, index) => {
+							if (index >= this.imgIndex) {
+								console.log("iconImgUrl", this.equipment[index].iconImgUrl);
+								this.getImgInfo(
+									this.$baseUrl + item.iconImgUrl,
+									this.iconMaxWidth,
+									this.iconMaxHeight,
+									"iconWidth",
+									"iconHeight",
+									true,
+									"arrIcon"
+								);
+							}
+							// console.log("22filter", index);
+							return true;
+						});
+					}
+				}
+			},
+		},
+		created() {
+			this.getImgInfo(
+				this.imgUrl,
+				this.bigMaxWidth,
+				this.bigMaxHeight,
+				"width",
+				"height"
+			);
+			if (this.equipment.length != 0) {
+				this.arrIcon = [];
+				let finish = true;
+				this.equipment.filter((item) => {
+					if (!item.iconImgUrl) {
+						finish = false;
+					}
+					return true;
+				});
+				// console.log("finish", finish);
+				if (finish) {
+					this.equipment.filter((item, index) => {
+						if (index >= this.imgIndex) {
+							console.log("iconImgUrl", this.equipment[index].iconImgUrl);
+							this.getImgInfo(
+								this.$baseUrl + item.iconImgUrl,
+								this.iconMaxWidth,
+								this.iconMaxHeight,
+								"iconWidth",
+								"iconHeight",
+								true,
+								"arrIcon"
+							);
+						}
+						// console.log("22filter", index);
+						return true;
+					});
+				}
+			}
+
+			this.iconImgUrl = JSON.parse(
+				JSON.stringify(this.$baseUrl + this.equipment[0].iconImgUrl)
+			);
+			// console.log("imgUrl", this.imgUrl);
+			// console.log("equipment", this.equipment);
+			// //禁止鼠标右键
+			// document.oncontextmenu = function() {
+			//   return false;
+			// };
+		},
+	};
+</script>
+<style lang="less">
+	.preview-popover {
+		background-color: #d3edf7dd;
+		padding: 12px;
+
+		.popper__arrow::after {
+			border-bottom-color: #d3edf7dd !important;
+		}
+
+		.describe {
+			p {
+				padding-bottom: 5px;
+
+				&:last-child {
+					padding-bottom: 0px;
+				}
+			}
+
+			.describe-top {
+				// color: sandybrown;
+				// color: red;
+				color: rgb(21, 110, 110);
+			}
+
+			.describe-center {
+				color: rgb(79, 21, 206);
+			}
+
+			.describe-bottom {
+				color: rgb(30, 31, 29);
+			}
+		}
+	}
+</style>
+<style lang="less" scoped>
+	.pop-up-main {
+		width: 100%;
+		height: calc(100vh - 10vh);
+		overflow-y:hidden ;
+
+		.paln-box {
+			width: 100%;
+			height: 100%;
+			position: relative;
+
+			.movableItem {
+				position: absolute;
+				// top: 75%;
+				left: 50%;
+				transform: translate(-50%, -10%);
+
+				img,
+				.svg {
+					z-index: 1;
+					width: 100%;
+					height: 100%;
+				}
+
+				.equipment {
+					position: absolute;
+					top: 0;
+					left: 0;
+					transform: translate(-50%, -50%);
+					z-index: 2;
+					font-size: 40px;
+					// color: red;
+					// background: blue;
+					zoom: 1;
+				}
+			}
+
+			.shuaxin {
+				position: absolute;
+				z-index: 2;
+				font-size: 40px;
+				top: 20px;
+				left: 20px;
+				cursor: pointer;
+
+				&:hover {
+					color: yellowgreen;
+				}
+			}
+
+			.equipment {
+				color: white;
+			}
+
+			&/deep/.el-button {
+				z-index: 2;
+				position: absolute;
+				bottom: 60px;
+				right: 20px;
+				width: 60px;
+				height: 35px;
+
+				span {
+					display: inline-block;
+					position: absolute;
+					top: 50%;
+					left: 50%;
+					transform: translate(-50%, -50%);
+				}
+
+				i {
+					display: inline-block;
+					position: absolute;
+					top: 50%;
+					left: 25%;
+					transform: translate(-50%, -50%);
+				}
+			}
+		}
+	}
+
+	// body {
+	// 		height: 100%;
+	// 		overflow: hidden;
+	// 		margin: 0;
+	// 		padding: 0;
+	// 	}
+</style>