From 9ef6ec82110ea5756f8844a8892632f4d0bf720f Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期五, 08 十一月 2024 15:18:41 +0800
Subject: [PATCH] 交换机机柜
---
src/views/screen1/itm.vue | 21 +
src/api/area.js | 10
src/views/area/switch-board.vue | 849 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/views/global/index.vue | 2
src/assets/area-global3.jpg | 0
src/router/index.js | 5
6 files changed, 881 insertions(+), 6 deletions(-)
diff --git a/src/api/area.js b/src/api/area.js
index 6e005c1..798df58 100644
--- a/src/api/area.js
+++ b/src/api/area.js
@@ -149,4 +149,14 @@
'areaCode': code
}
})
+}
+
+export function getSwitchCabinetInfo() {
+ return request({
+ url: '/api/services/app/SwitchDevice/GetSwitchCabinetInfo',
+ method: 'get',
+ params: {
+
+ }
+ })
}
\ No newline at end of file
diff --git a/src/assets/area-global3.jpg b/src/assets/area-global3.jpg
new file mode 100644
index 0000000..0980c5d
--- /dev/null
+++ b/src/assets/area-global3.jpg
Binary files differ
diff --git a/src/router/index.js b/src/router/index.js
index 59c4f2b..c36ddad 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -24,6 +24,11 @@
name: 'home',
component: resolve => require(['@/views/main'], resolve),
},
+ {
+ path: '/switch-board',
+ name: 'switch-board',
+ component: resolve => require(['@/views/area/switch-board'], resolve),
+ },
]
})
diff --git a/src/views/area/switch-board.vue b/src/views/area/switch-board.vue
new file mode 100644
index 0000000..eca53aa
--- /dev/null
+++ b/src/views/area/switch-board.vue
@@ -0,0 +1,849 @@
+<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>
\ No newline at end of file
diff --git a/src/views/global/index.vue b/src/views/global/index.vue
index 96e32f1..ce5ce55 100644
--- a/src/views/global/index.vue
+++ b/src/views/global/index.vue
@@ -21,7 +21,7 @@
<style lang="scss" scoped>
.area-global {
- background-image: url("../../assets/area-global2.jpg");
+ background-image: url("../../assets/area-global3.jpg");
background-size: 100% 100%;
width: 140rem;
/* max-width: 100vh; */
diff --git a/src/views/screen1/itm.vue b/src/views/screen1/itm.vue
index 2da3906..cebe501 100644
--- a/src/views/screen1/itm.vue
+++ b/src/views/screen1/itm.vue
@@ -83,18 +83,25 @@
</div>
</div>
</div>
- <div class="itm-container container-alert" style="cursor: pointer;margin-top: 3rem" @click="showSwitchInfoTable=true">
+ <div class="itm-container container-alert" style="cursor: pointer;margin-top: 3rem" @click="showSwitchBoardInfoTable=true">
<div class="flex1">
<div class="reg-num flex">
<span class="div1">{{ switchInfo.switchInfo && switchInfo.switchInfo.length || 0 }}</span>
<span class="div2">个</span>
</div>
<div class="reg-desc">
- 新增交换机
+ 交换机清单
</div>
</div>
</div>
- <el-dialog :visible.sync="showSwitchInfoTable" title="新增交换机" append-to-body>
+ <div class="itm-container container-alert" style="cursor: pointer;margin-top: 3rem" @click="showSwitchBoard">
+ <div class="flex1">
+ <div class="reg-desc">
+ 交换机机柜
+ </div>
+ </div>
+ </div>
+ <el-dialog :visible.sync="showSwitchBoardInfoTable" title="交换机清单" append-to-body>
<el-table
:data="switchInfo.lackSwitchInfo||[]"
border
@@ -167,13 +174,17 @@
},
data() {
return {
- showSwitchInfoTable: false,
+ showSwitchBoardInfoTable: false,
}
},
methods: {
closeself() {
this.$emit("show", false);
},
+ showSwitchBoard(){
+ this.$router.push({path: "/switch-board"});
+ // this.$router.push({path: "/area", query: {code: '01'}});
+ }
},
};
</script>
@@ -227,7 +238,7 @@
border-radius: 0.83rem;
padding: 2.5rem;
margin-top: 2rem;
- height: 53.5rem;
+ height: 58.5rem;
padding-top: 1rem;
}
--
Gitblit v1.9.3