|
@@ -23,12 +23,17 @@
|
|
|
|
|
|
<template>
|
|
<template>
|
|
<div class="jt-layer">
|
|
<div class="jt-layer">
|
|
- <el-tree :data="treeData" :default-expanded-keys="expandedKeys" node-key="id" class="tree-line" :expand-on-click-node="false" ref="treeRef" @check-change="handleCheckChange" @node-click="handleClick">
|
|
|
|
|
|
+ <el-tree :data="treeData" :default-expanded-keys="expandedKeys" :default-checked-keys="checkedkeys"
|
|
|
|
+ node-key="id" class="tree-line" :expand-on-click-node="false" ref="treeRef"
|
|
|
|
+ @check-change="handleCheckChange" @node-click="handleClick">
|
|
<template #default="{ node, data }">
|
|
<template #default="{ node, data }">
|
|
<!-- 复选框 -->
|
|
<!-- 复选框 -->
|
|
- <el-checkbox v-if="data.ischeck === '1' && store.userport == 'PC'" v-model="node.checked" :indeterminate="node.indeterminate" :disabled="!!node.disabled" @change="handleCheckBoxChange($event, data, node)">
|
|
|
|
|
|
+ <el-checkbox v-if="data.ischeck == '1' && store.userport == 'PC'" v-model="node.checked"
|
|
|
|
+ :indeterminate="node.indeterminate" :disabled="!!node.disabled"
|
|
|
|
+ @change="handleCheckBoxChange($event, data, node)">
|
|
</el-checkbox>
|
|
</el-checkbox>
|
|
- <el-switch v-else-if="data.ischeck == 1 && store.userport == 'APP'" width="30rem" size="small" v-model="node.checked" @change="handleCheckBoxChange($event, data, node)" />
|
|
|
|
|
|
+ <el-switch v-else-if="data.ischeck == 1 && store.userport == 'APP'" width="30rem" size="small"
|
|
|
|
+ v-model="node.checked" @change="handleCheckBoxChange($event, data, node)" />
|
|
<span class="custom-tree-node">
|
|
<span class="custom-tree-node">
|
|
<!-- 字体、图标 -->
|
|
<!-- 字体、图标 -->
|
|
<!-- <span>
|
|
<!-- <span>
|
|
@@ -51,7 +56,8 @@
|
|
<!-- 透明度 -->
|
|
<!-- 透明度 -->
|
|
<template v-if="node.checked && data.opacity >0">
|
|
<template v-if="node.checked && data.opacity >0">
|
|
<div style="width: 80rem; padding: 0 20rem; position: absolute; right: 0">
|
|
<div style="width: 80rem; padding: 0 20rem; position: absolute; right: 0">
|
|
- <el-slider v-model="data.opacity" @input="handleSliderChange($event, data)" :max="1" :min="0.1" :step="0.1" />
|
|
|
|
|
|
+ <el-slider v-model="data.opacity" @input="handleSliderChange($event, data)" :max="1" :min="0.1"
|
|
|
|
+ :step="0.1" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</template>
|
|
</template>
|
|
@@ -70,6 +76,8 @@
|
|
treeData: [],
|
|
treeData: [],
|
|
inittree: [], //初始化图层数组
|
|
inittree: [], //初始化图层数组
|
|
expandedKeys: [], //对应要展开的节点id
|
|
expandedKeys: [], //对应要展开的节点id
|
|
|
|
+ currentKey: [], //默认打开节点的id
|
|
|
|
+ checkedkeys: []
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
@@ -158,7 +166,13 @@
|
|
|
|
|
|
break;
|
|
break;
|
|
case "Cesium3DTileset": //加载3DTileset地图服务--实景
|
|
case "Cesium3DTileset": //加载3DTileset地图服务--实景
|
|
-
|
|
|
|
|
|
+ jt3d._viewer.flyTo(window[_serviceId], {
|
|
|
|
+ offset: {
|
|
|
|
+ heading: Cesium.Math.toRadians(20.0), //方向
|
|
|
|
+ pitch: Cesium.Math.toRadians(-90), //倾斜角度
|
|
|
|
+ range: 1000
|
|
|
|
+ }
|
|
|
|
+ });
|
|
break;
|
|
break;
|
|
case "Cesium3DTileset_BM": //加载3DTileset地图服务--白膜
|
|
case "Cesium3DTileset_BM": //加载3DTileset地图服务--白膜
|
|
|
|
|
|
@@ -178,6 +192,7 @@
|
|
* @param {Object} checked 节点本身是否被选中
|
|
* @param {Object} checked 节点本身是否被选中
|
|
*/
|
|
*/
|
|
async handleCheckChange(data, checked) {
|
|
async handleCheckChange(data, checked) {
|
|
|
|
+ console.log('进入图层控制')
|
|
let _self = this;
|
|
let _self = this;
|
|
|
|
|
|
let _serviceId = "service_" + data.layercode + data.layerorder;
|
|
let _serviceId = "service_" + data.layercode + data.layerorder;
|
|
@@ -283,10 +298,12 @@
|
|
if (parameterset.count) { //重复次数
|
|
if (parameterset.count) { //重复次数
|
|
_options.count = parameterset.count;
|
|
_options.count = parameterset.count;
|
|
}
|
|
}
|
|
- if (parameterset.direction) { //direction=vertical 纵,order='-'(由下到上) , '+"(由上到下)
|
|
|
|
|
|
+ if (parameterset
|
|
|
|
+ .direction) { //direction=vertical 纵,order='-'(由下到上) , '+"(由上到下)
|
|
_options.direction = parameterset.direction;
|
|
_options.direction = parameterset.direction;
|
|
}
|
|
}
|
|
- if (parameterset.order) { //direction=horizontal 横,order='-'(顺时针) , '+'(逆时针)
|
|
|
|
|
|
+ if (parameterset
|
|
|
|
+ .order) { //direction=horizontal 横,order='-'(顺时针) , '+'(逆时针)
|
|
_options.order = parameterset.order;
|
|
_options.order = parameterset.order;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -592,37 +609,34 @@
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case "Cesium3DTileset": //加载3DTileset地图服务--实景
|
|
case "Cesium3DTileset": //加载3DTileset地图服务--实景
|
|
|
|
+ if (data.datasource == '#') return
|
|
let datasource = data.datasource.split("#")
|
|
let datasource = data.datasource.split("#")
|
|
console.log('datasource', datasource)
|
|
console.log('datasource', datasource)
|
|
if (checked) {
|
|
if (checked) {
|
|
//加载实景
|
|
//加载实景
|
|
- datasource.forEach((res, index) => {
|
|
|
|
- //设置参数
|
|
|
|
- let _options = {
|
|
|
|
- id: _serviceId + index,
|
|
|
|
- url: res,
|
|
|
|
|
|
+ //设置参数
|
|
|
|
+ let _options = {
|
|
|
|
+ id: _serviceId,
|
|
|
|
+ url: datasource[0],
|
|
|
|
+ }
|
|
|
|
+ if (parameterset) {
|
|
|
|
+ if (parameterset.height) {
|
|
|
|
+ _options.height = parameterset.height;
|
|
}
|
|
}
|
|
- if (parameterset) {
|
|
|
|
- if (parameterset.height) {
|
|
|
|
- _options.height = parameterset.height;
|
|
|
|
- }
|
|
|
|
- if (parameterset.alpha) {
|
|
|
|
- _options.alpha = parameterset.alpha;
|
|
|
|
- }
|
|
|
|
|
|
+ if (parameterset.alpha) {
|
|
|
|
+ _options.alpha = parameterset.alpha;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ jt3d.layer.addCesium3DTileset(_options, function(serviceId) {
|
|
|
|
+ console.log('添加')
|
|
|
|
+ window[_serviceId] = window[serviceId];
|
|
|
|
+ });
|
|
|
|
|
|
- jt3d.layer.addCesium3DTileset(_options, function(serviceId) {
|
|
|
|
-
|
|
|
|
- window[_serviceId + index] = window[serviceId];
|
|
|
|
|
|
|
|
- });
|
|
|
|
- })
|
|
|
|
} else {
|
|
} else {
|
|
- datasource.forEach((res, index) => {
|
|
|
|
- jt3d.layer.removeScenePrimitives({
|
|
|
|
- serviceId: _serviceId + index
|
|
|
|
- });
|
|
|
|
- })
|
|
|
|
|
|
+ jt3d.layer.removeScenePrimitives({
|
|
|
|
+ serviceId: _serviceId
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
break;
|
|
break;
|
|
@@ -731,23 +745,31 @@
|
|
*/
|
|
*/
|
|
setNodesChecked(datas) {
|
|
setNodesChecked(datas) {
|
|
let _self = this;
|
|
let _self = this;
|
|
|
|
+ console.log('datas', datas)
|
|
datas.forEach((data, index) => {
|
|
datas.forEach((data, index) => {
|
|
- _self.$nextTick(() => {
|
|
|
|
- var node = _self.$refs.treeRef.getNode(data);
|
|
|
|
- //node.isLeaf是否是叶子节点
|
|
|
|
- if (node.isLeaf) {
|
|
|
|
- let checked = false;
|
|
|
|
- if (data.isinit === '1') {
|
|
|
|
- checked = true;
|
|
|
|
- }
|
|
|
|
- data.opacity = Number(data.opacity)
|
|
|
|
- _self.$refs.treeRef.setChecked(node, checked);
|
|
|
|
|
|
+ var node = _self.$refs.treeRef.getNode(data);
|
|
|
|
+ //node.isLeaf是否是叶子节点
|
|
|
|
+ if (node.isLeaf) {
|
|
|
|
+ let checked = false;
|
|
|
|
+ if (data.isinit === '1') {
|
|
|
|
+ checked = true;
|
|
|
|
+ _self.checkedkeys.push(data.id)
|
|
|
|
+ console.log('默认勾选', _self.checkedkeys)
|
|
}
|
|
}
|
|
- });
|
|
|
|
- if (data.children != undefined) {
|
|
|
|
|
|
+ data.opacity = Number(data.opacity)
|
|
|
|
+ // _self.$refs.treeRef.setChecked(node, checked);
|
|
|
|
+ // _self.handleCheckChange(data,checked)
|
|
|
|
+ // _self.childNodesChange(node, checked);
|
|
|
|
+ // _self.$refs.treeRef.setCurrentKey(data.id)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (data.children) {
|
|
_self.setNodesChecked(data.children);
|
|
_self.setNodesChecked(data.children);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+ _self.$nextTick(() => {
|
|
|
|
+ _self.$refs.treeRef.setCheckedKeys(_self.checkedkeys,true)
|
|
|
|
+ });
|
|
},
|
|
},
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -793,7 +815,7 @@
|
|
|
|
|
|
//获取地图图集id
|
|
//获取地图图集id
|
|
let roleId = store.roleId
|
|
let roleId = store.roleId
|
|
- atlasLayersSqlWhere = "roleid = " + roleId + " and atlasType='图层'"
|
|
|
|
|
|
+ atlasLayersSqlWhere = '"roleId"' + " = " + roleId + " and " + '"atlasType"' + "='图层'"
|
|
|
|
|
|
//Promise回调
|
|
//Promise回调
|
|
function init(data) {
|
|
function init(data) {
|
|
@@ -826,7 +848,7 @@
|
|
sqlWhere: atlasLayersSqlWhere, //
|
|
sqlWhere: atlasLayersSqlWhere, //
|
|
orderByField: ''
|
|
orderByField: ''
|
|
}).then(res => {
|
|
}).then(res => {
|
|
- console.log('所有图层', res.data)
|
|
|
|
|
|
+ console.log('所有图层', res)
|
|
//初始图层列表
|
|
//初始图层列表
|
|
this.inittree = res.data
|
|
this.inittree = res.data
|
|
init(res.data).then(item => {
|
|
init(res.data).then(item => {
|
|
@@ -841,32 +863,36 @@
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
<style lang="scss">
|
|
- .el-switch--small .el-switch__core .el-switch__action{
|
|
|
|
|
|
+ .el-switch--small .el-switch__core .el-switch__action {
|
|
width: 12rem;
|
|
width: 12rem;
|
|
height: 12rem;
|
|
height: 12rem;
|
|
}
|
|
}
|
|
- .el-switch--small.is-checked .el-switch__core .el-switch__action{
|
|
|
|
|
|
+
|
|
|
|
+ .el-switch--small.is-checked .el-switch__core .el-switch__action {
|
|
margin-left: calc(-1rem - 12rem);
|
|
margin-left: calc(-1rem - 12rem);
|
|
}
|
|
}
|
|
- .el-switch__core .el-switch__action{
|
|
|
|
- top:0;
|
|
|
|
|
|
+
|
|
|
|
+ .el-switch__core .el-switch__action {
|
|
|
|
+ top: 0;
|
|
}
|
|
}
|
|
- .el-slider__button{
|
|
|
|
|
|
+
|
|
|
|
+ .el-slider__button {
|
|
width: 20rem;
|
|
width: 20rem;
|
|
height: 20rem;
|
|
height: 20rem;
|
|
}
|
|
}
|
|
- .el-tree-node__content{
|
|
|
|
|
|
+
|
|
|
|
+ .el-tree-node__content {
|
|
height: 26rem;
|
|
height: 26rem;
|
|
}
|
|
}
|
|
-
|
|
|
|
- .el-switch--small .el-switch__core{
|
|
|
|
|
|
+
|
|
|
|
+ .el-switch--small .el-switch__core {
|
|
height: 16rem;
|
|
height: 16rem;
|
|
}
|
|
}
|
|
-
|
|
|
|
- .el-switch--small{
|
|
|
|
|
|
+
|
|
|
|
+ .el-switch--small {
|
|
padding: 0 5rem;
|
|
padding: 0 5rem;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
.jt-layer {
|
|
.jt-layer {
|
|
padding-left: 10rem;
|
|
padding-left: 10rem;
|
|
|
|
|