From 3db7e74be3bf1c4c239def25b51ba58acf5e2598 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期二, 09 十一月 2021 15:47:02 +0800
Subject: [PATCH] 问题解决
---
src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue | 415 ++++++++++++++++++++++++++++++++++++++--------------------
1 files changed, 272 insertions(+), 143 deletions(-)
diff --git a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
index 9ad68c8..217bbd1 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
@@ -4,89 +4,108 @@
<el-tabs v-model="actTab" @tab-click="checkTab">
<el-tab-pane :name="tab.ID" v-for="tab in devices" :key="tab.ID">
<div slot="label" class="label-slot">
- <span>{{tab.Name}}</span>
+ <span
+ class="title"
+ :style="tab.Status == 1 ? { color: '#8A98B8' } : {}"
+ >{{ tab.Name }}</span
+ >
<span
class="capsule"
- :class="{'online':tab.Status==0,'offline':tab.Status==1}"
- >{{tab.Status==0?"鍦ㄧ嚎":"绂荤嚎"}}</span>
+ :class="{ online: tab.Status == 0, offline: tab.Status == 1 }"
+ >{{ tab.Status == 0 ? "鍦ㄧ嚎" : "绂荤嚎" }}</span
+ >
</div>
</el-tab-pane>
- <!-- <el-tab-pane name="dev2">
- <div slot="label" class="label-slot">
- <span>杞偍璁惧2</span>
- <span class="capsule offline">绂荤嚎</span>
- </div>
- </el-tab-pane>-->
</el-tabs>
- <div class="btn-add-dev" @click="showAddDevice">
- <i class="el-icon-circle-plus"></i>
+ <!-- <div class="btn-add-dev" @click="showAddDevice">
+ <span class="icon iconfont"> </span>
<span>娣诲姞璁惧</span>
- </div>
+ </div> -->
</div>
- <div class="general-view">
- <div class="indicator">
- <el-button>璁惧閲嶅惎</el-button>
- </div>
- <div
- class="indicator"
- :class="{'lastOne':index==generalIndicators.length-1}"
- v-for="(indicator,index) in generalIndicators"
- :key="indicator.id"
- >
- <div class="title">
- <span
- class="dot"
- :class="{'kx':indicator.id=='kx','dx':indicator.id=='dx','ccgz':indicator.id=='ccgz'}"
- ></span>
- <span class="word">{{indicator.title}}</span>
- </div>
- <div class="indicator-val">{{indicator.slots.length}}</div>
- </div>
- </div>
- <div class="table-area">
- <div class="filter-bar flex-box">
- <!-- <div>
- <label>璁惧鍦板潃:</label>
- <div>
- <el-input v-model="deviceAddr" size="small"></el-input>
- </div>
- </div>-->
- <div>
- <label>璁惧鐘舵��:</label>
- <div>
- <el-select v-model="deviceState" size="small">
- <el-option value="work" label="宸ヤ綔"></el-option>
- </el-select>
+ <div class="t-d-content">
+ <div class="general-view">
+ <div class="indicator">
+ <div class="icon-wrap">
+ <div class="icon-div"><span class="iconfont"></span></div>
+
+ <span class="text">璁惧閲嶅惎</span>
</div>
</div>
- <div class="btns">
- <el-button type="primary" size="small">鏌ヨ</el-button>
+ <div
+ class="indicator"
+ :class="{ lastOne: index == generalIndicators.length - 1 }"
+ v-for="(indicator, index) in generalIndicators"
+ :key="indicator.id"
+ >
+ <div class="img-desc">
+ <img class="icon" :src="indicator.path" />
+ </div>
+ <div class="title">
+ <div class="indicator-val" :style="{ color: indicator.color }">
+ <span
+ style="font-size: 24px"
+ :style="{ color: indicator.color }"
+ >{{ indicator.slots.length }}</span
+ >
+ 涓�
+ </div>
+ <span class="word">{{ indicator.title }}</span>
+ </div>
</div>
</div>
- <el-table class="thbg" :data="tableData" fit>
- <el-table-column type="index" width="100" label="搴忓彿"></el-table-column>
- <el-table-column prop="Name" label="鎻掓Ы鍚嶇О"></el-table-column>
- <el-table-column prop="Status" label="鐘舵��">
- <template slot-scope="scope">
+ <div class="table-area">
+ <div class="filter-bar flex-box">
+ <div>
+ <label>璁惧鐘舵��:</label>
<div>
- <span v-if="scope.row.Status==0">绌洪棽涓�</span>
- <span v-if="scope.row.Status==1">璇诲啓涓�</span>
- <span v-if="scope.row.Status==2">鎻掓Ы鏁呴殰</span>
+ <el-select v-model="deviceState" size="small">
+ <el-option value="" label="鍏ㄩ儴"></el-option>
+ <el-option value="1" label="璇诲啓涓�"></el-option>
+ <el-option value="0" label="绌洪棽涓�"></el-option>
+ <el-option value="2" label="鎻掓Ы鏁呴殰"></el-option>
+ </el-select>
</div>
- </template>
- </el-table-column>
- <!-- <el-table-column prop="state" label="璁惧鐘舵��"></el-table-column>
- <el-table-column prop="pic" label="鐜板満鍥剧墖"></el-table-column>
- <el-table-column prop="addr" label="璁惧鍦板潃"></el-table-column>
- <el-table-column prop="tel" label="鎶ヤ慨鐢佃瘽"></el-table-column>
- <el-table-column label="鎿嶄綔">
- <template slot-scope="scope">
- <div class="operation">
- <span @click="checkSlot(scope.row)">鏌ョ湅鎻掓Ы</span>
- </div>
- </template>
- </el-table-column>-->
- </el-table>
+ </div>
+ <div class="btns">
+ <el-button @click="findDeviceIfo" type="primary" size="small"
+ >鏌ヨ</el-button
+ >
+ </div>
+ </div>
+ <el-table
+ class="thbg"
+ :data="tableData"
+ fit
+ stripe
+ :header-cell-style="{
+ background: '#2D52D7',
+ color: '#fff',
+ height: '50px',
+ }"
+ >
+ <el-table-column
+ type="index"
+ width="240"
+ label="搴忓彿"
+ ></el-table-column>
+ <el-table-column prop="Name" label="鎻掓Ы鍚嶇О"></el-table-column>
+ <el-table-column prop="Status" label="鐘舵��">
+ <template slot-scope="scope">
+ <div>
+ <span style="color: #6297f2" v-if="scope.row.Status == 0"
+ >绌洪棽涓�</span
+ >
+ <span style="color: #fea425" v-if="scope.row.Status == 1"
+ >璇诲啓涓�</span
+ >
+ <span style="color: #ed663e" v-if="scope.row.Status == 2"
+ >鎻掓Ы鏁呴殰</span
+ >
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
</div>
<el-dialog
:visible="visibleOfialogAddDev"
@@ -104,28 +123,54 @@
<el-input v-model="IP"></el-input>
</div>
<div slot="footer" class="btns">
- <el-button type="primary" size="small" @click="toAddDevice">纭畾</el-button>
- <el-button size="small" @click="visibleOfialogAddDev=false">鍙栨秷</el-button>
+ <el-button type="primary" size="small" @click="toAddDevice"
+ >纭畾</el-button
+ >
+ <el-button size="small" @click="visibleOfialogAddDev = false"
+ >鍙栨秷</el-button
+ >
</div>
</div>
</el-dialog>
</div>
</template>
<script>
-import { addDevice, getDeviceList, getDeviceInfoById } from '@/api/shuohuang';
+import { addDevice, getDeviceList, getDeviceInfo } from "@/api/shuohuang";
export default {
data() {
return {
- actTab: 'dev1',
+ actTab: "dev1",
devices: [],
- generalIndicators: [{ id: 'dx', title: '璇诲啓涓�', slots: [] }, { id: 'kx', title: '绌洪棽涓�', slots: [] }, { id: 'ccgz', title: '鎻掓Ы鏁呴殰', slots: [] }],
- deviceAddr: '',
- deviceState: '',
+ generalIndicators: [
+ {
+ id: "dx",
+ title: "璇诲啓涓�",
+ slots: [],
+ color: "#FEA425",
+ path: "/images/shuohuang/缁� 780.png",
+ },
+ {
+ id: "kx",
+ title: "绌洪棽涓�",
+ slots: [],
+ color: "#6297F2",
+ path: "/images/shuohuang/缁� 781.png",
+ },
+ {
+ id: "ccgz",
+ title: "鎻掓Ы鏁呴殰",
+ slots: [],
+ color: "#ED663E",
+ path: "/images/shuohuang/缁� 782.png",
+ },
+ ],
+ deviceAddr: "",
+ deviceState: "",
tableData: [],
visibleOfialogAddDev: false,
- Name: '',
- IP: '',
- }
+ Name: "",
+ IP: "",
+ };
},
mounted() {
this.findDeviceList();
@@ -133,71 +178,84 @@
methods: {
findDeviceList() {
let _this = this;
- getDeviceList().then(res => {
+ getDeviceList().then((res) => {
_this.devices = res.data;
_this.actTab = _this.devices[0].ID;
- _this.findDeviceIfo()
- })
+ _this.findDeviceIfo();
+ });
},
findDeviceIfo() {
let _this = this;
- getDeviceInfoById({ DeviceID: this.actTab }).then(res => {
+ getDeviceInfo({
+ DeviceID: this.actTab,
+ Status: this.deviceState,
+ }).then((res) => {
// debugger
_this.tableData = res.data;
//缁熻褰撳墠鎻掓Ы鐘舵��
- let dx = _this.generalIndicators.find(indicator => indicator.id == 'dx');
- let kx = _this.generalIndicators.find(indicator => indicator.id == 'kx');
- let ccgz = _this.generalIndicators.find(indicator => indicator.id == 'ccgz');
+ let dx = _this.generalIndicators.find(
+ (indicator) => indicator.id == "dx"
+ );
+ let kx = _this.generalIndicators.find(
+ (indicator) => indicator.id == "kx"
+ );
+ let ccgz = _this.generalIndicators.find(
+ (indicator) => indicator.id == "ccgz"
+ );
dx.slots = [];
kx.slots = [];
ccgz.slots = [];
- res.data.forEach(slot => {
+ res.data.forEach((slot) => {
if (slot.Status == 0) {
- kx.slots.push(slot)
+ kx.slots.push(slot);
}
if (slot.Status == 1) {
- dx.slots.push(slot)
+ dx.slots.push(slot);
}
if (slot.Status == 2) {
- ccgz.slots.push(slot)
+ ccgz.slots.push(slot);
}
- })
+ });
//_this.generalIndicators
- })
+ });
},
toAddDevice() {
let _this = this;
let params = {
Name: this.Name,
- IP: this.IP
- }
- addDevice(params).then(res => {
+ IP: this.IP,
+ };
+ addDevice(params).then((res) => {
if (res.success) {
this.$notify({
- type: 'success',
- message: res.msg
- })
+ type: "success",
+ message: res.msg,
+ });
_this.visibleOfialogAddDev = true;
}
- })
+ });
},
showAddDevice() {
this.visibleOfialogAddDev = true;
-
},
checkTab(tab, event) {
this.findDeviceIfo();
},
- checkSlot(row) {
-
- }
- }
-}
+ checkSlot(row) {},
+ },
+};
</script>
<style lang="scss">
.transfer-device-manage {
- padding: 20px;
+ // padding: 20px;
+ // .el-tabs__nav-scroll {
+ // overflow-x: scroll;
+ // }
+ .el-tabs__nav-wrap.is-scrollable {
+ padding-right: 90px;
+ }
+
.el-tabs__item {
height: 45px;
line-height: 45px;
@@ -207,48 +265,104 @@
}
.header-with-tab {
position: relative;
+ background: #ffffff;
+ box-shadow: 0px 3px 6px rgba(160, 174, 230, 0.56);
+ border-radius: 10px;
+ padding: 0 35px;
+ padding-top: 15px;
+ .el-tabs__header {
+ margin: 0;
+ }
+ .el-tabs__item.is-active .label-slot .title {
+ color: #2d52d7;
+ }
.label-slot {
display: flex;
align-items: center;
padding: 0 20px;
font-weight: bold;
+ position: relative;
+ .title {
+ font-size: 14px;
+ }
.capsule {
- width: 42px;
- height: 20px;
+ width: 36px;
+ height: 18px;
margin-left: 10px;
- line-height: 20px;
+ line-height: 18px;
+ position: absolute;
+ text-align: center;
+ top: 0px;
text-align: center;
border-radius: 20px;
font-size: 12px;
font-weight: normal;
color: #fff;
+ right: -20px;
&.online {
- background: #00a854;
+ background: #2ace7c;
}
&.offline {
- background: #f04134;
+ background: #8a98b8;
}
}
}
- .btn-add-dev {
- cursor: pointer;
- position: absolute;
- right: 0;
- top: 10px;
- color: #1890ff;
- font-size: 14px;
- i {
- padding-right: 4px;
- font-size: 16px;
- }
+ // .btn-add-dev {
+ // cursor: pointer;
+ // position: absolute;
+ // right: 25px;
+ // top: 20px;
+ // /* color: #1890ff; */
+ // font-size: 16px;
+ // }
+ }
+ .t-d-content {
+ background: #fff;
+ margin-top: 20px;
+ border-radius: 10px;
+ box-shadow: 0px 3px 6px rgb(160 174 230 / 56%);
+ padding: 30px 45px;
+ button span {
+ color: #fff;
}
}
.general-view {
display: flex;
- padding: 30px;
.indicator {
- flex: 1;
position: relative;
+ background: #f4f6f9;
+ width: 263px;
+ height: 101px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 50px;
+
+ .img-desc {
+ margin-right: 8px;
+
+ img {
+ width: 53px;
+ }
+ }
+ .icon-wrap {
+ display: flex;
+ flex-direction: column;
+ .icon-div {
+ background: #26d4b4;
+ width: 42px;
+ height: 42px;
+ line-height: 42px;
+
+ border-radius: 21px;
+ box-shadow: 0 0 0 8px #caf0eb;
+ margin-bottom: 10px;
+ span {
+ font-size: 32px;
+ color: #fff;
+ }
+ }
+ }
&:not(.lastOne):after {
content: "";
width: 1px;
@@ -261,28 +375,43 @@
}
.title {
display: flex;
- align-items: center;
- justify-content: center;
font-size: 14px;
color: #999;
- margin-bottom: 10px;
- .dot {
- width: 10px;
- height: 10px;
- margin-right: 5px;
- border-radius: 50%;
- background: #01a854;
- &.kx {
- background: #0f77d1;
- }
- &.ccgz {
- background: #f04235;
- }
+ flex-direction: column;
+ .indicator-val {
+ font-size: 16px;
+ font-weight: bold;
}
}
- .indicator-val {
- font-size: 24px;
- }
+ }
+ }
+ .table-area {
+ margin-top: 25px;
+ button {
+ background: #2d52d7 !important;
+ border-color: #2d52d7 !important;
+ }
+ .el-table--striped
+ .el-table__body
+ tr.el-table__row--striped
+ td.el-table__cell {
+ background: #f4f6f9;
+ }
+ th.el-table__cell > .cell {
+ color: #fff;
+ }
+ .thbg {
+ margin-top: 15px;
+ border: none;
+ }
+ .el-table__row > td {
+ border: none;
+ }
+ .el-table th.is-leaf {
+ border: none;
+ }
+ .el-table::before {
+ height: 0px;
}
}
.filter-bar.flex-box {
--
Gitblit v1.8.0