对比新文件 |
| | |
| | | <template> |
| | | <div> |
| | | <dv-full-screen-container> |
| | | <self-header title="ITM Device Monitoring System"></self-header> |
| | | <div class="main-container" :style="{ |
| | | zoom: zoom_main, |
| | | width: screen_width + 'rem', |
| | | height: screen_height + 'rem', |
| | | // width:'100%', |
| | | // height:'calc(100vh - 10rem)' |
| | | }"> |
| | | <!-- @mousemove="handleMouseMove" |
| | | @mouseup="handleMouseUp" |
| | | @mousedown="handleMouseDown" |
| | | @mouseleave="handleMouseLeave" --> |
| | | <div id="content" class="equipments-container area-map" :class="['area-map-' + code]" v-show="hideServe" |
| | | @mousemove="handleMouseMove" @mouseup="handleMouseUp" @mousedown="handleMouseDown" |
| | | @mouseleave="handleMouseLeave" |
| | | :style="{ |
| | | transform: `scale(${scale_container})`, |
| | | width: screen_width + 'rem', |
| | | height: screen_height + 'rem', |
| | | // container_offset_x:'' |
| | | // container_offset_x:'' |
| | | |
| | | 'margin-left': `${container_offset_left}rem`, |
| | | 'margin-top': `${container_offset_top}rem`, |
| | | }"> |
| | | |
| | | |
| | | <div class="serve-item" @click="showCabinetName"> |
| | | <div class="serve-img" |
| | | v-for="(serverInfo, serverItemindex) in switchCabinets.switchCabinet" :key="serverItemindex" |
| | | > |
| | | <div class="cabinetNameDesc">{{ serverInfo.cabinetName }} </div> |
| | | <div class="each-item-container"> |
| | | <div v-for="(serve, itemindex) in serverInfo.cabinetInfoStatic" @click="showServeInfo(serve)" :key="itemindex" |
| | | class="each-item" |
| | | |
| | | > |
| | | <div class="desc"> |
| | | <div class="title">{{ serve.cabinetName }}</div> |
| | | <div class="value">设备数量: {{ serve.normal }}</div> |
| | | <div class="tip-msg"> |
| | | <div class="title">{{ serve.cabinetName }}</div> |
| | | <div class="desc">正常设备:<span class="f-n">{{ serve.normal || 0 }}</span></div> |
| | | <div class="desc">黄色预警:<span class="f-y">{{ serve.waring || 0 }}</span></div> |
| | | <div class="desc">红色预警:<span class="f-r">{{ serve.exception || 0 }}</span></div> |
| | | |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | <!-- 显示图标的开关 --> |
| | | <div v-if="true && code && chartclose" class="chart-open" @click="chartclose = false"> |
| | | <div class="img-button"></div> |
| | | </div> |
| | | |
| | | <div class="back-button-left-bottom" @click="backToTop">返回</div> |
| | | |
| | | </div> |
| | | </dv-full-screen-container> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import selfHeader from "@/components/header"; |
| | | |
| | | import { |
| | | getSwitchCabinetInfo, |
| | | } from "@/api/area"; |
| | | |
| | | import {mapdata} from "./map-data.js"; |
| | | |
| | | |
| | | export default { |
| | | components: { selfHeader, }, |
| | | props: { |
| | | item_show: false, |
| | | code: "", |
| | | query_networkPort: '', |
| | | }, |
| | | //根据 |
| | | //后端存储的是世界坐标,初次时候也是世界坐标,最小单位为0.01吧,这个间距或者大小,不考虑实际像素 |
| | | //渲染时候,需要把 坐标,变为实际rem等像素坐标 |
| | | //每个厂房大小不一样,先用一定的数代表吧. |
| | | |
| | | data() { |
| | | return { |
| | | |
| | | //如果显示服务器的话 |
| | | hideServe: true, |
| | | |
| | | html_base: 10, |
| | | zoom_main: 0.8, |
| | | width: "160", |
| | | height: "60", |
| | | //默认的视点 |
| | | x: 0, |
| | | y: 0, |
| | | zoom: 1, //默认的缩放级别,应该保证可以容纳整个项目 |
| | | scale_container: 0.9, |
| | | |
| | | |
| | | //实际的像素比,单位rem |
| | | //屏幕和实际像素,默认比应该是,1:1?,反正有个比例吧,类似1米(其他单位)=多少px |
| | | //这个可以定死 |
| | | screen_width: "160", |
| | | screen_height: "80", |
| | | base_move_offset: 0.6, |
| | | screen_margin_left: 0, |
| | | screen_margin_top: 0, //放大后的实际坐标-原本坐标,就是实际可以做的偏移量了,不能小于0,不能大于比例的, |
| | | // 当scale变化时候,的时候,恢复一下?或者scale放大的时候会有个,变化 |
| | | |
| | | //至于网桥,实际无非也是一组设备,到时候按照渲染出来就好了,先考虑canvas的拖拽? |
| | | mouse_click: undefined, |
| | | mouse_offset_last: undefined, |
| | | tleft: 20, |
| | | cal_offset_x: 0, |
| | | cal_offset_y: 0, |
| | | startclientX: 0, // 元素拖拽前距离浏览器的X轴位置 |
| | | startclientY: 0, //元素拖拽前距离浏览器的Y轴位置 |
| | | |
| | | container_offset_x: 0, |
| | | container_offset_y: 0, |
| | | container_offset_left: 0, |
| | | container_offset_top: 0, |
| | | //服务器的 |
| | | serve_timer: null, |
| | | serve_scroll_num: 0, |
| | | |
| | | //图标的 |
| | | chartclose: false, |
| | | current_show_id: "", |
| | | //新增的 |
| | | switchCabinets:{ |
| | | cabinetCount:0, |
| | | cabinetNames:[], |
| | | switchCabinet:[], |
| | | }, |
| | | }; |
| | | }, |
| | | created() { |
| | | var zoom = this.$route.query.zoom; |
| | | console.log(this.$route, this.$router); |
| | | if (zoom) { |
| | | this.zoom_main = parseFloat(zoom); |
| | | } |
| | | this.x = parseFloat(this.width) / 2; |
| | | this.y = parseFloat(this.height) / 2; |
| | | this.screen_width = parseFloat(this.screen_width) * this.zoom; |
| | | this.screen_height = parseFloat(this.screen_height) * this.zoom; |
| | | }, |
| | | async mounted() { |
| | | |
| | | this.init_data() |
| | | this.chartclose = true; |
| | | |
| | | console.log("main-container1,mounted"); |
| | | const content = document.getElementById("content"); |
| | | content.addEventListener("wheel", this.handleWheel); |
| | | |
| | | |
| | | }, |
| | | destroyed() { |
| | | const content = document.getElementById("content"); |
| | | content.removeEventListener("wheel", this.handleWheel); |
| | | this.stopScrolling(); |
| | | }, |
| | | methods: { |
| | | showCabinetName(){ |
| | | alert(111) |
| | | }, |
| | | toSwitchInfo(info) { |
| | | this.showServe(info); |
| | | }, |
| | | backToTop() { |
| | | if (!this.hideServe) { |
| | | this.hideServe = !this.hideServe; |
| | | return; |
| | | } |
| | | this.$router.push({path: "/area-all"}); |
| | | }, |
| | | |
| | | click_item(id) { |
| | | this.current_show_id = id; |
| | | }, |
| | | click_item_add(locInfo) { |
| | | console.log("this.$refs.equAddForm", this.$refs.equAddForm); |
| | | this.$refs.equAddForm && this.$refs.equAddForm.openform(locInfo); |
| | | }, |
| | | |
| | | closeself() { |
| | | console.log("closeself parent"); |
| | | this.chartclose = true; |
| | | }, |
| | | refresh_canvas() { |
| | | //根据缩放比,视觉角度,来做渲染?,或者说,最简单的,直接都展示出来,缩放下面的?然后超出的不展示即可? |
| | | }, |
| | | handleMouseMove(event) { |
| | | if (this.mouse_click) { |
| | | // console.log("handleMouseMove", event); |
| | | //记录坐标,支持实时的? |
| | | if (this.mouse_offset_last) { |
| | | // this.tleft += 20 - this.mouse_offset_last.offsetX |
| | | var offsetx = event.clientX - this.mouse_offset_last.clientX; |
| | | var offsety = event.clientY - this.mouse_offset_last.clientY; |
| | | // console.log("offset0", offsetx, offsety); |
| | | var soffsetx = offsetx > 0 ? offsetx : -offsetx; |
| | | var soffsety = offsety > 0 ? offsety : -offsety; |
| | | if (soffsety >= soffsetx) { |
| | | offsetx = 0; |
| | | } else { |
| | | offsety = 0; |
| | | } |
| | | |
| | | if (event.target.id == "content") { |
| | | //让看板内部有偏移量 |
| | | if (offsetx != 0) { |
| | | if (offsetx > 0) { |
| | | this.container_offset_left += |
| | | this.base_move_offset * this.scale_container; |
| | | } else { |
| | | this.container_offset_left -= |
| | | this.base_move_offset * this.scale_container; |
| | | } |
| | | } |
| | | if (offsety != 0) { |
| | | if (offsety > 0) { |
| | | console.log("plus container_offset_top"); |
| | | this.container_offset_top += |
| | | this.base_move_offset * this.scale_container; |
| | | } else { |
| | | console.log("mul container_offset_top"); |
| | | |
| | | this.container_offset_top -= |
| | | this.base_move_offset * this.scale_container; |
| | | } |
| | | } |
| | | // if (this.container_offset_x < -90 / this.scale_container) { |
| | | // this.container_offset_x = -90 / this.scale_container; |
| | | // } else if (this.container_offset_x > 90 / this.scale_container) { |
| | | // this.container_offset_x = 90 / this.scale_container; |
| | | // } |
| | | // if (this.container_offset_y < -90 / this.scale_container) { |
| | | // this.container_offset_y = -90 / this.scale_container; |
| | | // } else if (this.container_offset_y > 90 / this.scale_container) { |
| | | // this.container_offset_y = 90 / this.scale_container; |
| | | // } |
| | | } |
| | | } |
| | | this.mouse_offset_last = event; |
| | | } |
| | | }, |
| | | handleMouseUp(event) { |
| | | // console.log("handleMouseUp", event); |
| | | if (this.mouse_click) { |
| | | if (this.mouse_click.className == "equipment-item") { |
| | | //说明是转移视角的 |
| | | //可能就是设备的 |
| | | //直接修改坐标就行了 |
| | | //计算鼠标偏移量,然后转换为屏幕坐标,再转换为显示单位坐标,同时弹出提示?是否要更改吧,更改就调用接口 |
| | | if ( |
| | | this.mouse_offset_last && |
| | | (this.cal_offset_x || this.cal_offset_y) |
| | | ) { |
| | | console.log("update?", this.tleft); |
| | | alert("是否要修改设备坐标"); |
| | | } |
| | | } else { |
| | | } |
| | | } |
| | | |
| | | this.mouse_click = undefined; |
| | | this.mouse_offset_last = undefined; |
| | | }, |
| | | |
| | | handleMouseDown(event) { |
| | | // console.log("handleMouseDown", event, event.target.className); |
| | | if (event.target.className.indexOf("equipment-item") >= 0) { |
| | | // console.log("handleMouseDown2", event, event.target.id); |
| | | // this.mouse_click = event.target; |
| | | } else if (event.target.id == "content") { |
| | | this.mouse_click = event.target; |
| | | } |
| | | }, |
| | | handleMouseLeave(event) { |
| | | this.mouse_click = undefined; |
| | | this.mouse_offset_last = undefined; |
| | | }, |
| | | |
| | | handleWheel(event) { |
| | | event.preventDefault(); |
| | | const delta = event.deltaY < 0 ? 0.2 : -0.2; |
| | | this.container_offset_left = |
| | | this.container_offset_left / |
| | | (this.scale_container / (delta + this.scale_container)); |
| | | this.container_offset_top = |
| | | this.container_offset_top / |
| | | (this.scale_container / (delta + this.scale_container)); |
| | | |
| | | this.scale_container += delta; |
| | | if (this.scale_container < 0.2) { |
| | | this.scale_container = 0.2; |
| | | } |
| | | if (this.scale_container <= 1) { |
| | | this.container_offset_left = 0; |
| | | this.container_offset_top = 0; |
| | | } |
| | | }, |
| | | |
| | | async init_data() { |
| | | this.$modal.loading(); |
| | | this.switchCabinets= await getSwitchCabinetInfo(); |
| | | console.log("机柜信息") |
| | | console.log(this.switchCabinets) |
| | | this.$modal.closeLoading(); |
| | | |
| | | }, |
| | | |
| | | startScrolling() { |
| | | this.stopScrolling(); |
| | | const myDiv = document.getElementById("my_serve_info_list"); |
| | | this.serve_timer = setInterval(() => { |
| | | if (myDiv) { |
| | | myDiv.scrollTo(0, this.serve_scroll_num); |
| | | this.serve_scroll_num++; |
| | | if (myDiv.scrollTop >= myDiv.scrollHeight - myDiv.clientHeight) { |
| | | this.serve_timer && clearInterval(this.serve_timer); |
| | | this.serve_timer = null; |
| | | setTimeout(() => { |
| | | this.serve_scroll_num = 0; |
| | | this.startScrolling(); |
| | | }, 1500); |
| | | } |
| | | } |
| | | }, 20); |
| | | }, |
| | | stopScrolling() { |
| | | this.serve_scroll_num = 0; |
| | | this.serve_timer && clearInterval(this.serve_timer); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | @import "../../common/itm_svg.scss"; |
| | | @import "../../common/area-bg.scss"; |
| | | |
| | | $width-screen1: 174.17rem; |
| | | |
| | | .main-container { |
| | | /* position: fixed; |
| | | right: calc(5rem); |
| | | top: calc($height-header - 8rem); |
| | | left: calc((100% - $width-screen1 - 10rem - 18rem) / 2); |
| | | left: 0; |
| | | right: 0; */ |
| | | /* background-color: rgba(209, 227, 247, 1); */ |
| | | |
| | | // overflow: hidden; |
| | | margin: 0 auto; |
| | | margin-bottom: 5rem; |
| | | |
| | | .equipments-container { |
| | | background: #d3e3f3; |
| | | position: relative; |
| | | margin: 0 auto; |
| | | cursor: pointer; |
| | | max-width: 100%; |
| | | min-height: 100vh; |
| | | overflow: auto; |
| | | |
| | | .equipment-item { |
| | | cursor: pointer; |
| | | position: absolute; |
| | | width: 5rem; |
| | | height: 5rem; |
| | | background-size: 100% 100%; |
| | | filter: drop-shadow(2px 2px 2px rgba(0, 0, 0, 0.2)); |
| | | } |
| | | } |
| | | |
| | | .serve-item { |
| | | margin: 0 auto; |
| | | display: flex; |
| | | // width: fit-content; |
| | | |
| | | flex-wrap:wrap; |
| | | justify-content: flex-start; |
| | | |
| | | cursor: pointer; |
| | | |
| | | .serve-img { |
| | | margin: 2rem; |
| | | background-image: url("../../assets/equipment/serve.svg"); |
| | | background-image: url("../../assets/equipment/serve_v2.png"); |
| | | background-size: 100% 100%; |
| | | width: 15rem; |
| | | // height: 35.3rem; |
| | | |
| | | .cabinetNameDesc{ |
| | | margin-top: 1rem; |
| | | font-weight: 800; |
| | | // margin-bottom: 0.8rem; |
| | | } |
| | | |
| | | /* padding-left: 1rem; */ |
| | | .each-item-container { |
| | | margin-top: 10rem; |
| | | margin-left: 1rem; |
| | | |
| | | .each-item { |
| | | background-image: url("../../assets/equipment/serve_item.png"); |
| | | width: 10.3rem; |
| | | height: 3.7rem; |
| | | background-size: 100% 100%; |
| | | margin-bottom: 0.9rem; |
| | | color: #265696; |
| | | position: relative; |
| | | |
| | | .desc { |
| | | text-align: left; |
| | | padding-left: 1rem; |
| | | padding-top: 0.5rem; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | margin-bottom: 0.8rem; |
| | | /* */ |
| | | } |
| | | |
| | | .value { |
| | | } |
| | | } |
| | | } |
| | | |
| | | .each-item:hover::before { |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | |
| | | content: ""; |
| | | background-color: #059ce293; |
| | | } |
| | | |
| | | .each-item-default::before { |
| | | position: absolute; |
| | | left: 0; |
| | | right: 0; |
| | | top: 0; |
| | | bottom: 0; |
| | | |
| | | content: ""; |
| | | background-color: #4bb6e854; |
| | | } |
| | | |
| | | .tip-msg { |
| | | display: none; |
| | | position: absolute; |
| | | left: calc(50% + 5rem); //起始是在body中,横向距左50%的位置 |
| | | top: 55%; //起始是在body中,纵向距上50%的位置,这个点相当于body的中心点,div的左上角的定位 |
| | | min-width: 21rem; |
| | | height: 13.6rem; |
| | | background: #f1f9ff; |
| | | box-shadow: 0.6rem 0.4rem 2.4rem 0rem rgba(56, 92, 131, 0.77); |
| | | border-radius: 0.6rem; |
| | | z-index: 2; |
| | | padding: 1.3rem; |
| | | |
| | | .title { |
| | | font-size: 2.5rem; |
| | | font-family: PingFangSC-Semibold, PingFang SC; |
| | | font-weight: 600; |
| | | color: #012b5e; |
| | | line-height: 3.6rem; |
| | | text-align: left; |
| | | margin-bottom: 1rem; |
| | | text-overflow: ellipsis; |
| | | /* width: 10rem; */ |
| | | overflow: hidden; |
| | | word-break: break-all; |
| | | white-space: nowrap; |
| | | |
| | | .dot { |
| | | width: 1.6rem; |
| | | height: 1.6rem; |
| | | min-width: 1.6rem; |
| | | min-height: 1.6rem; |
| | | /* background: #e20505; */ |
| | | border-radius: 50%; |
| | | margin-top: 1rem; |
| | | margin-right: 0.5rem; |
| | | } |
| | | } |
| | | |
| | | .desc { |
| | | font-size: 1.8rem; |
| | | font-family: PingFangSC-Regular, PingFang SC; |
| | | font-weight: 400; |
| | | color: #666666; |
| | | line-height: 2rem; |
| | | text-align: left; |
| | | /* margin-left: 2.1rem; */ |
| | | margin-top: 0.5rem; |
| | | |
| | | .f-n { |
| | | color: #0dbe79; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .f-r { |
| | | color: #e10808; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .f-y { |
| | | color: #ffc310; |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .each-item:hover .tip-msg { |
| | | display: unset; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tj-item { |
| | | margin-left: 2rem; |
| | | width: 33.5rem; |
| | | min-height: 47.5rem; |
| | | min-height: 17.5rem; |
| | | height: fit-content; |
| | | background: #f2f8fd; |
| | | box-shadow: 0.6rem 0.4rem 2.4rem 0rem rgba(198, 212, 228, 0.38), |
| | | inset 0rem 0.2rem 0.3rem 0rem rgba(255, 255, 255, 0.5); |
| | | border-radius: 1rem; |
| | | |
| | | .tj-nums { |
| | | padding: 1.8rem; |
| | | |
| | | .title { |
| | | font-size: 2.5rem; |
| | | font-family: PingFangSC-Semibold, PingFang SC; |
| | | font-weight: 600; |
| | | color: #265696; |
| | | line-height: 3.6rem; |
| | | text-align: left; |
| | | margin-bottom: 1.8rem; |
| | | } |
| | | |
| | | .equ-num-item { |
| | | margin: 0 auto; |
| | | text-align: center; |
| | | |
| | | .desc2 { |
| | | font-size: 1.6rem; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #235884; |
| | | line-height: 2.2rem; |
| | | } |
| | | |
| | | .num { |
| | | font-size: 2.4rem; |
| | | font-family: Impact; |
| | | line-height: 2.9rem; |
| | | } |
| | | |
| | | .num.g { |
| | | color: #0dbe79; |
| | | } |
| | | |
| | | .num.y { |
| | | color: #ffc310; |
| | | } |
| | | |
| | | .num.r { |
| | | color: #e10808; |
| | | } |
| | | } |
| | | |
| | | .equ-num-item.a { |
| | | margin-left: 0; |
| | | margin-right: auto; |
| | | } |
| | | |
| | | .equ-num-item.c { |
| | | margin-right: 0; |
| | | margin-left: auto; |
| | | } |
| | | } |
| | | |
| | | .tj-list { |
| | | padding: 2.2rem; |
| | | padding-top: 1.4rem; |
| | | |
| | | .service-list-arr { |
| | | background-color: #f2f8fd; |
| | | overflow: hidden; |
| | | height: 30.3rem; |
| | | |
| | | .service-list-arr-item { |
| | | width: 100%; |
| | | min-height: 3rem; |
| | | /* margin-top: 2.2rem; */ |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | height: fit-content; |
| | | |
| | | .time { |
| | | font-size: 1.2rem; |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | font-weight: 500; |
| | | color: #a1b6c8; |
| | | line-height: 1.7rem; |
| | | margin-right: 1rem; |
| | | } |
| | | |
| | | .service-list-arr-item_content { |
| | | font-family: PingFangSC-Medium, PingFang SC; |
| | | color: #235884; |
| | | line-height: 1.17rem; |
| | | text-align: left; |
| | | margin-left: 0.4rem; |
| | | margin-right: 1.5rem; |
| | | padding-top: 1rem; |
| | | |
| | | font-size: 1.4rem; |
| | | font-weight: 500; |
| | | line-height: 1.4rem; |
| | | } |
| | | |
| | | .dot { |
| | | width: 0.58rem; |
| | | height: 0.58rem; |
| | | border-radius: 50%; |
| | | margin-top: 0.8rem; |
| | | margin-left: auto; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .dot.red { |
| | | background: #c10b0b; |
| | | } |
| | | |
| | | .dot.yellow { |
| | | background: #fda928; |
| | | } |
| | | |
| | | .dot.green { |
| | | background: #17a537; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tj-line { |
| | | width: 30.1rem; |
| | | height: 0.1rem; |
| | | border: 0.1rem solid #ccdeec; |
| | | margin: 0 auto; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .chart-open { |
| | | width: 6.1rem; |
| | | height: 7.5rem; |
| | | background: #e9f4fd; |
| | | box-shadow: 0.6rem 0.4rem 2.4rem 0rem rgba(198, 212, 228, 0.83), |
| | | inset 0rem 0.2rem 0.3rem 0rem rgba(255, 255, 255, 0.5); |
| | | border-radius: 1rem; |
| | | position: fixed; |
| | | right: 3rem; |
| | | top: 50%; |
| | | transform: translate(0%, 50%); |
| | | cursor: pointer; |
| | | |
| | | .img-button { |
| | | background-size: 100% 100%; |
| | | background-image: url("../../assets/area/chart-open.svg"); |
| | | width: 2.6rem; |
| | | height: 2.6rem; |
| | | transform: translate(-50%, -50%); |
| | | left: 50%; |
| | | top: 50%; |
| | | position: absolute; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | <style scoped lang="scss"> |
| | | //7个设备 |
| | | .equ-0 { |
| | | background-image: url("../../assets/equipment/arm.svg"); |
| | | width: 9.6rem; |
| | | height: 9.6rem; |
| | | } |
| | | |
| | | .equ-1 { |
| | | background-image: url("../../assets/equipment/pda.svg"); |
| | | width: 4.1rem; |
| | | height: 6.1rem; |
| | | } |
| | | |
| | | .equ-2 { |
| | | background-image: url("../../assets/equipment/pc.svg"); |
| | | width: 15rem; |
| | | height: 12.6rem; |
| | | } |
| | | |
| | | .equ-3 { |
| | | background-image: url("../../assets/equipment/print.svg"); |
| | | width: 8.2rem; |
| | | height: 8.1rem; |
| | | } |
| | | |
| | | .equ-4 { |
| | | background-image: url("../../assets/equipment/screen.svg"); |
| | | width: 15.9rem; |
| | | height: 13.1rem; |
| | | } |
| | | |
| | | .equ-5 { |
| | | background-image: url("../../assets/equipment/setting.svg"); |
| | | width: 7.8rem; |
| | | height: 7.5rem; |
| | | } |
| | | |
| | | .equ-6 { |
| | | background-image: url("../../assets/equipment/video.svg"); |
| | | width: 12.7rem; |
| | | height: 9.4rem; |
| | | } |
| | | </style> |
| | | <style scoped lang="scss"> |
| | | .back-button-left-bottom { |
| | | width: 10.6rem; |
| | | height: 3.9rem; |
| | | background: #6eb3ff; |
| | | border-radius: 0.4rem; |
| | | border: 0.2rem solid #278afa; |
| | | font-size: 1.6rem; |
| | | font-family: PingFangSC-Semibold, PingFang SC; |
| | | font-weight: 600; |
| | | color: #ffffff; |
| | | line-height: 3.9rem; |
| | | position: fixed; |
| | | left: 3rem; |
| | | // bottom: 3.5rem; |
| | | cursor: pointer; |
| | | z-index: 99; |
| | | } |
| | | </style> |
| | | |
| | | <!-- 交换机的端口 --> |
| | | <style scoped lang="scss"> |
| | | .port-items { |
| | | display: flex; |
| | | margin-bottom: 8rem; |
| | | /* height: 2rem; */ |
| | | width: fit-content; |
| | | |
| | | .port-item { |
| | | background: #e9f4fd; |
| | | border-top: 5px solid #e9f4fd; |
| | | flex: 1; |
| | | margin: 0 auto; |
| | | min-width: 6rem; |
| | | max-width: 6rem; |
| | | /* max-width: 6rem; */ |
| | | height: 1.6rem; |
| | | // background: #fff; |
| | | // box-shadow: 0rem -2rem 2.1rem 0rem #fff; |
| | | background-image: url("../../assets/area/space.svg"); |
| | | background-size: 100% 100%; |
| | | position: relative; |
| | | |
| | | .port-tip { |
| | | position: absolute; |
| | | bottom: -2.5rem; |
| | | height: 2.5rem; |
| | | font-size: 1.8rem; |
| | | font-family: PingFangSC-Semibold, PingFang SC; |
| | | font-weight: 600; |
| | | color: #265696; |
| | | line-height: 2.5rem; |
| | | text-align: center; |
| | | /* margin-bottom: 0.5rem; */ |
| | | left: 0; |
| | | right: 0; |
| | | } |
| | | |
| | | .space-text { |
| | | background-image: url("../../assets/area/space-text.svg"); |
| | | background-size: 100% 100%; |
| | | min-width: 6rem; |
| | | min-height: 2.5rem; |
| | | transform: translate(-50%, 0%); |
| | | left: 50%; |
| | | padding-top: 0.5rem; |
| | | top: -2.5rem; |
| | | position: absolute; |
| | | /* line-height: 100%; */ |
| | | /* font-size: 12px; */ |
| | | /* span { */ |
| | | word-break: break-all; |
| | | word-wrap: break-word; |
| | | /*但在有些场景中,还需要加上下面这行代码*/ |
| | | white-space: normal; |
| | | overflow-wrap: anywhere; |
| | | /* } */ |
| | | |
| | | font-size: 1rem; |
| | | font-family: PingFangSC-Semibold, PingFang SC; |
| | | font-weight: 600; |
| | | color: #3299ff; |
| | | z-index: 20; |
| | | } |
| | | |
| | | .space-text-yellow { |
| | | color: #e8be19; |
| | | } |
| | | |
| | | .space-text-red { |
| | | color: #e20909; |
| | | } |
| | | } |
| | | |
| | | .port-item:nth-child(6n) { |
| | | margin-right: 3rem; |
| | | } |
| | | } |
| | | |
| | | .port-items:nth-child(2n) { |
| | | margin-bottom: 8rem; |
| | | } |
| | | </style> |