<template>
|
<div class="lalala tree-container">
|
<el-input
|
placeholder="输入关键字进行过滤"
|
v-model="filterText"
|
class="search"
|
>
|
</el-input>
|
<el-tree
|
ref="tree"
|
:data="treeData"
|
node-key="id"
|
show-checkbox
|
:props="defaultProps"
|
@node-click="handleLeftclick"
|
@node-contextmenu="rightClick"
|
@check-change="handleCheckChange"
|
:default-checked-keys="handleTreeCheck"
|
:expand-on-click-node="false"
|
>
|
<span
|
class="slot-t-node"
|
slot-scope="{ node, data }"
|
>
|
<span v-show="!data.isEdit">
|
<span :class="[data.id >= 99 ? 'slot-t-node--label' : '']">{{
|
node.label
|
}}</span>
|
</span>
|
<span v-show="data.isEdit">
|
<el-input
|
class="slot-t-input"
|
size="mini"
|
autofocus
|
v-model="data.label"
|
:ref="'slotTreeInput' + data.id"
|
@blur.stop="NodeBlur(node, data)"
|
@keydown.native.enter="NodeBlur(node, data)"
|
></el-input>
|
</span>
|
</span>
|
</el-tree>
|
|
<el-card
|
class="box-card"
|
ref="card"
|
:style="{ ...rightClickMenuStyle }"
|
v-show="menuVisible"
|
>
|
<div
|
@click="addSameLevelNode()"
|
v-show="firstLevel"
|
>
|
<i class="el-icon-plus"></i> 添加图层组
|
</div>
|
<div
|
class="add"
|
@click="addChildNode()"
|
>
|
<i class="el-icon-plus"></i> 添加图层
|
</div>
|
<div
|
class="delete"
|
@click="deleteNode()"
|
>
|
<i class="el-icon-delete"></i> 删除
|
</div>
|
<div
|
class="edit"
|
@click="editNode()"
|
>
|
<i class="el-icon-edit"></i> 重命名
|
</div>
|
<div
|
class="edit"
|
@click="showLayerAttribute()"
|
v-if="!showlocal"
|
v-show="!firstLevel"
|
>
|
<i class="el-icon-tickets"></i> 属性
|
</div>
|
<div
|
class="edit"
|
@click="positioning()"
|
v-show="showlocal"
|
>
|
<i class="el-icon-tickets"></i> 定位
|
</div>
|
<!-- <div
|
class="edit"
|
@click="menuMoveF( 'up')"
|
>
|
<i class="el-icon-top"></i> 上移
|
</div>
|
<div
|
class="edit"
|
@click="menuMoveF( 'down')"
|
>
|
<i class="el-icon-bottom"></i> 下移
|
</div> -->
|
</el-card>
|
<el-dialog
|
:title="appendNodetitle"
|
:visible.sync="dialogVisible"
|
width="30%"
|
top="20vh"
|
:modal="false"
|
:before-close="handleClose"
|
>
|
<el-form
|
ref="form"
|
:model="addFormServer"
|
label-width="100px"
|
>
|
<el-form-item label="服务类型">
|
<!-- <el-input v-model="addFormServer.type"></el-input> -->
|
<el-select
|
style="width: 100%"
|
:popper-append-to-body="false"
|
v-model="addFormServer.serveType"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in options"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="图层名称">
|
<el-input v-model="addFormServer.cnName"></el-input>
|
</el-form-item>
|
<el-form-item label="服务名称">
|
<el-input v-model="addFormServer.url"></el-input>
|
</el-form-item>
|
|
<el-form-item label="服务地址">
|
<el-input v-model="addFormServer.resource"></el-input>
|
</el-form-item>
|
<el-form-item label="透明度">
|
<el-slider v-model="addFormServer.opacity"></el-slider>
|
</el-form-item>
|
</el-form>
|
<span
|
slot="footer"
|
class="dialog-footer"
|
>
|
<el-button
|
type="primary"
|
@click="setAddServer"
|
>确 定</el-button>
|
</span>
|
</el-dialog>
|
<queryinfo ref="queryinfo" />
|
</div>
|
</template>
|
|
<script>
|
import { image_layer } from "../../assets/js/index.js";
|
import ImageWMS from "ol/source/ImageWMS";
|
import Image from "ol/layer/Image";
|
import GeoJSON from "ol/format/GeoJSON.js";
|
import Map from "ol/Map.js";
|
import queryinfo from "./queryinfo.vue";
|
import { Vector as VectorSource } from "ol/source";
|
import { Vector as VectorLayer } from "ol/layer";
|
|
import View from "ol/View.js";
|
import { Fill, Stroke, Style } from "ol/style.js";
|
import { perms_selectLayers } from "../../api/api.js";
|
export default {
|
name: "tree",
|
components: { queryinfo },
|
data() {
|
return {
|
showlocal: false,
|
eleId: "",
|
isShow: false,
|
currentData: "",
|
currentNode: "",
|
menuVisible: false,
|
firstLevel: false,
|
filterText: "",
|
appendNodetitle: "",
|
maxexpandId: 4,
|
rightClickMenuStyle: {},
|
handleTreeCheck: [],
|
dialogVisible: false,
|
addFormServer: {
|
opacity: 100,
|
serveType: "WMS",
|
type: 2,
|
},
|
layerId: [
|
"m_pipeline",
|
"th_strategic_channel",
|
"bs_project",
|
"m_sitepoint",
|
],
|
treeData: [],
|
defaultProps: {
|
children: "children",
|
label: "cnName",
|
},
|
options: [
|
{
|
value: "WMS",
|
label: "WMS",
|
},
|
{
|
value: "WFS",
|
label: "WFS",
|
},
|
],
|
};
|
},
|
methods: {
|
NodeBlur(Node, data) {
|
if (data.label.length === 0) {
|
this.$message.error("菜单名不可为空!");
|
return false;
|
} else {
|
if (data.isEdit) {
|
this.$set(data, "isEdit", false);
|
}
|
this.$nextTick(() => {
|
this.$refs["slotTreeInput" + data.id].$refs.input.focus();
|
});
|
}
|
},
|
// 查询
|
filterNode(value, data) {
|
if (!value) return true;
|
return data.label.indexOf(value) !== -1;
|
},
|
|
allowDrop(draggingNode, dropNode, type) {
|
if (dropNode.data.label === "二级 3-1") {
|
return type !== "inner";
|
} else {
|
return true;
|
}
|
},
|
allowDrag(draggingNode) {
|
return draggingNode.data.label.indexOf("三级 3-2-2") === -1;
|
},
|
// 鼠标右击事件
|
rightClick(event, object, Node, element) {
|
this.currentData = object;
|
this.currentNode = Node;
|
if (Node.level === 3) {
|
this.firstLevel = false;
|
} else {
|
this.firstLevel = true;
|
}
|
if (Node.level === 3 && Node.data.serveType == "Tileset") {
|
this.showlocal = true;
|
} else if (Node.level === 3 && Node.data.serveType != "Tileset") {
|
this.showlocal = false;
|
}
|
this.menuVisible = true;
|
|
this.$refs.card.$el.style.left = event.pageX + 20 + "px";
|
this.$refs.card.$el.style.top = event.pageY + "px";
|
},
|
// 鼠标左击事件
|
handleLeftclick(data, node) {
|
this.foo();
|
if (node.checked == true) {
|
for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
|
var val_id =
|
window.Viewer.imageryLayers._layers[i].imageryProvider.name;
|
if (val_id == data.label) {
|
const img_layer = window.Viewer.imageryLayers._layers[i];
|
}
|
}
|
}
|
},
|
// 取消鼠标监听事件 菜单栏
|
foo() {
|
this.menuVisible = false;
|
// 要及时关掉监听,不关掉的是一个坑,不信你试试,虽然前台显示的时候没有啥毛病,加一个alert你就知道了
|
document.removeEventListener("click", this.foo);
|
},
|
// 增加同级节点事件
|
addSameLevelNode() {
|
this.foo();
|
if (this.currentNode.level == 2) {
|
this.appendNodetitle = this.currentData.label;
|
this.dialogVisible = true;
|
} else {
|
let id = Math.ceil(Math.random() * 100);
|
var data = { id: id, label: "新增节点" };
|
this.$refs.tree.append(data, this.currentNode.parent);
|
}
|
},
|
// 增加子级节点事件
|
addChildNode() {
|
this.foo();
|
// if (this.currentNode.level >= 2) {
|
// this.$message.error("最多只支两级!");
|
// return false;
|
// }
|
this.appendNodetitle = this.currentData.label;
|
this.dialogVisible = true;
|
},
|
handleClose() {
|
this.dialogVisible = false;
|
this.addFormServer = {
|
opacity: 100,
|
serveType: "WMS",
|
type: 2,
|
};
|
},
|
setAddServer() {
|
var val = this.currentNode;
|
if (this.currentNode.level == 2) {
|
val = this.currentNode.parent;
|
}
|
var data = this.addFormServer;
|
data.id = Math.ceil(Math.random() * 100);
|
this.$refs.tree.append(data, val);
|
this.handleClose();
|
},
|
// 删除节点
|
deleteNode() {
|
this.foo();
|
var label = this.currentNode.data.cnName;
|
if (this.currentNode.data.serveType == "WMS") {
|
for (var i in window.Viewer.imageryLayers._layers) {
|
if (
|
window.Viewer.imageryLayers._layers[i].imageryProvider.name ===
|
label
|
) {
|
window.Viewer.imageryLayers.remove(
|
window.Viewer.imageryLayers._layers[i]
|
);
|
}
|
}
|
} else if (this.currentNode.data.serveType == "WFS") {
|
for (var i in window.Viewer.dataSources._dataSources) {
|
if (window.Viewer.dataSources._dataSources[i].name == label) {
|
window.Viewer.dataSources.remove(
|
window.Viewer.dataSources._dataSources[i]
|
);
|
}
|
}
|
} else if (this.currentNode.data.serveType == "Tileset") {
|
for (var i in Viewer.scene.primitives._primitives) {
|
// Viewer.scene.primitives._primitives[i].show = checked;
|
if (Viewer.scene.primitives._primitives[i].id == label) {
|
Viewer.scene.primitives.remove(
|
Viewer.scene.primitives._primitives[i]
|
);
|
}
|
}
|
}
|
var layers_ol = window.map.getAllLayers();
|
for (var i in layers_ol) {
|
var layerOl = layers_ol[i];
|
if (layerOl.values_.name == label) {
|
window.map.removeLayer(layerOl); //显示图层
|
}
|
}
|
|
this.$refs.tree.remove(this.currentNode);
|
},
|
//属性显示
|
showLayerAttribute(data) {
|
this.foo();
|
this.currentData = data ? data : this.currentData;
|
var layer = this.currentData.enName.replaceAll("_", "");
|
this.$store.state.mapSpaceQueryLayer = layer;
|
// this.$store.state.mapPopBoolean = true;
|
this.$store.state.mapPopBoxFlag = "2";
|
this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close();
|
this.$refs &&
|
this.$refs.queryinfo &&
|
this.$refs.queryinfo.open("属性", null, {
|
close: () => {
|
if (this.$store.state.primitLayer != null) {
|
sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
|
this.$store.state.primitLayer = null;
|
}
|
|
if (window.Viewer.scene.primitives.length != 0) {
|
window.Viewer.scene.primitives.removeAll();
|
}
|
},
|
});
|
},
|
//模型定位
|
positioning() {
|
for (var i in Viewer.scene.primitives._primitives) {
|
if (
|
Viewer.scene.primitives._primitives[i].id == this.currentData.cnName
|
) {
|
Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
|
}
|
}
|
},
|
// 编辑节点
|
editNode(data) {
|
this.foo();
|
this.currentData = data ? data : this.currentData;
|
if (!this.currentData.isEdit) {
|
this.$set(this.currentData, "isEdit", true);
|
}
|
// 获取焦点
|
this.$nextTick(() => {
|
this.$refs["slotTreeInput" + this.currentData.id].focus();
|
});
|
},
|
|
menuMoveF(type) {
|
// 将变动之前的node备份
|
var node = this.currentNode;
|
var data = this.currentData;
|
let copyNode = this.currentNode;
|
|
// copyNode.previousSibling = {...node. }
|
// copyNode.nextSibling = {...node.nextSibling}
|
// window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode))
|
let nodeData = {};
|
if (type === "up") {
|
// 上移
|
if (node.previousSibling) {
|
// 删除原先的node
|
this.$refs.tree.remove(node.data);
|
// 拿到copy的node
|
// nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode'))
|
// // 复制该node到指定位置(参数:1. 要增加的节点的 data 2. 要增加的节点的后一个节点的 data、key 或者 node)
|
// this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data)
|
window.sessionStorage.removeItem("menuNode");
|
} else {
|
this.$message.warning("该菜单已经是当前层最上级");
|
}
|
} else {
|
// 下移
|
if (node.nextSibling) {
|
this.$refs.tree.remove(node.data);
|
nodeData = CircularJSON.parse(
|
window.sessionStorage.getItem("menuNode")
|
);
|
// 参数:1. 要增加的节点的 data 2. 要增加的节点的前一个节点的 data、key 或者 node
|
this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data);
|
window.sessionStorage.removeItem("menuNode");
|
} else {
|
this.$message.warning("该菜单已经是当前层最下级");
|
}
|
}
|
},
|
|
handleDragStart(node, ev) {
|
console.log("drag start", node);
|
},
|
handleDragEnter(draggingNode, dropNode, ev) {
|
console.log("tree drag enter: ", dropNode.label);
|
},
|
handleDragLeave(draggingNode, dropNode, ev) {
|
console.log("tree drag leave: ", dropNode.label);
|
},
|
handleDragOver(draggingNode, dropNode, ev) {
|
console.log("tree drag over: ", dropNode.label);
|
},
|
handleDragEnd(draggingNode, dropNode, dropType, ev) {
|
console.log("tree drag end: ", dropNode && dropNode.label, dropType);
|
},
|
handleDrop(draggingNode, dropNode, dropType, ev) {
|
console.log("tree drop: ", dropNode.label, dropType);
|
},
|
handleCheckChange(data, checked, indeterminate) {
|
if (data.type != 2) return;
|
var std = [];
|
if (data.serveType == "WMS") {
|
var layers_ol = window.map.getAllLayers();
|
for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
|
var val_id =
|
window.Viewer.imageryLayers._layers[i].imageryProvider.name;
|
if (val_id == data.cnName) {
|
std.push(data.label);
|
|
const img_layer = window.Viewer.imageryLayers._layers[i];
|
img_layer.show = checked;
|
}
|
}
|
|
for (var i in layers_ol) {
|
var layerOl = layers_ol[i];
|
if (layerOl.values_.name == data.cnName) {
|
layerOl.setVisible(checked); //显示图层
|
}
|
}
|
} else if (data.serveType == "WFS") {
|
if (window.Viewer.dataSources._dataSources.length == 0) {
|
this.setAddLayers(data);
|
} else {
|
for (var i in window.Viewer.dataSources._dataSources) {
|
if (window.Viewer.dataSources._dataSources[i].name == data.cnName) {
|
window.Viewer.dataSources._dataSources[i].show = checked;
|
std.push(data.label);
|
}
|
}
|
}
|
} else if (data.serveType == "Tileset") {
|
if (Viewer.scene.primitives._primitives.length == 0) {
|
this.setAddLayers(data);
|
} else {
|
for (var i in Viewer.scene.primitives._primitives) {
|
Viewer.scene.primitives._primitives[i].show = checked;
|
if (Viewer.scene.primitives._primitives[i].id == data.cnName) {
|
std.push(res.id);
|
Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
|
}
|
}
|
}
|
}
|
if (std.length == 0 && checked == true) {
|
this.setAddLayers(data);
|
}
|
var layers_ol = window.map.getAllLayers();
|
for (var i in layers_ol) {
|
var layerOl = layers_ol[i];
|
if (layerOl.values_.name == data.label) {
|
layerOl.setVisible(checked); //显示图层
|
}
|
}
|
},
|
setAddLayers(res) {
|
if (res.serveType == "WMS") {
|
var resource = geoServerURl;
|
if (res.resource != null && res.resource != undefined) {
|
resource = res.resource;
|
}
|
var imageryLayers = window.Viewer.scene.imageryLayers;
|
let layerWMS = new Cesium.WebMapServiceImageryProvider({
|
url: resource,
|
layers: res.url,
|
parameters: {
|
transparent: true,
|
format: "image/png",
|
srs: "EPSG:4490",
|
styles: "",
|
},
|
tileWidth: 512,
|
tileHeight: 512,
|
});
|
layerWMS.name = res.cnName;
|
//透明度
|
var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS);
|
if (res.opacity) {
|
tdtAnnoLayer.alpha = parseInt(res.opacity) / 100;
|
}
|
var layer2 = new Image({
|
name: res.cnName,
|
source: new ImageWMS({
|
crossOrigin: "anonymous",
|
url: resource,
|
params: {
|
FORMAT: "image/png",
|
VERSION: "1.1.1",
|
LAYERS: res.url,
|
},
|
}),
|
});
|
if (res.opacity) {
|
layer2.setOpacity(parseInt(res.opacity) / 100);
|
}
|
window.map.addLayer(layer2);
|
} else if (res.serveType == "WFS") {
|
var url =
|
res.resource +
|
"?service=WFS&version=1.0.0&request=GetFeature&typeName=" +
|
res.url +
|
"&outputFormat=application%2Fjson";
|
$.ajax({
|
url: url,
|
cache: false,
|
async: true,
|
success: function (data) {
|
var datasource = Cesium.GeoJsonDataSource.load(data, {
|
stroke: Cesium.Color.YELLOW,
|
fill: Cesium.Color.YELLOW.withAlpha(0.1),
|
alpha: 0.1,
|
strokeWidth: 8,
|
clampToGround: true, //是否贴地
|
});
|
datasource.then((data) => {
|
data.name = res.cnName;
|
window.Viewer.dataSources.add(data);
|
});
|
},
|
error: function (data) {
|
console.log("error");
|
},
|
});
|
|
var vectorLayer = new VectorLayer({
|
name: res.cnName,
|
source: new VectorSource({
|
url: url,
|
format: new GeoJSON(),
|
}),
|
});
|
window.map.addLayer(vectorLayer);
|
} else if (res.serveType == "Tileset") {
|
|
var tileset = Viewer.scene.primitives.add(
|
new Cesium.Cesium3DTileset({
|
name: res.cnName,
|
url: modelUrl + "/" + res.url, //192.168.20.106,to4
|
maximumScreenSpaceError: 64, // 最大屏幕空间错误:16
|
maximumMemoryUsage: 768, // 最大内存:512
|
dynamicScreenSpaceError: true, // 减少离相机较远的屏幕空间错误:false
|
skipLevelOfDetail: true, // 在遍历时候跳过详情:false
|
})
|
);
|
|
tileset.readyPromise.then(function (tileset) {
|
tileset.id = res.cnName;
|
Viewer.flyTo(tileset);
|
});
|
}
|
},
|
setTreeData(source) {
|
let cloneData = JSON.parse(JSON.stringify(source)); // 对源数据深度克隆
|
return cloneData.filter((father) => {
|
// 循环所有项
|
let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据
|
branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值
|
// 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2;
|
// 由此循环多次后,就能形成相应的树形数据结构
|
return father.pid == 0; // 返回一级菜单
|
});
|
},
|
async layersStart() {
|
const data = await perms_selectLayers();
|
if (data.code != 200) {
|
return this.$message.error("图层列表查询失败");
|
}
|
var std = data.result;
|
var that = this;
|
var checkKey = [];
|
var val = std.filter((str) => {
|
if (str.type == 1) {
|
return str;
|
}
|
if (str.url != null && str.type == 2) {
|
if (str.isShow == 1) {
|
checkKey.push(str.id);
|
that.setAddLayers(str);
|
}
|
return str;
|
}
|
});
|
|
var res = this.setTreeData(val);
|
|
for (var i in res) {
|
res[i].children = res[i].children.filter((val) => {
|
if (val.children != null) {
|
return val;
|
}
|
});
|
}
|
this.treeData = res;
|
this.$refs.tree.setCheckedKeys(checkKey);
|
},
|
async treelayersStart() {
|
const data = await perms_selectLayers();
|
if (data.code != 200) {
|
return this.$message.error("图层列表查询失败");
|
}
|
var std = [];
|
var layer_list = [];
|
var layer_groups = [];
|
for (var i in data.result) {
|
if (data.result[i].type == 1) {
|
layer_groups.push({
|
id: data.result[i].id,
|
label: data.result[i].cnName,
|
type: data.result[i].type,
|
isEdit: false,
|
children: [],
|
});
|
} else if (data.result[i].type == 2) {
|
if (data.result[i].url != null) {
|
var layer_entity = {
|
id: data.result[i].id,
|
pid: data.result[i].pid,
|
label: data.result[i].cnName,
|
resource: data.result[i].url,
|
type: data.result[i].type,
|
isEdit: false,
|
};
|
layer_list.push(layer_entity);
|
}
|
}
|
}
|
for (var i in layer_list) {
|
for (var j in layer_groups) {
|
if (layer_list[i].pid === layer_groups[j].id) {
|
layer_groups[j].children.push(layer_list[i]);
|
}
|
}
|
}
|
layer_groups = layer_groups.filter((res) => {
|
if (res.children && res.children.length != 0) {
|
return res;
|
}
|
});
|
this.treeData = layer_groups;
|
|
for (var i in data.result) {
|
if (data.result[i].type == 2 && data.result[i].url != null) {
|
for (var j = 0; j < window.Viewer.imageryLayers._layers.length; j++) {
|
var val_id = window.Viewer.imageryLayers._layers[j];
|
if (val_id.show == true) {
|
if (val_id.imageryProvider.name == data.result[i].cnName) {
|
std.push(data.result[i].id);
|
}
|
}
|
}
|
}
|
}
|
this.$refs.tree.setCheckedKeys(std);
|
},
|
},
|
watch: {
|
filterText(val) {
|
this.$refs.tree.filter(val);
|
},
|
},
|
mounted() {
|
|
this.$bus.$on("treeDataCopy", (res) => {
|
this.$store.state.treeData = this.treeData;
|
this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys();
|
});
|
|
if (this.$store.state.showAllLayers == true) {
|
this.layersStart();
|
this.$store.state.showAllLayers = false;
|
} else {
|
this.treeData = this.$store.state.treeData;
|
this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys);
|
}
|
},
|
};
|
</script>
|
<style scoped lang="less">
|
/* 点击节点时的选中颜色 */
|
.tree-container /deep/.el-tree-node.is-current > .el-tree-node__content {
|
color: #409eff !important;
|
}
|
|
.tree-container /deep/ .el-tree-node__expand-icon.expanded {
|
-webkit-transform: rotate(90deg);
|
transform: rotate(90deg);
|
}
|
|
.tree-container /deep/ .el-icon-caret-right:before {
|
content: "\e791";
|
font-size: 18px;
|
}
|
|
.tree-container /deep/ .el-tree-node__expand-icon {
|
margin-left: 1px;
|
padding: 0px;
|
}
|
|
.tree-container /deep/ .el-tree-node__expand-icon.is-leaf {
|
margin-left: 0px;
|
}
|
|
.tree-container /deep/ .el-tree-node {
|
position: relative;
|
padding-left: 10px;
|
// text-indent: 16px;
|
}
|
|
.tree-container /deep/ .el-tree-node__children {
|
padding-left: 16px;
|
}
|
|
.tree-container /deep/ .el-tree > .el-tree-node:before {
|
border-left: none;
|
}
|
|
.tree-container /deep/ .el-tree > .el-tree-node:after {
|
border-top: none;
|
}
|
.tree-container /deep/ .el-tree > .el-tree-node:before {
|
border-left: none;
|
}
|
|
.tree-container /deep/ .el-tree > .el-tree-node:after {
|
border-top: none;
|
}
|
|
.tree-container /deep/ .el-tree-node:before {
|
content: "";
|
left: 10px;
|
position: absolute;
|
right: auto;
|
border-width: 1px;
|
}
|
|
.tree-container /deep/ .el-tree-node:after {
|
content: "";
|
left: 10px;
|
position: absolute;
|
right: auto;
|
border-width: 1px;
|
}
|
|
.tree-container /deep/ .el-tree-node:before {
|
border-left: 1px dashed #ccc;
|
bottom: 0px;
|
height: 100%;
|
top: -19px;
|
width: 1px;
|
}
|
|
.tree-container /deep/ .el-tree-node:after {
|
border-top: 1px dashed #ccc;
|
height: 25px;
|
top: 20px;
|
width: 20px;
|
}
|
|
.el-tree-node :last-child:before {
|
height: 40px;
|
}
|
|
.tree-container {
|
margin: 10px;
|
}
|
.tree-container /deep/ .el-tree .el-tree-node {
|
position: relative;
|
}
|
.tree-container /deep/ .el-tree-node .el-tree-node__content {
|
height: 34px;
|
padding-left: 0px !important;
|
border: none;
|
}
|
.tree-container /deep/ .el-tree-node .el-tree-node__content::before {
|
border-left: 1px dashed #ccc;
|
height: 100%;
|
top: 0;
|
width: 1px;
|
margin-left: 1px;
|
margin-top: 0px;
|
z-index: 8;
|
}
|
.tree-container
|
/deep/
|
.el-tree-node
|
.el-tree-node__children
|
.el-tree-node__content::before {
|
border-left: 0px dashed #ccc;
|
height: 100%;
|
top: 0;
|
width: 1px;
|
margin-left: 1px;
|
margin-top: 0px;
|
z-index: 8;
|
}
|
|
.tree-container /deep/ .el-tree-node .el-tree-node__content::after {
|
border-top: 1px dashed #ccc;
|
height: 1px;
|
top: 18px;
|
width: 13px;
|
margin-left: 1px;
|
z-index: 8;
|
}
|
|
.tree-container /deep/ .el-tree-node {
|
.is-leaf + .el-checkbox .el-checkbox__inner {
|
display: inline-block;
|
}
|
|
.el-checkbox .el-checkbox__inner {
|
display: none;
|
}
|
}
|
|
.tree-container
|
/deep/
|
.el-tree-node
|
.el-tree-node__children
|
.el-tree-node__content::after {
|
border-top: 0px dashed #ccc;
|
}
|
|
.tree-container .el-tree-node .el-tree-node__content::before,
|
.tree-container .el-tree-node .el-tree-node__content::after {
|
content: "";
|
position: absolute;
|
right: auto;
|
}
|
/deep/.el-table__placeholder {
|
padding-left: 8px;
|
}
|
/deep/.el-card__body {
|
padding: 10px !important;
|
> div {
|
padding-bottom: 10px;
|
border-bottom: 1px solid #ccc;
|
&:hover {
|
color: #409eff;
|
}
|
}
|
}
|
|
/*.lalala {*/
|
/*position: relative;*/
|
/*}*/
|
.text {
|
font-size: 14px;
|
}
|
.el-tree {
|
width: 100%;
|
margin-top: 10px;
|
}
|
.search {
|
width: 100%;
|
}
|
|
.item {
|
padding: 18px 0;
|
}
|
|
.add {
|
cursor: pointer;
|
margin-top: 10px;
|
}
|
|
.delete {
|
margin: 10px 0;
|
cursor: pointer;
|
}
|
|
.edit {
|
margin-bottom: 10px;
|
cursor: pointer;
|
}
|
|
.search {
|
cursor: pointer;
|
}
|
|
.box-card {
|
position: fixed;
|
display: block;
|
z-index: 10000;
|
padding: 0px 0px;
|
border: 1px solid #ebeef5;
|
border-radius: 4px;
|
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
}
|
</style>
|