smart-power-ui/src/views/profile/DeviceDetailsView/index.vue

1107 lines
25 KiB
Vue

<template>
<div class="iot-circuit-breaker-details-warp">
<device-select
v-if="pInfo"
ref="deviceSelect"
:deviceInfo="pInfo"
:wsDeviceInfo="infoData"
@changeEvent="viewDeviceChange($event)"
@wsRealTImeMsg="wsRealTImeMsg($event)"
></device-select>
<div :class="infoData.deviceType === '10001' ? 'link-to-list is-widening': 'link-to-list'">
<el-button icon="el-icon-d-arrow-left" size="small" style="margin-left: 10px;" title="返回列表" type="primary" @click="toTableClick"
>返回列表</el-button
>
<el-button v-if="infoData.deviceType === '10001'" size="small" title="批量升级" type="primary" @click="batchUpgradeOpen">批量升级</el-button>
</div>
<div class="info-tabs-circuit main-device-card">
<div v-show="breadcrumbList.length > 1" class="breadcrumb-wrap">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item
v-for="(item, index) in breadcrumbList"
:key="index"
>
<span
:class="
item.deviceId === deviceId
? 'breadcrumb-span show-wrap'
: 'breadcrumb-span'
"
@click="deviceClick(item, index)"
>{{ item.deviceName }}</span
>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<el-tabs
v-model="activeName"
:class="breadcrumbList.length > 1 ? 'children-wrap' : ''"
class="device-detail-tabs"
>
<el-tab-pane name="runingState">
<span slot="label">运行状态</span>
<div class="tabs-body protocol-wrap">
<state-management
v-if="devudeRunState"
:deviceInfo="infoData"
:realTimeData="realTimeData"
></state-management>
</div>
</el-tab-pane>
<el-tab-pane label="事件" name="eventLog">
<div class="tabs-body">
<event-log
v-if="activeName === 'eventLog'"
:pDevcieInfo="infoData"
:sourceId="infoData.deviceId"
></event-log>
</div>
</el-tab-pane>
<el-tab-pane label="设备信息" name="info">
<div class="tabs-body">
<info-wrap
v-if="activeName === 'info'"
:infoData="infoData"
:isTenant="isTenant"
@updateInfo="updateInfo($event)"
/>
</div>
</el-tab-pane>
<el-tab-pane
v-if="infoData.deviceType === '10001' && !isTenant"
label="子设备"
name="child"
>
<div class="tabs-body">
<child-device
v-if="activeName === 'child'"
:pDevcieInfo="infoData"
:sourceId="infoData.deviceId"
@EventUpload="handleUpload"
@toChildEvent="toNewDevice"
></child-device>
</div>
</el-tab-pane>
<!-- <el-tab-pane label="触发器" name="trigger">-->
<!-- <div class="tabs-body protocol-wrap">-->
<!-- <trigger-wrap-->
<!-- v-if="activeName === 'trigger'"-->
<!-- :deviceInfo="infoData"-->
<!-- :sourceId="infoData.deviceId"-->
<!-- ></trigger-wrap>-->
<!-- </div>-->
<!-- </el-tab-pane>-->
<el-tab-pane label="固件" name="oat">
<div class="tabs-body protocol-wrap">
<model-oat
v-if="activeName === 'oat'"
:deviceInfo="infoData"
:isTenant="isTenant"
@updateInfo="updateInfo($event)"
></model-oat>
</div>
</el-tab-pane>
<el-tab-pane label="日志" name="devLog">
<div class="tabs-body">
<device-log
v-if="activeName === 'devLog'"
:pDevcieInfo="infoData"
:sourceId="infoData.deviceId"
></device-log>
</div>
</el-tab-pane>
<el-tab-pane label="场景" name="scene">
<div class="tabs-body">
<e-device-scene
v-if="activeName === 'scene'"
:sourceId="infoData.deviceId"
/>
</div>
</el-tab-pane>
<el-tab-pane v-if="infoData.deviceId === pInfo.deviceId" label="升级进度" name="batchUpgradeRate">
<div class="tabs-body">
<batch-upgrade-rate v-if="activeName === 'batchUpgradeRate'" ref="batchUpgradeRate" :sourceKey="pInfo.deviceKey"></batch-upgrade-rate>
</div>
</el-tab-pane>
<el-tab-pane label="功能" name="function">
<div class="tabs-body">
<function-wrap :deviceInfo="infoData" :sourceId="deviceId"></function-wrap>
</div>
</el-tab-pane>
</el-tabs>
</div>
<div style="height: 0;">
<!-- 添加或修改建筑类型对话框 -->
<dialog-template
:title="dialogTitle"
:visible="dialogOpen"
style=""
width="880px"
@close="dialogOpen = false"
>
<e-batch-firmware-upgrade
slot="dialog-center"
:sourceData="this.form.data"
:sourceId="this.pInfo.deviceId"
@handleChange="handleFirmwareChange"
></e-batch-firmware-upgrade>
<div slot="dialog-footer" class="dialog-footer">
<el-button size="mini" type="primary" @click="submitForm"
> </el-button
>
<el-button size="mini" @click="() => {dialogOpen = false}"> </el-button>
</div>
</dialog-template>
</div>
</div>
</template>
<script>
import { getDevice } from "@/api/iot/device";
import InfoWrap from "./info";
import DeviceLog from "./deviceLog";
import EventLog from "@/views/profile/DeviceDetailsView/eventLog";
import StateManagement from "./stateManagement";
import TriggerWrap from "@/views/profile/DeviceTrigger/index";
import DeviceSelect from "./deviceSelectNav";
import ModelOat from "./modelOat";
import ChildDevice from "./childDevice";
import EDeviceScene from '@/views/profile/EDeviceScene/indexView'
import DialogTemplate from "@/components/DialogTemplate";
import EBatchFirmwareUpgrade from '@/views/profile/BatchFirmwareUpgrade/example'
import { upgradeBatch } from '@/api/iot/deviceOta'
import BatchUpgradeRate from "./BatchUpgradeRate";
import functionWrap from "@/views/iot/device/profile/functionWrap"
export default {
name: "DetailsWrap",
props: ["sourceId", "isTenant", 'isPersonal'],
components: {
InfoWrap,
DeviceLog,
StateManagement,
TriggerWrap,
DeviceSelect,
ModelOat,
ChildDevice,
EDeviceScene,
DialogTemplate,
EBatchFirmwareUpgrade,
BatchUpgradeRate,
functionWrap,
EventLog
},
data() {
return {
infoData: {},
pInfo: {},
activeName: "runingState",
breadcrumbList: [],
tempType: "bs",
deviceId: "",
devudeRunState: false,
realTimeData: null,
hzSelectList: [],
userTenantId: "",
dialogTitle: '',
dialogOpen: false,
form: {
deviceId: '',
data: []
}
};
},
created() {
this.deviceId = this.sourceId;
this.userTenantId = this.$store.getters.tenantId;
this.deviceInfo();
},
methods: {
// 跳转详情页
toTableClick() {
this.$emit('toTableClick')
},
handleUpload() {
let newActive = this.activeName;
this.deviceId = this.sourceId;
this.userTenantId = this.$store.getters.tenantId;
// this.deviceInfo();
this.$refs.deviceSelect.getList();
this.newActive = newActive;
},
wsRealTImeMsg(data) {
this.realTimeData = Object.assign(data);
},
viewDeviceChange(row) {
this.deviceId = row.val;
this.deviceInfo(row.val === this.pInfo.deviceId ? null : "children");
this.devudeRunState = false;
},
// 设备详情
deviceInfo(type) {
getDevice(this.deviceId).then((response) => {
// if(response.data.deviceLabel && response.data.deviceLabel[0] == '空间'){
// response.data.deviceLabel.shift();
// }
if (!type) {
this.pInfo = response.data;
}
this.infoData = response.data;
this.devudeRunState = true;
this.activeName = "runingState";
});
},
toNewDevice(data) {
this.tempType = "children";
this.deviceId = data.deviceId;
this.devudeRunState = false;
this.deviceInfo();
this.activeName = "runingState";
},
updateInfo(data) {
console.log(data);
this.deviceInfo(
data.deviceId === this.pInfo.deviceId ? null : "children"
);
},
batchUpgradeOpen() {
this.dialogTitle = '网关批量固件升级';
this.dialogOpen = true;
this.form = {
deviceId: this.pInfo.deviceId,
data: []
}
},
handleFirmwareChange(ev) {
this.form.data = ev
},
submitForm() {
if((!this.form.data || this.form.data.length <= 0) || (this.form.data && this.form.data.filter(v => !v.otaId || !v.prodKey).length > 0)) {
this.$message({
message: '未选择型号或固件',
type: 'error'
});
return
}
upgradeBatch(this.form).then(res => {
if (!res.code) return;
this.$message({
message: '升级固件已经提交,固件正在升级中(过程中有可能由 异常 等问题导致升级不成功!)',
type: 'success'
});
this.dialogOpen = false;
if (this.activeName === 'batchUpgradeRate'){
this.$refs.batchUpgradeRate.getDeviceList();
}
this.activeName = 'batchUpgradeRate';
});
}
},
};
</script>
<style lang="scss">
.iot-circuit-breaker-details-warp {
position: relative;
.breadcrumb-wrap {
position: absolute;
top: 15px;
z-index: 10;
left: 20px;
width: 90%;
overflow: hidden;
.breadcrumb-span:hover {
color: #1890ff;
cursor: default;
}
.show-wrap {
color: #1890ff;
}
}
.product-release-dialog {
.title-i {
font-size: 20px;
color: #9c9a9a;
line-height: 18px;
}
.i-color {
color: rgb(0, 193, 222);
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.top-tigs {
background: #fbfbfc;
border: 1px solid #ecedee;
padding: 20px;
margin-bottom: 25px;
color: #999;
}
.form-bottom-prod-details {
margin-top: 40px;
height: 10px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.bottom-div {
height: 70px;
font-size: 12px;
border: 1px solid #ecedee;
margin: -1px;
}
.one-div {
width: 15%;
float: left;
border-right: 1px solid #ecedee;
height: 30px;
line-height: 30px;
/* padding-left: 10px; */
text-align: center;
font-size: 18px;
height: 70px;
line-height: 76px;
text-align: center;
font-size: 18px;
}
.two-div {
width: calc(100% - 36%);
float: left;
padding: 22px 10px 10px 10px;
font-size: 12px;
}
.there-div {
width: 10%;
float: left;
padding-top: 28px;
}
.four-div {
width: 5%;
float: left;
padding-top: 28px;
}
}
.heard {
padding: 20px 40px 0;
background-color: #fff;
height: 112px;
padding: 0px;
}
.info-title {
margin-top: 0px;
margin-bottom: 16px;
line-height: 29px;
overflow: hidden;
height: 30px;
.title {
float: left;
font-size: 20px;
margin: 0 8px 0 0;
line-height: 28px;
}
.el-button--small,
.el-button--small.is-round {
padding: 8px 15px;
float: right;
}
}
.info-icon {
margin-top: -70px;
float: left;
width: 101px;
border: 1px dotted rgb(205, 203, 203);
height: 101px;
.image {
width: 100px;
height: 100px;
}
}
.info-des {
font-size: 14px;
width: 100%;
float: left;
.info-row {
overflow: hidden;
display: block;
text-overflow: ellipsis;
line-height: 20px;
white-space: nowrap;
.label {
color: #aaa;
}
.centent {
color: #999;
margin-right: 8px;
}
}
}
.link-to-list {
position: absolute;
top: 20px;
right: 20px;
display: flex;
justify-content: flex-end;
z-index: 100;
.el-button--medium.is-circle {
//width: 25px;
//height: 20px;
padding: 10px;
background: #0d8afd;
color: #fff;
font-size: 16px;
border-radius: 5px;
//height: 30px;
//width: 100%;
font-size: 14px;
}
}
.link-to-list:hover {
color: #1890ff;
font-size: 30px;
}
.is-widening {
//width: 220px;
//left: calc(100% - 220px);
}
.info-tabs-circuit {
position: relative;
box-sizing: border-box;
.el-tabs__content {
//height: calc(100vh - 340px);
//overflow: auto;
}
.el-tabs__header {
background-color: #fff;
position: relative;
// top: -10px;
.el-tabs__nav-wrap {
margin-left: 0px;
.el-tabs__item {
font-size: 16px;
}
}
}
.el-tabs__nav-scroll {
//height: 65px;
//padding-top: 25px;
//padding-left: 5px;
// background: #e4eaf3;
}
.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active {
background: #fff;
color: #333;
border: 0;
}
.el-tabs--border-card > .el-tabs__header .el-tabs__item {
// border-color: red;
color: #909399;
background: #d3deec;
border-radius: 8px 8px 0 0;
border-bottom: 0;
margin-left: 15px;
}
.tabs-body {
margin-left: 0px;
margin-right: 0px;
padding: 0px;
overflow: hidden;
background-color: #fff;
margin-bottom: 0px;
}
.protocol-wrap {
.el-tabs__nav-scroll {
height: auto;
padding-top: 0;
padding-left: 0;
background: #fff;
}
}
}
.children-wrap {
.el-tabs__header {
.el-tabs__nav-scroll {
height: 85px;
.el-tabs__nav {
margin-top: 20px;
}
}
}
}
.child-table {
margin-top: 25px;
// margin-left: 20px;
margin-right: 0px;
padding: 0px;
overflow: hidden;
background-color: #fff;
}
}
.product-release-dialog {
.title-i {
font-size: 20px;
color: #9c9a9a;
line-height: 18px;
}
.i-color {
color: rgb(0, 193, 222);
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.top-tigs {
background: #fbfbfc;
border: 1px solid #ecedee;
padding: 20px;
margin-bottom: 25px;
color: #999;
}
.form-bottom-prod-details {
margin-top: 15px;
height: 30px;
border-top: 1px solid #747373;
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.bottom-div {
height: 70px;
font-size: 12px;
border: 1px solid #ecedee;
margin: 0px;
}
.one-div {
width: 15%;
float: left;
border-right: 1px solid #ecedee;
height: 30px;
line-height: 30px;
/* padding-left: 10px; */
text-align: center;
font-size: 18px;
height: 70px;
line-height: 76px;
text-align: center;
font-size: 18px;
}
.two-div {
width: calc(100% - 36%);
float: left;
padding: 22px 10px 10px 10px;
font-size: 12px;
}
.there-div {
width: 10%;
float: left;
padding-top: 28px;
}
.four-div {
width: 5%;
float: left;
padding-top: 28px;
}
}
.product-detail-info {
.el-textarea {
width: 92%;
}
.el-input {
width: 92%;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.form-buttons-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
}
.question-button.el-button--text {
padding-bottom: 0px;
color: rgb(204, 204, 204);
background: 0 0;
padding-left: 0;
padding-right: 0;
font-size: 18px;
padding-top: 0px;
margin-top: 0px;
}
.el-form-item--mini.el-form-item,
.el-form-item--small.el-form-item {
margin-bottom: 10px;
margin-left: 60px;
}
.el-form--label-top .el-form-item__label {
padding: 0 0 9px;
margin-top: 10px;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
line-height: 17px;
}
.avue-input-number,
.el-cascader,
.el-date-editor.el-input,
.el-date-editor.el-input__inner,
.el-select {
width: 100%;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.form-buttons-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
}
}
.product-topic-dialog {
.top-tips {
height: 150px;
margin: 20px;
margin-top: 30px;
margin-right: 0px;
border: 1px solid #00c1df;
padding: 10px 10px 0;
background: #e6f9fc;
display: flex;
border-radius: 3px;
padding-left: 20px;
padding-top: 20px;
margin-bottom: 0px;
}
.el-form-item__error {
left: 80px;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.el-form--label-top .el-form-item__label {
padding-top: 23px;
padding-bottom: 0px;
}
.el-form-item {
margin-bottom: -17px;
width: 90%;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
padding-left: 40px;
}
.el-select {
width: 100%;
}
.form-buttonx-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.funType-div {
// margin-left: 40px;
}
}
.product-fun-dialog {
.insert-div {
width: 100%;
margin-bottom: 10px;
padding-top: 10px;
padding-left: 30px;
}
.el-transfer-panel {
// margin-left: 10px;
width: 225px;
}
.el-transfer__buttons {
padding: 0px 10px;
}
.el-textarea {
width: 92%;
}
.el-input {
width: 92%;
}
.question-button.el-button--text {
padding-bottom: 0px;
color: rgb(204, 204, 204);
background: 0 0;
padding-left: 0;
padding-right: 0;
font-size: 18px;
padding-top: 0px;
margin-top: 0px;
}
.fw {
.el-input--mini {
width: 155px;
}
}
.el-form-item__error {
left: 120px;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.el-form--label-top .el-form-item__label {
padding-top: 23px;
padding-bottom: 0px;
}
.el-form-item {
margin-bottom: -17px;
width: 92%;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
padding-left: 40px;
}
.form-buttonb-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.funType-div {
// margin-left: 40px;
}
}
.product-custom-fun {
.el-textarea {
width: 92%;
}
.el-input {
width: 92%;
}
.question-button.el-button--text {
padding-bottom: 0px;
color: rgb(204, 204, 204);
background: 0 0;
padding-left: 0;
padding-right: 0;
font-size: 18px;
padding-top: 0px;
margin-top: 0px;
}
.fw {
.el-input--mini {
width: 155px;
}
}
.el-form-item__error {
left: 120px;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.el-form--label-top .el-form-item__label {
padding-top: 23px;
padding-bottom: 0px;
}
.el-form-item {
margin-bottom: -17px;
width: 92%;
}
.el-select {
width: 100%;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
padding-left: 40px;
}
.form-buttona-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.funType-div {
// margin-left: 40px;
}
}
.product-prop-standard-dialog {
.insert-div {
width: 100%;
margin-bottom: 10px;
padding-top: 10px;
padding-left: 30px;
}
.el-transfer-panel {
// margin-left: 10px;
width: 225px;
}
.el-transfer__buttons {
padding: 0px 10px;
}
.el-textarea {
width: 92%;
}
.el-input {
width: 92%;
}
.question-button.el-button--text {
padding-bottom: 0px;
color: rgb(204, 204, 204);
background: 0 0;
padding-left: 0;
padding-right: 0;
font-size: 18px;
padding-top: 0px;
margin-top: 0px;
}
.fw {
.el-input--mini {
width: 155px;
}
}
.el-form-item__error {
left: 120px;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.el-form--label-top .el-form-item__label {
padding-top: 23px;
padding-bottom: 0px;
}
.el-form-item {
margin-bottom: -17px;
width: 92%;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
padding-left: 40px;
}
.form-buttonb-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.funType-div {
// margin-left: 40px;
}
}
.product-prop-custom-dialog {
.el-textarea {
width: 92%;
}
.el-input {
width: 92%;
}
.question-button.el-button--text {
padding-bottom: 0px;
color: rgb(204, 204, 204);
background: 0 0;
padding-left: 0;
padding-right: 0;
font-size: 18px;
padding-top: 0px;
margin-top: 0px;
}
.fw {
.el-input--mini {
width: 155px;
}
}
.el-form-item__error {
left: 120px;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.el-form--label-top .el-form-item__label {
padding-top: 23px;
padding-bottom: 0px;
}
.el-form-item {
margin-bottom: -17px;
width: 92%;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
padding-left: 40px;
}
.form-buttona-div {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
width: 100%;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.funType-div {
// margin-left: 40px;
}
}
.model-function-dialog {
.el-textarea {
width: 92%;
}
.el-input {
width: 92%;
}
.question-button.el-button--text {
padding-bottom: 0px;
color: rgb(204, 204, 204);
background: 0 0;
padding-left: 0;
padding-right: 0;
font-size: 18px;
padding-top: 0px;
margin-top: 0px;
}
.fw {
.el-input--mini {
width: 155px;
}
}
.el-form-item__error {
left: 120px;
}
.el-dialog__body {
padding: 0px;
padding-right: 20px;
}
.el-dialog__header {
border-bottom: 1px solid rgb(116, 115, 115);
}
.el-form--label-top .el-form-item__label {
padding-top: 23px;
padding-bottom: 0px;
}
.el-form-item {
margin-bottom: -17px;
width: 92%;
}
.el-form-item--mini .el-form-item__content,
.el-form-item--mini .el-form-item__label {
padding-left: 40px;
}
.el-select {
width: 100%;
}
.form-bottom-prod-details {
margin-top: 30px;
height: 50px;
border-top: 1px solid rgb(116, 115, 115);
text-align: right;
padding-top: 15px;
width: calc(100% + 20px);
.el-button {
margin-right: 10px;
margin-left: 0px;
}
}
.funType-div {
// margin-left: 40px;
}
}
.sr {
.el-form-item {
margin-bottom: -17px;
width: 100%;
}
}
.iot-circuit-breaker-details-warp
.info-tabs-circuit
.el-tabs__content::-webkit-scrollbar {
/*滚动条整体样式*/
width: 8px; /*高宽分别对应横竖滚动条的尺寸*/
height: 3px;
}
.iot-circuit-breaker-details-warp
.info-tabs-circuit
.el-tabs__content::-webkit-scrollbar-thumb {
/*滚动条里面小方块*/
border-radius: 10px;
box-shadow: inset 0 0 5px #9e9d9d;
background: #ffffff;
}
.iot-circuit-breaker-details-warp
.info-tabs-circuit
.el-tabs__content::-webkit-scrollbar-track {
/*滚动条里面轨道*/
box-shadow: inset 0 0 5px #f6f6f6;
border-radius: 10px;
background: #ffffff;
}
</style>