|
@@ -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: {}
|
|
|
}
|