| | |
| | | "amfe-flexible": "^2.2.1", |
| | | "axios": "^1.3.4", |
| | | "default-passive-events": "^2.0.0", |
| | | "element-plus": "^2.3.0", |
| | | "element-plus": "^2.3.8", |
| | | "js-base64": "^3.7.5", |
| | | "jsencrypt": "^3.3.2", |
| | | "mitt": "^3.0.1", |
| | |
| | | */ |
| | | import request from "@/utils/request"; |
| | | |
| | | // æ¥è¯¢å¤©æ° |
| | | export function layerList(params) { |
| | | //请æ±å°å |
| | | return request.get("/select", { params: params }); |
| | | } |
| | | |
| | | |
| | | //å°åæ¥è¯¢ |
| | | export function dataQuery_selectByPage(params) { |
| | | //请æ±å°å |
| | |
| | | return request.get("/dataQuery/selectFields", { params: params }); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | //è·åRSAå å¯å
¬é¥ |
| | | export function sign_getPublicKey(params) { |
| | | //请æ±å°å |
| | |
| | | //ç»å½ |
| | | export function sign_login(params) { |
| | | //请æ±å°å |
| | | return request.post('/sign/login', params); |
| | | return request.post("/sign/login", params); |
| | | } |
| | | //å¾å±æ¥è¯¢ |
| | | export function layer_selectAll(params) { |
| | | //请æ±å°å |
| | | return request.get("/layer/selectAll", { params: params }); |
| | | } |
| | |
| | | */ |
| | | import axios from "axios"; |
| | | import { ElMessage, ElLoading } from "element-plus"; |
| | | import { useRouter } from "vue-router"; |
| | | |
| | | import { getToken } from "@/utils/auth"; |
| | | const router = useRouter(); |
| | | // create an axios instance |
| | | const service = axios.create({ |
| | | baseURL: BASE_URL, // apiçbase_url |
| | |
| | | // æ¥éæç¤º |
| | | if (response.data.code !== 200) { |
| | | ElMessage.error(response.data.msg); |
| | | } else if ( |
| | | response.data.code !== 200 && |
| | | response.data.result == "ç¨æ·æªç»å½" |
| | | ) { |
| | | router.push({ path: "/login" }); |
| | | } |
| | | return response.data; |
| | | }, |
| | |
| | | <div v-drag="true" class="spatialBox"> |
| | | <!-- v-resizable="'right, bottom'" --> |
| | | <div class="spatialTitle"> |
| | | <label>ç©ºé´æ¥è¯¢</label> |
| | | <label>屿§</label> |
| | | <el-icon @click="setSpatialClose" :size="20" style="cursor: pointer"> |
| | | <Close /> |
| | | </el-icon> |
| | | </div> |
| | | <div class="spatialContent"> |
| | | <div class="spatialTable"> |
| | | <el-table :data="tableData" style="width: 100%; height: 73%"> |
| | | <el-table :data="tableData" style="width: 100%; height: 82%"> |
| | | <el-table-column |
| | | v-for="(item, index) in attributeData" |
| | | :key="index" |
| | |
| | | |
| | | //defineProps æ¥æ¥æ¶ç»ä»¶çä¼ å¼ |
| | | const props = defineProps({ |
| | | layerData: { |
| | | type: Object, |
| | | }, |
| | | layerData: Object, |
| | | }); |
| | | |
| | | const handleSizeChange = (res) => { |
| | |
| | | }; |
| | | |
| | | const setQueySpatialFields = async () => { |
| | | console.log(props.layerData); |
| | | const data = await dataQuery_selectFields({ name: listData.value.name }); |
| | | if (data.code != 200) { |
| | | return ElMessage.error("åæ®µæ¥è¯¢å¤±è´¥"); |
| | | } |
| | | console.log(data); |
| | | attributeData.value = data.result; |
| | | |
| | | console.log(attributeData.value); |
| | | attributeData.value = data.result; |
| | | |
| | | conditionChange(data.result[0]); |
| | | setQueySpatialData(); |
| | |
| | | watch( |
| | | () => props.layerData, |
| | | (nVal, oVal) => { |
| | | console.log("å¼åçäºåæ´", nVal, oVal); |
| | | // console.log("å¼åçäºåæ´", nVal, oVal); |
| | | startQueryData(); |
| | | }, |
| | | { deep: true } |
| | |
| | | } |
| | | </style> |
| | | <style lang="less"> |
| | | .el-scrollbar { |
| | | background: rgba(7, 8, 14) !important; |
| | | border: 1px solid #4472cb; |
| | | color: #d6e4ff !important; |
| | | box-shadow: inset 0px 1px 40px 1px rgba(38, 47, 71, 1); |
| | | // .el-dropdown-menu { |
| | | // background: rgba(7, 8, 14, 0.8) !important; |
| | | // } |
| | | .el-select-dropdown__item { |
| | | color: #d6e4ff; |
| | | } |
| | | .el-select-dropdown__item:hover { |
| | | background: rgba(38, 47, 71, 1) !important; |
| | | } |
| | | .el-select-dropdown__item.hover, |
| | | .el-select-dropdown__item:hover { |
| | | background: rgba(38, 47, 71, 1) !important; |
| | | } |
| | | } |
| | | // .el-scrollbar { |
| | | // background: rgba(7, 8, 14) !important; |
| | | // border: 1px solid #4472cb; |
| | | // color: #d6e4ff !important; |
| | | // box-shadow: inset 0px 1px 40px 1px rgba(38, 47, 71, 1); |
| | | // // .el-dropdown-menu { |
| | | // // background: rgba(7, 8, 14, 0.8) !important; |
| | | // // } |
| | | // .el-select-dropdown__item { |
| | | // color: #d6e4ff; |
| | | // } |
| | | // .el-select-dropdown__item:hover { |
| | | // background: rgba(38, 47, 71, 1) !important; |
| | | // } |
| | | // .el-select-dropdown__item.hover, |
| | | // .el-select-dropdown__item:hover { |
| | | // background: rgba(38, 47, 71, 1) !important; |
| | | // } |
| | | // } |
| | | .el-table__header-wrapper { |
| | | border: 1px siolid #409eff; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="content"> |
| | | <div class="title"> |
| | | <label>详ç»ç¼è¾</label> |
| | | <el-icon @click="setSpatialClose" :size="20" style="cursor: pointer"> |
| | | <Close /> |
| | | </el-icon> |
| | | </div> |
| | | <div class="layer_box"> |
| | | <div class="check_box"> |
| | | <!-- <el-checkbox @change="handlCheckAllChange" v-model="layerState">{{ |
| | | layerName |
| | | }}</el-checkbox> --> |
| | | {{ layerData.name }} |
| | | <img src="../../assets/img/layer.png" alt="" /> |
| | | </div> |
| | | <div class="slider-demo-block"> |
| | | <div class="demonstration">éæåº¦</div> |
| | | <el-slider v-model="transparence" /> |
| | | <div class="demonstration">{{ transparence }}%</div> |
| | | </div> |
| | | <div class="selectBox"> |
| | | <div class="selectTile demonstration">æä¼¸æ¹å¼</div> |
| | | <el-select |
| | | v-model="stretchValue" |
| | | class="m-2" |
| | | placeholder="Select" |
| | | size="small" |
| | | > |
| | | <el-option |
| | | v-for="item in stretchOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | | import { |
| | | ref, |
| | | onMounted, |
| | | onBeforeUnmount, |
| | | reactive, |
| | | defineProps, |
| | | defineEmits, |
| | | } from "vue"; |
| | | const stretchValue = ref(""); |
| | | const transparence = ref(0); |
| | | let layerName = ref("å¾å±åç§°"); |
| | | let layerState = ref(false); |
| | | const stretchOptions = [ |
| | | { |
| | | value: "Option1", |
| | | label: "Option1", |
| | | }, |
| | | { |
| | | value: "Option2", |
| | | label: "Option2", |
| | | }, |
| | | { |
| | | value: "Option3", |
| | | label: "Option3", |
| | | }, |
| | | { |
| | | value: "Option4", |
| | | label: "Option4", |
| | | }, |
| | | { |
| | | value: "Option5", |
| | | label: "Option5", |
| | | }, |
| | | ]; |
| | | const emits = defineEmits(["detailClose"]); |
| | | //defineProps æ¥æ¥æ¶ç»ä»¶çä¼ å¼ |
| | | const props = defineProps({ |
| | | layerData: Object, |
| | | }); |
| | | const setSpatialClose = () => { |
| | | emits("detailClose", false); |
| | | }; |
| | | const handlCheckAllChange = (res) => {}; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .content { |
| | | background: #1e2a3d; |
| | | padding: 20px; |
| | | height: 400px; |
| | | margin-left: 20px; |
| | | margin-top: 40px; |
| | | .title { |
| | | font-size: 18px; |
| | | font-family: Source Han Sans CN; |
| | | font-weight: 400; |
| | | color: #ffffff; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | .layer_box { |
| | | margin-top: 10px; |
| | | } |
| | | } |
| | | .check_box { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding-right: 50px; |
| | | padding-top: 10px; |
| | | font-size: 16px; |
| | | color: #ffffff; |
| | | img { |
| | | width: 22px; |
| | | height: 19px; |
| | | } |
| | | } |
| | | .check_box .el-checkbox { |
| | | font-size: 16px; |
| | | color: #ffffff; |
| | | } |
| | | .check_box /deep/ .el-checkbox__input.is-checked .el-checkbox__inner { |
| | | background-color: rgba(13, 255, 0, 1); |
| | | border-color: rgba(41, 109, 255, 1); |
| | | } |
| | | .check_box /deep/ .el-checkbox__input.is-checked + .el-checkbox__label { |
| | | color: #fff; |
| | | } |
| | | .slider-demo-block { |
| | | margin-top: 22px; |
| | | } |
| | | .demonstration { |
| | | font-size: 12px; |
| | | font-weight: 300; |
| | | color: #d6e4ff; |
| | | } |
| | | /deep/ .el-slider__runway { |
| | | height: 2px; |
| | | |
| | | background: #73a1fa; |
| | | } |
| | | /deep/ .el-slider__bar { |
| | | height: 2px; |
| | | |
| | | background: #73a1fa; |
| | | } |
| | | /deep/ .el-slider__button { |
| | | width: 17px; |
| | | height: 18px; |
| | | border: 0; |
| | | background: url("../../assets/img/DBX.png") no-repeat center; |
| | | background-size: 100% 100%; |
| | | border-radius: 0; |
| | | } |
| | | .selectBox { |
| | | margin-top: 24px; |
| | | .selectTile { |
| | | padding-bottom: 6px; |
| | | } |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | } |
| | | /deep/.el-select-dropdown__item { |
| | | font-size: 12px !important; |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | <div class="layerContent"> |
| | | <el-tree |
| | | node-key="id" |
| | | :props="props" |
| | | :highlight-current="false" |
| | | :current-node-key="selectedNodeId" |
| | | :data="menuOption" |
| | | :data="treeData" |
| | | :expand-on-click-node="false" |
| | | show-checkbox |
| | | @check="handleCheckChange" |
| | | ref="estreeRef" |
| | | v-if="treeData.length" |
| | | > |
| | | <template #default="{ node, data }"> |
| | | <span class="custom-tree-node"> |
| | | <span>{{ node.label }}</span> |
| | | <span class="label">{{ node.label }}</span> |
| | | <!-- <span> |
| | | <a @click="append(data)"> Append </a> |
| | | <a style="margin-left: 8px" @click="remove(node, data)"> |
| | | Delete |
| | | </a> |
| | | </span> --> |
| | | <el-dropdown trigger="click"> |
| | | <span class="el-dropdown-link"> |
| | | <el-icon class="el-icon--right"> |
| | | <MoreFilled /> |
| | | </el-icon> |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item @click.native="clickdropdown(1, data)" |
| | | >详ç»</el-dropdown-item |
| | | > |
| | | <el-dropdown-item @click.native="clickdropdown(2, data)" |
| | | >屿§</el-dropdown-item |
| | | > |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | <span class="button" v-if="data.type == 2"> |
| | | <el-dropdown trigger="click"> |
| | | <span class="el-dropdown-link"> |
| | | <el-icon class="el-icon--right"> |
| | | <MoreFilled /> |
| | | </el-icon> |
| | | </span> |
| | | <template #dropdown> |
| | | <el-dropdown-menu> |
| | | <el-dropdown-item @click.native="clickdropdown(1, data)" |
| | | >详ç»</el-dropdown-item |
| | | > |
| | | <el-dropdown-item @click.native="clickdropdown(2, data)" |
| | | >屿§</el-dropdown-item |
| | | > |
| | | </el-dropdown-menu> |
| | | </template> |
| | | </el-dropdown> |
| | | </span> |
| | | </span> |
| | | </template> |
| | | </el-tree> |
| | | </div> |
| | | </div> |
| | | <layer-set v-show="layerSetIsshow" @SETstate="SETstate"></layer-set> |
| | | <layer-set |
| | | v-show="layerSetIsshow" |
| | | @SETstate="SETstate" |
| | | :layerTree="treeData" |
| | | @addlayer="addlayer" |
| | | @delLayer="delLayer" |
| | | ></layer-set> |
| | | <attribute-list |
| | | v-show="layerAttributeIsshow" |
| | | :layerData="layerObjData" |
| | | @spatialClose="setSpatialClose" |
| | | ></attribute-list> |
| | | <layer-detail |
| | | :layerData="layerObjData" |
| | | v-if="layerDetailIsshow" |
| | | @detailClose="detailClose" |
| | | ></layer-detail> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |
| | |
| | | } from "vue"; |
| | | import layerSet from "./layerSet"; |
| | | import attributeList from "./attributeList"; |
| | | import layerDetail from "./layerDetail"; |
| | | import { useStore } from "vuex"; // å¼å
¥useStore æ¹æ³ |
| | | import { layer_selectAll } from "@/api/api"; |
| | | const store = useStore(); // è¯¥æ¹æ³ç¨äºè¿åstore å®ä¾ |
| | | const stretchValue = ref(""); |
| | | |
| | |
| | | }, |
| | | ]; |
| | | const transparence = ref(0); |
| | | var treeData = ref([]); |
| | | let menuOption = reactive([ |
| | | { |
| | | id: 1, |
| | | name: "æµè¯", |
| | | isShow: false, |
| | | checkedAll: false, |
| | | type: 1, |
| | | children: [ |
| | | { |
| | | layerState: false, |
| | | name: "å¾å±åç§°", |
| | | layerUrl: "", |
| | | type: 2, |
| | | }, |
| | | { |
| | | layerState: false, |
| | | name: "å¾å±èå", |
| | | layerUrl: "", |
| | | type: 1, |
| | | children: [ |
| | | { |
| | | layerState: false, |
| | | name: "å¾å±åç§°11", |
| | | layerUrl: "", |
| | | type: 2, |
| | | }, |
| | | ], |
| | | }, |
| | | ], |
| | | parentId: null, |
| | | }, |
| | | { |
| | | id: 2, |
| | | layerState: false, |
| | | name: "å¾å±åç§°", |
| | | layerUrl: "", |
| | | type: 2, |
| | | parentId: 1, |
| | | }, |
| | | { |
| | | id: 3, |
| | | layerState: false, |
| | | name: "å¾å±èå", |
| | | layerUrl: "", |
| | | type: 1, |
| | | parentId: 1, |
| | | }, |
| | | { |
| | | id: 5, |
| | | layerState: false, |
| | | name: "å¾å±åç§°11", |
| | | layerUrl: "", |
| | | type: 2, |
| | | parentId: 3, |
| | | }, |
| | | { |
| | | id: 4, |
| | | name: "æµè¯1", |
| | | isShow: false, |
| | | checkedAll: true, |
| | | layerState: false, |
| | | type: 1, |
| | | parentId: null, |
| | | }, |
| | | ]); |
| | | |
| | | const layerSetIsshow = ref(false); |
| | | const layerAttributeIsshow = ref(false); |
| | | const layerDetailIsshow = ref(false); |
| | | const props = { |
| | | label: "name", |
| | | label: "cnName", |
| | | children: "children", |
| | | }; |
| | | const layerObjData = ref(null); |
| | | // å½åéä¸çèç¹ id |
| | | const selectedNodeId = ref(null as any); //åç±»åæè¨å¤ç |
| | | const emits = defineEmits(["setCloseLayer"]); |
| | | const handlCheckAllChange = (res) => {}; |
| | | const handlIsShow = (res: string) => { |
| | | menuOption.forEach((e) => { |
| | | if (e.name == res) { |
| | | e.isShow = !e.isShow; |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | //å¾å±è®¾ç½®å¼¹æ¡ |
| | | const layerSetBox = () => { |
| | | layerSetIsshow.value = !layerSetIsshow.value; |
| | |
| | | const setCloseLayer = () => { |
| | | emits("setCloseLayer", false); |
| | | }; |
| | | // å¤çèç¹ç¹å»äºä»¶ |
| | | 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 handleCheckChange = (data, checked) => { |
| | | let son = estreeRef.value.getCheckedNodes(); |
| | | console.log(son); //éä¸çæ°æ® |
| | | |
| | | store.commit("SET_CHECKLAYER", son); |
| | | }; |
| | | const clickdropdown = (res, e) => { |
| | | layerAttributeIsshow.value = false; |
| | | layerDetailIsshow.value = false; |
| | | layerObjData.value = e; |
| | | if (res == 2) { |
| | | layerAttributeIsshow.value = true; |
| | | layerObjData.value = e; |
| | | } else { |
| | | layerDetailIsshow.value = true; |
| | | } |
| | | console.log(res, e); |
| | | }; |
| | | const setSpatialClose = (res) => { |
| | | layerAttributeIsshow.value = res; |
| | | }; |
| | | const detailClose = (res) => { |
| | | layerDetailIsshow.value = res; |
| | | }; |
| | | //ç¼è¾å¾å±æ |
| | | const addlayer = (res) => { |
| | | menuOption.push(res); |
| | | treeData.value = handleTree(menuOption, "id", "pid", "children"); |
| | | }; |
| | | //å é¤å¾å±æ |
| | | const delLayer = (res) => { |
| | | menuOption = menuOption.filter((item) => { |
| | | return item.id != res; |
| | | }); |
| | | console.log(res); |
| | | console.log(menuOption); |
| | | // treeData = handleTree(menuOption, "id", "pid", "children"); |
| | | }; |
| | | |
| | | const getLayer = async () => { |
| | | const dt = await layer_selectAll(); |
| | | treeData.value = setTreeData(dt.result); |
| | | treeData.value = JSON.parse(JSON.stringify(treeData.value)); |
| | | |
| | | console.log(treeData.value); |
| | | }; |
| | | |
| | | //æé æ |
| | | function setTreeData(source) { |
| | | let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ°æ®æ·±åº¦å
é |
| | | return cloneData.filter((father) => { |
| | | // å¾ªç¯ææé¡¹ |
| | | let branchArr = cloneData.filter((child) => father.id == child.pid); |
| | | if (branchArr.length > 0) { |
| | | branchArr.sort(function (a, b) { |
| | | return a.orderNum - b.orderNum; |
| | | }); |
| | | } |
| | | |
| | | 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; // è¿åä¸çº§èå |
| | | }); |
| | | } |
| | | onMounted(() => { |
| | | getLayer(); |
| | | }); |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | |
| | | } |
| | | } |
| | | .layerContent { |
| | | height: 635px; |
| | | padding: 0 8px; |
| | | overflow: auto; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .slider-demo-block { |
| | | margin-top: 22px; |
| | | .layerContent::-webkit-scrollbar { |
| | | width: 8px; |
| | | } |
| | | .demonstration { |
| | | font-size: 12px; |
| | | font-weight: 300; |
| | | color: #d6e4ff; |
| | | .layerContent::-webkit-scrollbar-thumb { |
| | | border-radius: 10px; |
| | | background: rgba(0, 0, 0, 0.2); |
| | | } |
| | | /deep/ .el-slider__runway { |
| | | height: 2px; |
| | | |
| | | background: #73a1fa; |
| | | } |
| | | /deep/ .el-slider__bar { |
| | | height: 2px; |
| | | |
| | | background: #73a1fa; |
| | | } |
| | | /deep/ .el-slider__button { |
| | | width: 17px; |
| | | height: 18px; |
| | | border: 0; |
| | | background: url("../../assets/img/DBX.png") no-repeat center; |
| | | background-size: 100% 100%; |
| | | .layerContent::-webkit-scrollbar-track { |
| | | border-radius: 0; |
| | | background: rgba(0, 0, 0, 0); |
| | | } |
| | | .el-tree { |
| | | width: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | .layerContent .el-tree-node__content { |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .selectBox { |
| | | margin-top: 24px; |
| | | .selectTile { |
| | | padding-bottom: 6px; |
| | | } |
| | | .el-select { |
| | | width: 100%; |
| | | } |
| | | .layerContent .custom-tree-node { |
| | | overflow: hidden; |
| | | flex-shrink: 1; |
| | | flex-grow: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | font-size: 16px; |
| | | padding-right: 8px; |
| | | } |
| | | |
| | | .layerContent .custom-tree-node .label { |
| | | flex-shrink: 1; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | } |
| | | |
| | | .layerContent .custom-tree-node .button { |
| | | flex-grow: 0; |
| | | flex-shrink: 0; |
| | | } |
| | | } |
| | | .dropdown_box { |
| | | position: relative; |
| | | } |
| | | |
| | | /deep/.el-select-dropdown__item { |
| | | font-size: 12px !important; |
| | | } |
| | |
| | | .highlight { |
| | | background: rgba(104, 156, 255, 0.5) !important; |
| | | } |
| | | .custom-tree-node { |
| | | flex: 1; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | font-size: 16px; |
| | | padding-right: 8px; |
| | | // .custom-tree-node { |
| | | // flex: 1; |
| | | // display: flex; |
| | | // align-items: center; |
| | | // justify-content: space-between; |
| | | // font-size: 16px; |
| | | // padding-right: 8px; |
| | | // } |
| | | |
| | | .el-dropdown-menu { |
| | | background: rgba(7, 8, 14, 0.8); |
| | | box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1); |
| | | color: #fff; |
| | | border: 0; |
| | | /deep/ .el-dropdown-menu__item { |
| | | color: #fff; |
| | | } |
| | | } |
| | | /deep/ .el-dropdown-menu__item:not(.is-disabled):focus { |
| | | background-color: rgba(104, 156, 255, 0.5); |
| | | |
| | | color: #fff; |
| | | } |
| | | </style> |
| | | <style> |
| | | .el-popper.is-light { |
| | | border: 1px solid rgba(7, 8, 14, 0.8) !important; |
| | | } |
| | | .el-scrollbar { |
| | | border: 0 !important; |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layerContent"> |
| | | <!-- <el-tree |
| | | <el-tree |
| | | node-key="id" |
| | | :props="props" |
| | | :highlight-current="true" |
| | | :current-node-key="selectedNodeId" |
| | | :data="menuOption" |
| | | :data="layerTree" |
| | | :expand-on-click-node="false" |
| | | @node-click="handleNodeClick" |
| | | /> --> |
| | | ref="treeRef" |
| | | /> |
| | | |
| | | <div class="contentBox" v-for="(item, i) in menuOption" :key="i"> |
| | | <!-- <div class="contentBox" v-for="(item, i) in menuOption" :key="i"> |
| | | <div |
| | | class="contentTile" |
| | | @click.stop="selectList(item)" |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | <div class="edit_box"> |
| | |
| | | v-model="form.region" |
| | | placeholder="è¯·éæ©å¾å±ç±»å" |
| | | > |
| | | <el-option label="Zone one" value="shanghai" /> |
| | | <el-option label="Zone two" value="beijing" /> |
| | | <el-option |
| | | v-for="(e, i) in stretchOptions" |
| | | :label="e.label" |
| | | :value="e.value" |
| | | :key="i" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | |
| | | import { Plus, Delete, Top, Bottom } from "@element-plus/icons-vue"; |
| | | import { ElMessage } from "element-plus"; |
| | | const stretchValue = ref(""); |
| | | const emits = defineEmits(["SETstate"]); |
| | | const emits = defineEmits(["SETstate", "addlayer", "delLayer"]); |
| | | //defineProps æ¥æ¥æ¶ç»ä»¶çä¼ å¼ |
| | | const defineProp = defineProps({ |
| | | layerTree: Array, |
| | | }); |
| | | let treeRef = ref(); |
| | | |
| | | const stretchOptions = [ |
| | | { |
| | | value: "Option1", |
| | | label: "Option1", |
| | | value: "ç®å½", |
| | | label: "ç®å½", |
| | | }, |
| | | { |
| | | value: "Option2", |
| | |
| | | }, |
| | | ]; |
| | | |
| | | let menuOption = reactive([ |
| | | { |
| | | name: "æµè¯", |
| | | isShow: false, |
| | | checkedAll: false, |
| | | id: 1, |
| | | children: [ |
| | | { |
| | | id: 2, |
| | | layerState: false, |
| | | name: "å¾å±åç§°", |
| | | layerUrl: "", |
| | | }, |
| | | ], |
| | | }, |
| | | { |
| | | id: 3, |
| | | name: "æµè¯1", |
| | | isShow: false, |
| | | checkedAll: true, |
| | | layerState: false, |
| | | children: [], |
| | | }, |
| | | ]); |
| | | const form = reactive({ |
| | | name: "", |
| | | region: "", |
| | |
| | | children: [], |
| | | }); |
| | | const props = { |
| | | label: "name", |
| | | label: "cnName", |
| | | children: "children", |
| | | }; |
| | | // å½åéä¸çèç¹ id |
| | | const selectedNodeId = ref(null as any); //åç±»åæè¨å¤ç |
| | | const selectedObj = ref(null); |
| | | let menuOption = ref([]); |
| | | const handleCheckChange = ( |
| | | data: Tree, |
| | | checked: boolean, |
| | |
| | | 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, "å½åéä¸çèç¹"); |
| | | form.selectName = data.cnName; |
| | | selectedObj.value = data; |
| | | } |
| | | } |
| | | //æ°å¢ |
| | |
| | | for (var i = 0; i < 7; i++) { |
| | | id += Math.floor(Math.random() * 10); |
| | | } |
| | | var addObj = { |
| | | id: id, |
| | | name: form.name, |
| | | region: form.region, |
| | | layerUrl: form.layerUrl, |
| | | children: [], |
| | | type: 2, |
| | | parentId: null, |
| | | }; |
| | | if (form.region == "ç®å½") { |
| | | addObj.type = 1; |
| | | } |
| | | |
| | | 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: [], |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | addObj.parentId = selectedObj.value.parentId; |
| | | } else { |
| | | // if(){ |
| | | // return |
| | | // } |
| | | addObj.parentId = selectedNodeId.value; |
| | | } |
| | | emits("addlayer", addObj); |
| | | }; |
| | | //å é¤ |
| | | const delLayer = () => { |
| | | menuOption = menuOption.filter((item) => { |
| | | return item.id != selectedNodeId.value; |
| | | }); |
| | | |
| | | console.log(menuOption); |
| | | console.log(selectedObj.value); |
| | | console.log(treeRef.value.getNode(selectedObj.value)); |
| | | treeRef.value.remove(treeRef.value.getNode(selectedObj.value)); |
| | | // emits("delLayer", selectedNodeId.value); |
| | | }; |
| | | //å¾å±è®¾ç½®å¼¹æ¡ |
| | | const layerSet = () => {}; |
| | |
| | | emits("SETstate", false); |
| | | }; |
| | | const handlIsShow = (res: string) => { |
| | | menuOption.forEach((e) => { |
| | | menuOption.value.forEach((e) => { |
| | | if (e.name == res) { |
| | | e.isShow = !e.isShow; |
| | | } |
| | | }); |
| | | }; |
| | | //éæ©å表 |
| | | 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, "å½åéä¸çèç¹"); |
| | | } |
| | | }; |
| | | const remove = (node: Node, data: Tree) => { |
| | | const parent = node.parent; |
| | | const children: Tree[] = parent.data.children || parent.data; |
| | | const index = children.findIndex((d) => d.id === data.id); |
| | | children.splice(index, 1); |
| | | // menuOption.value = [...menuOption.value]; |
| | | }; |
| | | let id = 1000; |
| | | const append = (data: Tree) => { |
| | | const newChild = { id: id++, name: "testtest", children: [] }; |
| | | if (!data.children) { |
| | | data.children = []; |
| | | } |
| | | data.children.push(newChild); |
| | | // console.log(data); |
| | | // menuOption = [...menuOption]; |
| | | // console.log(menuOption); |
| | | }; |
| | | </script> |
| | | |
| | |
| | | padding: 4px; |
| | | } |
| | | } |
| | | /deep/ |
| | | .el-tree--highlight-current |
| | | .el-tree-node.is-current |
| | | > .el-tree-node__content { |
| | | background: rgba(104, 156, 255, 0.5) !important; |
| | | } |
| | | // .layerContent |
| | | // /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; |
| | | } |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item prop="verify"> |
| | | <div style="display: flex;justify-content: space-between; width: 100%; "> |
| | | <div |
| | | style="display: flex; justify-content: space-between; width: 100%" |
| | | > |
| | | <el-input |
| | | placeholder="请è¾å
¥éªè¯ç ï¼å¿½ç¥å¤§å°åï¼" |
| | | v-model="ruleForm.verify" |
| | | style="width:68%;" |
| | | style="width: 68%" |
| | | /> |
| | | <valid-code style="width:27%;"></valid-code> |
| | | <valid-code style="width: 27%"></valid-code> |
| | | </div> |
| | | |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button |
| | | type="primary" |
| | | class="nobr loginbtn btnbox" |
| | | @click="submitForm(ruleFormRef)" |
| | | >ç»å½</el-button> |
| | | >ç»å½</el-button |
| | | > |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | const reportUrl = ref(""); |
| | | |
| | | const ruleForm = reactive({ |
| | | user: "", |
| | | passWorld: "", |
| | | user: "admin", |
| | | passWorld: "Admin@1234_lf", |
| | | verify: "", |
| | | }); |
| | | const validateVerify = (rule: any, value: any, callback: any) => { |
| | |
| | | <template> |
| | | <div |
| | | class="menus" |
| | | v-show="fullScreen" |
| | | > |
| | | <div class="menus" v-show="fullScreen"> |
| | | <div class="logo_box"> |
| | | <img |
| | | src="../assets/img/logo.png" |
| | | alt="" |
| | | class="logo" |
| | | /> |
| | | <img src="../assets/img/logo.png" alt="" class="logo" /> |
| | | <div class="logo_name"> |
| | | <h3>æçå¤§æ°æ®å°ç空é´åæå±ç¤ºå¹³å°</h3> |
| | | <img |
| | | src="../assets/img/logob.png" |
| | | alt="" |
| | | class="logo_name_b" |
| | | /> |
| | | <img src="../assets/img/logob.png" alt="" class="logo_name_b" /> |
| | | </div> |
| | | </div> |
| | | <div class="menus_box"> |
| | | |
| | | <div class="menu_Image_box"> |
| | | <div |
| | | class="imgBox" |
| | |
| | | /> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <div |
| | | class="content_box" |
| | | v-show="fullScreen" |
| | | > |
| | | <layer-manage |
| | | @setCloseLayer="setCloseLayer" |
| | | v-if="checkMenuFlag == 'l1'" |
| | | > </layer-manage> |
| | | <div class="content_box" v-show="fullScreen"> |
| | | <layer-manage @setCloseLayer="setCloseLayer" v-if="checkMenuFlag == 'l1'"> |
| | | </layer-manage> |
| | | |
| | | <plotting v-show="checkMenuFlag == 'l2'"> </plotting> |
| | | <baseMapSwitching v-show="checkMenuFlag == 'l5'"> </baseMapSwitching> |
| | | <search v-if="thematicMapBtnState"> </search> |
| | | </div> |
| | | <top-btn |
| | | v-show="fullScreen" |
| | | v-if="thematicMapBtnState" |
| | | ></top-btn> |
| | | <top-btn v-show="fullScreen" v-if="thematicMapBtnState"></top-btn> |
| | | <thematic-map v-show="!thematicMapBtnState"></thematic-map> |
| | | <div |
| | | class="fullScreen_btn" |
| | | v-show="!fullScreen" |
| | | @click="screen" |
| | | ></div> |
| | | <div class="fullScreen_btn" v-show="!fullScreen" @click="screen"></div> |
| | | </template> |
| | | |
| | | <script lang="ts" setup> |