| | |
| | | <div class="layerBox"> |
| | | <div class="layerTitle"> |
| | | <div class="tileLeft"> |
| | | <div |
| | | class="titleImg" |
| | | @click="editState" |
| | | > |
| | | <div class="titleImg" @click="editState"> |
| | | <ArrowLeft /> |
| | | </div> |
| | | <div class="titleLable">图层编辑</div> |
| | | </div> |
| | | </div> |
| | | <div class="layerContent"> |
| | | <div |
| | | class="contentBox" |
| | | v-for="(item, i) in menuOption" |
| | | :key="i" |
| | | > |
| | | <div class="contentTile"> |
| | | <!-- <el-tree |
| | | :props="props" |
| | | :highlight-current="true" |
| | | :current-node-key="selectedNodeId" |
| | | :data="menuOption" |
| | | :expand-on-click-node="false" |
| | | @node-click="handleNodeClick" |
| | | /> --> |
| | | |
| | | <div class="contentBox" v-for="(item, i) in menuOption" :key="i"> |
| | | <div |
| | | class="contentTile" |
| | | @click.stop="selectList(item)" |
| | | :class="{ highlight: item.id == selectedNodeId }" |
| | | > |
| | | <div class="contentLeft"> |
| | | <div class="contentImg"></div> |
| | | <div class="contentLabel">{{ item.name }}</div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | class="content" |
| | | v-show="item.isShow" |
| | | > |
| | | <div class="content" v-show="item.isShow"> |
| | | <div |
| | | class="layer_box" |
| | | v-for="(v, k) in item.children" |
| | | :key="k" |
| | | ></div> |
| | | @click.stop="selectList(v)" |
| | | :class="{ highlight: v.id == selectedNodeId }" |
| | | > |
| | | <div class="contentLeft"> |
| | | <div class="contentImg"></div> |
| | | <div class="contentLabel">{{ v.name }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="edit_box"> |
| | | <div class="edit_box_btn btnstyle"> |
| | | <el-button |
| | | type="primary" |
| | | :icon="Plus" |
| | | >新增同级</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :icon="Plus" |
| | | >新增子级</el-button> |
| | | <el-button type="primary" :icon="Plus" @click="added('t')" |
| | | >新增同级</el-button |
| | | > |
| | | <el-button type="primary" :icon="Plus" @click="added('z')" |
| | | >新增子级</el-button |
| | | > |
| | | <el-button |
| | | type="primary" |
| | | :icon="Delete" |
| | | class="delbtn" |
| | | >删除</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :icon="Top" |
| | | >向上移动</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :icon="Bottom" |
| | | >向下移动</el-button> |
| | | @click="delLayer" |
| | | >删除</el-button |
| | | > |
| | | <el-button type="primary" :icon="Top">向上移动</el-button> |
| | | <el-button type="primary" :icon="Bottom">向下移动</el-button> |
| | | </div> |
| | | <div class="edit_box_form"> |
| | | <el-form |
| | | :model="form" |
| | | label-width="120px" |
| | | > |
| | | <el-form-item label="Activity name"> |
| | | <el-input v-model="form.name" /> |
| | | <el-form :model="form" label-width="120px"> |
| | | <el-form-item label="选中图层"> |
| | | <el-input |
| | | v-model="form.selectName" |
| | | disabled |
| | | placeholder="点击图层树选择" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="Activity zone"> |
| | | <el-form-item label="图层名称"> |
| | | <el-input v-model="form.name" placeholder="请输入图层名称" /> |
| | | </el-form-item> |
| | | <el-form-item label="图层类型"> |
| | | <el-select |
| | | style="width: 100%" |
| | | v-model="form.region" |
| | | placeholder="please select your zone" |
| | | placeholder="请选择图层类型" |
| | | > |
| | | <el-option |
| | | label="Zone one" |
| | | value="shanghai" |
| | | /> |
| | | <el-option |
| | | label="Zone two" |
| | | value="beijing" |
| | | /> |
| | | <el-option label="Zone one" value="shanghai" /> |
| | | <el-option label="Zone two" value="beijing" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="Resources"> |
| | | <el-radio-group v-model="form.resource"> |
| | | <el-radio label="Sponsor" /> |
| | | <el-radio label="Venue" /> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="Activity form"> |
| | | <el-input |
| | | v-model="form.desc" |
| | | type="textarea" |
| | | /> |
| | | <el-form-item label="服务地址"> |
| | | <el-input v-model="form.layerUrl" placeholder="请输入服务地址" /> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | @click="onSubmit" |
| | | >Create</el-button> |
| | | <el-button>Cancel</el-button> |
| | | <!-- <div class="btnstyle editBtn"> |
| | | <el-button type="primary" @click="onSubmit">确定</el-button> |
| | | <el-button class="delbtn">取消</el-button> |
| | | </div> --> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | defineEmits, |
| | | } from "vue"; |
| | | import { Plus, Delete, Top, Bottom } from "@element-plus/icons-vue"; |
| | | import { ElMessage } from "element-plus"; |
| | | const stretchValue = ref(""); |
| | | const emits = defineEmits(["SETstate"]); |
| | | const stretchOptions = [ |
| | |
| | | name: "测试", |
| | | isShow: false, |
| | | checkedAll: false, |
| | | id: 1, |
| | | children: [ |
| | | { |
| | | id: 2, |
| | | layerState: false, |
| | | layerName: "图层名称", |
| | | name: "图层名称", |
| | | layerUrl: "", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: "测试1", |
| | | isShow: false, |
| | | checkedAll: true, |
| | | layerState: false, |
| | | children: [], |
| | | }, |
| | | ]); |
| | | const form = reactive({ |
| | | name: "", |
| | | region: "", |
| | | date1: "", |
| | | date2: "", |
| | | delivery: false, |
| | | type: [], |
| | | resource: "", |
| | | desc: "", |
| | | selectName: "", |
| | | layerUrl: "", |
| | | children: [], |
| | | }); |
| | | |
| | | const props = { |
| | | label: "name", |
| | | children: "children", |
| | | }; |
| | | // 当前选中的节点 id |
| | | const selectedNodeId = ref(null as any); //做类型断言处理 |
| | | const selectedObj = ref(null); |
| | | const handleCheckChange = ( |
| | | data: Tree, |
| | | checked: boolean, |
| | | indeterminate: boolean |
| | | ) => { |
| | | console.log(data, checked, indeterminate); |
| | | }; |
| | | const onSubmit = () => { |
| | | console.log("submit!"); |
| | | }; |
| | | const handlCheckAllChange = (res) => {}; |
| | | |
| | | // 处理节点点击事件 |
| | | function handleNodeClick(data: any) { |
| | | console.log(data); |
| | | if (data.id === selectedNodeId.value) { |
| | | // 如果当前节点已经选中,则取消选中 |
| | | selectedNodeId.value = null; |
| | | console.log(selectedNodeId.value, "取消选中"); |
| | | } else { |
| | | // 否则选中当前节点 |
| | | selectedNodeId.value = data.id; |
| | | form.selectName = data.name; |
| | | console.log(selectedNodeId.value, "当前选中的节点"); |
| | | } |
| | | } |
| | | //新增 |
| | | const added = (t) => { |
| | | var id = ""; |
| | | for (var i = 0; i < 7; i++) { |
| | | id += Math.floor(Math.random() * 10); |
| | | } |
| | | |
| | | if (t == "t") { |
| | | menuOption.forEach((e, i) => { |
| | | if (e.id == selectedNodeId.value) { |
| | | menuOption.push({ |
| | | id: id, |
| | | name: form.name, |
| | | region: form.region, |
| | | layerUrl: form.layerUrl, |
| | | children: [], |
| | | }); |
| | | } else { |
| | | e.children.forEach((v) => { |
| | | if (v.id == selectedNodeId.value) { |
| | | menuOption[i].children.push({ |
| | | id: id, |
| | | name: form.name, |
| | | region: form.region, |
| | | layerUrl: form.layerUrl, |
| | | children: [], |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | // if(){ |
| | | // return |
| | | // } |
| | | } |
| | | }; |
| | | //删除 |
| | | const delLayer = () => { |
| | | menuOption = menuOption.filter((item) => { |
| | | return item.id != selectedNodeId.value; |
| | | }); |
| | | |
| | | console.log(menuOption); |
| | | }; |
| | | //图层设置弹框 |
| | | const layerSet = () => {}; |
| | | //关闭状态 |
| | | const editState = () => { |
| | | emits("SETstate", false); |
| | | }; |
| | | const handlIsShow = (res: string) => { |
| | | menuOption.forEach((e) => { |
| | | if (e.name == res) { |
| | |
| | | } |
| | | }); |
| | | }; |
| | | //图层设置弹框 |
| | | const layerSet = () => {}; |
| | | //关闭状态 |
| | | const editState = () => { |
| | | emits("SETstate", false); |
| | | //选择列表 |
| | | const selectList = (v) => { |
| | | // selectedNodeId.value = v.id; |
| | | console.log(v); |
| | | if (v.id === selectedNodeId.value) { |
| | | // 如果当前节点已经选中,则取消选中 |
| | | selectedNodeId.value = null; |
| | | console.log(selectedNodeId.value, "取消选中"); |
| | | } else { |
| | | // 否则选中当前节点 |
| | | selectedNodeId.value = v.id; |
| | | form.selectName = v.name; |
| | | selectedObj.value = v; |
| | | console.log(selectedNodeId.value, "当前选中的节点"); |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | |
| | | width: 1227px; |
| | | display: flex; |
| | | position: absolute; |
| | | top: 50%; |
| | | left: 50%; |
| | | transform: translateX(-50%); |
| | | transform: translateY(-50%); |
| | | top: 60px; |
| | | left: 395px; |
| | | // top: 50%; |
| | | // left: 50%; |
| | | // transform: translateX(-50%); |
| | | // transform: translateY(-50%); |
| | | background: rgba(7, 8, 14, 0.8); |
| | | box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1); |
| | | border: 1px solid #d6e4ff; |
| | |
| | | } |
| | | .edit_box_form { |
| | | padding: 0 116px; |
| | | /deep/ .el-form-item__label { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | .btnstyle { |
| | |
| | | } |
| | | .layerBox { |
| | | width: 359px; |
| | | height: 680px; |
| | | height: 615px; |
| | | background: rgba(7, 8, 14, 0.8); |
| | | |
| | | .layerTitle { |
| | | width: calc(100% - 27px); |
| | | height: 42px; |
| | |
| | | width: 22px; |
| | | height: 22px; |
| | | background: url("../../assets/img/leftBtn/矩形 8 拷贝 3.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | margin-left: 16px; |
| | | } |
| | | .contentLabel { |
| | |
| | | background: #1e2a3d; |
| | | padding: 10px; |
| | | } |
| | | .layer_box { |
| | | padding: 4px; |
| | | margin-bottom: 4px; |
| | | color: #ffffff; |
| | | font-size: 18px; |
| | | font-weight: 400; |
| | | background: #0e151f; |
| | | box-shadow: 0px 0px 6px 0px #080c13, |
| | | 0px 14px 16px 0px rgba(38, 47, 71, 0.68); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | padding-left: 7px; |
| | | padding-right: 20px; |
| | | .contentLeft { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | .contentImg { |
| | | width: 22px; |
| | | height: 22px; |
| | | background: url("../../assets/img/leftBtn/矩形 8 拷贝 3.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | margin-left: 16px; |
| | | } |
| | | .contentLabel { |
| | | font-size: 20px; |
| | | font-family: Source Han Sans CN; |
| | | font-weight: 300; |
| | | color: #ffffff; |
| | | margin-left: 7px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .editBtn { |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding-top: 36px; |
| | | .delbtn { |
| | | margin-left: 40px; |
| | | } |
| | | } |
| | | .el-tree { |
| | | background: transparent; |
| | | } |
| | | /deep/ .el-tree-node { |
| | | background: #0d131d; |
| | | color: #ffffff; |
| | | font-size: 20px; |
| | | font-weight: 300; |
| | | margin-top: 3px; |
| | | padding: 8px; |
| | | } |
| | | /deep/ .el-tree-node:focus > .el-tree-node__content { |
| | | background: transparent; |
| | | } |
| | | /deep/ .el-tree-node__content:hover { |
| | | background: #0d131d; |
| | | } |
| | | /deep/ .el-tree-node__children { |
| | | background: #1e2a3d; |
| | | .el-tree-node { |
| | | background: #1e2a3d; |
| | | margin-top: 0; |
| | | padding: 4px; |
| | | } |
| | | } |
| | | /deep/ |
| | | .el-tree--highlight-current |
| | | .el-tree-node.is-current |
| | | > .el-tree-node__content { |
| | | background: rgba(104, 156, 255, 0.5) !important; |
| | | } |
| | | .highlight { |
| | | background: rgba(104, 156, 255, 0.5) !important; |
| | | } |
| | | </style> |