Parcourir la source

Merge branch 'develop' into aly_dev

guoxiaohuan il y a 4 ans
Parent
commit
2f6deb312e
42 fichiers modifiés avec 839 ajouts et 497 suppressions
  1. 1 1
      package.json
  2. 7 0
      src/App.vue
  3. 7 7
      src/api/httputils.js
  4. 18 6
      src/components/Legend/src/legend.vue
  5. 34 3
      src/components/Rotation/src/rotation.vue
  6. 1 1
      src/components/editLengend.vue
  7. 13 1
      src/components/floorList.vue
  8. 3 4
      src/components/floorMap/index.vue
  9. 6 9
      src/components/viewLengend.vue
  10. 1 1
      src/lib/items/SFHFQZoneLegendItem.js
  11. 1 1
      src/lib/items/SFHFQZoneLegendItem.ts
  12. 53 53
      src/lib/items/SImageLegendItem.ts
  13. 1 1
      src/lib/items/SSCPZZoneLegendItem.js
  14. 1 1
      src/lib/items/SSCPZZoneLegendItem.ts
  15. 1 0
      src/lib/items/TipelineItem.js
  16. 1 0
      src/lib/items/TipelineItem.ts
  17. 21 5
      src/main.ts
  18. 5 9
      src/router/index.js
  19. 79 46
      src/utils/ganttChart/GanttChart.js
  20. 51 10
      src/views/analysis/CoreDeviceReport.vue
  21. 264 152
      src/views/analysis/GanttChart.vue
  22. 8 6
      src/views/equipment/eqDialog.vue
  23. 15 1
      src/views/equipment/index.vue
  24. 24 10
      src/views/equipment/table/djspTable.vue
  25. 13 2
      src/views/equipment/table/eqListTable.vue
  26. 13 1
      src/views/equipment/table/standTable.vue
  27. 1 0
      src/views/equipment/table/wbTable.vue
  28. 6 3
      src/views/equipment/table/wxTable.vue
  29. 0 13
      src/views/first/index.vue
  30. 8 8
      src/views/homepage/index.vue
  31. 13 9
      src/views/legendLibrary/addForm.vue
  32. 30 0
      src/views/legendLibrary/addLegend.vue
  33. 1 2
      src/views/legendLibrary/index.vue
  34. 3 3
      src/views/legendRules/index.vue
  35. 24 12
      src/views/other/index.vue
  36. 1 1
      src/views/other/zhsxDialog.vue
  37. 2 2
      src/views/other/zhsxOtherTable2.vue
  38. 19 9
      src/views/overview/index.vue
  39. 4 2
      src/views/overview/picModal.vue
  40. 1 1
      src/views/room/room1.vue
  41. 83 100
      src/views/statistics/index.vue
  42. 1 1
      vue.config.js

+ 1 - 1
package.json

