From d12e030d8a7690d79c5786bc2a786b6c21a24433 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 18 Jun 2021 16:31:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/pyhmap

---
 widgets/LeftNavigationBar/Widget.js |  404 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 219 insertions(+), 185 deletions(-)

diff --git a/widgets/LeftNavigationBar/Widget.js b/widgets/LeftNavigationBar/Widget.js
index de6441b..d12bce2 100644
--- a/widgets/LeftNavigationBar/Widget.js
+++ b/widgets/LeftNavigationBar/Widget.js
@@ -37,7 +37,7 @@
 				$('.left-navigation-bar-but').click(() => {
 					this.changeImg = !this.changeImg;
 					if (this.changeImg) {
-						$('.l-n-b-b-img').attr("src", "../../images/addL/xzuo.png"); //打开
+						$('.l-n-b-b-img').attr("src", "./images/addL/xzuo.png"); //打开
 						$('.jimu-widget-LeftNavigationBar').css({
 							'left': '0px'
 						});
@@ -45,7 +45,7 @@
 							'left': '260px'
 						});
 					} else {
-						$('.l-n-b-b-img').attr("src", "../../images/addL/xyou.png"); //关闭
+						$('.l-n-b-b-img').attr("src", "./images/addL/xyou.png"); //关闭
 						$('.jimu-widget-LeftNavigationBar').css({
 							'left': '-250px'
 						});
@@ -61,65 +61,7 @@
 				});
 
 				$('#left-navigation-bar-main-search').click(() => { //搜索事件
-					var val = $('#left-navigation-bar-main-input').val();
-					if (val != '') {
-						var clearOur = () => {
-								let dom = $(`[data-id]`);
-								dom.removeClass('layui-tree-spread');
-								let domDiv = dom.find('.layui-tree-pack');
-								domDiv.css({
-									'display': 'none'
-								})
-							},
-							a, useit = (d) => {
-								for (var k in d) {
-									if (d[k].who == 'father') {
-										that.father = d[k].id;
-									}
-									if (d[k].title.indexOf(val) != -1) { //选中id
-										a = '' + d[k].id;
-										// var b = a.split('');
-										// for (var i in b) {
-										let id = that.father; //选中项的所有父级id
-										let dom = $(`[data-id='${id}']`);
-										dom.addClass('layui-tree-spread');
-										let domDiv = dom.find('.layui-tree-pack').eq(0);
-										domDiv.css({
-											'display': 'block'
-										})
-										// }
-									}
-									if (d[k].children) {
-										useit(d[k].children);
-									}
-								}
-							};
-						that.changeData(that.dataAllArray, val); //重写数据
-						layui.use('tree', function () {
-							layui.tree.reload('demoId1', {
-								data: that.data
-							});
-							var jqDom = $("#left-tree-list > .layui-tree > div");
-
-							for (var i = 0; i < jqDom.length; i++) {
-								if ($(jqDom[i]).text().indexOf("三维倾斜数据") != -1) {
-									$(jqDom[i]).find('.layui-btn-group').remove()
-								}
-
-								var textList = $(jqDom[i]).find('.layui-tree-txt');
-
-								for (var j = 0; j < textList.length; j++) {
-									$(textList[j]).attr('title', $(textList[j]).text())
-
-								}
-
-							}
-
-							clearOur();
-							useit(that.data);
-						})
-
-					} else {}
+					leftSearchItemLayer()
 				})
 
 				$(".jimu-widget-LeftNavigationBar input[type='search']").bind('input propertychange', function () {
@@ -136,9 +78,6 @@
 							var jqDom = $("#left-tree-list > .layui-tree > div");
 
 							for (var i = 0; i < jqDom.length; i++) {
-								if ($(jqDom[i]).text().indexOf("三维倾斜数据") != -1) {
-									$(jqDom[i]).find('.layui-btn-group').remove()
-								}
 
 								var textList = $(jqDom[i]).find('.layui-tree-txt');
 
@@ -153,9 +92,71 @@
 
 				})
 
-				$(".jimu-widget-LeftNavigationBar .tree-layer-opcity .close").click(function () {
-					$(".jimu-widget-LeftNavigationBar .tree-layer-opcity").stop().hide();
+				$(".jimu-widget-LeftNavigationBar input[type='search']").keyup(function (e) {
+					if (e.keyCode == 13) {
+						leftSearchItemLayer()
+					}
 				})
+
+				function leftSearchItemLayer() {
+					var val = $('#left-navigation-bar-main-input').val();
+					if (val != '') {
+						var clearOur = () => {
+								let dom = $(`[data-id]`);
+								dom.removeClass('layui-tree-spread');
+								let domDiv = dom.find('.layui-tree-pack');
+								domDiv.css({
+									'display': 'none'
+								})
+							},
+							a, useit = (d) => {
+								for (var k in d) {
+									if (d[k].who == 'father') {
+										that.father = d[k].id;
+									}
+									if (d[k].title && d[k].title.indexOf(val) != -1) { //选中id
+										a = '' + d[k].id;
+										// var b = a.split('');
+										// for (var i in b) {
+										let id = that.father; //选中项的所有父级id
+										let dom = $(`[data-id='${id}']`);
+										dom.addClass('layui-tree-spread');
+										let domDiv = dom.find('.layui-tree-pack').eq(0);
+										domDiv.css({
+											'display': 'block'
+										})
+										// }
+									}
+									if (d[k].children && d[k].children.length > 0) {
+										useit(d[k].children);
+									}
+								}
+							};
+
+						that.changeData(that.dataAllArray, val); //重写数据
+						layui.use('tree', function () {
+							layui.tree.reload('demoId1', {
+								data: that.data
+							});
+							var jqDom = $("#left-tree-list > .layui-tree > div");
+
+							for (var i = 0; i < jqDom.length; i++) {
+
+								var textList = $(jqDom[i]).find('.layui-tree-txt');
+
+								for (var j = 0; j < textList.length; j++) {
+									$(textList[j]).attr('title', $(textList[j]).text())
+
+								}
+
+							}
+
+							clearOur();
+							useit(that.data);
+						})
+
+					}
+				}
 			},
 
 			closeToolBox: function (item) {},
@@ -198,6 +199,7 @@
 				})
 			},
 			changeData: function (val, type) { //重写数据
+				var that = this;
 				var data = [],
 					i = 1,
 					inits = (d, childData) => {
@@ -219,7 +221,11 @@
 								checked: d[k].menuStatus
 							}
 
-							if (d[k].serviceUrl.indexOf('.openrealspace') != -1) {
+							if (that[d[k].id]) {
+								a.alpha = that[d[k].id].alpha
+							}
+
+							if (d[k].serviceUrl && d[k].serviceUrl.length > 0 && d[k].serviceUrl.indexOf('.openrealspace') != -1) {
 								a.model = true
 							}
 
@@ -227,10 +233,21 @@
 								a.model = true
 							}
 
+							if (a.model) {
+
+								if (that[a.id]) {
+									Cesium.when(that[a.id], function (layer) {
+										that.map.scene.layers.remove(layer[0].name)
+									})
+								}
+
+							}
+
+						
 
 							b.push(a);
 							i++;
-							if (d[k].children.length != 0) {
+							if (d[k].children && d[k].children.length > 0) {
 								b[k].children = [];
 								b[k].who = 'father';
 								inits(d[k].children, b[k].children)
@@ -239,18 +256,6 @@
 
 					};
 				inits(val, data);
-
-				// var i = 0,
-				// 	ccinit = (a) => {
-				// 		i++;
-				// 		for (let k in a) {
-				// 			if (a[k].children) {
-				// 				a[k].who = i;
-				// 				ccinit(a[k].children)
-				// 			}
-				// 		}
-				// 	};
-				// ccinit(this.data);
 
 				if (type != '') {
 
@@ -262,12 +267,26 @@
 
 							function deWeight() {
 								for (var j = 0; j < data[i].children.length; j++) {
-									if (data[i].children[j].title.indexOf(type) == -1) {
+
+									if (data[i].children[j].checked == true) {
+										var small = data[i].children[j];
+										if (small.model) {
+											that.map.scene.globe.depthTestAgainstTerrain = false;
+											var host = that.returnStr(small.src).host;
+											var scene = that.map.scene;
+											var partOfUrl = that.returnStr(small.src).partOfUrl;
+											//添加S3M图层服务
+											that[small.id] = scene.open(host + partOfUrl);
+										}
+									}
+
+									if (data[i].children[j].title && data[i].children[j].title.indexOf(type) == -1) {
 										data[i].children.splice(j, 1);
 										deWeight();
 										break;
 
 									}
+
 								}
 							}
 
@@ -299,6 +318,25 @@
 						}
 					}
 
+				}
+
+				var keyId = this.getUrlKeyId("serviceId");
+
+				if (keyId && keyId != "") {
+					for (var i = 0; i < data.length; i++) {
+
+						if (data[i].id == keyId) {
+							data[i].checked = true
+						}
+
+						for (var j = 0; j < data[i].children.length; j++) {
+
+							if (data[i].children[j].id == keyId) {
+								data[i].children[j].checked = true
+							}
+
+						}
+					}
 				}
 
 
@@ -342,9 +380,8 @@
 						},
 						showLine: false, //是否开启连接线
 						oncheck: function (obj) {
-							// console.log(obj.data.id, '--', obj.checked, obj); //得到当前点击的节点数据
-							// console.log(obj.checked); //得到当前节点的展开状态:open、close、normal
-							// console.log(obj.elem); //得到当前节点元素
+
+							var keyId = that.getUrlKeyId("serviceId");
 
 							if (obj.data.children && obj.data.children.length > 0) {
 
@@ -391,20 +428,38 @@
 											});
 										});
 									} else {
-										obj.data.children.forEach(item => {
-											$.ajax({
-												url: item.src + '/maps.json',
-												type: 'get',
-												dataType: 'JSON',
-												success: function (res) {
 
-													that[item.id] = that.map.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
-														url: res[0].path,
-													}));
-													that[item.id].alpha = item.alpha
-												}
-											})
+										obj.data.children.forEach(item => {
+
+											if (that[item.id]) {
+												that[item.id].show = true
+												topic.publish('appendItem', 'Layermanagement', item, that[item.id]);
+											} else {
+												$.ajax({
+													url: item.src + '/maps.json',
+													type: 'get',
+													dataType: 'JSON',
+													success: function (res) {
+
+
+														that[item.id] = that.map.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
+															url: res[0].path,
+														}));
+														topic.publish('appendItem', 'Layermanagement', item, that[item.id]);
+														that[item.id].alpha = item.alpha
+
+														if (keyId && keyId != "") {
+															that[item.id].getViewableRectangle().then(function (rectangle) {
+																return that.map.camera.flyTo({
+																	destination: rectangle
+																});
+															});
+														}
+													}
+												})
+											}
 										});
