Blame view

web/WebMvc/wwwroot/baseJs/projectMap.js 5.75 KB
赖素文 authored
1

2
let action = null;
3
let mapObj = null;
4
var app = null;
5
6
7
8
9
10
11
12
13
14
15
16
17
18
layui.config({
    base: "/js/",
    version: 1
}).use(['system'], function () {
    var form = layui.form,
        $ = layui.jquery,
        element = layui.element,
        table = layui.table,
        system = layui.system,
        sysU = new system.u(),
        sendDataWhere = null,
        areaName = "configure",
        controllerName = "BaseProject",
19
        vueApp = null;
20
21
22
23
24
25
26

    action = {

    }

    app = {
        data: {
27
            mapEle: "container",
28
29
        },
        methods: {
30
31
32
            /**
              * 初始化地图
             */
33
34
35
            initMap() {
                mapObj = mapApp(app.data.mapEle).initMap();
            },
36
37
38
            /**
              * 获取项目数据
             */
39
            getProjectDataList() {
40
                var ajaxConfig = {
41
                    data: { pageRequest: null, entity: { flag: "projectMapList" } },
42
43
44
                    url: `/configure/BaseProject/Load`,
                    success: function (result) {
                        if (sysU.successBefore(result)) return false;
45
46
47
                        app.methods.createMarkerInfo(result);
                        app.methods.initVueDataValue(result);
                        app.methods.createSidebarList(result);
48
49
50
51
                    }
                };
                sysU.ajax(ajaxConfig);
            },
52
53
54
            /**
              * 创建marker标注
             */
55
            createMarkerInfo(json) {
赖素文 authored
56
57
                json.Result.list.forEach(item => {
                    var content = `<h4 style = 'margin:0;'>地址:${item.projectAddress}</h4>
58
                                     设备总数:${item.eqCount}、
赖素文 authored
59
60
61
62
                                     在线:<span style='color:blue;'>${item.eqOnLineCount}</span>
                                     待机:${item.eqFreeCount}
                                     故障:${item.eqFailureCount}<br/>
                                     离线(5m):<span style='color:red;'>${item.eqOfflineCount}</span>
63
                                   <div style = 'display: flex;' >
64
                                      <div><a style='text-decoration: underline;color: blue;' onclick='app.methods.mapMarkerClick(${JSON.stringify(item)})'  href='#'>项目概述</a></div>
65
                                   </div >` ;//定义大标题  写html语句标签
66
                    mapObj.createMarkerInfo(content, {
67
                        title: "项目名称:" + item.projectName,
68
                        longitude: item.longitude,
69
70
                        latitude: item.latitude,
                        id: item.id
71
72
73
                    });
                })
            },
74
75
            mapMarkerClick(item) {
赖素文 authored
76
                debugger
赖素文 authored
77
78
                var url = `/configure/BaseProject/ProjectOverview?id=${item.id}&keys=${item.keys}&projectName=${item.projectName}`;
                var urlHtml = $(`<a title="项目概述"  data-url="${url}"><i class="layui-icon" data-icon=""></i><cite>项目概述</cite></a>`)
79
80
81

                localStorage.setItem("projectMapKeys", item.keys);
                localStorage.setItem("projectMapName", item.projectName);
赖素文 authored
82
83
84
85
86
87
88
                var tabsEle = window.parent.document.querySelectorAll("#top_tabs cite");
                for (var i = 0; i < tabsEle.length; i++) {
                    if (tabsEle[i].innerText == "项目概述") {
                        $(tabsEle[i]).next().click()
                        break;
                    }
                }
89
                window.top.tab.tabAdd(urlHtml);
90
91
92
93
94
95
            },
            /**
              * 创建右侧项目列表
             */
            createSidebarList(json) {
                var sidebarList = [];
96
                var index = 1;
赖素文 authored
97
                json.Result.list.forEach(item => {
98
                    var content = `<dd><a class='projectListA' onclick='app.methods.findLocateMarker(${item.id.toString()},event)' href="javascript:;">【${index++}】${item.projectName}</a></dd>`;//定义大标题  html语句标签
99
100
101
102
103
104
105
106
107
                    sidebarList.push(content)
                })
                if (sidebarList.length > 0) {
                    $(".sidebar-list-item").empty().append(sidebarList.join(" "))
                }
            },
            /**
              * 查找Marker并打开对应的infoWindow信息框
             */
108
            findLocateMarker(markerId, event) {
109
                mapObj.getLocateMarker(markerId);
110
111
                $(".projectListA").css("color", "rgba(255, 255, 255, .7)")
                $(event.currentTarget).css("color", "#42b983")
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
            },
            /**
              * 初始化vue
              */
            initVue: function () {
                vueApp = new Vue({
                    el: '.vueApp',
                    data: {
                        footer: {
                            projectCount: 0,
                            eqCount: 0,
                            eqOnlineRate: "",
                            eqTuoRate: "",
                        }
                    },
                    methods: {

                    }
                });
            },
            /**
              * vue 集合赋值
              */
赖素文 authored
135
            initVueDataValue: (result) => {
136
                var res = result.Result;
赖素文 authored
137
138
139
140
141
                vueApp.footer.projectCount = res.list.length;
                //设备总数
                vueApp.footer.eqCount = res.sumEqCount;
                vueApp.footer.eqOnlineRate = res.onlineRate;
                vueApp.footer.eqTuoRate = res.tuoShanRate;
142
143
144
            }
        },
        registerEvent: function () {
赖素文 authored
145
146

        },
147
148
        init: function () {
            app.methods.initMap();
149
150
            app.methods.initVue();
            app.methods.getProjectDataList();
151
            app.registerEvent();
赖素文 authored
152
        }
153
154
155
    };
    app.init();
});