123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- (function() {
- var rs = [], //最新的结果
- page = 1, // 当前分页索引
- pageSize = 100, // 每页条数
- diseaseType = "",
- diseaseCondition = "",
- colorMap = {
- "0": ["#19ff8a"], // 绿标
- "1": ["#ffae32"], // 黄标
- "2": ["#ff2f6a"], // 红标
- "-1": ["#aadeff"], // 没有标注
- }
-
- var flashTimer = null
-
- Vue.component('device-map', {
- template: '<div id="mapWrap">\
- <div v-show="percent<100" style="position: absolute;top: 50%;left: 50%;z-index: 999999;margin-left: -50px;">\
- <div class="sk-spinner sk-spinner-chasing-dots">\
- <div class="sk-dot1"></div>\
- <div class="sk-dot2"></div>\
- </div>\
- <div style="color: #fff;margin-top: 10px;">加载中({{percent}}%)...</div>\
- </div>\
- <div id="allmap"></div>\
- </div>',
- props: [],
- data: function() {
- return {
- percent: 0,
- points: [],
- map: null
- }
- },
- computed: {
- },
- methods: {
- initMap: function() {
- var vm = this
- // 百度地图API功能
- var map = new BMap.Map("allmap", {enableMapClick: false});
- map.centerAndZoom(new BMap.Point(118.10,24.46),13);
- map.enableScrollWheelZoom();
- var mapStyle ={
- style : "midnight" //设置地图风格为高端黑
- }
- map.setMapStyle(mapStyle);
- // //单击获取点击的经纬度
- map.addEventListener("click",function(e){
- map.setCenter(new BMap.Point(e.point.lng, e.point.lat))
-
- map.setZoom(18)
- var pts = vm.filterByLocation(e.point.lng , e.point.lat)
-
- if(vm.percent == 100) {
- var idcards = _.pluck(pts,"idCard").join(",")
- if(idcards) {
- intelligentAPI.searchPatient({
- idcards: idcards
- }).then(function(res) {
- if(res.status == 200) {
- EventBus.$emit('update-patient-info', {
- patientData: JSON.stringify(res.data)
- })
- }
- })
- }
- }
-
-
- setTimeout(function() {
- map.panTo(new BMap.Point(e.point.lng, e.point.lat));
- }, 300)
- });
- // map.addEventListener("tilesloaded",function(){
- //
- // });
-
- vm.map = map
- window.map = map
-
- },
- getLocations: function() {
- var vm = this
- var pointArr = []
-
- intelligentAPI.findLocationByIdCard({
- pageSize: pageSize,
- page: page
- }).then(function(res) {
- if(res.status == 200) {
- pointArr = _.map(res.detailModelList, function(o) {
- o.lat = o.location.lat
- o.lng = o.location.lon
- o.lnglat = [o.location.lon, o.location.lat]
- o.type = 'circle',
- o.speed = 0.1,
- o.color = colorMap[o.diseaseCondition][0]
- o.max = 5
- return o
- })
-
- vm.points = vm.points.concat(pointArr)
-
- rs = vm.filterByDisease()
-
- window.clearTimeout(flashTimer)
- flashTimer = null
-
- flashTimer = setTimeout(function() {
- vm.initFlashMaker()
- }, 2000)
-
- vm.percent = ((page / Math.ceil(res.totalCount / pageSize))* 100).toFixed(2)
-
- if(vm.percent >= 100) {
- vm.percent = 100
- }
-
- if(Math.ceil(res.totalCount / pageSize) > page) {
- setTimeout(function() {
- page++
- vm.getLocations()
- }, 300)
- } else {
- vm.percent = 100
- }
- } else {
- setTimeout(function() {
- vm.getLocations()
- }, 300)
- }
- }).catch(function() {
- setTimeout(function() {
- vm.getLocations()
- }, 300)
- })
- },
- filterByLocation: function(lng,lat) {
- var vm = this
- var p1 = new BMap.Point(lng,lat);
- return _.filter(rs, function(o) {
- var p2 = new BMap.Point(o.lng,o.lat);
- return map.getDistance(p1,p2).toFixed(2) <= 100
- })
- },
- filterByDisease: function() {
- // diseaseType值(0:全部;1:高血压;2:糖尿病)
- // diseaseCondition(-1:无标签;0:绿标;1黄标;2红标)
- var vm = this
- if(diseaseType) {
- return _.filter(vm.points, function(o) {
- return (!diseaseCondition || o.diseaseCondition == diseaseCondition)
- && (diseaseType=="0" || (diseaseType == o.label))
- })
- } else {
- return vm.points
- }
-
- },
- initFlashMaker: function() {
- var vm = this
- map.clearOverlays()
- new FlashMarker(vm.map, rs)
- }
- },
- mounted: function() {
- var vm = this
- vm.initMap()
- vm.getLocations()
- EventBus.$on('device-map-filter', function(o) {
- diseaseType = o.diseaseType + ""
- diseaseCondition = o.diseaseCondition + ""
- rs = vm.filterByDisease()
- vm.initFlashMaker()
- });
- }
- })
- })()
|