fujunwen преди 4 години
родител
ревизия
f798297a50
променени са 5 файла, в които са добавени 502 реда и са изтрити 206 реда
  1. 5 0
      public/index.html
  2. BIN
      src/assets/provinceData.rar
  3. 1 0
      src/views/analysis/CoreDeviceReport.vue
  4. 4 4
      src/views/homepage/index.vue
  5. 492 202
      src/views/statistics/index.vue

+ 5 - 0
public/index.html

@@ -15,6 +15,11 @@
             border:none!important;
             box-shadow:none!important;
         }
+        .my-leaflet-div-icon{
+            width: auto!important;
+            white-space: nowrap;
+            word-break: normal;
+        }
         .leaflet-container{
             background: #f7f9fa!important;
         }

BIN
src/assets/provinceData.rar


+ 1 - 0
src/views/analysis/CoreDeviceReport.vue

@@ -107,6 +107,7 @@
         </div>
       </el-dialog>
     </div>
+  </div>
 </template>
 
 <script>

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

@@ -114,13 +114,13 @@ export default {
          *  点击跳转进入综合事项管理页面
          */
         navToFocusItem () {
-            this.$router.push({path:"./调"})
+            this.$router.push({path:"./other", query:{module:'comprehensive'}})
         },
         /**
          *  点击跳转进入 分析|报表 说明书更新记录页面
          */
         navToIntroduce () {
-            this.$router.push({path:"./analysis", query:{homepageKey:2}})
+            this.$router.push({path:"./analysis", query:{module:'specification'}})
         },
         itemStyle (option) {
             let num = 0
@@ -145,13 +145,13 @@ export default {
             }
         },
         navToInnerPage (item, equip) {
-            this.$router.push({path:"./analysis", query:{smsxt:item.smsxt, equipId: equip.id}})
+            this.$router.push({path:"./analysis", query:{smsxt:item.smsxt, equipId: equip.id, module:'core'}})
         },
         /**
          * 跳转到甘特图详情页
          */
         navToGanttPage (item, equip) {
-            this.$router.push({path:"./analysis", query:{smsxt:item.smsxt}})
+            this.$router.push({path:"./analysis", query:{smsxt:item.smsxt, module:'gantt'}})
         },
         //TODO plazaId目前是写死的 后期需要更换成用户对应的ID
         testAjax () {

+ 492 - 202
src/views/statistics/index.vue

@@ -60,25 +60,25 @@
         </section>
         <section class="map-box">
             <section class="cards-list">
-                <div class="card">
+                <div class="card" @click="navToManageNumber">
                     <div class="img">
                         <img src="../../assets/images/icons/ratio.png">
                     </div>
                     <p>上线管理说明书数量</p>
                     <strong>{{plazaInfoCount.upwcCount}}</strong>
                 </div>
-                <div class="card">
+                <div class="card" @click="navToIntroduceUpdate">
                     <div class="img">
                         <img src="../../assets/images/icons/audit.png">
                     </div>
                     <p>当月说明书更新项目数量</p>
                     <strong>{{plazaInfoCount.rptChangeCount}}</strong>
                 </div>
-                <div class="card">
+                <div class="card" @click="navToFocusItems">
                     <div class="img">
                         <img src="../../assets/images/icons/contract.png">
                     </div>
-                    <p>当月重点关注事项项目数量ff</p>
+                    <p>当月重点关注事项项目数量</p>
                     <strong>{{plazaInfoCount.zhsxChangeCount}}</strong>
                 </div>
             </section>
@@ -99,13 +99,11 @@
                         <li v-for="(option , index) in item.data" :key="index">
                             <div class="ratio">
                                 <span>{{option.cname}}</span>
-                                <span>
-                                    <span>{{option.rptGlsmsStatistics.due_num}} / </span>
-                                    <span>{{option.rptGlsmsStatistics.total}}</span>
-                                </span>
+                                <span v-if="item.title === '专维'"><span>{{option.rptGlsmsStatistics.unfinished}} / </span> <span>{{option.rptGlsmsStatistics.due_num}} / </span> <span>{{option.rptGlsmsStatistics.total}}</span></span>
+                                <span v-else><span>{{option.rptGlsmsStatistics.unfinished}} / </span> <span>{{option.rptGlsmsStatistics.total}}</span></span>
                             </div>
                             <div class="bar">
-                                <div class="inner-bar" :style="barStyle(option.rptGlsmsStatistics)"></div>
+                                <div class="inner-bar" :style="barStyle(option.rptGlsmsStatistics, item.title)"></div>
                             </div>
                         </li>
                     </ul>
@@ -162,37 +160,37 @@ export default {
                 "shandong":["青岛区域","济南区域"]
             },
             provinceCities:{
-                "青岛区域": {"province":"shandong", center: [36.06667 , 120.33333]},
-                "北京区域": {"province":"beijing", center: [39.91667 ,114.41667]},
-                "天津区域": {"province":"tianjin", center:[39.13333, 117.20000]},
-                "济南区域": {"province":"shandong", center: [36.40, 117.00]},
-                "上海区域": {"province":"shanghai", center: [34.50000 , 119.43333]},
-                "南京区域": {"province":"jiangsu", center:[ 32.05000, 118.78333 ]},
-                "无锡区域": {"province":"jiangsu", center: [31.34, 120.18]},
-                "厦门区域": {"province":"fujian", center: [24.46667, 118.10000]},
-                "宁波区域": {"province":"zhejiang", center: [29.52, 121.33]},
-                "杭州区域": {"province":"zhejiang", center: [30.16, 120.10]},
-                "福州区域": {"province":"fujian", center: [26.05, 119.18]},
-                "合肥区域": {"province":"anhui", center: [31.52, 117.17]},
-                "长沙区域": {"province":"hunan", center: [28.12, 112.59]},
-                "南昌区域": {"province":"jiangxi", center: [28.40, 115.55]},
-                "哈尔滨区域": {"province":"heilongjiang", center: [45.44, 126.36]},
-                "大连区域": {"province":"liaoning", center: [38.55,121.36]},
-                "沈阳区域": {"province":"liaoning", center: [41.48, 123.25]},
-                "长春区域": {"province":"jilin", center: [43.54, 125.19]},
-                "东莞区域": {"province":"guangdong", center: [23.02,113.45]},
-                "南宁区域": {"province":"guangxi", center: [22.48, 108.19]},
-                "广州区域": {"province":"guangdong", center: [23.08, 113.14]},
-                "太原区域": {"province":"shanxi1", center: [37.54, 112.33]},
-                "武汉区域": {"province":"hubei", center: [30.35, 114.17]},
-                "郑州区域": {"province":"henan", center: [34.46, 113.40]},
-                "乌鲁木齐区域": {"province":"xinjiang", center: [43.45, 87.36]},
-                "呼和浩特区域": {"province":"neimenggu", center:[40.48, 111.41]},
-                "西安区域": {"province":"shanxi2", center: [34.26667, 108.95]},
-                "银川区域": {"province":"ningxia", center: [38.27, 106.16]},
-                "成都区域": {"province":"sichuan", center: [30.40, 104.04]},
-                "昆明区域": {"province":"yunnan", center: [25.04, 102.42]},
-                "重庆区域": {"province":"chongqing", center: [29.35, 106.33]},
+                "青岛区域": {"province":"shandong", center: [36.06667 , 120.33333], zoom:8},
+                "北京区域": {"province":"beijing", center: [39.604882122321174,  116.43660987308282], zoom:8},
+                "天津区域": {"province":"tianjin", center:[39.130593, 117.260892],zoom:7},
+                "济南区域": {"province":"shandong", center: [36.40, 117.00] , zoom: 7},
+                "上海区域": {"province":"shanghai", center: [31.090574094954192,  121.46299249603001], zoom:10},
+                "南京区域": {"province":"jiangsu", center:[ 32.05000, 118.78333 ], zoom:7},
+                "无锡区域": {"province":"jiangsu", center: [31.57, 120.30], zoom:9},
+                "厦门区域": {"province":"fujian", center: [24.46667, 118.10000] , zoom: 9},
+                "宁波区域": {"province":"zhejiang", center: [29.52, 121.33], zoom:8},
+                "杭州区域": {"province":"zhejiang", center: [30.323100460201648,  120.50270908851112], zoom:9},
+                "福州区域": {"province":"fujian", center: [26.05, 119.18], zoom:8},
+                "合肥区域": {"province":"anhui", center: [31.52, 117.17] , zoom:7},
+                "长沙区域": {"province":"hunan", center: [28.12, 112.59], zoom:8},
+                "南昌区域": {"province":"jiangxi", center: [28.40, 115.55], zoom: 8},
+                "大连区域": {"province":"liaoning", center: [39.98974718404572, 122.66034125625548] , zoom : 8},
+                "沈阳区域": {"province":"liaoning", center: [41.72213058512578, 122.93479223528372] , zoom: 8},
+                "长春区域": {"province":"jilin", center: [42.88033923363183,  127.02188147691707] , zoom:8},
+                "东莞区域": {"province":"guangdong", center: [23.644524198573688, 114.83844948916203], zoom:8},
+                "南宁区域": {"province":"guangxi", center: [22.48, 108.19], zoom:7},
+                "广州区域": {"province":"guangdong", center: [22.755920681486405,112.01244459124548], zoom:7},
+                "太原区域": {"province":"shanxi1", center: [37.54, 112.33], zoom:7},
+                "武汉区域": {"province":"hubei", center: [31.147006308556566, 112.97898510653813], zoom: 7},
+                "郑州区域": {"province":"henan", center: [34.46, 113.40], zoom:7},
+                "哈尔滨区域": {"province":"heilongjiang", center: [46.800059446787316, 128.40505022926592] , zoom: 7},
+                "乌鲁木齐区域": {"province":"xinjiang", center: [43.45, 87.36] , zoom:8},
+                "呼和浩特区域": {"province":"neimenggu", center:[45.182036837015886, 116.82329020199336] , zoom: 5},
+                "西安区域": {"province":"shanxi2", center: [36.08462129606931,109.4527754086213] , zoom: 7},
+                "银川区域": {"province":"ningxia", center: [38.108627664321276,  102.36578196225639], zoom: 7},
+                "成都区域": {"province":"sichuan", center: [30.24957724046765, 103.4647651330231] , zoom: 7},
+                "昆明区域": {"province":"yunnan", center: [25.903703303407667,  105.10972266685498], zoom:8},
+                "重庆区域": {"province":"chongqing", center: [29.35, 106.33], zoom:8},
             },
 
             provincesCenter:{
@@ -227,16 +225,16 @@ export default {
                 "yunnan":[25.004865694004916, 101.4821386658875],
                 "zhejiang": [29.180481383933902, 120.11087647324501],
             },
-            zoneCenter:{
-                "dongbei":[46.05917927005029, 126.53664921197083],
-                "xibei":[43.2417396142428,113.41468998579546],
-                "huabei":[38.348983721228436, 117.02472809706543],
-                "huazhong":[34.20577123689604 , 112.71908762827616],
-                "huadong":[ 32.865884180878325 , 119.61413071750152],
+            zoneCenter:{ 
+                "dongbei":[43.161614, 124.396818],    // 取自 东北运营中心 长春区域 四平万达广场
+                "xibei":[37.999781, 106.197518],    // 西北  银川区域 吴忠万达广场     zoom 5
+                "huabei":[39.019075, 117.686953],  // 华北中心  天津区域  天津塘沽万达广场
+                "huazhong":[33.999249 , 113.872131],  // 华中 郑州 许昌万达广场
+                "huadong":[ 32.477565 , 119.923391],  // 华东 南京 泰州
                 "zhongnan":[28.860875644389676, 114.55131767165491],
-                "huanan":[23.618261575763043,110.79063366644355 ],
-                "dongnan":[27.555323121883916, 119.00243042111592],
-                "xinan":[ 28.255078828220462, 103.33429493217788]
+                "huanan":[22.635788, 110.17923],  // 华南 南宁 玉林万达广场
+                "dongnan":[26.657907, 119.545678], //东南 福州 宁德万达广场
+                "xinan":[ 28.749998, 104.648788]   // 西南 成都 宜宾万达广场
             },
             legendList:[
                 {color: "#FDE3E2", num:'≥200'},
@@ -246,7 +244,6 @@ export default {
                 {color: "#E1F2FF", num:'1-9'},
                 {color: "#E1F2FF", num:'0'},
             ],
-            
             plazaInfoCount:{},
             systemList:[],
             currentZone:{},   // 
@@ -256,129 +253,17 @@ export default {
             state: '',
             value: 190,
             currentPanel:'',
-            regulateDistrictData: [
-            ],
+            regulateDistrictData: [],
             projectsCode:[],
-            maintainList:[
-                // {
-                //     title:'维保',
-                //     expand:0,
-                //     subList:[
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:31,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:11,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:41,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //     ]
-                // },
-                // {
-                //     title:'第三方检测33',
-                //     expand:0,
-                //     subList:[
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //     ]
-                // },
-                // {
-                //     title:'专维',
-                //     expand:0,
-                //     subList:[
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //         {
-                //             name:'华南运营中心', 
-                //             num1:81,
-                //             num2:128
-                //         },
-                //     ]
-                // },
-            ],
+            maintainList:[],
+            circleSize:{
+                5:{innder:15000,outer:30000, offset:0.8},
+                7:{innder:8000,outer:16000, offset:0.3},
+                8:{innder:4000,outer:8000, offset:0.14},
+                9:{innder:2000,outer:4000, offset:0.08},
+                10:{innder:1000,outer:2000, offset:0.04},
+                11:{innder:1000,outer:2000, offset:0.04},
+            }
         }
     },
     computed: {
@@ -399,10 +284,29 @@ export default {
         this.getEventStatusData()
     },
     methods: {
+ 
         imgSrc(code) {
             return require('../../assets/images/icons/' + code + '.png')
         },
         /**
+         * 跳转到 当月说明书更新项目数量
+         */ 
+        navToIntroduceUpdate () {
+            // this.$router.push({path:''})
+        },
+        /**
+         * 跳转到 上线管理说明书数量
+         */
+        navToManageNumber () {
+            // this.$router.push({path:''})
+        },
+        /**
+         * 跳转到 当月重点关注事项项目数量
+         */
+        navToFocusItems () {
+            // this.$router.push({path:''})
+        },
+        /**
          * 通过导航进行导航
          * 
          */
@@ -420,6 +324,7 @@ export default {
             }
             this.crumbsHtml = this.crumbsHtml.splice(0, index + 1)
         },
+<<<<<<< HEAD
         /**
          * 获取事项状态统计数据
          */
@@ -706,6 +611,8 @@ export default {
             }
             this.currentZone = data
         },
+=======
+>>>>>>> develop-map
          // 获取 区域/中心/项目
         selectProjectItem (ids, data) {
             this.createNavpathByData(data)
@@ -713,25 +620,14 @@ export default {
             let JSONName  = data.cname
             let level = data.level   // //1集团 2中心 3区域 0广场
             if (level === 1) {
-                this.pantGroupMap(data,"1001")
+                this.pantGroupMap(data,this.currentSysId)
             } else if (level === 2) {
-                this.pantZonesMap(data, '1001')
+                this.pantZonesMap(data, this.currentSysId)
             } else if (level === 3) {
                 let res = this.provinceCities[JSONName]
-                this.clearAllLayers()
-                let data = require(`../../assets/provinceData/${res.province}.json`)
-                let layer = L.geoJSON(data.features,{
-                    style:function(){
-                        return {
-                            'weight': 1,
-                            'color': 'black',
-                            'fillColor':'red'
-                        }
-                    }
-                }).addTo(maps);
-                this.panTo(res.center, 7)
+                this.pantProjectsMap(data, this.currentSysId)
             } else {   // 点击广场时 直接跳转到详情页  地图不用响应
-                // this.$router.push({path:"/"})
+                this.pantPlazaMap(data, this.currentSysId, true)
             }
         },
        //查询项目信息统计数量
@@ -750,7 +646,9 @@ export default {
                 }
             })
         },
-        //** */
+        /**
+         * 根据id 查找数据
+         */
         getDataByCityCcode (id) {
             return recursionFindData(this.currentDistrictData, id)
             let target = null 
@@ -800,6 +698,7 @@ export default {
                 }
             })
         },