+
 
 									}
 
@@ -422,7 +477,10 @@
 										});
 									} else {
 										obj.data.children.forEach(item => {
-											if (that[item.id]) that.map.imageryLayers.remove(that[item.id]);
+											if (that[item.id]) {
+												topic.publish('removeItem', 'Layermanagement', item);
+												that[item.id].show = false;
+											}
 										});
 
 									}
@@ -438,12 +496,14 @@
 								if (obj.checked == true) {
 
 									if (obj.data.model) {
+										that.map.scene.globe.depthTestAgainstTerrain = false;
 										var host = that.returnStr(obj.data.src).host;
 										var scene = that.map.scene;
 										var partOfUrl = that.returnStr(obj.data.src).partOfUrl;
 										//添加S3M图层服务
 										that[obj.data.id] = scene.open(host + partOfUrl);
 										//定位到场景
+
 										Cesium.loadJson(host + partOfUrl + '/scenes.json').then(function (scenes) {
 											// var sname = scenes[0].name;
 											// Cesium.loadJson(host + partOfUrl + '/scenes/' + sname + '.json').then(function (jsonData) {
@@ -473,18 +533,37 @@
 
 									} else {
 
-										$.ajax({
-											url: obj.data.src + '/maps.json',
-											type: 'get',
-											dataType: 'JSON',
-											success: function (res) {
+										if (that[obj.data.id]) {
+											that[obj.data.id].show = true;
+											topic.publish('appendItem', 'Layermanagement', obj.data, that[obj.data.id]);
+										} else {
+											$.ajax({
+												url: obj.data.src + '/maps.json',
+												type: 'get',
+												dataType: 'JSON',
+												success: function (res) {
 
-												that[obj.data.id] = that.map.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
-													url: res[0].path,
-												}));
-												that[obj.data.id].alpha = obj.data.alpha
-											}
-										})
+
+													that[obj.data.id] = that.map.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
+														url: res[0].path,
+													}));
+
+													topic.publish('appendItem', 'Layermanagement', obj.data, that[obj.data.id]);
+
+													that[obj.data.id].alpha = obj.data.alpha
+
+													if (keyId && keyId != "") {
+														that[obj.data.id].getViewableRectangle().then(function (rectangle) {
+															return that.map.camera.flyTo({
+																destination: rectangle
+															});
+														});
+													}
+												}
+											})
+										}
+
+
 
 									}
 
