From 0967b9f3ddaaf901a68d78edb7a80df0245425bd Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期四, 14 十一月 2024 09:52:36 +0800 Subject: [PATCH] 1.交换机引导页面 --- src/views/screen1/itm.vue | 77 ++++ src/views/area/server-info.vue | 622 +++++++++++++++++++++++++++++++++++++++++ src/views/area/switch-board.vue | 50 ++- src/views/area/main-container.vue | 119 ------- 4 files changed, 738 insertions(+), 130 deletions(-) diff --git a/src/views/area/main-container.vue b/src/views/area/main-container.vue index 4ea077f..0bcef3c 100644 --- a/src/views/area/main-container.vue +++ b/src/views/area/main-container.vue @@ -76,123 +76,21 @@ </div> <equ-add-form ref="equAddForm" :code="code" :areas="areas" :init_device_list="device_list" @update="update_map"></equ-add-form> - <!-- 点击设备可以前往服务器详情页看看(debug) --> - <div v-if="!hideServe" class="serve-item" @click="() => { - // stopScrolling(); - //$nextTick(() => { - // hideServe = !hideServe; - //}); - } - "> - <div class="serve-img" v-if="serve_info.cabinetInfoStatic"> - <div class="each-item-container"> - <div v-for="(serve, itemindex) in serve_info.cabinetInfoStatic" @click="showServeInfo(serve)" :key="itemindex" - class="each-item" :class="[ - serve.cabinetName == serve_select.switchName - ? 'each-item-default' - : '', - ]"> - <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> + <server-info v-if="!hideServe" + :serve_info="serve_info" + :serve_select="serve_select" + :code="code"></server-info> - <!-- <div class="desc">详细信息:一小时后磁盘满</div> --> - </div> - </div> - </div> - </div> - </div> - <div class="tj-item"> - <div class="tj-nums"> - <div class="title">{{ serve_info.cabinetName || "-" }}</div> - <div class="flex"> - <div class="equ-num-item a"> - <div class="num g">{{ serve_info.terminalCount || 0 }}</div> - <div class="desc2">正常设备</div> - </div> - <div class="equ-num-item"> - <div class="num y">{{ serve_info.seitchCount || 0 }}</div> - <div class="desc2">黄色预警</div> - </div> - <div class="equ-num-item c"> - <div class="num r">{{ serve_info.exceptionCount || 0 }}</div> - <div class="desc2">红色预警</div> - </div> - </div> - </div> - <div class="tj-line" v-if="false"></div> - <div class="tj-list" v-if="false"> - <div class="service-list-arr" id="my_serve_info_list"> - <div class="service-list-arr-item" v-for="(item, index) of data_service_list" :key="index"> - <div class="time">{{ item.time }}</div> - <div class="flex1 service-list-arr-item_content" v-html="item.desc"></div> - <div class="dot" :class="item.status"></div> - </div> - </div> - </div> - </div> - </div> <div class="back-button-left-bottom" @click="backToTop">返回</div> - <el-dialog :visible.sync="dialog_activateSwitchPorts" title="交换机端口情况" class="dialog_activateSwitchPorts"> - <div v-for="(infos, index2) of activateSwitchPorts" :key="index2" class="port-items"> - <div class="port-item" v-for="(item, index) of infos" :key="index"> - <div :key="index" class="space-text" :class="[ - (item.info && item.info.statusInt == 2) || - (item.info && item.info.statusInt == 3) || - (item.info && item.info.statusInt == 4) - ? 'space-text-red' - : '', - item.info && item.info.statusInt == 1 ? 'space-text-yellow' : '', - ]" v-if="item.info"> - {{ item.info.networkPort || "-" }} - </div> - <div class="port-tip">{{ item.index }}</div> - </div> - </div> - <!-- 全部的信息 --> - <el-table - :data="switchAllDetialInfos" - border - style="width: 100%;max-height: 650px;overflow-y: scroll;"> - <el-table-column - prop="deviceName" - label="device name"> - </el-table-column> - <el-table-column - prop="deviceNameDNS" - label="DNS"> - </el-table-column> - <el-table-column - prop="ipAddress" - label="ip address"> - </el-table-column> - <el-table-column - width="180" - prop="macAddress" - label="mac address"> - </el-table-column> - <el-table-column - prop="nasPort" - label="nas port"> - </el-table-column> - <el-table-column - prop="switchType" - label="switch type"> - </el-table-column> - </el-table> - - </el-dialog> + </div> </template> <script> import tjContainer from "./tj-container"; import bridge from "@/components/bridge"; +import serverInfo from "./server-info"; import equAddForm from "@/components/equ-add-form.vue"; + import { getAreaServeInfo, getFaultInfo, @@ -208,7 +106,7 @@ import Bridge from "@/components/bridge.vue"; export default { - components: {tjContainer, bridge, equAddForm, Bridge}, + components: {tjContainer, bridge, equAddForm, Bridge,serverInfo}, props: { item_show: false, code: "", @@ -430,6 +328,7 @@ this.$refs.equAddForm && this.$refs.equAddForm.openform(locInfo); }, async showServeInfo(info) { + debugger; //展示交换机全部端口 console.log("showServeInfo", info); //弹出框展示全部端口,并且每个端口的情况 diff --git a/src/views/area/server-info.vue b/src/views/area/server-info.vue new file mode 100644 index 0000000..e978738 --- /dev/null +++ b/src/views/area/server-info.vue @@ -0,0 +1,622 @@ +<template> + <div class="server-container"> + <!-- 点击设备可以前往服务器详情页看看(debug) --> + <!-- <equ-add-form ref="equAddForm" :code="code" :areas="areas" :init_device_list="device_list" @update="update_map"></equ-add-form> --> + <div class="serve-item" @click="() => { + // stopScrolling(); + //$nextTick(() => { + // hideServe = !hideServe; + //}); + } + "> + <div class="serve-img" v-if="serve_info.cabinetInfoStatic"> + <div class="each-item-container"> + <div v-for="(serve, itemindex) in serve_info.cabinetInfoStatic" @click="showServeInfo(serve)" :key="itemindex" + class="each-item" :class="[ + serve.cabinetName == serve_select.switchName + ? 'each-item-default' + : '', + ]"> + <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 class="desc">详细信息:一小时后磁盘满</div> --> + </div> + </div> + </div> + </div> + </div> + <div class="tj-item"> + <div class="tj-nums"> + <div class="title">{{ serve_info.cabinetName || "-" }}</div> + <div class="flex"> + <div class="equ-num-item a"> + <div class="num g">{{ serve_info.terminalCount || 0 }}</div> + <div class="desc2">正常设备</div> + </div> + <div class="equ-num-item"> + <div class="num y">{{ serve_info.seitchCount || 0 }}</div> + <div class="desc2">黄色预警</div> + </div> + <div class="equ-num-item c"> + <div class="num r">{{ serve_info.exceptionCount || 0 }}</div> + <div class="desc2">红色预警</div> + </div> + </div> + </div> + <div class="tj-line" v-if="false"></div> + <div class="tj-list" v-if="false"> + <div class="service-list-arr" id="my_serve_info_list"> + <div class="service-list-arr-item" v-for="(item, index) of data_service_list" :key="index"> + <div class="time">{{ item.time }}</div> + <div class="flex1 service-list-arr-item_content" v-html="item.desc"></div> + <div class="dot" :class="item.status"></div> + </div> + </div> + </div> + </div> + </div> + + <el-dialog append-to-body :modal="false" + :visible.sync="dialog_activateSwitchPorts" title="交换机端口情况" class="dialog_activateSwitchPorts"> + <div v-for="(infos, index2) of activateSwitchPorts" :key="index2" class="port-items"> + <div class="port-item" v-for="(item, index) of infos" :key="index"> + <div :key="index" class="space-text" :class="[ + (item.info && item.info.statusInt == 2) || + (item.info && item.info.statusInt == 3) || + (item.info && item.info.statusInt == 4) + ? 'space-text-red' + : '', + item.info && item.info.statusInt == 1 ? 'space-text-yellow' : '', + ]" v-if="item.info"> + {{ item.info.networkPort || "-" }} + </div> + <div class="port-tip">{{ item.index }}</div> + </div> + </div> + <!-- 全部的信息 --> + <el-table + :data="switchAllDetialInfos" + border + style="width: 100%;max-height: 650px;overflow-y: scroll;"> + <el-table-column + prop="deviceName" + label="device name"> + </el-table-column> + <el-table-column + prop="deviceNameDNS" + label="DNS"> + </el-table-column> + <el-table-column + prop="ipAddress" + label="ip address"> + </el-table-column> + <el-table-column + width="180" + prop="macAddress" + label="mac address"> + </el-table-column> + <el-table-column + prop="nasPort" + label="nas port"> + </el-table-column> + <el-table-column + prop="switchType" + label="switch type"> + </el-table-column> + </el-table> + + </el-dialog> + + </div> +</template> +<script> + + +import equAddForm from "@/components/equ-add-form.vue"; +import { + getAreaServeInfo, + getFaultInfo, + getDeviceList, + updateDevicePosition, + getBridgeInfos, + delport, + statusPort, +} from "@/api/area"; +import {getAreaTjData} from "@/api/area"; + + +import Bridge from "@/components/bridge.vue"; + +export default { + + components: {equAddForm}, + props: { + serve_info: {}, + serve_select:{}, + code:"", + }, + //根据 + //后端存储的是世界坐标,初次时候也是世界坐标,最小单位为0.01吧,这个间距或者大小,不考虑实际像素 + //渲染时候,需要把 坐标,变为实际rem等像素坐标 + //每个厂房大小不一样,先用一定的数代表吧. + + data() { + return { + dialog_activateSwitchPorts: false, + activateSwitchPorts:{}, + switchAllDetialInfos:[], + // serve_info: {}, + + }; + }, + created() { + console.log("serve_infoserve_infoserve_infoserve_info") + console.log("this.serve_info:",this.serve_info) + console.log("this.serve_select:",this.serve_select) + }, + mounted() { + + }, + destroyed() { + + }, + methods: { + async showServeInfo(info) { + debugger; + //展示交换机全部端口 + console.log("showServeInfo", info); + //弹出框展示全部端口,并且每个端口的情况 + //获取一下信息 + this.$modal.loading("加载中"); + const res = await getDeviceList(this.code, info.cabinetName); + this.$modal.closeLoading(); + console.log("serveinfo", res); + // this.activateSwitchPorts = res.switchDetialInfos || []; + this.activateSwitchPorts = {}; + //分两行,每行24个 + this.switchAllDetialInfos = res.switchAllDetialInfos || [] + var activaePorts = {}; + if (res.switchDetialInfos) { + for (var item of res.switchDetialInfos) { + if (item.port) activaePorts[item.port] = item; + } + } + console.log("activaePorts", activaePorts); + for (var i = 0; i <= 47; i++) { + var level = "" + parseInt(i / 24); + if (!this.activateSwitchPorts["" + level]) { + this.activateSwitchPorts["" + level] = []; + } + this.activateSwitchPorts["" + level].push({ + index: "" + (i + 1), + name: "", + info: activaePorts["" + (i + 1)] || undefined, + }); + } + // console.log("this.activateSwitchPorts", this.activateSwitchPorts); + this.dialog_activateSwitchPorts = true; + }, + }, +}; +</script> +<style lang="scss" scoped> +@import "../../common/itm_svg.scss"; +@import "../../common/area-bg.scss"; +$width-screen1: 174.17rem; + +.server-container { + + margin: 0 auto; + margin-bottom: 5rem; + + .equipments-container { + background: #d3e3f3; + position: relative; + margin: 0 auto; + cursor: pointer; + max-width: 100%; + max-height: 100vh; + + .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; + cursor: pointer; + + .serve-img { + margin-right: 2rem; + background-image: url("../../assets/equipment/serve.svg"); + background-image: url("../../assets/equipment/serve_v2.png"); + background-size: 100% 100%; + width: 30.3rem; + height: 62.3rem; + + /* padding-left: 1rem; */ + .each-item-container { + margin-top: 21rem; + margin-left: 3rem; + + .each-item { + background-image: url("../../assets/equipment/serve_item.png"); + width: 18.9rem; + height: 4.8rem; + 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; + background-color:rgb(4 255 246 / 41%); + } + .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"> +.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/area/switch-board.vue b/src/views/area/switch-board.vue index eca53aa..0ab22da 100644 --- a/src/views/area/switch-board.vue +++ b/src/views/area/switch-board.vue @@ -2,6 +2,9 @@ <div> <dv-full-screen-container> <self-header title="ITM Device Monitoring System"></self-header> + + <server-info v-if="!hideServe" :serve_info="serve_info" :serve_select="serve_select" :code="code"></server-info> + <div class="main-container" :style="{ zoom: zoom_main, width: screen_width + 'rem', @@ -13,7 +16,7 @@ @mouseup="handleMouseUp" @mousedown="handleMouseDown" @mouseleave="handleMouseLeave" --> - <div id="content" class="equipments-container area-map" :class="['area-map-' + code]" v-show="hideServe" + <div id="content" class="equipments-container area-map" v-show="hideServe" @mousemove="handleMouseMove" @mouseup="handleMouseUp" @mousedown="handleMouseDown" @mouseleave="handleMouseLeave" :style="{ @@ -28,15 +31,15 @@ }"> - <div class="serve-item" @click="showCabinetName"> + <div class="serve-item" > <div class="serve-img" v-for="(serverInfo, serverItemindex) in switchCabinets.switchCabinet" :key="serverItemindex" > - <div class="cabinetNameDesc">{{ serverInfo.cabinetName }} </div> + <div class="cabinetNameDesc" @click="showCabinetName(serverInfo)">{{ serverInfo.cabinetName }} </div> <div class="each-item-container"> - <div v-for="(serve, itemindex) in serverInfo.cabinetInfoStatic" @click="showServeInfo(serve)" :key="itemindex" + <div v-for="(serve, itemindex) in serverInfo.cabinetInfoStatic" :key="itemindex" class="each-item" - + @click="showCabinetServerInfo(serverInfo,serve)" > <div class="desc"> <div class="title">{{ serve.cabinetName }}</div> @@ -70,6 +73,7 @@ </template> <script> import selfHeader from "@/components/header"; +import serverInfo from "./server-info"; import { getSwitchCabinetInfo, @@ -79,11 +83,9 @@ export default { - components: { selfHeader, }, + components: { selfHeader,serverInfo, }, props: { - item_show: false, - code: "", - query_networkPort: '', + }, //根据 //后端存储的是世界坐标,初次时候也是世界坐标,最小单位为0.01吧,这个间距或者大小,不考虑实际像素 @@ -95,6 +97,10 @@ //如果显示服务器的话 hideServe: true, + serve_info:{}, + serve_select:{}, + activateSwitchPorts: {}, + code:"", html_base: 10, zoom_main: 0.8, @@ -173,12 +179,21 @@ this.stopScrolling(); }, methods: { - showCabinetName(){ - alert(111) + showCabinetName(serverInfo){ + this.serve_info=serverInfo + this.serve_select={} + this.hideServe=!this.hideServe }, - toSwitchInfo(info) { - this.showServe(info); + + showCabinetServerInfo(serverInfo,serve_select){ + this.serve_info=serverInfo + this.serve_select={ + switchName:serve_select.cabinetName + } + this.hideServe=!this.hideServe }, + + backToTop() { if (!this.hideServe) { this.hideServe = !this.hideServe; @@ -401,7 +416,7 @@ background-image: url("../../assets/equipment/serve.svg"); background-image: url("../../assets/equipment/serve_v2.png"); background-size: 100% 100%; - width: 15rem; + width: 20rem; // height: 35.3rem; .cabinetNameDesc{ @@ -417,7 +432,7 @@ .each-item { background-image: url("../../assets/equipment/serve_item.png"); - width: 10.3rem; + width: 14.3rem; height: 3.7rem; background-size: 100% 100%; margin-bottom: 0.9rem; @@ -430,8 +445,9 @@ padding-top: 0.5rem; .title { - font-weight: 600; - margin-bottom: 0.8rem; + font-weight: 700; + // margin-bottom: 0.8rem; + margin-bottom: 0.2rem; /* */ } diff --git a/src/views/screen1/itm.vue b/src/views/screen1/itm.vue index cebe501..abdd525 100644 --- a/src/views/screen1/itm.vue +++ b/src/views/screen1/itm.vue @@ -83,7 +83,18 @@ </div> </div> </div> - <div class="itm-container container-alert" style="cursor: pointer;margin-top: 3rem" @click="showSwitchBoardInfoTable=true"> + <div class="itm-container container-alert" style="cursor: pointer;margin-top: 1rem" @click="showSwitchBoardInfoTableAdd=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> + <div class="itm-container container-alert" style="cursor: pointer;margin-top: 1rem" @click="showSwitchBoardInfoTable=true"> <div class="flex1"> <div class="reg-num flex"> <span class="div1">{{ switchInfo.switchInfo && switchInfo.switchInfo.length || 0 }}</span> @@ -94,7 +105,7 @@ </div> </div> </div> - <div class="itm-container container-alert" style="cursor: pointer;margin-top: 3rem" @click="showSwitchBoard"> + <div class="itm-container container-alert" style="cursor: pointer;margin-top: 1rem" @click="showSwitchBoard"> <div class="flex1"> <div class="reg-desc"> 交换机机柜 @@ -102,6 +113,64 @@ </div> </div> <el-dialog :visible.sync="showSwitchBoardInfoTable" title="交换机清单" append-to-body> + <el-table + :data="switchInfo.lackSwitchInfo||[]" + border + style="width: 100%;max-height: 650px;overflow-y: scroll"> +<!-- <el-table-column--> +<!-- fixed--> +<!-- label="index"--> +<!-- width="80"--> +<!-- type="index">--> +<!-- </el-table-column>--> +<!-- <el-table-column--> +<!-- prop="assetName"--> +<!-- label="asset name">--> +<!-- </el-table-column>--> +<!-- <el-table-column--> +<!-- prop="clentSiteCode"--> +<!-- label="clent site code"--> +<!-- >--> +<!-- </el-table-column>--> +<!-- <el-table-column--> +<!-- prop="createdTime"--> +<!-- label="created time">--> +<!-- </el-table-column>--> +<!-- <el-table-column--> +<!-- prop="dateTimeConnected"--> +<!-- label="connected datetime">--> +<!-- </el-table-column>--> + <el-table-column + prop="deviceName" + label="device name"> + </el-table-column> + <el-table-column + prop="deviceNameDNS" + label="DNS"> + </el-table-column> + <el-table-column + prop="ipAddress" + label="ip address"> + </el-table-column> + <el-table-column + width="180" + prop="macAddress" + label="mac address"> + </el-table-column> + <el-table-column + prop="nasPort" + label="nas port"> + </el-table-column> + <el-table-column + prop="switchType" + label="switch type"> + </el-table-column> + </el-table> + </el-dialog> + + <!-- 新增交换机弹窗 --> + + <el-dialog :visible.sync="showSwitchBoardInfoTableAdd" title="新增交换机" append-to-body> <el-table :data="switchInfo.lackSwitchInfo||[]" border @@ -171,10 +240,12 @@ chartclose: false, switchDeviceStatus: {}, switchInfo: {}, + switchInfoAdd:{} }, data() { return { showSwitchBoardInfoTable: false, + showSwitchBoardInfoTableAdd:false, } }, methods: { @@ -303,7 +374,7 @@ } .itm-container { - padding: 2rem; + padding: 1rem; margin-top: 2rem; background: #e9f4fd; box-shadow: 0.5rem 0.33rem 2rem 0rem rgba(198, 212, 228, 0.38), -- Gitblit v1.9.3