@@ -10,7 +10,7 @@
     "dependencies": {
         "@mapbox/geojson-merge": "^1.1.1",
         "@saga-web/base": "2.1.22",
-        "@saga-web/big": "1.0.72",
+        "@saga-web/big": "1.0.73",
         "@saga-web/draw": "2.1.100",
         "@saga-web/feng-map": "1.0.20",
         "@saga-web/graph": "2.1.105",

+ 7 - 0
src/App.vue

@@ -274,4 +274,11 @@ body {
 .gantt-chart .el-dialog__title{
   font-weight: 500;
 }
+.img-detail-container{
+    .el-dialog__body {
+        padding-top: 0;
+        padding-bottom: 0;
+        padding-right: 0;
+    }
+}
 </style>

+ 7 - 7
src/api/httputils.js

@@ -22,16 +22,16 @@ axiosservice.interceptors.request.use(
         config.withCredentials = true // 允许携带token ,这个是解决跨域产生的相关问题
         let token = store.getters['ssoToken']
         let isPreview = store.getters['isPreview']
-        if (config.url.indexOf('mapapp') < 0) {
-            config.headers = {
-                'sso-token': token,
-                isPreview: isPreview, //默认false,当预览开启的时候是true
-            }
-        }
+        // if (config.url.indexOf('mapapp') < 0) {
+        //     config.headers = {
+        //         'sso-token': token,
+        //         isPreview: isPreview, //默认false,当预览开启的时候是true
+        //     }
+        // }
         // if (config.url.indexOf('/data') > -1 && config.url !== '/data/data/auth/check') {
         if (config.url.indexOf('/data') > -1) {
             config.headers = {
-                'sso-token': 'admin:xiejialin1',
+                'sso-token': token,
             }
         }
         return config

+ 18 - 6
src/components/Legend/src/legend.vue

@@ -6,9 +6,9 @@
 <template>
     <div>
         <div class='legend-container'>
-            <div :class='showView===1?"legend2":"legend"' @click='showTl' v-if='(type==1 || floors.length>0)&& isMessage'>图例</div>
+            <div :class='showView===1?"legend2":"legend"' @click='showTl' v-if='(type==1 || floors.length>0)&& isMessage && legendTable.length>0 '>图例</div>
             <!-- 图里展示状态组件 -->
-            <el-collapse-transition v-if='(type==1 || floors.length>0)&& isMessage'>
+            <el-collapse-transition v-if='(type==1 || floors.length>0)&& isMessage && legendTable.length>0 '>
                 <div class='legend-tab' v-if='showView===1'>
                     <div class='legend-table2' v-if='systemName=="土建系统"'>
                         <lengend-view @changeSwitch='handleSwich' :remarksText='remarksText' ref='viewLengend' :systemName='systemName'></lengend-view>
@@ -23,7 +23,7 @@
                 <div v-if='showView===2'>
                     <lengend-edit
                         @handleSwich2='handleSwich2'
-                        v-if='editTable.length>=0'
+                        v-if='editTable.length>0'
                         :loading='loading1'
                         ref='editLen'
                         :editTable='editTable'
@@ -135,7 +135,7 @@ export default {
         }
     },
     computed: {
-        ...mapGetters(['plazaId', 'fmapID', 'floorSelect', 'isMessage', 'ssoToken', 'showView'])
+        ...mapGetters(['plazaId', 'fmapID', 'floorSelect', 'isMessage', 'ssoToken', 'showView', 'legendTable'])
     },
     props: {
         floors: {
@@ -316,6 +316,7 @@ export default {
         queryView(flag) {
             let postParams = {}
             let data = {
+                categoryId: this.$cookie.get('categoryId'),
                 graphId: this.$cookie.get('graphId'),
                 projectId: this.$store.state.plazaId,
                 flag: flag
@@ -325,7 +326,6 @@ export default {
                 let viewTable = []
                 viewTable = res.data.Data ? res.data.Data : []
                 this.$store.commit('SETLEGENDTABLE', viewTable)
-
                 if (viewTable.length > 0) {
                     viewTable.forEach(el => {
                         if (el.Name == '主要设备房') {
@@ -359,9 +359,21 @@ export default {
         },
         // 编辑数量
         queryEdit(val) {
+            let arr = []
+            if (val.length > 0) {
+                val.forEach(el => {
+                    let obj = {
+                        CategoryId: el.GraphCategoryId,
+                        GraphId: this.$cookie.get('graphId'),
+                        GraphElementId: el.GraphElementId,
+                        Num: el.Num
+                    }
+                    arr.push(obj)
+                })
+            }
             let params = {
                 postParams: {
-                    Content: val
+                    Content: arr
                 }
             }
             updateStatis(params).then(res => {

+ 34 - 3
src/components/Rotation/src/rotation.vue

@@ -4,7 +4,7 @@
 *@info:图片轮播
 */
 <template>
-    <div :class='[type?"rotationFull":"rotation"]'>
+    <div :class='[type==1?"rotationFull":(type==3?"rotationFullYlt":"rotation")]'>
         <div v-if='rotationImg.length==1' class='rotationCon'>
             <!-- <img
                 src='https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1592807833&di=5adf17cda9f46c37696da5b1d0aec9dc&src=http://a3.att.hudong.com/14/75/01300000164186121366756803686.jpg'
@@ -13,7 +13,7 @@
             <img :src='rotationImg[0].url' alt />
             <!-- <img src='./3440.jpg' alt /> -->
         </div>
-        <el-carousel v-else trigger='click' style='height:100%;width:100%' :interval='5000' arrow='always'>
+        <el-carousel v-else trigger='click' style='height:100%;width:100%' :interval='5000' arrow='always' @change='changePic'>
             <el-carousel-item v-for='(item,index) in rotationImg' :key='index'>
                 <img :src='item.url' alt />
             </el-carousel-item>
@@ -29,7 +29,18 @@ export default {
             rotationImgs: [{ url: require('@/assets/images/login_back.png') }]
         }
     },
-    mounted() {}
+    methods: {
+        changePic(val) {
+            if (this.type == 2) {
+                this.$emit('scan', val + 1)
+            }
+        }
+    },
+    mounted() {
+        if (this.type == 2) {
+            this.changePic(1)
+        }
+    }
 }
 </script>
 <style lang="less" scoped>
@@ -75,6 +86,26 @@ export default {
         min-width: 100%;
     }
 }
+.rotationFullYlt {
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    .rotationCon {
+        height: 100%;
+        width: 100%;
+        overflow: auto;
+    }
+    img {
+        // width: 100%;
+        // height: 100%;
+        // object-fit: fill;
+        // min-width: 100%;
+        min-height: 100%;
+    }
+}
 </style>
 <style lang="less">
 .rotation,

+ 1 - 1
src/components/editLengend.vue

@@ -7,7 +7,7 @@
     <div class='view'>
         <div class='legend-tab2'>
             <div class='legend-table2-box'>
-                <div class='legend-table2' v-if='editTable.length>=0'>
+                <div class='legend-table2' v-if='editTable.length>0'>
                     <el-table
                         v-loading='loading'
                         :header-cell-style='{background:"rgba(2,91,170,0.1)",fontFamily:"PingFangSC-Medium,PingFang SC;",color:"rgba(0,0,0,0.85);",fontSize:"12px"}'

+ 13 - 1
src/components/floorList.vue

@@ -45,6 +45,7 @@
 </template>
 <script>
 import store from '../store'
+import { mapGetters } from 'vuex'
 export default {
     data() {
         return {
@@ -74,7 +75,11 @@ export default {
             }
         }
     },
+    computed: {
+        ...mapGetters(['legendTable'])
+    },
     mounted() {
+        window.vm = this
         this.init()
     },
     methods: {
@@ -173,11 +178,18 @@ export default {
          * @param {Number} 楼层信息在floorsArr数组中的位置
          */
         tabFloor(item, index) {
-            this.$store.commit('SETSHOWVIEW', 1)
             this.currentFloorId = this.floorIdArr[index]
             this.handleCookie()
             this.handlePosition(1, index, this.floorIdArr.length)
             this.handleUpDownStatus(index, this.floorIdArr.length)
+            this.viewLengend()
+        },
+        viewLengend() {
+            if (this.legendTable.length > 0) {
+                this.$store.commit('SETSHOWVIEW', 1)
+            } else {
+                this.$store.commit('SETSHOWVIEW', 0)
+            }
         },
         /**
          * @description 楼层位置动画处理

+ 3 - 4
src/components/floorMap/index.vue

@@ -104,6 +104,7 @@ export default {
                         this.fParser.parseData(res)
                         this.fParser.spaceList.forEach(t => {
                             this.scene.addItem(t)
+                            t.nameSize = 16
                             if (t.data.Name && this.bunkObj[t.data.Name]) {
                                 t.name = this.bunkObj[t.data.Name].detailtype
                             } else {
@@ -203,8 +204,6 @@ export default {
                 if (name.slice(name.length - 2, name.length) == '机房') {
                     if (location) {
                         this.$refs.boxRoom.open({ name: name, type: this.type, location: location })
-                    } else {
-                        this.$message('未添加位置类型')
                     }
                 }
                 // 选中电井设置电井关联的商铺高亮
@@ -351,11 +350,11 @@ export default {
                 // })
                 this.topologyParser.imageLegendList.forEach(t => {
                     let id = t.data.GraphElementId
-                    t.selected = (res.indexOf(id) > -1)
+                    t.selected = res.indexOf(id) > -1
                 })
                 this.topologyParser.relationList.forEach(t => {
                     let id = t.data.GraphElementId
-                    t.selected = (res.indexOf(id) > -1)
+                    t.selected = res.indexOf(id) > -1
                 })
             })
         }

+ 6 - 9
src/components/viewLengend.vue

@@ -14,17 +14,13 @@
                 :header-cell-style='{background:"rgba(2,91,170,0.1)",fontFamily:"PingFangSC-Medium,PingFang SC;",color:"rgba(0,0,0,0.85);",fontSize:"12px"}'
             >
                 <el-table-column prop label='说明'>
-                    <template slot-scope='{row}'>
-                        <span v-if='row.Properties && row.Properties.ItemExplain'>{{row.Properties.ItemExplain}}</span>
+                    <template slot-scope='{row}' v-if='row.Properties && row.Properties.ItemExplain'>
+                        <span>{{row.Properties.ItemExplain}}</span>
                     </template>
                 </el-table-column>
                 <el-table-column prop label='图例' width='60' align='center'>
-                    <template slot-scope='{row}'>
-                        <div
-                            class='scpz-img'
-                            v-if='row.Properties && row.Properties.ItemExplain'
-                            :style='`background:${row.Properties.FillColor};border:1px solid ${row.Properties.StrokeColor}`'
-                        ></div>
+                    <template slot-scope='{row}' v-if='row.Properties && row.Properties.ItemExplain'>
+                        <div class='scpz-img' :style='`background:${row.Properties.FillColor};border:1px solid ${row.Properties.StrokeColor}`'></div>
                     </template>
                 </el-table-column>
             </el-table>
@@ -46,7 +42,8 @@
                 <el-table-column prop='Num' label='数量'>
                     <template slot-scope='{row}'>
                         <span v-if='row.Num || row.Num==0'>{{row.Num}}</span>
-                        <span v-else>--</span>
+                        <span v-else-if='row.Num==null'></span>
+                        <span v-else>{{'--'}}</span>
                     </template>
                 </el-table-column>
                 <el-table-column prop='Unit' label='单位' width='70'>

+ 1 - 1
src/lib/items/SFHFQZoneLegendItem.js

@@ -153,7 +153,7 @@ export class SFHFQZoneLegendItem extends SPolygonItem {
     }
     toData() {
         this.data.Pos = { X: this.x, Y: this.y }
-        this.data.Name = this.text
+        this.data.Name = this.name
         this.data.Properties.FillColor = this.fillColor.value
         this.data.Properties.StrokeColor = this.strokeColor.value
         this.data.Properties.LineWidth = this.lineWidth

+ 1 - 1
src/lib/items/SFHFQZoneLegendItem.ts

@@ -175,7 +175,7 @@ export class SFHFQZoneLegendItem extends SPolygonItem {
 
     toData(): any {
         this.data.Pos = { X: this.x, Y: this.y }
-        this.data.Name = this.text
+        this.data.Name = this.name
         this.data.Properties.FillColor = this.fillColor.value
         this.data.Properties.StrokeColor = this.strokeColor.value
         this.data.Properties.LineWidth = this.lineWidth

+ 53 - 53
src/lib/items/SImageLegendItem.ts

@@ -1,8 +1,8 @@
-import { SGraphItem } from "@saga-web/graph/lib";
-import { SIconTextItem } from '@saga-web/big/lib/items/SIconTextItem';
-import { Legend } from '../types/Legend';
-import { ItemOrder } from '@saga-web/big/lib';
-import { SFont, SColor } from '@saga-web/draw/lib';
+import { SGraphItem } from '@saga-web/graph/lib'
+import { SIconTextItem } from '@saga-web/big/lib/items/SIconTextItem'
+import { Legend } from '../types/Legend'
+import { ItemOrder } from '@saga-web/big/lib'
+import { SFont, SColor } from '@saga-web/draw/lib'
 /**
  * 图例节点Item(图标类型)
  *
@@ -10,23 +10,23 @@ import { SFont, SColor } from '@saga-web/draw/lib';
  */
 export class SImageLegendItem extends SIconTextItem {
     /** 图例节点对象数据 */
-    data: Legend;
+    data: Legend
     /** 图例数量 */
-    _num: number = 1;
+    _num: number = 1
     get num(): number {
-        return this._num;
+        return this._num
     }
     set num(v: number) {
         if (v) {
-            this._num = v;
-            this.data.Num = v;
+            this._num = v
+            this.data.Num = v
         } else {
-            this._num = 1;
-            this.data.Num = 1;
+            this._num = 1
+            this.data.Num = 1
         }
-        this.data.Properties.Num = this._num;
-        this.text = `${this.data.Name}${this.data.Num > 1 ? ` × ${this.data.Num}` : ''}`;
-        this.update();
+        this.data.Properties.Num = this._num
+        this.text = `${this.data.Name}${this.data.Num > 1 ? ` × ${this.data.Num}` : ''}`
+        this.update()
     }
 
     /**
@@ -36,77 +36,77 @@ export class SImageLegendItem extends SIconTextItem {
      * @param data      图例节点对象数据
      */
     constructor(parent: SGraphItem | null, data: Legend) {
-        super(parent, data.AnchorList);
-        this.isTransform = false;
-        this.zOrder = ItemOrder.markOrder;
-        this.data = data;
-        this.id = data.ID;
-        this.name = data.Name;
-        this.moveTo(data.Pos.X, data.Pos.Y);
+        super(parent, data.AnchorList)
+        this.isTransform = false
+        this.zOrder = ItemOrder.markOrder
+        this.data = data
+        this.id = data.ID
+        this.name = data.Name
+        this.moveTo(data.Pos.X, data.Pos.Y)
         if (data.Num) {
-            this._num = data.Num;
+            this._num = data.Num
         }
         if (data.Size) {
-            this.width = data.Size.Width;
-            this.height = data.Size.Height;
+            this.width = data.Size.Width
+            this.height = data.Size.Height
         }
         if (data.Num) {
-            this.text = `${data.Name}${data.Num > 1 ? ` × ${data.Num}` : ''}`;
+            this.text = `${data.Name}${data.Num > 1 ? ` × ${data.Num}` : ''}`
         }
         if (data.Properties && data.Properties.Url) {
-            this.img.url = data.Properties.Url;
+            this.img.url = data.Properties.Url
         }
         if (data.Properties.ImgPos) {
-            this.img.moveTo(data.Properties.ImgPos.X, data.Properties.ImgPos.Y);
+            this.img.moveTo(data.Properties.ImgPos.X, data.Properties.ImgPos.Y)
         }
         if (data.Properties.TextPos) {
-            this.textItem.moveTo(data.Properties.TextPos.X, data.Properties.TextPos.Y);
+            this.textItem.moveTo(data.Properties.TextPos.X, data.Properties.TextPos.Y)
         }
         if (data.Properties && data.Properties.sWidth) {
-            this.sWidth = data.Properties.sWidth;
+            this.sWidth = data.Properties.sWidth
         }
         if (data.Properties && data.Properties.sHeight) {
-            this.sHeight = data.Properties.sHeight;
+            this.sHeight = data.Properties.sHeight
         }
         if (data.Properties && data.Properties.font) {
-            this.font = new SFont("sans-serif", data.Properties.font);
+            this.font = new SFont('sans-serif', data.Properties.font)
         }
         if (data.Properties && data.Properties.color) {
-            this.color = new SColor(data.Properties.color);
+            this.color = new SColor(data.Properties.color)
         }
         if (data.Properties && data.Properties.IsActive) {
-            this.isActive = data.Properties.IsActive;
+            this.isActive = data.Properties.IsActive
         }
         if (data.AttachObjectIds && data.AttachObjectIds.length) {
-            this.isActive = true;
+            this.isActive = true
         }
         if (data.Properties && data.Properties.FrameColor) {
-            this.activeColor = new SColor(data.Properties.FrameColor);
+            this.activeColor = new SColor(data.Properties.FrameColor)
         }
     }
 
     toData(): Legend {
-        this.data.Pos = { X: this.x, Y: this.y };
-        this.data.Size = { Width: this.width, Height: this.height };
-        this.data.Name = this.name;
-        this.data.Properties.Url = this.img.url;
-        this.data.Properties.TextPos = { X: this.textItem.x, Y: this.textItem.y };
-        this.data.Properties.ImgPos = { X: this.img.x, Y: this.img.y };
-        this.data.Properties.sWidth = this.sWidth;
-        this.data.Properties.sHeight = this.sHeight;
-        this.data.Properties.font = this.font.size;
-        this.data.Properties.color = this.color.value;
-        this.data.Properties.FrameColor = this.activeColor.value;
-        this.data.Properties.IsActive = this.isActive;
-        this.data.AnchorList = this.anchorList.map(t => {
+        this.data.Pos = { X: this.x, Y: this.y }
+        this.data.Size = { Width: this.width, Height: this.height }
+        this.data.Name = this.name
+        this.data.Properties.Url = this.img.url
+        this.data.Properties.TextPos = { X: this.textItem.x, Y: this.textItem.y }
+        this.data.Properties.ImgPos = { X: this.img.x, Y: this.img.y }
+        this.data.Properties.sWidth = this.sWidth
+        this.data.Properties.sHeight = this.sHeight
+        this.data.Properties.font = this.font.size
+        this.data.Properties.color = this.color.value
+        this.data.Properties.FrameColor = this.activeColor.value
+        this.data.Properties.IsActive = this.isActive
+        this.data.AnchorList = this.anchorList.map((t) => {
             return {
                 ID: t.id,
                 Pos: {
                     X: t.x,
-                    Y: t.y
-                }
+                    Y: t.y,
+                },
             }
         })
-        return this.data;
+        return this.data
     }
-} // Class SImageLegendItem
+} // Class SImageLegendItem

+ 1 - 1
src/lib/items/SSCPZZoneLegendItem.js

@@ -160,7 +160,7 @@ export class SSCPZZoneLegendItem extends SPolygonItem {
     }
     toData() {
         this.data.Pos = { X: this.x, Y: this.y }
-        this.data.Name = this.text
+        this.data.Name = this.name
         this.data.Properties.FillColor = this.fillColor.value
         this.data.Properties.StrokeColor = this.strokeColor.value
         this.data.Properties.LineWidth = this.lineWidth

+ 1 - 1
src/lib/items/SSCPZZoneLegendItem.ts

@@ -183,7 +183,7 @@ export class SSCPZZoneLegendItem extends SPolygonItem {
 
     toData(): any {
         this.data.Pos = { X: this.x, Y: this.y }
-        this.data.Name = this.text
+        this.data.Name = this.name
         this.data.Properties.FillColor = this.fillColor.value
         this.data.Properties.StrokeColor = this.strokeColor.value
         this.data.Properties.LineWidth = this.lineWidth

+ 1 - 0
src/lib/items/TipelineItem.js

@@ -137,6 +137,7 @@ export class TipelineItem extends SPolylineItem {
             }
         })
         if (this.data) {
+            this.data.Name = this.name;
             this.data.PointList = pointList
             this.data.Properties.LineWidth = this.lineWidth
             // this.data.Properties.LineDash = this.LineDash;

+ 1 - 0
src/lib/items/TipelineItem.ts

@@ -146,6 +146,7 @@ export class TipelineItem extends SPolylineItem {
         })
 
         if (this.data) {
+            this.data.Name = this.name;
             this.data.PointList = pointList
             this.data.Properties.LineWidth = this.lineWidth
             // this.data.Properties.LineDash = this.LineDash;

+ 21 - 5
src/main.ts

@@ -29,6 +29,7 @@ import Pui from 'meri-design'
 import 'meri-design/dist/index.css'
 import 'leaflet/dist/leaflet.css'
 
+import {login} from './api/login.js';
 Vue.use(Pui)
 
  
@@ -44,8 +45,23 @@ const username = 'lengqiang'
 //     }
 //     next()
 // })
-new Vue({
-    router,
-    store,
-    render: (h) => h(App),
-}).$mount('#app')
+
+login({}).then( (res ) => {  // 获取用户当前权限
+    if (res.result === 'success') {
+        store.commit('STOREACCESSLEVEL', res)
+        new Vue({
+            router,
+            store,
+            render: (h) => h(App),
+            mounted() {
+                // let level = store.state.accessLevel
+                let level = 0
+                if (level === 0) {
+                    router.push({path:'./home/homepage'})
+                } else {
+                    router.push({path:'./group'})
+                }
+            },
+        }).$mount('#app')
+    }
+})

+ 5 - 9
src/router/index.js

@@ -3,13 +3,12 @@ import store from '@/store'
 import VueRouter from 'vue-router'
 import { query } from '@/utils/query'
 
-let level = 0
 Vue.use(VueRouter)
 const routes = [
     // 登陆页面
     {
         path: '/',
-        redirect: '/home/overview',        // 只有区域,及区域以上用户才能进入总部首页这一套
+        redirect: '/home/overview', // 只有区域,及区域以上用户才能进入总部首页这一套
     },
     {
         path: '/404',
@@ -25,7 +24,8 @@ const routes = [
         name: 'home',
         component: () => import('../views/index'),
         redirect: '/home/homepage',
-        children: [{
+        children: [
+            {
                 path: 'homepage',
                 component: () => import('../views/homepage'),
             },
@@ -76,18 +76,15 @@ const router = new VueRouter({
 const ignore = ['/404', '/legendLibrary', '/legendRules']
 router.beforeEach(async (to, from, next) => {
     if (!ignore.includes(to.path)) {
+        console.log('vuex', store.state.accessLevel)
         const token = query().token
         const ssoToken = store.getters['ssoToken']
         if (ssoToken) {
-            // if (to.path === '/group' ||  to.path === '/home/homepage') {
-            //     next()
-            //     return
-            // } 
             store.commit('SETSSOTOKEN', ssoToken)
             await store.dispatch('getUserInfo', router)
             await store.dispatch('getFloors')
             await store.dispatch('getBrand')
-            let level =store.state.accessLevel
+            let level = store.state.accessLevel
             console.log(level)
             // if (level ===0) {
             //     next('/group')
@@ -111,7 +108,6 @@ router.beforeEach(async (to, from, next) => {
                 signal = new Date().getTime(),
                 version = '1.0.0'
             window.location.href = `${ssoServer}/login?systemcode=${systemcode}&signal=${signal}&version=${version}`
-            
         }
     } else {
         next()

+ 79 - 46
src/utils/ganttChart/GanttChart.js

@@ -12,7 +12,7 @@ export function GanttChart(options) {
   this.viewWidth = options['viewWidth'] || 800;
   // 物理画布宽度 800
   this.cWidth = options['cWidth'] || 2400;
-  this.cHeight = options['cHeight'] || 600;
+  this.cHeight = options['cHeight'] || 1600;
   // 画布偏移位置
   this.startPos = 0;
   // 是否拖动中
@@ -30,7 +30,7 @@ export function GanttChart(options) {
   // 每天的间隔宽度
   this.dayStep = 40;
   // 分组标题高度
-  this.groupTitleHeight = 38;
+  this.groupTitleHeight = 18;
   // 任务矩形高度
   this.taskRowHeight = 16;
   // 每行任务的纵向间距
@@ -38,7 +38,7 @@ export function GanttChart(options) {
   // 总天数
   this.daysCount = options['daysCount'] || 60;
   // 任务图距离顶部高度
-  this.graphTopDis = 40
+  this.graphTopDis = 60
   
   // 每像素代表的小时数
   this.timePerPix = this.cWidth/this.daysCount/24/3600
@@ -53,6 +53,8 @@ export function GanttChart(options) {
   this.lastDragEv = null;
   // 当日刻度线
   this.todayTimeLineEl = null;
+  // 点击回调事件
+  this.callback = options.callback || null;
 }
 
 
@@ -86,6 +88,7 @@ GanttChart.prototype.processData = function() {
     let currentTopTask = this.tasks[i];
     let lastTopTask = null;
     currentTopTask.renderOptions = {};
+    // 设置StartY
     if (i != 0) {
       // 非0个,要补上前面的数据
       lastTopTask = this.tasks[i - 1];
@@ -94,9 +97,12 @@ GanttChart.prototype.processData = function() {
       // 第一个
       currentTopTask.renderOptions.startY = this.graphTopDis;
     }
-    if (currentTopTask.open) {
+    // 设置EndY
+    // 当有数据 且 打开时,
+    //     EndY = StartY + 标题上间距 + 标题 高度 + 任务个数 * (任务高度)
+    if (currentTopTask.dataList.length >0 && currentTopTask.open) {
       currentTopTask.renderOptions.endY =
-        currentTopTask.renderOptions.startY + this.rowSpanDis + this.groupTitleHeight + currentTopTask.dataList.length * this.taskRowHeight;
+        currentTopTask.renderOptions.startY  + this.groupTitleHeight + currentTopTask.dataList.length * 38;
     } else {
       currentTopTask.renderOptions.endY = currentTopTask.renderOptions.startY + this.groupTitleHeight;
     }
@@ -160,7 +166,6 @@ GanttChart.prototype.doDrag = function(sEvent, eEvent) {
   if (sEvent == null) {
     sEvent = this.startEvent;
   }
-  
   let sPos = sEvent.clientX;
   let cPos = eEvent.clientX;
   // 滚动距离
@@ -236,7 +241,7 @@ GanttChart.prototype.initCanvas = function() {
     width: this.cWidth,
     height: this.cHeight,
   });
-  this._canvas = document.getElementsByTagName('canvas')[0];
+  this._canvas = document.querySelector('#ganttContainer>canvas');
 }
 
 /**
@@ -264,6 +269,7 @@ GanttChart.prototype.drawTimeZone = function() {
   })
   // 绘制第二级
   let nowAtStr = moment().format('YYYY-MM-DD')
+  this.timeZoneLineEls = []
   for (let i = 0; i < this.daysCount; i++) {
     let tempAt = startSecond.add(1, 'days')
     let timeText = tempAt.format('DD');
@@ -296,6 +302,18 @@ GanttChart.prototype.drawTimeZone = function() {
           radius: [2, 4],
         },
       })
+
+      this.todayTimeLineEl = this.gCanvas.addShape('rect',{
+        attrs: {
+          x: this.todayTimeLineOffsetPos,
+          y: 40,
+          width: 4,
+          height: this.cHeight,
+          fill: '#CDE9FF',
+          radius: [2, 4],
+        }
+      })
+      // this.todayTimeLineEl.setZIndex(3)      
     }
     timeGroup.addShape('text', {
       attrs: {
@@ -307,17 +325,6 @@ GanttChart.prototype.drawTimeZone = function() {
         fill: '#8D9399',
       },
     });
-
-    timeGroup.addShape('rect', {
-      attrs: {
-        x: this.dayStep * i-10,
-        y: 20,
-        width: 1,
-        height: this.cHeight,
-        fill: '#deebeb',
-        radius: [2, 4],
-      },
-    });
   }
 }
 
@@ -376,6 +383,45 @@ GanttChart.prototype.isInView = function(task) {
 }
 
 /**
+ * 绘制完成之后的回调,用于某些工具缺陷的hack写法
+ */
+GanttChart.prototype.postDrawTasksCallBack = function(){
+  // 画当前线条 TODO,放前面不行
+  if(true){
+    let todayAt = new Date()
+    if(this.startAt < todayAt && this.endAt > todayAt){
+      this.todayTimeLineEl = this.gCanvas.addShape('rect',{
+        attrs: {
+          x: this.todayTimeLineOffsetPos,
+          y: 40,
+          width: 4,
+          height: this.cHeight,
+          fill: '#CDE9FF',
+          radius: [2, 4],
+        }
+      })
+      this.todayTimeLineEl.setZIndex(3)
+    }
+  }
+
+  if(true){
+    for (let i = 0; i < this.daysCount; i++) {
+      let lineEl = this.timeGroupEl.addShape('rect', {
+        attrs: {
+          x: this.dayStep * i-10,
+          y: 20,
+          width: 1,
+          height: this.cHeight,
+          fill: '#deebeb',
+          radius: [2, 4],
+        },
+      });
+      lineEl.setZIndex(200)    
+    }
+  }
+}
+
+/**
  * 分组绘制任务块
  *
  */
@@ -396,16 +442,17 @@ GanttChart.prototype.drawTasks = function() {
       topTask.gGroup = taskGroup;
 
       // 组名背景矩形
-      // let TopGroupRectEl = taskGroup.addShape('rect', {
-      //   attrs: {
-      //     x: 0,
-      //     y: topTask.renderOptions.startY,
-      //     width: this.cWidth,
-      //     height: this.taskRowHeight,
-      //     fill: '#a6ed53',
-      //     radius: [2, 4],
-      //   },
-      // });
+      let TopGroupRectEl = taskGroup.addShape('rect', {
+        attrs: {
+          x: 0,
+          y: topTask.renderOptions.startY,
+          width: this.cWidth,
+          height: this.taskRowHeight,
+          fill: '#F5F6F7',
+          radius: [2, 4],
+        },
+      });
+      TopGroupRectEl.setZIndex(-1)
       // 第二层循环,用于 区分具体多少任务,例如,维保-商管1/商管2...
       topTask.dataList.forEach((taskP, index) => {
         let taskPGroup = taskGroup.addGroup()
@@ -415,7 +462,7 @@ GanttChart.prototype.drawTasks = function() {
           let tempTaskContainerEl = taskPGroup.addShape('rect', {
             attrs: {
               x: 0,
-              y: topTask.renderOptions.startY + ((index+1)* (this.taskRowHeight + this.rowSpanDis))-5,
+              y: topTask.renderOptions.startY + ((index+2)* (this.taskRowHeight + this.rowSpanDis))-5,
               width: this.cWidth,
               height: this.taskRowHeight+10,
               fill: '#fff',
@@ -453,7 +500,7 @@ GanttChart.prototype.drawTasks = function() {
             let rectEl = taskPGroup.addShape('rect', {
               attrs: {
                 x: pos.x,
-                y: topTask.renderOptions.startY + (index* (this.taskRowHeight + this.rowSpanDis)),
+                y: topTask.renderOptions.startY + ((index + 1)* (this.taskRowHeight + this.rowSpanDis)),
                 width: pos.width,
                 height: this.taskRowHeight,
                 fill: this.statusColor(_taskItem),
@@ -461,7 +508,7 @@ GanttChart.prototype.drawTasks = function() {
                 radius: [2, 4],
               },
             });
-            rectEl.setZIndex(5)
+            rectEl.setZIndex(50)
             rectEl._pdata = _taskItem;
             _taskItem._rectEl = rectEl
             rectEl.on('mouseover', (ev) => {
@@ -486,21 +533,7 @@ GanttChart.prototype.drawTasks = function() {
     }
   });
 
-  // 画当前线条 TODO,放前面不行
-  let todayAt = new Date()
-  if(this.startAt < todayAt && this.endAt > todayAt){
-    this.todayTimeLineEl = this.gCanvas.addShape('rect',{
-      attrs: {
-        x: this.todayTimeLineOffsetPos,
-        y: 40,
-        width: 3,
-        height: this.cHeight,
-        fill: '#0091FF',
-        radius: [2, 4],
-      }
-    })
-    this.todayTimeLineEl.setZIndex(50)
-  }
+  this.postDrawTasksCallBack()
 }
 
 /**

+ 51 - 10
src/views/analysis/CoreDeviceReport.vue

@@ -99,15 +99,27 @@
           </el-pagination>
         </div>
       </el-dialog>
-      <el-dialog :title="detailTitle" :visible.sync="showDetail" width="1260px">
-        <div class="detail-container">
-          <div class="pictures-menu">
-            <div v-for="(item) in pictureList" :key="'id_' + item.id" class="item">
-              <img :src="item.url" alt="">
+      <div class="img-detail-container">
+        <el-dialog :title="detailTitle" :visible.sync="showDetail" width="1260px">
+          <div class="detail-container">
+            <div class="pictures-menu">
+              <!-- <div v-for="(item) in pictureList" :key="'id_' + item.id" class="item"> -->
+              <div class="item">
+                <!-- <img :src="item.url" alt=""> -->
+                <img src="../../assets/images/login_back.png" alt="">
+                <div class="name">图层名称1.jpg</div>
+              </div>
+              <div class="item">
+                <img src="../../assets/images/login_back.png" alt="">
+                <div class="name">图层名称1.jpg</div>
+              </div>
+            </div>
+            <div class="cur-img-container">
+              <img src="../../assets/images/login_back.png" alt="">
             </div>
           </div>
-        </div>
-      </el-dialog>
+        </el-dialog>
+      </div>
     </div>
   </div>
 </template>
@@ -371,7 +383,7 @@ export default {
     getDetailData(val) {
       let param = {
         file_type: 0, // val.file_type
-        file_type_id: 1144, // val.file_type_id
+        file_type_id: 2914, // val.file_type_id
         type: this.detailTitle === '图片预览'? 0 : 1
       }
 
@@ -386,7 +398,7 @@ export default {
               url: item.urlname
             })
           })
-          this.pictureList = newData;
+          // this.pictureList = newData;
         }
       })
     }
@@ -500,15 +512,44 @@ export default {
     }
     .detail-container{
       display: flex;
-      min-height: 600px
+      height: 600px
     }
     .pictures-menu{
       margin-right: 21px;
+      padding-top: 16px;
+      padding-bottom: 16px;
       width: 180px;
+      height: 100%;
+      overflow: auto;
       .item{
         >img{
           width: 180px;
+          border: 4px solid rgba(245,246,247,1);
+          border-radius: 4px;
+        }
+        .name{
+          font-size: 12px;
+          color: #1F2429;
+          line-height: 16px;
+          margin-top: 12px;
+          text-align: center;
         }
+        &:not(:last-of-type){
+          margin-bottom: 20px;
+        }
+      }
+    }
+    .cur-img-container{
+      padding: 20px;
+      flex: 1;
+      height: 100%;
+      background: #F5F6F7;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      >img{
+        max-width: 730px;
+        max-height: 530px;
       }
     }
   }

+ 264 - 152
src/views/analysis/GanttChart.vue

@@ -2,14 +2,14 @@
 <template>
   <div class="gantt-chart">
     <div class="condition-legend-bar">
-      <Select 
+      <Select
         class="system-select"
         width="217"
-        :isReadOnly="true" 
-        tipPlace="top" 
+        :isReadOnly="true"
+        tipPlace="top"
         caption="系统名称:"
-        v-model="systemId" 
-        :selectdata="systemList" 
+        v-model="systemId"
+        :selectdata="systemList"
         :placeholder="'请选择'"
         @change="getGanttChartData"
       />
@@ -18,7 +18,7 @@
           <div :style="{'background': item.backgroundColor, 'border-color': item.borderColor}"></div>
           <div>{{item.text}}</div>
         </div>
-        <div >
+        <div>
           <el-radio-group v-model="timeType">
             <el-radio style="line-height: 32px;margin-right: 16px;" label="month">月视图</el-radio>
             <el-radio style="line-height: 32px;" label="day">日视图</el-radio>
@@ -40,7 +40,7 @@
         <div class="dialog-container">
           <div class="row task-status">
             <div>
-              <Task class="icon"/>
+              <Task class="icon" />
               <div class="title">任务状态</div>
             </div>
             <div>进行中</div>
@@ -67,11 +67,11 @@
             <div>
               <div>
                 <div class="num">12张</div>
-                <div class="more">查看更多</div>
+                <div class="more" @click="() => showImgDetail = true">查看更多</div>
               </div>
               <div class="pictrue-container">
                 <div v-for="(item) in pictures" :key="'id_' + item.id">
-                  <img :src="item.imgSrc" alt="" />
+                  <img :src="item.imgSrc" alt />
                   <div class="info">{{item.title}}</div>
                 </div>
               </div>
@@ -88,7 +88,7 @@
               </div>
               <div class="pictrue-container">
                 <div v-for="(item) in reports" :key="'id_' + item.id">
-                  <img :src="item.imgSrc" alt="" />
+                  <img :src="item.imgSrc" alt />
                   <div class="info">{{item.title}}</div>
                 </div>
               </div>
@@ -99,62 +99,121 @@
               <Menu class="icon" />
               <div class="title">检测内容</div>
             </div>
-            <el-table :data="tableData">
-              <el-table-column property="time" label="设备简称"></el-table-column>
-              <el-table-column property="evenType" label="设备编号"></el-table-column>
-              <el-table-column property="objid" label="设备数"></el-table-column>
-              <el-table-column property="content" label="空间位置"></el-table-column>
+            <el-table :data="tableData" max-height="300">
+              <el-table-column property="sbjc" label="设备简称"></el-table-column>
+              <el-table-column property="sbjbm" label="设备编号"></el-table-column>
+              <el-table-column property="cnt" label="设备数"></el-table-column>
+              <el-table-column property="wzjc" width="300" label="空间位置"></el-table-column>
             </el-table>
           </div>
         </div>
       </el-dialog>
+      <div class="img-detail-container">
+        <el-dialog :title="'图片预览'" :visible.sync="showImgDetail" width="1260px">
+          <div class="detail-container">
+            <div class="pictures-menu">
+              <!-- <div v-for="(item) in pictureList" :key="'id_' + item.id" class="item"> -->
+              <div class="item">
+                <!-- <img :src="item.url" alt=""> -->
+                <img src="../../assets/images/login_back.png" alt />
+                <div class="name">图层名称1.jpg</div>
+              </div>
+              <div class="item">
+                <img src="../../assets/images/login_back.png" alt />
+                <div class="name">图层名称1.jpg</div>
+              </div>
+            </div>
+            <div class="cur-img-container">
+              <img src="../../assets/images/login_back.png" alt />
+            </div>
+          </div>
+        </el-dialog>
+      </div>
     </div>
   </div>
 </template>
 
 <script>
-import { queryGanttChart, queryGanttDetail } from '../../api/ganttChart';
-import { querySystemList, queryDetailData } from '../../api/coreDeviceReport';
-import { Tree } from 'meri-design';
-import _ from 'lodash';
-import moment from 'moment';
+import { queryGanttChart, queryGanttDetail } from "../../api/ganttChart";
+import { querySystemList, queryDetailData } from "../../api/coreDeviceReport";
+import { Tree } from "meri-design";
+import _ from "lodash";
+import moment from "moment";
 // import '../../utils/ganttChart/g.js';
-import { GanttChart } from '../../utils/ganttChart/GanttChart.js';
-import { parse } from 'path';
-import Task from '../../assets/svg/task.svg';
-import PlanTime from '../../assets/svg/plan_time.svg';
-import RealTime from '../../assets/svg/real_time.svg';
-import Picture from '../../assets/svg/picture.svg';
-import Report from '../../assets/svg/report.svg';
-import Menu from '../../assets/svg/menu.svg';
+import { GanttChart } from "../../utils/ganttChart/GanttChart.js";
+import { parse } from "path";
+import Task from "../../assets/svg/task.svg";
+import PlanTime from "../../assets/svg/plan_time.svg";
+import RealTime from "../../assets/svg/real_time.svg";
+import Picture from "../../assets/svg/picture.svg";
+import Report from "../../assets/svg/report.svg";
+import Menu from "../../assets/svg/menu.svg";
 export default {
-  data () {
+  data() {
     return {
       systemList: [], // 系统列表
-      systemId: '', // 系统名称
+      systemId: "", // 系统名称
       legends: [
-        {id: 1, text: '按时完成', backgroundColor: '#E7E9EA', borderColor: '#C3C7CB'},
-        {id: 2, text: '未开始/进行中', backgroundColor: 'rgba(91, 143, 249, 0.2)', borderColor: '#5B8FF9'},
-        {id: 3, text: '逾期完成', backgroundColor: '#FBCE99', borderColor: '#F58300'},
-        {id: 4, text: '逾期未完成', backgroundColor: '#FBB8B5', borderColor: '#F54E45'},
+        {
+          id: 1,
+          text: "按时完成",
+          backgroundColor: "#E7E9EA",
+          borderColor: "#C3C7CB"
+        },
+        {
+          id: 2,
+          text: "未开始/进行中",
+          backgroundColor: "rgba(91, 143, 249, 0.2)",
+          borderColor: "#5B8FF9"
+        },
+        {
+          id: 3,
+          text: "逾期完成",
+          backgroundColor: "#FBCE99",
+          borderColor: "#F58300"
+        },
+        {
+          id: 4,
+          text: "逾期未完成",
+          backgroundColor: "#FBB8B5",
+          borderColor: "#F54E45"
+        }
       ], // 图例
-      timeType: 'month', // 甘特图时间类型
+      timeType: "month", // 甘特图时间类型
       treeData: [], // 树结构数据
-      
+
       // 弹窗相关
       showDetail: false, // 弹框显示状态
-      detailTitle: '', // 弹窗标题
+      detailTitle: "", // 弹窗标题
       pictures: [
-        {id: 1, imgSrc: require('../../assets/imgs/analysis/picture.png'), title: '2019年5月高压用具检测报告.jpg'},
-        {id: 2, imgSrc: require('../../assets/imgs/analysis/picture.png'), title: '2019年5月高压用具检测报告.jpg'},
+        {
+          id: 1,
+          imgSrc: require("../../assets/imgs/analysis/picture.png"),
+          title: "2019年5月高压用具检测报告.jpg"
+        },
+        {
+          id: 2,
+          imgSrc: require("../../assets/imgs/analysis/picture.png"),
+          title: "2019年5月高压用具检测报告.jpg"
+        }
       ], // 照片
       reports: [
-        {id: 1, imgSrc: require('../../assets/imgs/analysis/report_pdf.png'), title: '2019年5月高压用具检测报告.pdf'},
-        {id: 2, imgSrc: require('../../assets/imgs/analysis/report_word.png'), title: '2019年5月高压用具检测报告.docx'},
+        {
+          id: 1,
+          imgSrc: require("../../assets/imgs/analysis/report_pdf.png"),
+          title: "2019年5月高压用具检测报告.pdf"
+        },
+        {
+          id: 2,
+          imgSrc: require("../../assets/imgs/analysis/report_word.png"),
+          title: "2019年5月高压用具检测报告.docx"
+        }
       ], // 报告
       ganttDetail: {}, // 甘特图明细
       tableData: [], // 表数据
-    }
+
+      showImgDetail: false // 查看更多图片弹框显示状态
+    };
   },
 
   components: {
@@ -177,16 +236,16 @@ export default {
      * 获取系统列表数据
      */
     getSystemList() {
-      querySystemList().then((res) => {
-        if (res.result === 'success') {
+      querySystemList().then(res => {
+        if (res.result === "success") {
           let data = res.data;
           let newData = [];
-          _.forEach(data, (item) => {
+          _.forEach(data, item => {
             newData.push({
               id: item.code,
               name: item.name
-            })
-          })
+            });
+          });
           this.systemList = newData;
           const { query } = this.$route;
           if (!_.isEmpty(query) && query.smsxt) {
@@ -196,7 +255,7 @@ export default {
           }
           this.getGanttChartData();
         }
-      })
+      });
     },
     /**
      * 处理请求数据的时间
@@ -204,9 +263,9 @@ export default {
     disQueryTime() {
       let startTime, endTime;
       let curTime = new Date(),
-          curYear = curTime.getFullYear(),
-          curMonth = curTime.getMonth() + 1;
-      if (this.timeType === 'month') {
+        curYear = curTime.getFullYear(),
+        curMonth = curTime.getMonth() + 1;
+      if (this.timeType === "month") {
         startTime = `${curYear}0101000000`;
         endTime = `${curYear + 1}0101000000`;
       } else {
@@ -228,82 +287,87 @@ export default {
         smsxt: this.systemId,
         plazaId: 1000423,
         startDate: 20000101000000, // time[0]
-        endDate: 20200708000000, // time[1]
-      }
-      queryGanttChart('/data/base/queryGanttChart', param).then((res) => {
+        endDate: 20200708000000 // time[1]
+      };
+      queryGanttChart("/data/base/queryGanttChart", param).then(res => {
         const { dsfList, wbList, zwList, result } = res;
-          console.log('res', res)
-        if (result === 'success') {
+        console.log("res", res);
+        if (result === "success") {
           let newData = [],
-              data = [wbList, zwList, dsfList],
-              name = ['维保', '专维', '第三方检测'];
+            data = [wbList, zwList, dsfList],
+            name = ["维保", "专维", "第三方检测"];
           _.forEach(data, (item, index) => {
             newData.push({
+              index: index,
               id: index + 1,
               name: name[index],
               open: true,
               // children: name[index] === '专维'?[] : this.disGanttData(dsfList)
               children: this.disGanttData(data[index])
-            })
-          })
-          
+            });
+          });
           this.treeData = newData;
-          
-          let taskData = _.map(_.cloneDeep(newData), (item) => {
+
+          let taskData = _.map(_.cloneDeep(newData), item => {
             return {
               id: item.id,
               type: item.name,
               open: item.open,
-              dataList: _.map(item.children, (_item) => {
+              dataList: _.map(item.children, _item => {
                 return {
                   id: _item.id,
                   title: _item.name,
                   tasks: _item.originData
-                }
+                };
               })
-            }
-          })
-          console.log('taskData', taskData)
+            };
+          });
+          console.log("taskData", taskData);
+          if (window.gc) {
+            gc.gCanvas.destroy();
+          }
           let width = this.$refs.chartContainer.offsetWidth;
           window.gc = new GanttChart({
-            chartParentContainer: 'chartContainer',
-            chartContainer: 'ganttContainer',
+            chartParentContainer: "chartContainer",
+            chartContainer: "ganttContainer",
             viewWidth: width,
-            cWidth: 3*width,
+            cWidth: 3 * width,
             tasks: taskData,
-            daysCount: parseInt(3*width/40),
+            daysCount: parseInt((3 * width) / 40),
             callback: this.showDialog
           });
-          gc.main()
+          gc.main();
         }
-      })
+      });
     },
     /**
      * 处理甘特图数据
      */
     disGanttData(arr) {
       let data = [];
-      _.forEach(arr, (item) => {
+      _.forEach(arr, item => {
         data.push({
           id: item.id,
           name: item.name,
-          checked: 'uncheck',
-          originData: _.map(item.data, (_item) => {
-            _item.startDate = moment.unix((new Date().getTime() - 1000*60*60*24*7)/1000).format('YYYY-MM-DD HH:mm:ss');
-            _item.endDate = moment.unix(new Date().getTime()/1000).format('YYYY-MM-DD HH:mm:ss');
+          checked: "uncheck",
+          originData: _.map(item.data, _item => {
+            // _item.startDate = moment.unix((new Date().getTime() - 1000*60*60*24*7)/1000).format('YYYY-MM-DD HH:mm:ss');
+            _item.startDate = moment.unix(_item.startDate / 1000).format("YYYY-MM-DD HH:mm:ss");
+            // _item.endDate = moment.unix(new Date().getTime()/1000).format('YYYY-MM-DD HH:mm:ss');
+            _item.endDate = moment.unix(_item.endDate / 1000).format("YYYY-MM-DD HH:mm:ss");
             _item.description = _item.parentname;
-            return _item
+            return _item;
           })
-        })
-      })
-      return data
+        });
+      });
+      return data;
     },
     /**
      * 展开收起节点
      */
-    toggleNode(status) {
-      console.log('status', status)
-
+    toggleNode(status, item) {
+      console.log("status", status, item);
+      window.gc.toggle(item.index);
     },
     /**
      * 显示弹窗
@@ -323,28 +387,35 @@ export default {
         plazaId: 1000423,
         type: 2,
         id: 1078467
-      }
-      queryGanttDetail('/data/base/queryGanttChartDetails', param).then((res) => {
+      };
+      queryGanttDetail("/data/base/queryGanttChartDetails", param).then(res => {
         const { result, data } = res;
-        if (result === 'success') {
-          const { status, planStartDate, planEndDate, realStartDate, realEndDate } = data;
+        if (result === "success") {
+          const {
+            status,
+            planStartDate,
+            planEndDate,
+            realStartDate,
+            realEndDate
+          } = data;
           let newData = {
             status,
-            color: '',
+            color: "",
             planTime: this.dealDetailTime(planStartDate, planEndDate),
             realTime: this.dealDetailTime(realStartDate, realEndDate)
-          }
+          };
           this.ganttDetail = newData;
+          this.tableData = data.assetList;
         }
-      })
+      });
     },
     /**
      * 处理时间
      */
     dealDetailTime(startTime, endTime) {
-      let start = moment.unix(startTime / 1000).format('YYYY.MM.DD HH:mm:ss'),
-          end = moment.unix(endTime / 1000).format('YYYY.MM.DD HH:mm:ss');
-      return `${start}-${end}`
+      let start = moment.unix(startTime / 1000).format("YYYY.MM.DD HH:mm:ss"),
+        end = moment.unix(endTime / 1000).format("YYYY.MM.DD HH:mm:ss");
+      return `${start}-${end}`;
     },
     /**
      * 获取甘特图的图片/报告详情
@@ -354,18 +425,17 @@ export default {
         file_type: 1,
         file_type_id: 1985,
         type: type
-      }
-      queryDetailData('/data/base/queryFileDetails', param).then((res) => {
-        console.log('photo', res)
-
-      })
+      };
+      queryDetailData("/data/base/queryFileDetails", param).then(res => {
+        console.log("photo", res);
+      });
     }
   }
-}
+};
 </script>
 
 <style lang='less' scoped>
-.gantt-chart{
+.gantt-chart {
   padding-left: 16px;
   padding-right: 16px;
   padding-top: 12px;
@@ -373,23 +443,23 @@ export default {
   width: 100%;
   height: 100%;
   background: #fff;
-  .condition-legend-bar{
+  .condition-legend-bar {
     margin-bottom: 12px;
     display: flex;
     justify-content: space-between;
   }
-  .legend-container{
+  .legend-container {
     display: flex;
-    .item-legend{
+    .item-legend {
       padding-left: 18px;
       position: relative;
       font-size: 14px;
-      color: #646C73;
+      color: #646c73;
       line-height: 32px;
-      &:not(:nth-of-type(4)){
+      &:not(:nth-of-type(4)) {
         margin-right: 20px;
       }
-      >div:first-child{
+      > div:first-child {
         position: absolute;
         left: 0;
         top: calc(50% - 6px);
@@ -397,131 +467,173 @@ export default {
         height: 12px;
         border: 1px solid;
       }
-      &:nth-of-type(4){
+      &:nth-of-type(4) {
         margin-right: 32px;
       }
     }
   }
-  .main-gantt-container{
+  .main-gantt-container {
     width: 100%;
     height: calc(100% - 44px);
-    background: #F2F5F7;
-    border:1px solid rgba(239,240,241,1);
-    border-radius:4px;
+    background: #f2f5f7;
+    border: 1px solid rgba(239, 240, 241, 1);
+    border-radius: 4px;
     display: flex;
-    .task-title{
+    .task-title {
       width: 404px;
       height: 100%;
-      border-right: 1px solid #EFF0F1;
-      .title{
+      border-right: 1px solid #eff0f1;
+      .title {
         padding-left: 32px;
         padding-top: 15px;
         padding-bottom: 15px;
         font-size: 14px;
-        color: #646C73;
+        color: #646c73;
         line-height: 19px;
-        border-bottom: 1px solid #EFF0F1;
+        border-bottom: 1px solid #eff0f1;
       }
-      >div:nth-of-type(2){
+      > div:nth-of-type(2) {
         max-height: calc(100% - 50px);
         overflow: auto;
       }
     }
-    .chart-container{
+    .chart-container {
       flex: 1;
       overflow: hidden;
       background: #fff;
     }
   }
-  .dialog-container{
+  .dialog-container {
     max-height: 580px;
-    overflow: auto ;
-    .row{
+    overflow: auto;
+    .row {
       display: flex;
-      >div:first-child{
+      > div:first-child {
         margin-right: 24px;
         display: flex;
         align-items: center;
       }
-      &:not(:last-of-type){
+      &:not(:last-of-type) {
         margin-bottom: 14px;
       }
-      .info{
+      .info {
         font-size: 14px;
-        color: #1F2429;
+        color: #1f2429;
         line-height: 22px;
       }
     }
-    .icon{
+    .icon {
       margin-right: 6px;
       width: 16px;
     }
-    .title{
+    .title {
       width: 84px;
       font-size: 14px;
-      color: #646C73;
+      color: #646c73;
       line-height: 22px;
       font-weight: 400;
     }
-    .task-status>div:nth-of-type(2){
+    .task-status > div:nth-of-type(2) {
       width: 58px;
       height: 24px;
-      background: rgba(91,143,249,0.2);
+      background: rgba(91, 143, 249, 0.2);
       border-radius: 2px;
-      color: #5B8FF9;
+      color: #5b8ff9;
       line-height: 24px;
       text-align: center;
     }
-    .picture{
-      margin-bottom: 19px!important;
-      >div:first-child{
+    .picture {
+      margin-bottom: 19px !important;
+      > div:first-child {
         align-items: baseline;
       }
-      >div:nth-of-type(2){
+      > div:nth-of-type(2) {
         flex: 1;
       }
-      >div:nth-of-type(2)>div:first-child{
+      > div:nth-of-type(2) > div:first-child {
         margin-bottom: 12px;
         display: flex;
       }
       .num,
-      .more{
+      .more {
         font-size: 14px;
         line-height: 22px;
         font-weight: 400;
       }
-      .num{
+      .num {
         margin-right: 22px;
-        color: #1F2429;
+        color: #1f2429;
       }
-      .more{
-        color: #025BAA;
+      .more {
+        color: #025baa;
         cursor: pointer;
       }
     }
-    .pictrue-container{
-      >div{
+    .pictrue-container {
+      > div {
         padding: 10px 16px;
         width: 100%;
-        border-radius:4px;
-        border:1px solid rgba(233,233,233,1);
+        border-radius: 4px;
+        border: 1px solid rgba(233, 233, 233, 1);
         display: flex;
         align-items: center;
-        >img{
+        > img {
           width: 24px;
           margin-right: 15px;
         }
       }
-      >div:not(:last-child){
+      > div:not(:last-child) {
         margin-bottom: 8px;
       }
     }
-    .test-content{
+    .test-content {
       display: block;
-      >div:first-child{
+      > div:first-child {
         margin-bottom: 13px;
       }
     }
   }
+  .detail-container {
+    display: flex;
+    height: 600px;
+  }
+  .pictures-menu {
+    margin-right: 21px;
+    padding-top: 16px;
+    padding-bottom: 16px;
+    width: 180px;
+    height: 100%;
+    overflow: auto;
+    .item {
+      > img {
+        width: 180px;
+        border: 4px solid rgba(245, 246, 247, 1);
+        border-radius: 4px;
+      }
+      .name {
+        font-size: 12px;
+        color: #1f2429;
+        line-height: 16px;
+        margin-top: 12px;
+        text-align: center;
+      }
+      &:not(:last-of-type) {
+        margin-bottom: 20px;
+      }
+    }
+  }
+  .cur-img-container {
+    padding: 20px;
+    flex: 1;
+    height: 100%;
+    background: #f5f6f7;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    > img {
+      max-width: 730px;
+      max-height: 530px;
+    }
+  }
 }
 </style>

+ 8 - 6
src/views/equipment/eqDialog.vue

@@ -5,8 +5,10 @@
             <!-- 除了清单和原理页面,别的都有记录事项detailDialog页面 -->
             <div slot='title' class='header-title' v-if='Object.keys(dialogInfo).length>0'>
                 <span class='title-name'>{{systemName}}-{{dialogInfo.label}}</span>
+                <!-- 2020-7-12 查看图纸时 隐藏图标(查看入口) -->
+                <!-- v-if='dialogInfo.id.slice(2,4)!="QD" && dialogInfo.id.slice(2,4)!="YL" && dialogInfo.id.slice(0,4)!="GJSP"' -->
                 <img
-                    v-if='dialogInfo.id.slice(2,4)!="QD" && dialogInfo.id.slice(2,4)!="YL" && dialogInfo.id.slice(0,4)!="GJSP"'
+                    v-if='dialogInfo.id.slice(2,4)!="QD" && dialogInfo.id.slice(2,4)!="YL" && dialogInfo.id.slice(0,4)!="GJSP" && dialogInfo.label !== "查看图纸"'
                     src='../../assets/imgs/zy1.png'
                     @click='visibalBox'
                     style='margin-top:-4px;'
@@ -14,10 +16,10 @@
                 />
             </div>
             <!-- 没有tab的页面 -->
-            <div v-if='Object.keys(dialogInfo).length>0 && dialogInfo.children.length==0' style='margin:16px 0 0 24px;height:90%'>
+            <div v-if='Object.keys(dialogInfo).length>0 && dialogInfo.children.length==0' style='margin:16px 0 0 24px;height:100%'>
                 <!-- 原理图 -->
-                <div v-if='dialogInfo.id.slice(2,4)=="YL"' style='width:90%;overflow:hidden;height:100%'>
-                    <rotation :rotationImg='rotationImg'></rotation>
+                <div v-if='dialogInfo.id.slice(2,4)=="YL"' style='width:100%;overflow:auto;height:100%;margin:0 auto'>
+                    <rotation type='3' :rotationImg='rotationImg'></rotation>
                 </div>
                 <!-- 土建系统主要材料清单 -->
                 <tj-table v-else-if='dialogInfo.id.slice(0,4)=="TJQD"' :param='param'></tj-table>
@@ -62,8 +64,8 @@
                                     v-if='value.id.slice(2,4)=="YL" && eve.count>0 && value.param.type_code.slice(0,3)!="FBT"'
                                 >
                                     <!-- 有tab的原理图 -->
-                                    <div style='width:100%;height:600px;overflow:hidden'>
-                                        <rotation :rotationImg='rotationImg'></rotation>
+                                    <div style='width:100%;height:600px;'>
+                                        <rotation type='3' :rotationImg='rotationImg'></rotation>
                                     </div>
                                 </el-tab-pane>
                                 <!-- 发布之后的编辑器的分支图 -->

+ 15 - 1
src/views/equipment/index.vue

@@ -95,6 +95,7 @@ export default {
             this.$cookie.set('categoryId', item.categoryId, 3)
             this.$refs.floorMap.init(this.floorInfo.gname)
             this.querySmsxt()
+            this.viewLengend()
         },
         querySmsxt() {
             // 目前消防和弱电下面有特殊的数据表格
@@ -144,6 +145,13 @@ export default {
         // 从设备设施进入的机房
         queryType(val) {
             this.type = val
+        },
+        viewLengend() {
+            if (this.legendTable.length > 0) {
+                this.$store.commit('SETSHOWVIEW', 1)
+            } else {
+                this.$store.commit('SETSHOWVIEW', 0)
+            }
         }
     },
     mounted() {
@@ -162,7 +170,7 @@ export default {
         this.$refs.floorMap.init(this.floorInfo.gname)
     },
     computed: {
-        ...mapGetters(['floorsArr', 'plazaId', 'showView'])
+        ...mapGetters(['floorsArr', 'plazaId', 'showView', 'legendTable'])
     }
 }
 </script>
@@ -341,6 +349,12 @@ export default {
         }
     }
 }
+@media screen and (max-width: 1366px) {
+    /*当屏幕尺寸小于1366px时,应用下面的CSS样式*/
+    .eq-top {
+        margin-left: 0 !important;
+    }
+}
 </style>
 <style lang="less">
 .el-table {

+ 24 - 10
src/views/equipment/table/djspTable.vue

@@ -44,7 +44,7 @@ import { Select } from 'meri-design'
 import EqDetail from './eqDetaileDialog'
 import { queryShops } from '@/api/equipmentList.js'
 import { mapGetters } from 'vuex'
-
+import store from '../../../store/index'
 export default {
     components: { Select, EqDetail },
     data() {
@@ -102,16 +102,17 @@ export default {
                 console.log(res)
                 this.tableData = []
                 let floor = {}
-                res.data.forEach(i => {
-                    console.log(i)
-                    Object.keys(i).forEach(key => (floor[key] = 0)) // 初始化每一楼层个数为0
-                    Object.values(i).forEach(j => {
-                        Object.values(j).forEach(k => {
-                            console.log(k)
-                            this.tableData.push(k)
+                res.data &&
+                    res.data.forEach(i => {
+                        console.log(i)
+                        Object.keys(i).forEach(key => (floor[key] = 0)) // 初始化每一楼层个数为0
+                        Object.values(i).forEach(j => {
+                            Object.values(j).forEach(k => {
+                                console.log(k)
+                                this.tableData.push(k)
+                            })
                         })
                     })
-                })
 
                 this.tableData.map(n => {
                     if (floor[n.floor] === 0) {
@@ -132,12 +133,25 @@ export default {
                 this.getList()
             }
         },
-        floor() {
+        /* floor() {
+            console.log('watch floor')
             this.getList()
+        }, */
+        // 监听 vuex 中currentFloor的变化,切换楼层后,更新下拉菜单
+        '$store.state.currentFloor': {
+            handler(newV, oldV) {
+                if (newV.gname !== oldV.gname) {
+                    this.floor = newV.gname
+                    this.getList()
+                }
+            },
+            deep: true
         }
     },
     mounted() {
+        console.log('商铺电表数 mounted')
         this.floor = this.$cookie.get('floorMapId')
+        console.log(this.floor)
         this.getList()
     }
 }

+ 13 - 2
src/views/equipment/table/eqListTable.vue

@@ -60,7 +60,7 @@
             <el-table-column prop='wzjc' label='安装位置' show-overflow-tooltip resizable>
                 <template slot-scope='{row}'>{{row.wzjc || '--'}}</template>
             </el-table-column>
-            <el-table-column prop='manufacturer' label='生产厂商' show-overflow-tooltip resizable min-width="300">
+            <el-table-column prop='manufacturer' label='生产厂商' show-overflow-tooltip resizable min-width='300'>
                 <template slot-scope='{row}'>{{row.manufacturer || '--'}}</template>
             </el-table-column>
         </el-table>
@@ -86,6 +86,7 @@ import { Select } from 'meri-design'
 import EqDetail from './eqDetaileDialog'
 import { queryEquipmentList } from '@/api/equipmentList.js'
 import { mapGetters } from 'vuex'
+import store from '../../../store/index'
 
 export default {
     components: { Select, EqDetail },
@@ -162,9 +163,19 @@ export default {
                 this.getList()
             }
         },
-        floor(newV, oldV) {
+        /* floor(newV, oldV) {
             console.log(newV, oldV)
             this.getList()
+        }, */
+        // 监听 vuex 中currentFloor的变化,切换楼层后,更新下拉菜单
+        '$store.state.currentFloor': {
+            handler(newV, oldV) {
+                if (newV.gname !== oldV.gname) {
+                    this.floor = newV.gname
+                    this.getList()
+                }
+            },
+            deep: true
         }
     },
     mounted() {

+ 13 - 1
src/views/equipment/table/standTable.vue

@@ -85,6 +85,8 @@ import EqDetail from './eqDetaileDialog'
 
 import { mapGetters } from 'vuex'
 import { Select } from 'meri-design'
+import store from '../../../store/index'
+
 export default {
     data() {
         return {
@@ -170,8 +172,18 @@ export default {
                 this.getList()
             }
         },
-        floor(newV, oldV) {
+        /* floor(newV, oldV) {
             this.getList()
+        }, */
+        // 监听 vuex 中currentFloor的变化,切换楼层后,更新下拉菜单
+        '$store.state.currentFloor': {
+            handler(newV, oldV) {
+                if (newV.gname !== oldV.gname) {
+                    this.floor = newV.gname
+                    this.getList()
+                }
+            },
+            deep: true
         }
     },
     mounted() {

+ 1 - 0
src/views/equipment/table/wbTable.vue

@@ -172,6 +172,7 @@ export default {
         },
         //工单详情
         innerTable(row) {
+            console.log(row)
             if (row.apptype == '外委' || row.apptype == '自维') {
                 if (row.wb_gzglid) {
                     window.open(`http://gcgl.wanda.cn/maximo/ui/?event=loadapp&value=WB_GZGL&uniqueid=${row.wb_gzglid}`, true)

+ 6 - 3
src/views/equipment/table/wxTable.vue

@@ -95,7 +95,11 @@
             </el-table-column>
             <el-table-column prop='brand' label='现场照片' width='80'>
                 <template slot-scope='{row}'>
-                    <div v-if='row.glsmsImage' style='cursor:pointer;color: #0091ff;' @click='clickPic(row.glsmsImage)'>{{row.glsmsImage.length+'张'}}</div>
+                    <div
+                        v-if='row.glsmsImage'
+                        style='cursor:pointer;color: #0091ff;'
+                        @click.prevent='clickPic(row.glsmsImage)'
+                    >{{row.glsmsImage.length+'张'}}</div>
                     <div v-else>{{'---'}}</div>
                 </template>
             </el-table-column>
@@ -189,8 +193,7 @@ export default {
                     diff: this.diff,
                     plazaId: this.$store.state.plazaId,
                     page: this.currentPage,
-                    size: this.size,
-                    
+                    size: this.size
                 }
             }
             //下拉

+ 0 - 13
src/views/first/index.vue

@@ -1,13 +0,0 @@
-<template>
-    <div class='first-demo'>首页</div>
-</template>
-
-<script>
-export default {}
-</script>
-
-<style>
-.first-demo {
-    background: rgba(242, 245, 247);
-}
-</style>

+ 8 - 8
src/views/homepage/index.vue

@@ -4,7 +4,7 @@
             <div class='cards-item' v-for='(item , index) in cardsList' :key='index' :style='itemStyle(item)'>
                 <h4>{{item.smsxtname}}</h4>
                 <div class='equipment-list' v-if='item.assetTypeList'>
-                    <div @click='navToInnerPage(item, equip)' class='equipment-item' v-for='equip in item.assetTypeList'>
+                    <div @click='navToInnerPage(item, equip)' class='equipment-item' v-for='(equip , index) in item.assetTypeList' :key="index">
                         <div class='equip-name'>
                             <h5>{{equip.category_name}}</h5>
                             <div class='exception-number' v-if='equip.is_exception_num'>{{equip.is_exception_num}}</div>
@@ -127,25 +127,25 @@ export default {
         navToIntroduce () {
             this.$router.push({path:"./analysis", query:{module:'specification'}})
         },
-        itemStyle(option) {
+        itemStyle (option) {
             let num = 0
             if (option.assetTypeList) {
-                option.assetTypeList.forEach(item => {
-                    if (typeof item.is_exception_num === 'number') {
-                        num += item.is_exception_num
+                option.assetTypeList.forEach(item=>{
+                    if (typeof item.is_exception_num === "number") {
+                        num +=  item.is_exception_num
                     }
                 })
             }
             if (option.rptGlsmsStatisticsList) {
                 option.rptGlsmsStatisticsList.forEach(option => {
-                    if (typeof option.unfinished === 'number') {
-                        num += option.unfinished
+                    if (typeof option.unfinished === "number") {
+                        num +=  option.unfinished
                     }
                 })
             }
             if (num > 0) {
                 return {
-                    borderLeft: '3px solid #EF6B66'
+                    borderLeft:"3px solid #EF6B66"
                 }
             }
         },

+ 13 - 9
src/views/legendLibrary/addForm.vue

@@ -333,7 +333,7 @@ export default {
                 })
 
                 var hex = '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1) + opacity
-                console.log(hex)
+
                 return hex
             } else {
                 return
@@ -353,14 +353,18 @@ export default {
         },
         //线条类型改变
         changeLineType(val) {
-            this.borderLineOptionObject = val && this.borderLineOption.find(item => item.id == val)
-            if (this.$refs.select1 && this.$refs.select1.$el) {
-                this.$refs.select1.$el.children[0].children[0].setAttribute(
-                    'style',
-                    'background:#ffffff url(' + this.borderLineOptionObject.src + ')  10px center no-repeat;color:transparent;'
-                )
-            }
-            this.$set(this.ruleForm, 'LineDash', val)
+            if (val) {
+                this.borderLineOptionObject = val && this.borderLineOption.find(item => item.id == val)
+                this.$nextTick(() => {
+                    if (this.$refs.select1 && this.$refs.select1.$el) {
+                        this.$refs.select1.$el.children[0].children[0].setAttribute(
+                            'style',
+                            'background:#ffffff url(' + this.borderLineOptionObject.src + ')  10px center no-repeat;color:transparent;'
+                        )
+                    }
+                })
+                this.$set(this.ruleForm, 'LineDash', val)
+            }
             if (this.view) {
                 this.view.lineType = val
             }

+ 30 - 0
src/views/legendLibrary/addLegend.vue

@@ -16,6 +16,36 @@
             </span>
         </el-dialog>
 
+        <!-- <Modal :show='dialogVisible' :title='title' mode='middle' @close='dialogVisible = false,cancal()'>
+            <template #content>
+                <add-form
+                    ref='add'
+                    :InfosList='InfosList'
+                    :InfoTypeIdList='InfoTypeIdList'
+                    :ruleForm='info'
+                    @addSuccess='addSuccess'
+                    @updateSuccess='updateSuccess'
+                    :title='title'
+                ></add-form>
+            </template>
+            <template #handle>
+                <Button @click='dialogVisible = false,cancal()' type='default'>取 消</Button>
+                <Button @click='save' type='primary'>确 定</Button>
+            </template>
+        </Modal>-->
+        <!-- 
+        <a-modal v-model='dialogVisible' :title='title' @ok='save' @cancel='dialogVisible = false,cancal()' okText='确定' cancelText='取消' width='900px'>
+            <add-form
+                ref='add'
+                :InfosList='InfosList'
+                :InfoTypeIdList='InfoTypeIdList'
+                :ruleForm='info'
+                @addSuccess='addSuccess'
+                @updateSuccess='updateSuccess'
+                :title='title'
+            ></add-form>
+        </a-modal>-->
+
         <TransferSelectModal
             defaultExpandAll
             default-expand-all

+ 1 - 2
src/views/legendLibrary/index.vue

@@ -165,7 +165,7 @@
                 ></el-pagination>
             </div>
         </div>
-        <add-legend ref='addLegend' @updateSuccess='updateSuccess' @addSuccess='addSuccess' @cancal='cancal' :key='Date.now()'></add-legend>
+        <add-legend ref='addLegend' @updateSuccess='updateSuccess' @addSuccess='addSuccess' @cancal='cancal'></add-legend>
         <Modal :show='modalStatusTip' title='确定要作废图例吗?' mode='tip' type='error' @close='modalStatusTip=false'>
             <template #content>作废后则不可更改</template>
             <template #handle>
@@ -189,7 +189,6 @@ import {
     getVisualization,
     queryRelation
 } from '@/api/legendLibrary.js'
-import { Container } from 'element-ui'
 
 function hexToRgba(hex) {
     let opacity = '',

+ 3 - 3
src/views/legendRules/index.vue

@@ -61,11 +61,11 @@
                     @tool-button-click='buttonClickHandle'
                 >
                     <img slot-scope='{col, row}' v-if='col.key==="Url"' class='img' :src='`/serve/topology-wanda/Picture/query/${row.Url}`' alt />
-                    <span slot-scope='{col, row}' v-else-if='col.key==="caozuo"' style='color:#0091FF'>删除</span>
+                    <span slot-scope='{col}' v-else-if='col.key==="caozuo"' style='color:#0091FF'>删除</span>
                 </Table>
             </div>
         </div>
-        <add-legend ref='addLegend' @mesg='mesg'></add-legend>
+        <add-legend ref='addLegends' @mesg='mesg'></add-legend>
     </div>
 </template>
 <script>
@@ -234,7 +234,7 @@ export default {
             this.getData()
         },
         add() {
-            this.$refs.addLegend.open('', '', this.GraphCategoryId)
+            this.$refs.addLegends.open('', '', this.GraphCategoryId)
         },
         init() {
             let getParams = {}

+ 24 - 12
src/views/other/index.vue

@@ -96,27 +96,27 @@ export default {
             let postParams = [
                 {
                     tableName: 'glsms_proimgup',
-                    params: { module: '1004', floor: 'f1' }
+                    params: { module: '1004', floor: 'f6' }
                 },
                 {
                     tableName: 'glsms_proimgup',
-                    params: { module: '1004', floor: 'f2' }
+                    params: { module: '1004', floor: 'f5' }
                 },
                 {
                     tableName: 'glsms_proimgup',
-                    params: { module: '1004', floor: 'f3' }
+                    params: { module: '1004', floor: 'f4' }
                 },
                 {
                     tableName: 'glsms_proimgup',
-                    params: { module: '1004', floor: 'f4' }
+                    params: { module: '1004', floor: 'f3' }
                 },
                 {
                     tableName: 'glsms_proimgup',
-                    params: { module: '1004', floor: 'f5' }
+                    params: { module: '1004', floor: 'f2' }
                 },
                 {
                     tableName: 'glsms_proimgup',
-                    params: { module: '1004', floor: 'f6' }
+                    params: { module: '1004', floor: 'f1' }
                 },
                 {
                     tableName: 'glsms_proimgup',
@@ -130,9 +130,7 @@ export default {
             queryTab({ data, postParams }).then(res => {
                 //console.log('查询哪几层楼有图', res)
                 this.floorData = []
-                let data = res.data.data
-                console.log('data', data)
-
+                let data = res.data.data || []
                 data.forEach(el => {
                     if (el.count > 0) {
                         let obj = {
@@ -144,9 +142,9 @@ export default {
                                 .reverse()
                                 .join(''),
                             seq:
-                                el.params.floor.substring(1, 2) == 'b'
-                                    ? el.params.floor.substring(1, 2) + '00'
-                                    : -el.params.floor.substring(1, 2) + '00'
+                                el.params.floor.substring(0, 1) == 'b'
+                                    ? -Number(el.params.floor.substring(1, 2)) + '00'
+                                    : Number(el.params.floor.substring(1, 2)) + '00'
                         }
                         this.floorData.push(obj)
                     }
@@ -287,4 +285,18 @@ export default {
         }
     }
 }
+@media screen and (max-width: 1600px) {
+    /*当屏幕尺寸小于1366px时,应用下面的CSS样式*/
+    .fzyfImg {
+        margin-top: 120px !important;
+        height: 500px !important;
+    }
+}
+@media screen and (max-width: 1366px) {
+    /*当屏幕尺寸小于1366px时,应用下面的CSS样式*/
+    .fzyfImg {
+        margin-top: 90px !important;
+        height: 400px !important;
+    }
+}
 </style> 

+ 1 - 1
src/views/other/zhsxDialog.vue

@@ -10,7 +10,7 @@
                 <div class='bottom-table'>
                     <el-table :data='tableData' height='480' style='width:100%;' :span-method='objectSpanMethod' border v-if='tableData.length>0'>
                         <el-table-column label='序号' type='index' width='60'></el-table-column>
-                        <el-table-column prop='jcsx' label='检测事项' :show-overflow-tooltip='true'></el-table-column>
+                        <el-table-column prop='jcsx' label='检测事项' :show-overflow-tooltip='true' width='400'></el-table-column>
                         <el-table-column prop='zgbm' label='主管部门' :show-overflow-tooltip='true'></el-table-column>
                         <el-table-column prop='jlsx' label='记录事项' :show-overflow-tooltip='true'></el-table-column>
                     </el-table>

+ 2 - 2
src/views/other/zhsxOtherTable2.vue

@@ -154,8 +154,8 @@ export default {
         },
         //第三方任务
         innerTable(row) {
-            if (row.wbgzglid) {
-                window.open(`http://gcgl.wanda.cn/maximo/ui/?event=loadapp&value=DSF_GZGL&uniqueid=${row.wbgzglid}`, true)
+            if (row.id) {
+                window.open(`http://gcgl.wanda.cn/maximo/ui/?event=loadapp&value=DSF_GZGL&uniqueid=${row.id}`, true)
             }
         },
         changeSelect() {

+ 19 - 9
src/views/overview/index.vue

@@ -19,7 +19,7 @@
             <div class='view-left'>
                 <div class='lb-left'>
                     <div v-if='pic2.length>0' style='height:100%'>
-                        <rotation :rotationImg='pic2'></rotation>
+                        <rotation :key='2' type='2' :rotationImg='pic2' @scan='scan'></rotation>
                         <div class='lb-icon' @click='picClick("2")'></div>
                         <img class='lb-img' @click='picClick("2")' src='../../assets/imgs/zk.png' alt />
                     </div>
@@ -78,7 +78,7 @@
                 <div class='view-right-box'>
                     <div class='lb-right'>
                         <div v-if='pic1.length>0' style='height:100%'>
-                            <rotation :rotationImg='pic1'></rotation>
+                            <rotation type='2' :rotationImg='pic1' :key='1' @scan='scan'></rotation>
                             <div class='lb-icon' @click='picClick("1")'></div>
                             <img class='lb-img' @click='picClick("1")' src='../../assets/imgs/zk.png' alt />
                         </div>
@@ -199,15 +199,27 @@ export default {
             pic2: [], //鸟瞰图
             build: {}, //左下信息
             constructions: [], //右下数组
-            shuzihuayijiao: ''
+            shuzihuayijiao: '',
+            va: ''
         }
     },
     methods: {
+        scan(val) {
+            this.va = val
+        },
         picClick(type) {
-            if (type == 1) {
-                this.$refs.picModal.showModal(this.pic1)
+            if (type === '1') {
+                if (this.pic1.length >= this.va) {
+                    this.$refs.picModal.showModal([this.pic1[this.va - 1]])
+                } else {
+                    this.$refs.picModal.showModal(this.pic1)
+                }
             } else {
-                this.$refs.picModal.showModal(this.pic2)
+                if (this.pic2.length >= this.va) {
+                    this.$refs.picModal.showModal([this.pic2[this.va - 1]])
+                } else {
+                    this.$refs.picModal.showModal(this.pic2)
+                }
             }
         },
         findxmzl() {
@@ -262,13 +274,11 @@ export default {
         // }
         let previewUrl = location.href.split('=')[1] ? location.href.split('=')[1].split('&')[0] : false,
             plazaId = location.href.split('=')[2] ? location.href.split('=')[2] : '1000423'
-        console.log('previewUrl:', previewUrl)
-        console.log('plazaId:', plazaId)
         this.$store.commit('SETISPREVIEW', previewUrl)
         this.query()
     },
     computed: {
-        ...mapGetters(['isPreview'])
+        ...mapGetters(['isPreview', 'pic'])
     },
     components: {
         PicModal

+ 4 - 2
src/views/overview/picModal.vue

@@ -5,7 +5,7 @@
                 src='https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1592807833&di=5adf17cda9f46c37696da5b1d0aec9dc&src=http://a3.att.hudong.com/14/75/01300000164186121366756803686.jpg'
                 alt
             />-->
-            <rotation :type='1' v-if='rotationImg.length>0' :rotationImg='rotationImg' style='height:100%;width:100%'></rotation>
+            <rotation :key='key' :type='1' v-if='rotationImg.length>0' :rotationImg='rotationImg' style='height:100%;width:100%'></rotation>
             <span class='close' @click='close'>X</span>
         </el-dialog>
     </div>
@@ -17,11 +17,13 @@ export default {
         return {
             dialogVisible: false,
             mode: 'top',
-            rotationImg: []
+            rotationImg: [],
+            key: 1
         }
     },
     methods: {
         showModal(params) {
+            this.key++
             this.dialogVisible = true
             this.rotationImg = params
         },

+ 1 - 1
src/views/room/room1.vue

@@ -1,6 +1,6 @@
 <template>
     <div class='jf-inner' style='width:100%;height:85vh;overflow:hidden'>
-        <rotation :rotationImg='tableImg'></rotation>
+        <rotation :rotationImg='tableImg' :type='3'></rotation>
     </div>
 </template>
 <script>

+ 83 - 100
src/views/statistics/index.vue

@@ -92,9 +92,9 @@
             </section>
         </section>
         <section class="ratio-list">
-            <section class="block" v-for="(item , index) in maintainList" :key="index">
+            <section class="block" :style="panelStyle(item)" v-for="(item , index) in maintainList" :key="index">
                 <h4 class="section-title" @click="toggerPanel(item)">{{item.title}}</h4>
-                <div class="list" :style="panelStyle(item)">
+                <div class="list" >
                     <ul>
                         <li v-for="(option , index) in item.data" :key="index">
                             <div class="ratio">
@@ -118,14 +118,14 @@
 </template>
 
 <script>
-let maps = null 
+let myMaps = null 
 import {login} from "@/api/login"
 import {getPlazaInfoCount , querySystemCard , getCardList , queryEventStatus} from "@/api/homePage"
 import { formatTime } from '@/utils/format.js'
 import { mapGetters } from 'vuex'
 import ChinaGeoJson from "../../assets/CHN.geo2.json";
 import {sortBy} from "lodash"
-import OtherJson from "../../assets/regionData/other.json"
+// import OtherJson from "../../assets/regionData/other.json"
 import moment from 'moment'
 import L from "leaflet";
 import "leaflet-contextmenu";
@@ -145,20 +145,6 @@ export default {
                 "东南":"dongnan",
                 "其他":"Other"
             },
-            zoneGroup:{
-                "dongbei":["heilongjiang","liaoning","jilin"],
-                "xibei":["neimenggu","ningxia","shanxi1","xinjiang"],
-                "huabei":["shandong","hebei","beijing","tianjin"],
-                "huazhong":["shanxi2","henan","hubei"],
-                "huadong":["jiangsu","shanghai"],
-                "zhongnan":["hunan","anhui","jiangxi"],
-                "huanan":["guangdong","guangxi"],
-                "dongnan":["fujian","zhejiang"],
-                "xinan":["guizhou","sichuan","yunnan","chongqing"]
-            },
-            zoneCity:{
-                "shandong":["青岛区域","济南区域"]
-            },
             provinceCities:{
                 "青岛区域": {"province":"shandong", center: [36.06667 , 120.33333], zoom:8},
                 "北京区域": {"province":"beijing", center: [39.604882122321174,  116.43660987308282], zoom:8},
@@ -192,39 +178,6 @@ export default {
                 "昆明区域": {"province":"yunnan", center: [25.903703303407667,  105.10972266685498], zoom:8},
                 "重庆区域": {"province":"chongqing", center: [29.35, 106.33], zoom:8},
             },
-
-            provincesCenter:{
-                "anhui":[31.852559691577845, 117.2253589137454],
-                "beijing": [40.186106951230485,116.42285651967009],
-                "chongqing": [30.060254204354784, 107.89013862196842],
-                "fujian": [26.071368377569776, 118.00455426638014],
-                "gansu":[38.00325279557638, 100.5012462408473],
-                "guangdong":[23.334243521962527, 113.43297176882082],
-                "guangxi":[23.83265626692407, 108.79223788629494],
-                "guizhou":[26.824014276407205, 106.87707047290361],
-                "hebei":  [39.60459587653637, 116.15817616286789],
-                "heilongjiang":[48.03564457240887, 127.69009579234847],
-                "henan": [33.902894471142176, 113.61599693888945],
-                "hubei": [30.988423598416457, 112.27635740895998],
-                "hunan":[27.633668515110255, 111.70882955621366],
-                "jiangsu": [32.981911362532585, 119.48201035757698],
-                "jiangxi":[27.637831291898365, 115.73252266448846],
-                "jilin":[43.703126756480735, 126.15512329582789],
-                "liaoning":[41.30041310409345, 122.6094238905765],
-                "neimenggu":[44.47324785058833, 114.30352505865382],
-                "ningxia":[37.29635258864683, 106.17634546083286],
-                "qinghai":[35.7281048004562, 96.0459309719495],
-                "shandong":[36.374647201891335, 118.18901718013844],
-                "shanghai":[31.07710542026598, 121.44651073619633],
-                "shanxi1":[35.263055624551846, 108.88970748546511],
-                "shanxi2":"",
-                "sichuan":[30.67066959682666, 102.69531108397375],
-                "tianjin":[39.29260116656163, 117.35013172238374],
-                "xinjiang":[41.37183707717329, 85.29450850581013],
-                "xizang":[31.56242864291341, 88.39191208626079],
-                "yunnan":[25.004865694004916, 101.4821386658875],
-                "zhejiang": [29.180481383933902, 120.11087647324501],
-            },
             zoneCenter:{ 
                 "dongbei":[43.161614, 124.396818],    // 取自 东北运营中心 长春区域 四平万达广场
                 "xibei":[37.999781, 106.197518],    // 西北  银川区域 吴忠万达广场     zoom 5
@@ -237,12 +190,12 @@ export default {
                 "xinan":[ 28.749998, 104.648788]   // 西南 成都 宜宾万达广场
             },
             legendList:[
-                {color: "#FDE3E2", num:'≥200'},
-                {color: "#FEE9D2", num:'100-200'},
-                {color: "#FFF6EB", num:'50-99'},
-                {color: "#CCE9FF", num:'10-49'},
-                {color: "#E1F2FF", num:'1-9'},
-                {color: "#E1F2FF", num:'0'},
+                {color: "#F54E45", num:'≥200'},
+                {color: "#F58300", num:'100-200'},
+                {color: "#FFBA6B", num:'50-99'},
+                {color: "#0091FF", num:'10-49'},
+                {color: "#82C7FC", num:'1-9'},
+                {color: "#EEEEEE", num:'0'},
             ],
             plazaInfoCount:{},
             systemList:[],
@@ -281,7 +234,7 @@ export default {
         this.getFrameworkTreeData()
         this.getSystemList()
         this.queryPlazaInfoCount(1002347,0)
-        this.getEventStatusData()
+        
     },
     methods: {
  
@@ -326,6 +279,8 @@ export default {
         },
          // 获取 区域/中心/项目
         selectProjectItem (ids, data) {
+            this.currentLevel = data.level
+            this.getEventStatusData(this.currentLevel)
             this.createNavpathByData(data)
             this.currentZone = data
             let JSONName  = data.cname
@@ -392,6 +347,7 @@ export default {
                     this.currentZone = data
                     this.currentLevel = res.treeData[0].level // 初始化的时候判断是哪一级    //1集团 2中心 3区域 0广场
                     this.regulateDistrictData =  [data]
+                    this.getEventStatusData(this.currentLevel)
                     this.initMap()
                 }
                 function recursionData (data, parent) {
@@ -428,11 +384,11 @@ export default {
         panelStyle (item) {
             // expand 0 初始状态  1 展开状态 2 隐藏状态
             if (item.expand === 0) {
-                return {height:'22rem'}
+                return {height: `calc((100% - 2rem) / 3)`}
             } else if (item.expand === 1) {
-                return {height:'63rem'}
+                return {height:'calc(100% - 11.2rem)'}
             } else {
-                return {height:'0', margin:0}
+                return {height:'4.6rem'}
             }
         },
         /**
@@ -495,7 +451,6 @@ export default {
         /**根据选择的系统重新渲染地图
          * param sysId:系统Id 
         */
-   
         formatter(str, arrv) {
             if (str && arrv) {
                 const Objs = arrv.find(e => e && e.plazaid == str)
@@ -534,23 +489,21 @@ export default {
         /**
          * 获取事项状态统计数据
          */
-        getEventStatusData () {
+        getEventStatusData (level) {
             let params = {
                 getParams: {
-                    "level":1,
+                    "level": level,
                     "ccode":"0000000000",
                 }
             }
             queryEventStatus(params).then(res => {
                 if (res.result === "success") {
                     let arr =[]
-                    
                     let data = res.data
                     for(let key in data) {
                         let obj = {}
                         let sortData = data[key]
                         if (data.hasOwnProperty(key)) {
-                            
                             // 维保,第三方检测排名按照即将到期任务数量从多到少排序,多的靠前。专维按照 逾期未完成 + 即将到期任务数据排序,多的靠前
                              // due_num 即将到期    unfinished 逾期未完成
                             if (key == "0") {
@@ -582,21 +535,37 @@ export default {
           //初始化地图
         initMap() {
             let that = this;
-            maps = L.map("map", {        
+            myMaps = L.map("map", {        
                 center: new L.LatLng(38, 103),
                 zoom: 4,
+                // maxZoom:4,
+                // minZoom:4,
                 crs: L.CRS.EPSG3857,
-                minZoom: 3,
-                maxZoom: 14,
-                zoomControl: false,
+                zoomControl:false,
+                boxZoom: false,
                 attributionControl: false,
                 contextmenu: true,
                 contextmenuWidth: 140,
+                dragging:false,
             })
-            maps.on('click', (ev)=>{
-            })
-            maps.on('zoomend', (ev)=>{
-            })
+            let el = myMaps.getContainer()
+            
+         
+            el.addEventListener('DOMMouseScroll', scrollFunc)
+            el.addEventListener('wheel', scrollFunc)
+         
+            function scrollFunc(evt) {
+                evt = evt || window.event;
+                if(evt.preventDefault) {
+                    evt.preventDefault();
+                    evt.stopPropagation();
+                } else{
+                    evt.cancelBubble=true;
+                    evt.returnValue = false;
+                }
+                return false;
+            }
+          
             let JsonData = require("../../assets/geoData/china.json")
             let layer = L.geoJSON(JsonData.features, {
                 style:function(){
@@ -606,7 +575,7 @@ export default {
                         'fillColor':'#DEECFF' 
                     }
                 }
-            }).addTo(maps);
+            }).addTo(myMaps);
             if(this.currentLevel === 1) {   //1集团 3区域 0广场
                 this.pantGroupMap(this.currentDistrictData[0], this.currentSysId)
             } else if (this.currentLevel === 2) {  // 2中心 
@@ -617,8 +586,8 @@ export default {
         },
         //**清空地图 并添加全国底图*/
         clearAllLayers(){
-            maps.eachLayer(function(layer){
-                maps.removeLayer(layer)
+            myMaps.eachLayer(function(layer){
+                myMaps.removeLayer(layer)
             })
             let JsonData = require("../../assets/geoData/china.json")
             let layer = L.geoJSON(JsonData.features, {
@@ -629,13 +598,13 @@ export default {
                         'fillColor':'#DEECFF' 
                     }
                 }
-            }).addTo(maps);
+            }).addTo(myMaps);
         },
         /**
          * 移动地图到指定中心
          */
         panTo(center, zoom){
-            maps.setView(center, zoom)
+            myMaps.setView(center, zoom)
         },
         /**
          * 切换系统时 地图响应
@@ -657,7 +626,7 @@ export default {
         },
         // 用于绘制集团地图
         pantGroupMap (data, sysId) {
-            maps.setView([38,103],4)
+            myMaps.setView([38,103],4)
             this.clearAllLayers() 
             let that = this
             let groupLayer = new L.layerGroup()
@@ -720,7 +689,7 @@ export default {
                             item.marker = L.marker([center[0]-2, center[1]], { icon: myIcon }).addTo(groupLayer)
                             L.circle(center, 100000, { color:'transparent', fillColor:color.border, fillOpacity:0.4}).bindPopup(contentHtml).addTo(groupLayer);
                             L.circle(center, 50000, { color:'transparent', fillColor:color.area, fillOpacity:1}).bindPopup(contentHtml).addTo(groupLayer);
-                            groupLayer.addTo(maps)
+                            groupLayer.addTo(myMaps)
                         
                             item.marker.on('click', (ev)=>{
                                 groupLayer.clearLayers()
@@ -729,7 +698,7 @@ export default {
                             })
                         }
                     })
-                    groupLayer.addTo(maps)
+                    groupLayer.addTo(myMaps)
                 },200)
             })
         },
@@ -741,7 +710,21 @@ export default {
             this.clearAllLayers()
             let name = data.cname.substr(0,2)
             let zone = this.zoneNames[name]
-            this.panTo(this.zoneCenter[zone], 6)
+            let zoom , inner, outer, offset
+            if (['xibei'].includes(zone)) {
+                zoom = 5
+                inner = 20000
+                outer = 40000
+                offset = 1
+            } else {
+                zoom = 6
+                inner = 10000
+                outer = 20000
+                offset = 0.5
+            }
+            this.panTo(this.zoneCenter[zone], zoom)
+            // myMaps.setMaxZoom(zoom)
+            // myMaps.setMinZoom(zoom)
             let that = this
             let groupLayer = new L.layerGroup() 
             data.children.forEach(item=>{
@@ -783,11 +766,11 @@ export default {
                         }
                         color = that.paintColorByData(num)
                         if (color && color.border && color.area && center) {
-                            marker = L.marker([center[0] -0.5, center[1]], { icon: myIcon }).addTo(groupLayer)
-                            L.circle(center, 20000, { color:'transparent', fillColor:color.border, fillOpacity:0.4}).bindPopup(contentHtml).addTo(groupLayer);
-                            L.circle(center, 10000, { color:'transparent', fillColor:color.area, fillOpacity:1}).bindPopup(contentHtml).addTo(groupLayer);
+                            marker = L.marker([center[0] -offset, center[1]], { icon: myIcon }).addTo(groupLayer)
+                            L.circle(center, outer, { color:'transparent', fillColor:color.border, fillOpacity:0.4}).bindPopup(contentHtml).addTo(groupLayer);
+                            L.circle(center, inner, { color:'transparent', fillColor:color.area, fillOpacity:1}).bindPopup(contentHtml).addTo(groupLayer);
                         }
-                        groupLayer.addTo(maps)
+                        groupLayer.addTo(myMaps)
                         marker.on('click', (ev)=>{
                             groupLayer.clearLayers()
                             this.pantProjectsMap(item,sysId)
@@ -802,6 +785,7 @@ export default {
          * 用于绘制项目的点
          */
         pantProjectsMap (data,sysId) {
+     
             this.clearAllLayers()
             let geo = this.provinceCities[data.cname]
             this.panTo(geo.center, geo.zoom)
@@ -856,11 +840,11 @@ export default {
                         }
                        
                         color = that.paintColorByData(num)
-                        let zoom = maps.getZoom()
+                        let zoom = myMaps.getZoom()
                         let size = this.circleSize[zoom]
-                        marker = L.marker([center[0]-size.offset, center[1]], { icon: myIcon }).addTo(maps)
-                        L.circle(center, size.outer, { color:'transparent', fillColor:color.border, fillOpacity:0.4}).bindPopup(contentHtml).addTo(maps);
-                        L.circle(center, size.innder, { color:'transparent', fillColor:color.area, fillOpacity:1}).bindPopup(contentHtml).addTo(maps);
+                        marker = L.marker([center[0]-size.offset, center[1]], { icon: myIcon }).addTo(myMaps)
+                        L.circle(center, size.outer, { color:'transparent', fillColor:color.border, fillOpacity:0.4}).bindPopup(contentHtml).addTo(myMaps);
+                        L.circle(center, size.innder, { color:'transparent', fillColor:color.area, fillOpacity:1}).bindPopup(contentHtml).addTo(myMaps);
                         marker.on("click", (ev) => {
                             // that.$router.push({path:'./'})
                         })
@@ -1077,6 +1061,7 @@ export default {
             font-size: 1.6rem;
             font-weight: bolder;
             line-height: 2rem;
+            cursor: pointer;
         }
         .system-general{
             width: 25.4%;
@@ -1226,6 +1211,7 @@ export default {
                 #map{
                     height: 70rem;
                     overflow: hidden;
+                    pointer-events: none;
                 }
                 .legend{
                     position: absolute;
@@ -1242,9 +1228,6 @@ export default {
                             width: 20px;
                             margin-right: 12px;
                         }
-                        em{
-
-                        }
                     }
                 }
             }
@@ -1254,20 +1237,20 @@ export default {
             .block{
                 position: relative;
                 padding:1.2rem 1.6rem;
+                height: calc( (100% - 2rem) / 3);
                 border-radius: 4px;
-                margin-bottom: 1.2rem;
+                margin-bottom: 1rem;
                 background: white;
+                overflow: hidden;
+                transition: height 0.3s ease-in-out;
                 .section-title{
                     font-size: 1.6rem;
-                    
                 }
                 .list{
                     margin-top: 1.4rem;
-                    height: 21rem;
                     overflow: hidden;
-                    transition: height 0.3s ease-in-out;
+                    height: calc(100% - 3rem);
                     ul{
-                        overflow: hidden;
                         li{
                             display: flex;
                             flex-direction: column;
@@ -1300,7 +1283,7 @@ export default {
                 }
                 .arrow{
                     position: absolute;
-                    bottom: 0.5rem;
+                    bottom: 0;
                     left:50%;
                     cursor: pointer;
                     transform-origin: center center;

+ 1 - 1
vue.config.js

@@ -39,7 +39,7 @@ module.exports = {
             },
             // 图例库服务
             '/serve': {
-                target: 'http://60.205.177.43:8080', //阿里云
+                target: 'http://192.168.200.87:8088',
                 // target: 'http://192.168.200.83:8085',
                 changeOrigin: true,
                 pathRewrite: {