@@ -497,7 +576,11 @@
 										})
 
 									} else {
-										that.map.imageryLayers.remove(that[obj.data.id]);
+
+										if (that[obj.data.id]) {
+											topic.publish('removeItem', 'Layermanagement', obj.data);
+											that[obj.data.id].show = false;
+										}
 
 									}
 
@@ -507,90 +590,35 @@
 
 
 							}
+
+							for (var i = 0; i < that.dataAllArray.length; i++) {
+
+								if (obj.data.id == that.dataAllArray[i].id) {
+									that.dataAllArray[i].menuStatus = 1;
+									break
+								}
+
+								if (that.dataAllArray[i].children && that.dataAllArray[i].children.length > 0) {
+
+									for (var j = 0; j < that.dataAllArray[i].children.length; j++) {
+
+										if (obj.data.id == that.dataAllArray[i].children[j].id) {
+											that.dataAllArray[i].children[j].menuStatus = 1;
+											break
+										}
+
+									}
+								}
+
+							}
 						},
-						edit: ['add'],
 						operate: function (obj) {
 							var type = obj.type; //得到操作类型: add、edit、 del
 							var data = obj.data; //得到当前节点的数据
 							var elem = obj.elem; //得到当前节点元素var deptId = data.id;//得到节点索引var parentId = data.parentId;l/父节点
 							var depId = data.id;
 							var parentId = data.parentId;
-							if (type == 'add') {
 
-								$(".jimu-widget-LeftNavigationBar .tree-layer-opcity ul").empty();
-
-								// console.log(type, data, elem, depId, parentId)
-
-								if (data.children) {
-
-									data.children.forEach(item => {
-										var liC = `<li>
-										<div title="${item.title}">
-											${item.title}
-										</div>
-										<div id="${item.id + 'Layer'}">
-
-										</div>
-									</li>`;
-
-										$(".jimu-widget-LeftNavigationBar .tree-layer-opcity ul").append(liC)
-
-										$(".jimu-widget-LeftNavigationBar .tree-layer-opcity").stop().show();
-										slider.render({
-											elem: '#' + item.id + 'Layer',
-											min: 0,
-											max: 10,
-											value: item.alpha * 10,
-											step: 1,
-											theme: '#1E9FFF',
-											setTips: function (value) { //自定义提示文本
-												return value / 10;
-											},
-											change: function (value) {
-												item.alpha = value / 10
-												if (that[item.id]) {
-													that[item.id].alpha = item.alpha
-												}
-											}
-										});
-									})
-
-								} else {
-									var liC = `<li>
-										<div title="${data.title}">
-											${data.title}
-										</div>
-										<div id="${data.id + 'Layer'}">
-
-										</div>
-									</li>`;
-
-									$(".jimu-widget-LeftNavigationBar .tree-layer-opcity ul").append(liC)
-
-									$(".jimu-widget-LeftNavigationBar .tree-layer-opcity").stop().show();
-									slider.render({
-										elem: '#' + data.id + 'Layer',
-										min: 0,
-										max: 10,
-										value: data.alpha * 10,
-										step: 1,
-										theme: '#1E9FFF',
-										setTips: function (value) { //自定义提示文本
-											return value / 10;
-										},
-										change: function (value) {
-											data.alpha = value / 10
-											if (that[data.id]) {
-												that[data.id].alpha = data.alpha
-											}
-										}
-									});
-
-
-								}
-
-
-							}
 						}
 
 					});
@@ -934,6 +962,12 @@
 					}]
 				}],
 			}],
+			getUrlKeyId: function (name) {
+				var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
+				var r = window.location.search.substr(1).match(reg);
+				if (r != null) return decodeURI(r[2]);
+				return null;
+			},
 			destroy: function () {
 				//销毁的时候触发
 				//todo

--
Gitblit v1.9.3