<template> <div> <div :style="{ height: `${boxHeight}px`, width: `${boxWidth}px` }" id="container" ></div> <div class="btn-wrapper"> <div class="myBtn"> <div class="el-btn" :class="{ active: targetNum == 1 }" @click.stop="addDevice" > <template v-if="iconClass == 'icon-create'"> <span class="left"> <i class="iconfont" :class="iconClass" /> </span> <span class="right">{{ createLabel }}</span> </template> <template v-else> <span class="newLetf">{{ createLabel }}</span> <span class="newRight"> <i class="iconfont" :class="iconClass" /> </span> </template> </div> <div class="el-btn" :class="{ active: targetNum == 2 }" @click.stop="editDevice" > <span class="left"> <i class="iconfont icon-compile" /> </span> <span class="right">编辑</span> </div> <div class="el-btn" :class="{ active: targetNum == 3 }" @click.stop="deleteDevice" > <span class="left"> <i class="iconfont icon-delete" /> </span> <span class="right">删除</span> </div> </div> <div class="animate"> <el-collapse-transition> <div v-show="deviceType"> <div v-for="item in changeBtnData" :key="item.value" class="option"> <div class="op-btn" :class="{ active: item.value == createValue }" @click.stop="createChange($event, item)" > <span class="left"> <i class="iconfont" :class="item.icon" /> </span> <span class="right">{{ item.label }}</span> </div> </div> </div> </el-collapse-transition> </div> </div> <!-- <el-input v-model="keyWord" placeholder="点击输入" id="tipinput" class="search-input" /> <el-button icon="el-icon-search" class="search-but" @click="search()" >搜索</el-button > <el-button icon="el-icon-refresh" class="refresh-but" @click="refreshMap()" >重置</el-button > --> <!-- <div class="leftBar-wrapper"> <div v-for="item in changeBtnData" :key="item.value" class="box" :class="{ active: leftBarNum.indexOf(item.value) >= 0 }" @click="leftBarChange(item)" > <div class="left"> <i class="iconfont" :class="item.icon"></i> </div> <div class="right"> {{ item.label }} </div> <i class="el-icon-check"></i> </div> </div> --> <div ref="drawer" class="drawer" :class="{ back: backFlag, opacity: drawerOpacity }" @click.stop="drawerdrawer" > <div class="mapChange"> <div :class="{ active: !mapStyle }" @click="mapChange(1)">卫星地图</div> <div :class="{ active: mapStyle }" @click="mapChange(2)">全景地图</div> </div> <div class="pipePressure"> <!-- <div>管道压力</div> --> <div class="hasColorBox" :style="{ color: lineColor[`1`] }"> <div :style="{ backgroundColor: lineColor[`1`] }"></div> 低压 </div> <div class="hasColorBox" :style="{ color: lineColor[`2`] }"> <div :style="{ backgroundColor: lineColor[`2`] }"></div> 中压 </div> <div class="hasColorBox" :style="{ color: lineColor[`3`] }"> <div :style="{ backgroundColor: lineColor[`3`] }"></div> 次高压 </div> <div class="hasColorBox" :style="{ color: lineColor[`4`] }"> <div :style="{ backgroundColor: lineColor[`4`] }"></div> 高压 </div> </div> <div class="switch" @click="backFlag = !backFlag"> <img v-if="!backFlag" src="@/assets/images/l.png" alt="" /> <img v-else src="@/assets/images/r.png" alt="" /> </div> <!-- 只能动态传入内嵌盒子的高 --> <div class="scroll" :style="{ height: `${boxHeight}px` }"> <el-input v-model="keyWord" placeholder="点击输入设备名称" id="tipinput" class="search-input" > <template slot="suffix"> <div @click="search()"> <i class="iconfont icon-search"></i> </div> </template> </el-input> <!-- <el-button class="search-but" @click="search()">搜索</el-button> --> <el-button class="refresh-but" @click="refreshMap()"> <i class="iconfont icon-reset"></i> </el-button> <div class="leftBar-wrapper"> <div class="box-wrapper" v-for="(item, index) in changeBtnData" :key="item.value" > <div class="box" :class="{ active: leftBarNum.indexOf(item.value) >= 0, firstbox: index == 0, }" @click.stop="arrowRightChange(item)" > <span class="upPic"> 上图 </span> <div class="left"> <i class="iconfont" :class="item.icon"></i> </div> <div class="right"> {{ item.label }} </div> <i @click.stop="leftBarChange(item)" class="el-icon-check bingo" ></i> <i class="ju"></i> <i class="arrow-right el-icon-arrow-right" :class="{ active: arrowRightNum.indexOf(item.value) >= 0 }" ></i> </div> <el-collapse-transition> <div class="animate" v-show="arrowRightNum.indexOf(item.value) >= 0" > <!-- 有数据 --> <template v-if="item.list.length > 0"> <!-- 设备以及管道 展示内容是一样的 --> <template v-if="item.value != 9"> <div class="list-wrapper"> <div class="thead"> <div class="no"></div> <div class="code">设备编号</div> <div class="name">设备名称</div> </div> <div class="deviceList" :class="{ topActive: index == 0 }" v-for="(iten, index) in item.list" :key="iten.deviceId + `` + index" @click.stop="panToo(iten, item)" > <div class="no">{{ iten.no + 1 }}</div> <div :title="iten.code" class="code"> {{ iten.code }} </div> <div :title="iten.deviceName" class="name"> {{ iten.deviceName }} </div> </div> </div> </template> <!-- 翻页 --> <div class="goback"> <div class="btn-w"> <el-button class="btn backPage" type="mini" :disabled="item.nowPage == 1" @click.stop="pageBack(item, index)" icon="el-icon-arrow-left" /> <span class="btn-w-num">{{ item.nowPage }}</span> <el-button class="btn goPage" type="mini" :disabled="item.nowPage == item.maxPage" @click.stop="pageGo(item, index)" icon="el-icon-arrow-right" /> </div> </div> </template> <!-- 无数据 --> <template v-else> <div style="padding-left: 5px; color: #fff">暂无数据</div> </template> </div> </el-collapse-transition> </div> </div> </div> </div> </div> </template> <script> import gaodeMap from "utils/gaodeMap.js"; import { pipeAllInfoList } from "@/api/device/pipe.js"; import { map, DEVICE_TYPE, mapOperateType } from "utils/gaodeMap.js"; import { getAllDeviceInfo } from "@/api/device/deviceInfo"; import { lineColor } from "@/utils/mapCommon.js"; export default { data() { return { gaoMap: null, deviceType: false, value: "", operateType: "", radio1: "", // 1新建,2编辑,3删除,点按钮变色 targetNum: 0, lineColor, backFlag: true, // 卫星与全景地图的切换 mapStyle: true, // 抽屉内的滚动条的高需要赋值赋值 boxHeight: "", boxWidth: "", drawerOpacity: false, // 左边的bar的active判定 leftBarNum: [1, 2, 3, 4, 7], // 右转箭头的样式active判定 arrowRightNum: [], // 新建里的值 iconClass: "icon-create", createValue: 0, createLabel: "新增", changeBtnData: [ { value: 1, icon: "icon-gd", label: "管道", nowPage: 1, maxPage: 99, list: [], }, { value: 2, icon: "icon-tyx", label: "调压箱", nowPage: 1, maxPage: 99, list: [], }, { value: 3, icon: "icon-fmj", label: "阀门井", nowPage: 1, maxPage: 99, list: [], }, { value: 4, icon: "icon-llj", label: "流量计", nowPage: 1, maxPage: 99, list: [], }, { value: 7, icon: "icon-ylb", label: "压力表", nowPage: 1, maxPage: 99, list: [], }, ], allList: [[], [], [], [], []], keyWord: "", }; }, mounted() { this.onResize(); window.removeEventListener("resize", this.onResize); window.addEventListener("resize", this.onResize); this.initMap(); }, methods: { onResize() { this.boxHeight = document.body.clientHeight - 80; this.boxWidth = document.body.clientWidth - 100; }, async initMap() { let gaoMap = new gaodeMap(process.env.VUE_APP_MAP_CENTER); this.gaoMap = gaoMap; this.gaoMap.view = this; window.removeEventListener("click", this.barClose); window.addEventListener("click", this.barClose); gaoMap.addMouseTool(); gaoMap.searchTips("tipinput"); await this.getDeviceInfo(); await this.getPipeList(); this.pipeList(); }, // 左边的Bar修改值 leftBarChange(item) { // this.leftBarNum= this.leftBarNum != item.value ? item.value:0; // 关闭infowindow this.gaoMap.closeInfoWindow(); // 恢复颜色 this.gaoMap.polyLinesColorClear(); const index = this.leftBarNum.indexOf(item.value); if (index >= 0) { this.leftBarNum.splice(index, 1); } else { this.leftBarNum.push(item.value); this.panTo(item); } // 1,2,3,4,7分别对应数据库type5,1,2,3,4 console.log(this.leftBarNum); if (this.leftBarNum.includes(1)) { this.gaoMap.lineShow(true); } else { this.gaoMap.lineShow(false); } // console.log("marks",this.gaoMap.markers) // this.gaoMap.markerShow(); if (this.leftBarNum.includes(2)) { this.gaoMap.markerShow(1, true); } else { this.gaoMap.markerShow(1, false); } if (this.leftBarNum.includes(3)) { this.gaoMap.markerShow(2, true); } else { this.gaoMap.markerShow(2, false); } if (this.leftBarNum.includes(4)) { this.gaoMap.markerShow(3, true); } else { this.gaoMap.markerShow(3, false); } if (this.leftBarNum.includes(7)) { this.gaoMap.markerShow(4, true); } else { this.gaoMap.markerShow(4, false); } }, // 卫星地图与全景地图的切换 mapChange(num) { if (num == 1) { this.mapStyle = false; } else { this.mapStyle = true; } this.gaoMap.changeMap(this.mapStyle); }, addDevice() { if (this.iconClass == "icon-create") { this.targetNum = this.targetNum != 1 ? 1 : 0; } else { if (this.deviceType) { this.targetNum = 0; this.createReset(); this.gaoMap.newLineReset(); } } if (this.targetNum == 1 && this.createValue == 1) { this.gaoMap.lineType = 1; } else { this.gaoMap.lineType = 0; this.gaoMap.mouseTool.close(); } // 关闭当前的infowindow this.gaoMap.closeInfoWindow(); // 清除所有线的颜色 this.gaoMap.polyLinesColorClear(); this.deviceType = !this.deviceType; this.gaoMap.mapOperateType = "add"; this.gaoMap.removeMarkerDragg(); }, // 选择新建项目哪个 createChange(e, item) { // e.stopPropagation(); this.deviceType = false; this.iconClass = item.icon; this.createValue = item.value; this.createLabel = item.label; if (this.targetNum == 1 && this.createValue == 1) { // 0是初始,1是新建 2是编辑 3删除 this.gaoMap.lineType = 1; if (this.gaoMap.newLineObj == null) { console.log(this.gaoMap.newLineObj); this.gaoMap.createNewLine(); } } else { // 如果不是管道,就归位 this.gaoMap.lineType = 0; // 如果不是管道了,把之前的管道清空 this.gaoMap.newLineReset(); // this.createReset(); // 其他 this.gaoMap.draw(this.createValue.toString()); } // 清空所有正在编辑状态的线 this.gaoMap.linePolyEditorAllClose(); }, // 新建按钮还原 createReset() { this.iconClass = "icon-create"; this.createValue = 0; this.createLabel = "新建"; this.gaoMap.closeAddMarker(); }, editDevice() { this.targetNum = this.targetNum != 2 ? 2 : 0; this.gaoMap.lineType = this.targetNum; if (this.targetNum != 2) { this.gaoMap.linePolyEditorAllClose(); this.gaoMap.removeMarkerDragg(); this.gaoMap.mapOperateType = "normal"; } else { // 如果正在新建线条,则清空 this.gaoMap.newLineReset(); this.deviceType = false; this.gaoMap.mapOperateType = "edit"; this.gaoMap.addMarkerDragg(); // this.gaoMap.placeSearch.clear(); this.gaoMap.closeAddMarker(); } // 关闭当前的infowindow this.gaoMap.closeInfoWindow(); // 清空管道颜色 this.gaoMap.polyLinesColorClear(); this.createReset(); }, deleteDevice() { this.targetNum = this.targetNum != 3 ? 3 : 0; this.gaoMap.lineType = this.targetNum; if (this.targetNum != 3) { this.gaoMap.removeMarkerDragg(); this.gaoMap.mapOperateType = "normal"; } else { // 如果正在新建线条,则清空 this.gaoMap.newLineReset(); // 清空所有正在编辑状态的线 this.gaoMap.linePolyEditorAllClose(); this.deviceType = false; this.gaoMap.mapOperateType = "delete"; this.gaoMap.removeMarkerDragg(); //this.gaoMap.placeSearch.clear(); this.gaoMap.closeAddMarker(); } // 关闭当前的infowindow this.gaoMap.closeInfoWindow(); // 清空管道颜色 this.gaoMap.polyLinesColorClear(); this.createReset(); }, selectDeviceType(val) { // if("add" == this.operationType){ this.gaoMap.draw(val); // } this.deviceType = false; this.value = ""; // 如果选择的是新建管道 if (val == 1) { this.gaoMap.lineType = 1; this.gaoMap.createNewLine(); } }, getDeviceInfo(queryParams) { this.loading = true; return getAllDeviceInfo(queryParams).then((response) => { if (response.code == 200) { this.deviceClassify(response.data); for (var i = 0; i < response.data.length; i++) { if ("1" == response.data[i].deviceType) { this.gaoMap.addMarker( DEVICE_TYPE.REGEULATORBOX, response.data[i] ); } if ("2" == response.data[i].deviceType) { this.gaoMap.addMarker(DEVICE_TYPE.VALUEWELL, response.data[i]); } if ("3" == response.data[i].deviceType) { this.gaoMap.addMarker(DEVICE_TYPE.FLOWMETER, response.data[i]); } if ("4" == response.data[i].deviceType) { this.gaoMap.addMarker(DEVICE_TYPE.PRESSUREGAGE, response.data[i]); } } } this.loading = false; }); }, getPipeList(queryParams) { return pipeAllInfoList(queryParams).then((res) => { console.log("管道", res); if (res.code == 200) { this.pipeClassify(res.data); this.gaoMap.addPolyline(res.data); } }); }, searchClear() { this.iconClass = "icon-create"; this.createValue = 0; this.createLabel = "新建"; this.targetNum = 0; this.gaoMap.lineType = 0; this.gaoMap.newLineReset(); this.gaoMap.linePolyEditorAllClose(); this.gaoMap.closeAddMarker(); this.gaoMap.removeMarkerDragg(); this.gaoMap.mapOperateType = "normal"; this.leftBarNum = [1, 2, 3, 4, 7]; // map.remove(this.gaodeMap.markerOverlays); }, async search() { this.searchClear(); map.clearMap(); this.gaoMap.placeSearch.clear(); if (!(!this.gaoMap.searchSelectAdcode && !this.gaoMap.searchSelectName)) { this.gaoMap.placeSearch.setCity(this.gaoMap.searchSelectAdcode); this.gaoMap.placeSearch.search(this.gaoMap.searchSelectName); this.gaoMap.markers = []; await this.getDeviceInfo({ deviceName: this.gaoMap.searchSelectName }); this.gaoMap.polyLines = []; await this.getPipeList({ pipeName: this.gaoMap.searchSelectName }); this.gaoMap.searchSelectAdcode = undefined; this.gaoMap.searchSelectName = undefined; } else { this.gaoMap.placeSearch.search(this.keyWord); this.gaoMap.markers = []; await this.getDeviceInfo({ deviceName: this.keyWord }); this.gaoMap.polyLines = []; await this.getPipeList({ pipeName: this.keyWord }); } this.changeBtnData.forEach((item) => { item.nowPage = 1; }); this.pipeList(); }, // 新建下拉列表关闭 window点击事件 barClose() { console.log("window"); this.deviceType = false; // 关闭当前线条的infowindow // 如果当前状态只有是编辑跟删除状态才会关闭 if (this.targetNum == 2 || this.targetNum == 3) { this.gaoMap.closeInfoWindow(); } // 如果没有选择的时候点window 则高亮消失 console.log(this.targetNum); if (this.targetNum == 1 && this.iconClass == "icon-create") { this.targetNum = 0; } // 辅助新建重新画线 // if (!this.gaoMap.lineFlag || this.gaoMap.lineType != 1) return; console.log("利用window把lineFlagh恢复"); this.gaoMap.lineFlag = false; // this.gaoMap.createNewLine(); }, refreshMap() { this.iconClass = "icon-create"; this.createValue = 0; this.createLabel = "新建"; this.targetNum = 0; map.clearMap(); this.keyWord = ""; this.arrowRightNum = []; this.leftBarNum = [1, 2, 3, 4, 7]; this.changeBtnData.forEach((item) => { item.nowPage = 1; }); this.initMap(); }, drawerdrawer() { // 关闭infowindow this.gaoMap.closeInfoWindow(); // 恢复颜色 this.gaoMap.polyLinesColorClear(); }, // 向右的箭头的动画 arrowRightChange(item) { // 关闭infowindow this.gaoMap.closeInfoWindow(); // 恢复颜色 this.gaoMap.polyLinesColorClear(); const index = this.arrowRightNum.indexOf(item.value); if (index >= 0) { this.arrowRightNum.splice(index, 1); } else { this.arrowRightNum.push(item.value); } }, // 管道储存 pipeClassify(pipeData) { const pipeArr = pipeData.map((item, index) => { // console.log( '管道路径',eval(item.coordinates )[0]) return { lnglat: eval(item.coordinates)[0], path: eval(item.coordinates)[1], no: index, deviceId: item.pipeId, deviceType: "0", deviceName: item.pipeName, code: item.pipeCode, }; }); this.allList[0] = pipeArr; console.log("管道管道管道管道", pipeArr); }, // 设备分类存储 deviceClassify(data) { // 所有调压箱数据 const tyxArr = data .filter((item) => { return item.deviceType == 1; }) .map((item, index) => { return { path: [item.longitude, item.latitude], no: index, deviceId: item.deviceId, deviceType: item.deviceType, deviceName: item.deviceName, code: item.iotNo, }; }); // 所有阀门井数据 const fmjArr = data .filter((item) => { return item.deviceType == 2; }) .map((item, index) => { return { path: [item.longitude, item.latitude], no: index, deviceId: item.deviceId, deviceType: item.deviceType, deviceName: item.deviceName, code: item.iotNo, }; }); // 所有流量计数据 const lljArr = data .filter((item) => { return item.deviceType == 3; }) .map((item, index) => { return { path: [item.longitude, item.latitude], no: index, deviceId: item.deviceId, deviceType: item.deviceType, deviceName: item.deviceName, code: item.iotNo, }; }); // 所有压力表数据 const ylbArr = data .filter((item) => { return item.deviceType == 4; }) .map((item, index) => { return { path: [item.longitude, item.latitude], no: index, deviceId: item.deviceId, deviceType: item.deviceType, deviceName: item.deviceName, code: item.iotNo, }; }); // console.log("设备", tyxArr, fmjArr, lljArr, ylbArr); this.allList[1] = tyxArr; this.allList[2] = fmjArr; this.allList[3] = lljArr; this.allList[4] = ylbArr; }, // 左边设备翻页 pipeList(pageNum) { const num = pageNum ? pageNum : 10; // const { nowPage } = this.changeBtnData[0]; // this.changeBtnData[0].list = this.allList[0].filter((item, index) => { // return index >= (nowPage - 1) * num && index < nowPage * num; // }); // console.log(this.changeBtnData[0], this.allList[0]); console.log("this.allList[0]", this.allList[0]); this.changeBtnData.forEach((item, index) => { // console.log("=======", index, this.allList[index]); if (this.allList[index]?.length > 0) { console.log("大于0"); item.list = this.allList[index].filter((item2, index2) => { return ( index2 >= (item.nowPage - 1) * num && index2 < item.nowPage * num ); }); item.maxPage = Math.ceil(this.allList[index].length / num); } else { // 如果为空,就直接把item.list写成[]; item.list = []; } }); }, pageBack(item) { item.nowPage--; this.pipeList(); }, pageGo(item) { item.nowPage++; this.pipeList(); }, panTo(item, bool) { this.gaoMap.myMap.setZoom(12); if (item.list.length > 0) { if (this.leftBarNum.includes(item.value)) { let path; // 线条 if (item.value == 1) { const a = (Number(item.list[0].lnglat[0]) + Number(item.list[0].path[0])) / 2; const b = (Number(item.list[0].lnglat[1]) + Number(item.list[0].path[1])) / 2; path = [a, b - 0.06]; } else { path = [item.list[0].path[0], item.list[0].path[1] - 0.06]; } this.gaoMap.panTo(path); } } }, panToo(iten, item) { // 如果没打对勾,就啥也不干 if (!this.leftBarNum.includes(item.value)) return; // 如果地图太大了就吸纳是不出来infowindow了,所以要固定缩放比例 // 所有线条颜色还原 this.gaoMap.leftListClick = true; this.gaoMap.polyLinesColorClear(); this.gaoMap.myMap.setZoom(12); if (item.list.length > 0) { if (this.leftBarNum.includes(item.value)) { let path; if (item.value == 1) { const a = (Number(iten.lnglat[0]) + Number(iten.path[0])) / 2; const b = (Number(iten.lnglat[1]) + Number(iten.path[1])) / 2; //屏幕移动的位置 path = [a, b - 0.06]; // 线条infowindow显示中间,保留六位转换字符串,否则有时候会出现一些问题 iten.infoPath = [a.toFixed(6), b.toFixed(6)]; } else { path = [iten.path[0], iten.path[1] - 0.06]; } this.gaoMap.panTo(path); } } // 当前地图中心点 const { lat, lng } = this.gaoMap.myMap.getCenter(); // 管道是这个方法,因为管道比较特殊 if (item.value == 1) { this.polylineInfoWindowShow(iten, lat, lng); } else if (item.value == 9) { } else if (item.value == 8) { } else { // 其他设备 this.diveceInfoWindowShow(iten, lat, lng); } }, // 如果是线条飞过去出现infowindow polylineInfoWindowShow(iten, lat, lng) { const target = this.gaoMap.polyLines.filter((item) => { return item.getExtData().lineData.pipeId == iten.deviceId; })[0]; console.log("target", target); const e = { target, lnglat: iten.infoPath, }; // console.log(target.getOptions()); // 如果是原地不动,就直接执行 // console.log(iten.infoPath, lng, lat + 0.1); // 因为计算问题,误差小于0.00001就没动 if ( iten.infoPath[0] - lng >= -0.00001 && iten.infoPath[0] - lng <= 0.00001 && iten.infoPath[1] - (lat + 0.06) >= -0.00001 && iten.infoPath[1] - (lat + 0.06) <= 0.00001 ) { this.gaoMap.leftListClick = false; target.setOptions({ strokeColor: "#F7FE38" }); this.gaoMap.polylineMouseOver(e); return; } // 因为地图移动的时候infowindow无法显示 this.gaoMap.handleInfoWindowOpenFunc = () => { this.gaoMap.polylineMouseOver(e); target.setOptions({ strokeColor: "#F7FE38" }); }; }, // 这个是其他设备的infowindow diveceInfoWindowShow(iten, lat, lng) { const target = this.gaoMap.markers.filter((item) => { return item.getExtData().deviceId == iten.deviceId; })[0]; console.log("target", target); const e = { target, lnglat: iten.path, }; // 如果是原地不动,就直接执行 if (iten.path[0] == lng && iten.path[1] >= lat + 0.06 - 0.000001) { console.log("9999999999"); this.gaoMap.infoOpen(e); return; } // 因为地图移动的时候infowindow无法显示 this.gaoMap.handleInfoWindowOpenFunc = () => { this.gaoMap.infoOpen(e); }; }, }, beforeDestroy() { console.log("移除window事件"); window.removeEventListener("click", this.barClose); window.removeEventListener("resize", this.onResize); // 离开的时候清除创建的元素 let removeElements = document.getElementsByClassName("el-dialog__wrapper"); const arr = [...removeElements] for(var i =0;i<arr.length;i++){ const item = arr[i]; document.body.removeChild(item); } }, destroyed() {}, }; </script> <style lang="scss" scoped> // 解决地图下拉框 #container { position: fixed; top: 80px; bottom: 0; width: 100%; } // 左边的bar // .leftBar-wrapper { // position: fixed; // left: 100px; // top: 150px; // .box { // width: 180px; // height: 48px; // display: flex; // background-color: #ffffff; // box-sizing: border-box; // border: 1px solid rgba(0, 0, 0, 0.1); // border-top: none; // cursor: pointer; // position: relative; // > i { // position: absolute; // line-height: 48px; // right: 20px; // color: #fff; // } // &:hover { // // background-color: #053b6a; // // color: #ffffff; // // > i { // // color:#fff; // // } // } // &:hover .left, // &:hover .right { // // color: #ffffff; // } // &.active { // // background-color: #053b6a; // .left, // .right { // color: #053b6a; // } // > i { // color: #053b6a; // } // } // .left { // color: #053b6a; // line-height: 48px; // margin-left: 40px; // } // .right { // color: #1d1d1d; // line-height: 48px; // margin-left: 20px; // } // } // } .btn-wrapper { position: fixed; right: 32px; top: 100px; .myBtn { display: flex; justify-content: space-between; .el-btn { width: 144px; height: 44px; background-color: #053b6a; margin-right: 22px; border-radius: 4px; text-align: center; line-height: 44px; color: #fff; cursor: pointer; font-size: 18px; display: flex; justify-content: space-between; &.active { background: #31eaea; color: #053b6a !important; } .left { padding-left: 38px; i { font-size: 18px; } } .right { padding-right: 38px; } .newLetf { margin-left: 20px; } .newRight { margin-right: 20px; position: relative; i { position: absolute; right: 0px; top: 1px; font-size: 30px; } } } } .animate { .option { .op-btn { width: 144px; height: 38px; border-radius: 0; color: #053b6a; line-height: 38px; background-color: #fff; cursor: pointer; position: relative; border: 1px solid #cccccc; border-top: 0; &.active { background-image: url("../../../assets/images/bac1.png"); } .left { position: relative; margin-right: 30px; margin-left: 22px; i { position: absolute; top: -7px; font-size: 20px; } } .right { display: inline-block; font-size: 14px; line-height: 38px; } &:hover { background-image: url("../../../assets/images/bac1.png"); } } } } } .input-card { display: flex; flex-direction: column; min-width: 0; word-wrap: break-word; background-color: #fff; background-clip: border-box; border-radius: 0.25rem; width: 22rem; border-width: 0; border-radius: 0.4rem; box-shadow: 0 2px 6px 0 rgba(114, 124, 245, 0.5); position: fixed; bottom: 1rem; right: 1rem; -ms-flex: 1 1 auto; flex: 1 1 auto; padding: 0.75rem 1.25rem; } .input-item { position: relative; display: -ms-flexbox; display: flex; -ms-flex-wrap: wrap; flex-wrap: wrap; -ms-flex-align: center; align-items: center; width: 100%; height: 2.2rem; } input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; -webkit-box-sizing: border-box; box-sizing: border-box; padding: 0; margin: 0 0.5rem 0 0; } // .btn { // display: inline-block; // font-weight: 400; // text-align: center; // white-space: nowrap; // vertical-align: middle; // -webkit-user-select: none; // -moz-user-select: none; // -ms-user-select: none; // user-select: none; // border: 1px solid transparent; // transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, // border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; // background-color: transparent; // background-image: none; // color: #25a5f7; // border-color: #25a5f7; // padding: 0.25rem 0.5rem; // line-height: 1.5; // border-radius: 1rem; // -webkit-appearance: button; // cursor: pointer; // width: 6rem; // margin: 0 1rem 0 2rem; // } // .btn:hover { // color: #fff; // background-color: #25a5f7; // border-color: #25a5f7; // } .input-text { width: 4rem; margin-right: 1rem; } .search-input { position: fixed; top: 100px; left: 7%; width: 240px; } .search-but { position: fixed; top: 100px; left: 23%; width: 85px; color: white; background-color: #053b6a; } .refresh-but { position: fixed; top: 100px; left: 28%; width: 85px; color: white; background-color: #053b6a; } .drawer { position: fixed; top: 80px; bottom: 0; left: 100px; width: 348px; transition: 0.2s linear; // background: #fff; background: rgba(6, 29, 51, 0.8); // background: red; opacity: 0; &.opacity { opacity: 1; } &.back { left: -248px; } .mapChange { right: -178px; top: 10px; color: #fff; position: absolute; display: flex; div { padding: 4px 8px; border: 1px solid #fff; margin-left: 8px; cursor: pointer; &.active, &:hover { background-color: #053b6a; color: #31eaea; } } } .pipePressure { position: absolute; color: #fff; right: -80px; top: 50px; padding: 1px; // background: rgba(6, 29, 51, 0.8); .hasColorBox { // border: 1px solid #053b6a; padding: 2px 5px; margin-bottom: 5px; & > div { display: inline-block; width: 10px; height: 10px; } } } .scroll { // height: 100%; position: relative; overflow-y: scroll; overflow-x: hidden; &::-webkit-scrollbar { display: none; } .search-input { position: absolute; top: 14px; left: 39px; width: 236px; .icon-search { line-height: 28px; cursor: pointer; font-size: 13px; } } .refresh-but { // position: fixed; position: absolute; padding: 0px; height: 28px; width: 28px; top: 14px; left: 285px; // width: 85px; color: white; background-color: #053b6a; .icon-reset { font-size: 13px; } } } // 左边的bar .leftBar-wrapper { // position: fixed; width: 340px; // margin-left: 20px; margin-top: 60px; // box-sizing: border-box; .box-wrapper { width: 340px; } .animate { border-bottom: 1px solid rgba(0, 0, 0, 0.1); border-top: none; width: 340px; .list-wrapper { margin-left: 22px; padding-top: 8px; } .thead { display: flex; font-size: 14px; margin-bottom: 8px; > div { // border-right: 1px solid #cccccc; box-sizing: border-box; // padding-left: 5px; // color: #053b6a; color: #fff; font-weight: 600; } } .deviceList { cursor: pointer; margin-bottom: 2px; box-sizing: border-box; border-bottom: 1px solid #053b6a00; color: #1d1d1d; &:hover { box-sizing: border-box; // border-bottom: 1px solid #053b6a; border-bottom: 1px solid #7fc0f8; // color: #053b6a; font-weight: 600; > div { color: #7fc0f8; } } &.topActive { // border-top: 1px solid #cccccc; } display: flex; // border-bottom: 1px solid #cccccc; // justify-content: space-between; > div { // flex: 1; font-size: 14px; // border-right: 1px solid #cccccc; box-sizing: border-box; // padding-left: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #fff; // border-right: 1px solid #cccccc; } } .no { width: 25px; font-weight: 700; } .name { // border-right: none; flex: 1; text-align: center; margin-left: 10px; } .code { width: 100px; text-align: center; } } .box { width: 348px; height: 48px; padding-left: 20px; display: flex; // background-color: #ffffff; box-sizing: border-box; border-bottom: 1px solid rgba(0, 0, 0, 0.5); cursor: pointer; position: relative; // box-sizing: border-box; &.firstbox { // border-top: 1px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(5, 59, 106, 0); // box-sizing: border-box; &:hover { border-top: 1px solid rgba(5, 59, 106, 0); } } &:hover { box-sizing: border-box; // background-color: rgba(5, 59, 106, 0.1); background-color: #053b6a; border-bottom: none !important; .upPic { color: #31eaea; } .left, .right { color: #31eaea !important; } } .upPic { display: inline-block; margin-left: 40px; line-height: 48px; font-size: 16px; // color: #053b6a; color: #fff; } > i.ju { position: absolute; display: inline-block; width: 15px; height: 15px; background: #fff; border: 1px solid #cccccc; left: 45px; top: 16px; // top: ; z-index: 1; border-radius: 2px; } > i.bingo { z-index: 2; position: absolute; // line-height: 48px; left: 45px; top: 16px; color: #fff; } > i.arrow-right { color: #fff !important; position: absolute; right: 32px; top: 16px; transition: 0.3s linear; &.active { transform: rotate(90deg); } } &.active { // background-color: #053b6a; // .left, // .right { // color: #053b6a; // } // > i { // color: #053b6a; // } > i { color: #31eaea; font-weight: 600; } } .left { // color: #053b6a; color: #fff; line-height: 48px; margin-left: 28px; .iconfont { font-size: 22px; } } .right { // color: #1d1d1d; color: #fff; line-height: 48px; font-size: 16px; margin-left: 4px; } } .goback { display: flex; justify-content: space-between; .minMax { font-size: 14px; line-height: 28px; box-sizing: border-box; padding-left: 3px; } .btn-w { width: 100%; text-align: center; padding-bottom: 2px; .btn { border-radius: 50%; background: none; // width: 14px; // height: 14px; padding: 2px; } .btn-w-num { display: inline-block; font-size: 14px; padding: 0px 5px; color: #fff; } } } } // 开关 .switch { position: absolute; font-size: 30px; right: -30px; top: 50%; margin-top: -123px; width: 40px; border-radius: 40%; overflow: hidden; cursor: pointer; i { background: #fff; } } } </style>