+<<<<<<< HEAD
           //初始化地图
         initMap() {
             let that = this;
@@ -864,6 +763,9 @@ export default {
                 return 4
             }
         },
+=======
+
+>>>>>>> develop-map
         toggerPanel (item) {
             this.currentPanel = item.title
             // expand 0 初始状态  1 展开状态 2 隐藏状态
@@ -893,9 +795,14 @@ export default {
         /**
          * 计算长度
          */
-        barStyle(item) {
+        barStyle(item, title) {
             let type = item.type
-            let ratio = (item.unfinished/ item.total ) * 100 
+            let ratio = 0
+            if (title === '专维') {
+                ratio = ( (item.unfinished + item.due_num) / item.total ) * 100 
+            } else {
+                ratio = (item.unfinished/ item.total ) * 100 
+            }
             let bg = ''
             if ( type === 0) {
                 bg = "linear-gradient(to right, #F54E45 , #F54E45)"
@@ -918,28 +825,26 @@ export default {
                 border:''
             }
             if (data >= 200) {
-                color.area = "#FDE3E2"
-                color.border = "#FBBFBC"
+                color.area = "#F54E45"
+                color.border = "rgba(245,78,69,0.2)"
             } else if (data >= 100 && data < 200) {
-                color.area = "#FEE9D2"
-                color.border = "#FFBA6B"
+                color.area = "#F58300"
+                color.border = "rgba(245,131,0,0.2)"
             } else if (data>=50 && data<100) {
-                color.area = "#FFF6EB"
-                color.border = "#F7DC82"
+                color.area = "#FFBA6B"
+                color.border = "rgba(255,186,107,0.2)"
             } else if (data >= 10 && data< 50) {
-                color.area = "#CCE9FF"
-                color.border = "#4EB1FD"
+                color.area = "#0091FF"
+                color.border = "rgba(0,145,255,0.2)"
             } else if (data>= 1 && data <10) {
-                color.area = "#E1F2FF"
-                color.border = "#82C7FC"
+                color.area = "#82C7FC"
+                color.border = "rgba(130,199,25,0.2)"
             } else {
                 color.area = "#EEEEEE"
                 color.border = "#CCC"
             }
             return color
         },
-        
-        
         currentTime() {
             this.times = moment().format('YYYY.MM.DD HH:mm')
             setTimeout(this.currentTime, 1000)
@@ -975,6 +880,7 @@ export default {
                         res.data.forEach(item => {
                             item.selected = false
                         })
+                        res.data[0].selected = true
                         this.currentSelectedSys = res.data[0]
                         this.currentSysId = res.data[0].smsxt
                         this.systemList = res.data
@@ -982,6 +888,390 @@ export default {
                 }
             })
         },
+        /**
+         * 获取事项状态统计数据
+         */
+        getEventStatusData () {
+            let params = {
+                getParams: {
+                    "level":1,
+                    "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") {
+                                obj.title = "专维"    
+                                sortData.forEach(item=>{
+                                    item.sort = item.rptGlsmsStatistics.due_num + item.rptGlsmsStatistics.unfinished
+                                })
+                            } else if (key == "1") {
+                                obj.title = "维保"
+                                sortData.forEach(item=>{
+                                    item.sort = item.rptGlsmsStatistics.due_num 
+                                })
+                            } else {
+                                obj.title = "第三方检测"
+                                sortData.forEach(item=>{
+                                    item.sort = item.rptGlsmsStatistics.due_num 
+                                })
+                            }
+                            let final = sortBy(sortData, (option) => {return option.sort})
+                            obj.data =  final.reverse()
+                            obj.expand = 0
+                        }
+                        arr.push(obj)
+                    }
+                    this.maintainList = arr
+                }
+            })
+        },
+          //初始化地图
+        initMap() {
+            let that = this;
+            maps = L.map("map", {        
+                center: new L.LatLng(38, 103),
+                zoom: 4,
+                crs: L.CRS.EPSG3857,
+                minZoom: 3,
+                maxZoom: 14,
+                zoomControl: false,
+                attributionControl: false,
+                contextmenu: true,
+                contextmenuWidth: 140,
+            })
+            maps.on('click', (ev)=>{
+            })
+            maps.on('zoomend', (ev)=>{
+            })
+            let JsonData = require("../../assets/geoData/china.json")
+            let layer = L.geoJSON(JsonData.features, {
+                style:function(){
+                    return {
+                        'weight': 1,
+                        'color': '#B3D2FF',
+                        'fillColor':'#DEECFF' 
+                    }
+                }
+            }).addTo(maps);
+            if(this.currentLevel === 1) {   //1集团 3区域 0广场
+                this.pantGroupMap(this.currentDistrictData[0], this.currentSysId)
+            } else if (this.currentLevel === 2) {  // 2中心 
+                this.pantZonesMap(this.currentDistrictData[0], this.currentSysId)
+            } else if (this.currentLevel === 0) {
+                this.pantProjectsMap(this.currentDistrictData[0], this.currentSysId)
+            }
+        },
+        //**清空地图 并添加全国底图*/
+        clearAllLayers(){
+            maps.eachLayer(function(layer){
+                maps.removeLayer(layer)
+            })
+            let JsonData = require("../../assets/geoData/china.json")
+            let layer = L.geoJSON(JsonData.features, {
+                style:function(){
+                    return {
+                        'weight': 1,
+                        'color': '#B3D2FF',
+                        'fillColor':'#DEECFF' 
+                    }
+                }
+            }).addTo(maps);
+        },
+        /**
+         * 移动地图到指定中心
+         */
+        panTo(center, zoom){
+            maps.setView(center, zoom)
+        },
+        /**
+         * 切换系统时 地图响应
+         * @params  system:当前选择的系统
+         */
+        getInfoOfProject (system) {
+            this.systemList.forEach(item=>{ item.selected = false})
+            system.selected = true
+            this.currentSelectedSys = system
+            this.currentSysId = system.smsxt
+            //1集团 2中心 3区域 0广场
+            if(this.currentLevel === 1) {   //1集团 3区域 0广场
+                this.pantGroupMap(this.currentDistrictData[0], system.smsxt)
+            } else if (this.currentLevel === 2) {  // 2中心 
+                this.pantZonesMap(this.currentDistrictData[0], system.smsxt)
+            } else if (this.currentLevel === 0) {
+                this.pantProjectsMap(this.currentDistrictData[0], system.smsxt)
+            }
+        },
+        // 用于绘制集团地图
+        pantGroupMap (data, sysId) {
+            maps.setView([38,103],4)
+            this.clearAllLayers() 
+            let that = this
+            let groupLayer = new L.layerGroup()
+            let promiseAll = []
+            let layerArr= [] 
+            data.children.forEach(item=>{
+                let promise = new Promise((resolve, reject) => {
+                    let params = {
+                        getParams: {
+                            // "plazaId":1000423,
+                            "smsxt":  sysId,   //TODO that.systemList[0].smsxt  
+                            "level":1,
+                            "ccode":item.ccode
+                        }
+                    }
+                    querySystemCard(params).then(res => {
+                        if (res.result === "success") {
+                            let num = 0
+                            let name = item.cname.substr(0,2)
+                            if (res.data) {
+                                let equip = res.data[0]
+                                if (equip.assetTypeList) {
+                                    equip.assetTypeList.forEach(item => {
+                                        if (item.is_exception_num) {
+                                            num += item.is_exception_num
+                                        }
+                                    })
+                                    layerArr.push({
+                                        name,
+                                        num,
+                                        list:equip,
+                                        data: item,
+                                        marker:null
+                                    })
+                                }  
+                                resolve(item)
+                            }
+                        }
+                    })
+                })
+                promiseAll.push(promise)
+            })
+            Promise.all(promiseAll).then(result=>{
+                setTimeout(()=>{
+                    layerArr.forEach(item => {
+                        let color = that.paintColorByData(item.num)
+                        let contentHtml = ''
+                        let popup = null
+                        let zone = this.zoneNames[item.name]
+                        let center = this.zoneCenter[zone]
+                      
+                        if (color && zone && center) {
+                            let myIcon = L.divIcon({
+                                html: item.name,
+                                className: 'my-leaflet-div-icon',
+                                iconSize:30
+                            })
+                            contentHtml= that.createPopupHtmlContent(item.list.assetTypeList)
+                           
+                            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)
+                        
+                            item.marker.on('click', (ev)=>{
+                                groupLayer.clearLayers()
+                                this.createNavpathByData(item.data)
+                                this.pantZonesMap(item.data,sysId)
+                            })
+                        }
+                    })
+                    groupLayer.addTo(maps)
+                },200)
+            })
+        },
+       
+        /**
+         * 用于绘制中心下的地图
+         */
+        pantZonesMap (data, sysId) {
+            this.clearAllLayers()
+            let name = data.cname.substr(0,2)
+            let zone = this.zoneNames[name]
+            this.panTo(this.zoneCenter[zone], 6)
+            let that = this
+            let groupLayer = new L.layerGroup() 
+            data.children.forEach(item=>{
+                let params = {
+                    getParams: {
+                        // "plazaId":1000423,
+                        "smsxt":  sysId,   //TODO that.systemList[0].smsxt  
+                        "level": 2,
+                        "ccode":item.ccode
+                    }
+                }
+                querySystemCard(params).then(res => {
+                    if (res.result === "success") {
+                        let city = that.provinceCities[item.cname]
+                        let num = 0
+                        let contentHtml = ''
+                        let marker = null
+                        let popup = null
+                        let color = ""
+                        let center = city.center
+                        let myIcon = L.divIcon({
+                            html:  item.cname,
+                            className: 'my-leaflet-div-icon',
+                            iconSize:30
+                        })
+                        if (res.data) {
+                            let equip = res.data[0]
+                            if (equip.assetTypeList.length > 3) {
+                                equip.assetTypeList = equip.assetTypeList.splice(0,3)
+                            }
+                            contentHtml= that.createPopupHtmlContent(equip.assetTypeList)
+                            if (equip.assetTypeList) {
+                                equip.assetTypeList.forEach(item => {
+                                    if (item.is_exception_num) {
+                                        num += item.is_exception_num
+                                    }
+                                })
+                            }
+                        }
+                        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);
+                        }
+                        groupLayer.addTo(maps)
+                        marker.on('click', (ev)=>{
+                            groupLayer.clearLayers()
+                            this.pantProjectsMap(item,sysId)
+                            this.createNavpathByData(item)
+                            
+                        })
+                    }
+                })
+            })
+        },
+        /***
+         * 用于绘制项目的点
+         */
+        pantProjectsMap (data,sysId) {
+            this.clearAllLayers()
+            let geo = this.provinceCities[data.cname]
+            this.panTo(geo.center, geo.zoom)
+            data.children.forEach(item=>{
+                this.pantPlazaMap(item, sysId)
+            })
+        },
+        /**
+         * 用于绘制广场的点
+         */
+        pantPlazaMap (item, sysId , flag) {
+            let that = this
+            let center = [item.latitude , item.longitude]
+            if (flag) {
+                this.clearAllLayers()
+                this.panTo(center,11)
+            }
+            let params = {
+                    getParams: {
+                    // "plazaId":1000423,
+                    "smsxt":  sysId,   //TODO that.systemList[0].smsxt  
+                    "level": 0,
+                    "ccode":item.ccode
+                }
+            }
+            querySystemCard(params).then(res => {
+                if (res.result === "success") {
+                    let num = 0
+                    let contentHtml = ''
+                    let marker = null
+                    let popup = null
+                    let color = ""
+                    if (item.latitude && item.longitude) {
+                        let myIcon = L.divIcon({
+                            html:  item.cname,
+                            className: 'my-leaflet-div-icon',
+                            iconSize:30
+                        })
+                        if (res.data) {
+                            let equip = res.data[0]
+                            if (equip.assetTypeList.length > 3) {
+                                equip.assetTypeList = equip.assetTypeList.splice(0,3)
+                            }
+                            contentHtml= that.createPopupHtmlContent(equip.assetTypeList)
+                            if (equip.assetTypeList) {
+                                equip.assetTypeList.forEach(item => {
+                                    if (item.is_exception_num) {
+                                        num += item.is_exception_num
+                                    }
+                                })
+                            }
+                        }
+                       
+                        color = that.paintColorByData(num)
+                        let zoom = maps.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.on("click", (ev) => {
+                            // that.$router.push({path:'./'})
+                        })
+                    }
+                }
+            })
+            
+        },
+         /**
+         * 生成弹框HTML 
+         */
+        createPopupHtmlContent (data) {
+            if (Array.isArray(data) && data.length) {
+                let that = this
+                let html = ""
+                for (let i =0 ; i < data.length; i++) {
+                    let item = data[i]
+                    if (item.is_exception_num) {
+                        html += `<div class="line">
+                            <span>${item.category_name}</span> 
+                            <span>${item.asset_num || '--'}台</span>
+                            <span><span style="display: inline-block;width: 16px;height: 16px;line-height: 16px;border-radius: 8px; color: white; background : #F54E45;text-align: center;cursor: default;">!</span><em>${item.is_exception_num}</em></span>
+                        </div>`
+                    } else {
+                         html += `<div class="line">
+                            <span>${item.category_name}</span> 
+                            <span>${item.asset_num || '--'}台</span>
+                        </div>`
+                    }
+                }
+                return `<div class="leaflet-mypopup-content">
+                <div class="title"><span>${that.currentSelectedSys.smsxtname}</span>-<span>${that.currentZone.cname}</span></div>
+                   ${html}</div>`
+            } else {
+                return ""
+            }
+        },
+        /**
+         * 根据数据创建导航路径
+         */
+        createNavpathByData (data) {
+            if (data.level === 1) {
+                this.crumbsHtml = []
+            } else {
+                let pathArr = data.path.split("/")
+                let newArr = []
+                pathArr.forEach(item => {
+                    newArr.push(item.split("&"))
+                })
+                this.crumbsHtml = newArr
+            }
+            this.currentZone = data
+        },
+        
     },
     components: {}
 }