From 73953e3d95ecf974a5e79c1e259d33c1c9d518cc Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期四, 28 十一月 2024 16:49:27 +0800
Subject: [PATCH] add 删除功能
---
src/views/area/server-info.vue | 48 +++++++
src/components/device-info-delete.vue | 283 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 327 insertions(+), 4 deletions(-)
diff --git a/src/components/device-info-delete.vue b/src/components/device-info-delete.vue
new file mode 100644
index 0000000..63e9612
--- /dev/null
+++ b/src/components/device-info-delete.vue
@@ -0,0 +1,283 @@
+<template>
+ <div
+ v-if="local_show_info"
+ class="device-info"
+ @click="local_show_info = false"
+ >
+ <div class="info-container">
+ <div class="info-block">
+ <div class="title">当前信息</div>
+ <div class="each">
+ <div class="label">网络连接性:</div>
+ <div class="value">{{ device_info.status }}</div>
+ </div>
+ <div class="each">
+ <div class="label">IP地址:</div>
+ <div class="value">{{ device_info.ip || "" }}</div>
+ </div>
+ <div class="each">
+ <div class="label">Mac:</div>
+ <div class="value">{{ device_info.mac }}</div>
+ </div>
+ <div class="each">
+ <div class="label">桥架端口:</div>
+ <div class="value">{{ device_info.networkPort }}</div>
+ </div>
+ <div class="each">
+ <div class="label">交换机名字:</div>
+ <div class="value">{{ device_info.switchName }}</div>
+ </div>
+ <div class="each">
+ <div class="label">交换机端口:</div>
+ <div class="value">{{ device_info.port }}</div>
+ </div>
+ <div class="each">
+ <div class="label">名称:</div>
+ <div class="value">{{ device_info.clhwName }}</div>
+ </div>
+ <div class="each">
+ <div class="label">类型:</div>
+ <div class="value">{{ device_info.clhwTier }}</div>
+ </div>
+ <div class="each">
+ <div class="label">操作系统:</div>
+ <div class="value">{{ device_info.clhwOperating_System }}</div>
+ </div>
+ </div>
+ </div>
+ <div class="button-del-port" @click="delPort()">删除</div>
+ <div class="close" @click="handleClose"></div>
+ </div>
+</template>
+<script>
+export default {
+ props: {
+
+ show_info: {
+ type: Boolean,
+ default() {
+ return false;
+ },
+ },
+
+ device_info: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+
+ configs: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+
+ datamap: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+ devicelist: {
+ type: Array,
+ default() {
+ return [];
+ },
+ },
+ width: {
+ type: Number,
+ default() {
+ return 4;
+ },
+ },
+
+ code: "",
+ areacode: "",
+ current_show_id: "",
+ grouplevel: {
+ type: Number,
+ default() {
+ return 0;
+ },
+ },
+ status_indrag: false,
+ current_drag_index: {
+ type: Object,
+ default() {
+ return {};
+ },
+ },
+
+ },
+
+ watch: {
+ // 监听 props 的变化并同步到 data
+ show_info(newVal) {
+ this.local_show_info = newVal;
+ },
+ },
+
+ methods: {
+
+ toSwitchInfo() {
+ this.$emit("toSwitchInfo",this.device_info);
+ },
+ async delPort(index) {
+ await this.$modal.confirm("是否删除此端口");
+ this.$emit("delPort", this.device_info);
+ },
+ async statusPort(index) {
+ await this.$modal.confirm("是否设置此端口状态为正常");
+ this.$emit("statusPort",this.device_info);
+ },
+
+ handleClose(){
+ this.local_show_info=false
+ },
+ },
+ data() {
+ return {
+ local_show_info: false,
+ current_show_info: {
+ status:"",
+ ip:"",
+ mac:"",
+ networkPort:"",
+ switchName:"",
+ port:"",
+ clhwName:"",
+ clhwTier:"",
+ clhwOperating_System:""
+ },
+ };
+ },
+};
+</script>
+<style lang="scss" scoped>
+.device-info {
+ cursor: default;
+ background-image: url("../assets/area/device-info-bg.svg");
+ background-size: 100% 100%;
+ height: 40.4rem;
+ width: 49rem;
+ position: absolute;
+ // top: -31.5rem;
+ top: -44.7rem;
+ transform: translate(-50%, 0%);
+ left: 50%;
+ z-index: 120;
+ padding: 3.1rem;
+ padding-top: 2.5rem;
+ padding-left: 1.6rem;
+ padding-right: 1.6rem;
+
+ .title {
+ height: 2.5rem;
+ font-size: 1.8rem;
+ font-family: PingFangSC-Semibold, PingFang SC;
+ font-weight: 600;
+ color: #265696;
+ line-height: 2.5rem;
+ text-align: left;
+ margin-bottom: 0.5rem;
+ }
+
+ .each {
+ display: flex;
+ height: 2rem;
+ font-size: 1.4rem;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #265696;
+ line-height: 2rem;
+
+ .label {
+ margin-right: 1rem;
+ text-align: left;
+ }
+
+ .value {
+ }
+ }
+
+ .close {
+ background-image: url("../assets/area/close.svg");
+ background-size: 100% 100%;
+ position: absolute;
+ width: 1.2rem;
+ height: 1.2rem;
+ top: 3rem;
+ right: 2rem;
+ }
+ .button-to-switch {
+ cursor: pointer;
+ width: 5.9rem;
+ height: 2.2rem;
+ border-radius: 0.2rem;
+ border: 0.1rem solid #278afa;
+ font-size: 1.2rem;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: #278afa;
+ line-height: 2.2rem;
+ position: absolute;
+ right: 9.2rem;
+ bottom: 4rem;
+ }
+
+ .button-to-switch:hover {
+ color: #fff;
+ background-color: #278afa;
+ }
+ .button-to-check {
+ cursor: pointer;
+ width: 5.2rem;
+ height: 2.2rem;
+ border-radius: 0.2rem;
+ border: 0.1rem solid rgb(15, 243, 76);
+ font-size: 1.2rem;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: rgb(2, 76, 22);
+ line-height: 2.2rem;
+ position: absolute;
+
+ right: 16.2rem;
+ bottom: 4rem;
+ }
+ .button-to-check:hover {
+ color: #fff;
+ background-color: rgb(15, 243, 76);
+ }
+ .button-del-port {
+ cursor: pointer;
+ width: 5.2rem;
+ height: 2.2rem;
+ border-radius: 0.2rem;
+ border: 0.1rem solid rgb(243, 15, 15);
+ font-size: 1.2rem;
+ font-family: PingFangSC-Regular, PingFang SC;
+ font-weight: 400;
+ color: rgb(243, 15, 15);
+ line-height: 2.2rem;
+ position: absolute;
+ right: 2.2rem;
+ bottom: 4rem;
+ }
+ .button-del-port:hover {
+ color: #fff;
+ background-color: rgb(243, 15, 15);
+ }
+ }
+.info-container {
+ display: flex;
+ justify-content: space-between;
+ height:100%;
+}
+
+.info-block {
+ width: 45%; /* Adjust the width as needed */
+}
+</style>
\ No newline at end of file
diff --git a/src/views/area/server-info.vue b/src/views/area/server-info.vue
index 448faff..3f61aea 100644
--- a/src/views/area/server-info.vue
+++ b/src/views/area/server-info.vue
@@ -75,8 +75,11 @@
? 'space-text-red'
: '',
item.info && item.info.statusInt == 1 ? 'space-text-yellow' : '',
- ]" v-if="item.info">
+ ]" v-if="item.info" @click="showDeviceInfo(index,item,$event)">
{{ item.info.networkPort || "-" }}
+ <device-info-delete v-show="selectedIndex === item.info.id " :show_info="show_device_info"
+ :device_info="cur_device_info" @delPort="delPort"
+ ></device-info-delete>
</div>
<div class="port-tip">{{ item.index }}</div>
</div>
@@ -131,6 +134,7 @@
import equAddForm from "@/components/equ-add-form.vue";
+import deviceInfoDelete from "@/components/device-info-delete";
import {
getAreaServeInfo,
getFaultInfo,
@@ -147,7 +151,7 @@
export default {
- components: {equAddForm},
+ components: {equAddForm,deviceInfoDelete},
props: {
serve_info: {},
serve_select:{},
@@ -168,7 +172,11 @@
areas: [],
device_list: [],
// serve_info: {},
-
+ isDragging: false,
+ selectedIndex: null,
+ cur_device_info: null, // 当前的设备信息
+ cur_item:null,// 当前的element
+ show_device_info: false, // 展示设备信息
};
},
created() {
@@ -226,6 +234,7 @@
this.cabinetName = info.cabinetName;
},
async update_server_info(code,name) {
+ debugger;
// name 是交换机
console.log("info",code,name);
this.$modal.loading("加载中");
@@ -255,8 +264,9 @@
});
}
// console.log("this.activateSwitchPorts", this.activateSwitchPorts);
+ debugger;
this.dialog_activateSwitchPorts = true;
- this.cabinetName = cabinetName;
+ this.cabinetName = name;
},
click_item_add() {
console.log("this.$refs.equAddForm", this.$refs.equAddForm);
@@ -269,6 +279,36 @@
}
this.$refs.equAddForm && this.$refs.equAddForm.openConfigform(this.code,this.cabinetName,this.cabinetNameForOpen,config);
},
+ showDeviceInfo(index, item, event) {
+ event.stopPropagation(); // 阻止事件冒泡
+ if (item.info) {
+ // 如果点击的是同一个元素,则切换显示状态
+ if (this.selectedIndex === item.info.id) {
+ this.show_device_info = !this.show_device_info;
+ } else {
+ // 切换到新元素,自动关闭之前的
+ this.selectedIndex = item.info.id;
+ this.show_device_info = true;
+ this.cur_device_info = item.info;
+ }
+ }
+ },
+ async delPort(info) {
+ var json = {
+ id: info.id,
+ operateType: 4,
+ networkPort: info.name,
+ };
+ this.$modal.loading("删除中");
+
+ const data = await delport(json);
+ console.log("info", info);
+ this.update_server_info(info.areaCode, info.switchName);
+
+ // this.$modal.closeLoading();
+ // this.initializeElements();
+ // this.handleBindElementsItems()
+ },
},
};
</script>
--
Gitblit v1.9.3