2025-09-01 16:55:44 +08:00
|
|
|
|
<template>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<div class="device" ref="device">
|
2025-09-04 13:42:48 +08:00
|
|
|
|
<div class="device-item" v-for="item in deviceList" :key="item">
|
2025-09-01 16:55:44 +08:00
|
|
|
|
<div class="item-header">
|
2025-09-04 13:42:48 +08:00
|
|
|
|
<div style="display: flex; width: 50%">
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<div class="icon-bg">
|
|
|
|
|
|
<span class="iconfont" :class="getIcongont(item)"></span>
|
|
|
|
|
|
</div>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
<div class="title">
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<span class="number">{{ item.device_id }}</span>
|
|
|
|
|
|
<span class="name">{{ item.name }}</span>
|
|
|
|
|
|
<span class="number type">{{ item.typename }}</span>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="status">
|
|
|
|
|
|
<div class="status-item">
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<span>{{ ['离线', '在线'][item.is_online] }}</span>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
<span class="text">在线状态</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="status-item">
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<span>{{ ['正常', '错误'][item.is_error] }}</span>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
<span class="text">故障状态</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="status-item">
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<span>{{ ['空闲', '工作'][item.is_running] }}</span>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
<span class="text">工作状态</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="item-content">
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<div v-for="info in item.params" :key="info.k" class="item-info">
|
|
|
|
|
|
<span class="text">{{ info.k }}:</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="value">{{ info.v }}</span>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-09-10 09:23:47 +08:00
|
|
|
|
<div class="item-button">
|
|
|
|
|
|
<div v-if="item.view == 1">
|
|
|
|
|
|
<span class="text">实时数据:</span>
|
|
|
|
|
|
<a-button type="primary" size="small" @click="openModal(item, 1)">查看</a-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div v-if="item.type == 105">
|
|
|
|
|
|
<span class="text">单体信息:</span>
|
|
|
|
|
|
<a-button type="primary" size="small" @click="openModal(item, 2)">查看</a-button>
|
|
|
|
|
|
</div>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
</div>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
</div>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
<a-modal
|
|
|
|
|
|
v-model:open="modalOpen"
|
|
|
|
|
|
@ok="handleOk"
|
2025-09-11 16:14:55 +08:00
|
|
|
|
width="60%"
|
2025-09-09 09:39:15 +08:00
|
|
|
|
class="modal-device"
|
|
|
|
|
|
:get-container="() => $refs.device"
|
|
|
|
|
|
>
|
2025-09-11 16:14:55 +08:00
|
|
|
|
<div v-if="modalComponent == 1" class="modal-content">
|
|
|
|
|
|
<div class="item">
|
2025-09-10 09:23:47 +08:00
|
|
|
|
<div class="title">
|
2025-09-11 16:14:55 +08:00
|
|
|
|
电流电压
|
|
|
|
|
|
<!-- <div>电流电压</div>
|
|
|
|
|
|
<img src="@/assets/images/titleLine.png" alt="" /> -->
|
2025-09-10 09:23:47 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="echarts">
|
|
|
|
|
|
<predictEcharts
|
|
|
|
|
|
:chart-options="chartOptions[0]"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
ref="chartRef1"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
</div>
|
2025-09-11 16:14:55 +08:00
|
|
|
|
<div class="item">
|
|
|
|
|
|
<div class="title">功率</div>
|
2025-09-10 09:23:47 +08:00
|
|
|
|
<div class="echarts">
|
|
|
|
|
|
<predictEcharts
|
|
|
|
|
|
:chart-options="chartOptions[1]"
|
|
|
|
|
|
:chart-data="chartData"
|
|
|
|
|
|
ref="chartRef2"
|
|
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-09-10 09:23:47 +08:00
|
|
|
|
|
|
|
|
|
|
<div class="content-table" style="height: 600px" v-else>
|
|
|
|
|
|
<a-table
|
|
|
|
|
|
:columns="columns"
|
|
|
|
|
|
:data-source="tableData"
|
|
|
|
|
|
size="small"
|
|
|
|
|
|
:scroll="{ y: 500 }"
|
|
|
|
|
|
:pagination="false"
|
|
|
|
|
|
row-class-name="no-hover-row"
|
|
|
|
|
|
row-key="id"
|
|
|
|
|
|
>
|
|
|
|
|
|
</a-table>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
</div>
|
2025-09-01 16:55:44 +08:00
|
|
|
|
</a-modal>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
2025-09-09 09:39:15 +08:00
|
|
|
|
import predictEcharts from '@/components/predict/predictEcharts.vue'
|
2025-09-04 13:42:48 +08:00
|
|
|
|
import { postReq, getReq } from '@/request/api'
|
2025-09-09 09:39:15 +08:00
|
|
|
|
import { deviceTypeList } from '@/utils/config'
|
2025-09-01 16:55:44 +08:00
|
|
|
|
export default {
|
|
|
|
|
|
name: '',
|
2025-09-09 09:39:15 +08:00
|
|
|
|
components: { predictEcharts },
|
2025-09-04 13:42:48 +08:00
|
|
|
|
props: {
|
|
|
|
|
|
stationId: {
|
|
|
|
|
|
type: String,
|
|
|
|
|
|
default: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
systemType: {
|
|
|
|
|
|
type: Number,
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-09-01 16:55:44 +08:00
|
|
|
|
data() {
|
|
|
|
|
|
return {
|
2025-09-04 13:42:48 +08:00
|
|
|
|
modalOpen: false,
|
|
|
|
|
|
deviceList: [],
|
2025-09-10 09:23:47 +08:00
|
|
|
|
|
2025-09-09 09:39:15 +08:00
|
|
|
|
chartOptions: [
|
|
|
|
|
|
{
|
|
|
|
|
|
type: 'line',
|
|
|
|
|
|
smooth: true,
|
|
|
|
|
|
dataKey: 'chargeDischarge',
|
|
|
|
|
|
infoKeys: [
|
|
|
|
|
|
{
|
|
|
|
|
|
key: 'V',
|
|
|
|
|
|
label: '电压',
|
|
|
|
|
|
seriesOptions: {
|
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
|
itemStyle: {
|
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
key: 'I',
|
|
|
|
|
|
label: '电流',
|
|
|
|
|
|
seriesOptions: {
|
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
|
itemStyle: {
|
|
|
|
|
|
color: '#3E7EEF' // 充电电量线条颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
color: '#3E7EEF' // 充电电量线条颜色
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
type: 'line',
|
|
|
|
|
|
smooth: true,
|
|
|
|
|
|
dataKey: 'chargeDischarge',
|
|
|
|
|
|
infoKeys: [
|
|
|
|
|
|
{
|
|
|
|
|
|
key: 'P',
|
|
|
|
|
|
label: '功率',
|
|
|
|
|
|
seriesOptions: {
|
|
|
|
|
|
symbol: 'circle',
|
|
|
|
|
|
symbolSize: 8,
|
|
|
|
|
|
itemStyle: {
|
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
|
},
|
|
|
|
|
|
lineStyle: {
|
|
|
|
|
|
color: '#00FDF9' // 充电电量线条颜色
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
chartData: {
|
|
|
|
|
|
xdata: [],
|
|
|
|
|
|
ydata: {}
|
2025-09-10 09:23:47 +08:00
|
|
|
|
},
|
|
|
|
|
|
modalComponent: 1,
|
|
|
|
|
|
columns: [
|
|
|
|
|
|
{
|
|
|
|
|
|
title: '序号',
|
|
|
|
|
|
dataIndex: 'id',
|
|
|
|
|
|
key: 'id',
|
|
|
|
|
|
ellipsis: true,
|
|
|
|
|
|
fixed: 'left'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: '单体SOC(%)',
|
|
|
|
|
|
dataIndex: 'SOC',
|
|
|
|
|
|
key: 'SOC'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: '单体SOH(%)',
|
|
|
|
|
|
dataIndex: 'SOH',
|
|
|
|
|
|
key: 'SOH'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: '单体电压(V)',
|
|
|
|
|
|
dataIndex: 'V',
|
|
|
|
|
|
key: 'V'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: '单体温度(℃)',
|
|
|
|
|
|
dataIndex: 'T',
|
|
|
|
|
|
key: 'T'
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
title: '单体内阻(Ω)',
|
|
|
|
|
|
dataIndex: 'R_i',
|
|
|
|
|
|
key: 'R_i'
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
tableData: [],
|
|
|
|
|
|
pageOption: {
|
|
|
|
|
|
// pageSize: 1000,
|
|
|
|
|
|
// page: 1
|
|
|
|
|
|
},
|
|
|
|
|
|
tableOption: {
|
|
|
|
|
|
scroll: {
|
|
|
|
|
|
y: 500
|
|
|
|
|
|
},
|
|
|
|
|
|
page: false
|
2025-09-09 09:39:15 +08:00
|
|
|
|
}
|
2025-09-01 16:55:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-09-04 13:42:48 +08:00
|
|
|
|
watch: {
|
|
|
|
|
|
// 监听父组件数据变化
|
|
|
|
|
|
stationId(newVal) {
|
|
|
|
|
|
if (newVal) {
|
|
|
|
|
|
this.getDeviceList()
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
systemType(newVal, oldVal) {
|
|
|
|
|
|
if (newVal !== oldVal) {
|
|
|
|
|
|
this.getDeviceList()
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
mounted() {
|
|
|
|
|
|
this.getDeviceList()
|
2025-09-11 16:14:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
2025-09-04 13:42:48 +08:00
|
|
|
|
},
|
2025-09-01 16:55:44 +08:00
|
|
|
|
methods: {
|
2025-09-10 09:23:47 +08:00
|
|
|
|
handlePagesizeChange(pageOption) {
|
|
|
|
|
|
this.pageOption.pageSize = pageOption.pageSize
|
|
|
|
|
|
this.pageOption.page = pageOption.page
|
|
|
|
|
|
this.getList()
|
|
|
|
|
|
},
|
2025-09-09 09:39:15 +08:00
|
|
|
|
getIcongont(ele) {
|
|
|
|
|
|
return deviceTypeList.find((item) => item.value == ele.type).iconfont || ''
|
|
|
|
|
|
},
|
|
|
|
|
|
generateTimePoints() {
|
|
|
|
|
|
const timePoints = []
|
|
|
|
|
|
|
|
|
|
|
|
for (let hour = 0; hour <= 24; hour++) {
|
|
|
|
|
|
for (let minute = 0; minute < 60; minute += 10) {
|
|
|
|
|
|
// 处理24:00的特殊情况
|
|
|
|
|
|
if (hour === 24 && minute === 0) {
|
|
|
|
|
|
timePoints.push('24:00')
|
|
|
|
|
|
break
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 格式化小时和分钟,确保两位数
|
|
|
|
|
|
const formattedHour = hour.toString().padStart(2, '0')
|
|
|
|
|
|
const formattedMinute = minute.toString().padStart(2, '0')
|
|
|
|
|
|
|
|
|
|
|
|
timePoints.push(`${formattedHour}:${formattedMinute}`)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return timePoints
|
|
|
|
|
|
},
|
|
|
|
|
|
//查看实时数据
|
|
|
|
|
|
async getDevicCharts(item) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await getReq('/queryDevicCharts', {
|
|
|
|
|
|
station_id: this.stationId,
|
|
|
|
|
|
device_id: item.device_id
|
|
|
|
|
|
})
|
|
|
|
|
|
this.chartData.ydata = res.data
|
|
|
|
|
|
this.chartData.xdata = this.generateTimePoints()
|
2025-09-11 16:14:55 +08:00
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
if (this.$refs.chartRef1) {
|
|
|
|
|
|
this.$refs.chartRef1.initCharts()
|
|
|
|
|
|
}
|
|
|
|
|
|
if (this.$refs.chartRef2) {
|
|
|
|
|
|
this.$refs.chartRef2.initCharts()
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
// this.$refs.chartRef1.initCharts()
|
|
|
|
|
|
// this.$refs.chartRef2.initCharts()
|
2025-09-10 09:23:47 +08:00
|
|
|
|
} catch (error) {
|
|
|
|
|
|
console.log(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
//查询BCU单体信息
|
|
|
|
|
|
async getDeviceBCUDetail(item) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await getReq('/queryDeviceBCUDetail', {
|
|
|
|
|
|
station_id: this.stationId,
|
|
|
|
|
|
device_id: item.device_id
|
|
|
|
|
|
})
|
2025-09-09 09:39:15 +08:00
|
|
|
|
|
2025-09-10 09:23:47 +08:00
|
|
|
|
this.tableData = res.data.map((item, index) => {
|
|
|
|
|
|
item.id = index + 1
|
|
|
|
|
|
return item
|
|
|
|
|
|
})
|
2025-09-09 09:39:15 +08:00
|
|
|
|
} catch (error) {
|
|
|
|
|
|
console.log(error)
|
2025-09-04 13:42:48 +08:00
|
|
|
|
}
|
2025-09-09 09:39:15 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
//请求运行监控系统设备信息
|
|
|
|
|
|
async getDeviceList() {
|
2025-09-04 13:42:48 +08:00
|
|
|
|
try {
|
2025-09-09 09:39:15 +08:00
|
|
|
|
const res = await getReq('/queryDevicByCategory', {
|
|
|
|
|
|
station_id: this.stationId,
|
|
|
|
|
|
category: this.systemType
|
|
|
|
|
|
})
|
2025-09-04 13:42:48 +08:00
|
|
|
|
|
|
|
|
|
|
this.deviceList = res.data
|
|
|
|
|
|
} catch (error) {
|
2025-09-09 09:39:15 +08:00
|
|
|
|
this.deviceList = []
|
|
|
|
|
|
|
2025-09-04 13:42:48 +08:00
|
|
|
|
console.log(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-09-10 09:23:47 +08:00
|
|
|
|
async openModal(item, val) {
|
|
|
|
|
|
console.log(item, '=============')
|
|
|
|
|
|
this.modalComponent = val
|
2025-09-11 16:14:55 +08:00
|
|
|
|
this.modalOpen = true
|
2025-09-10 09:23:47 +08:00
|
|
|
|
if (val == 1) {
|
|
|
|
|
|
await this.getDevicCharts(item)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
await this.getDeviceBCUDetail(item)
|
|
|
|
|
|
}
|
2025-09-01 16:55:44 +08:00
|
|
|
|
},
|
2025-09-04 13:42:48 +08:00
|
|
|
|
handleOk() {
|
|
|
|
|
|
this.modalOpen = false
|
2025-09-01 16:55:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
.device {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
margin-left: 20px;
|
2025-09-11 16:14:55 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
2025-09-01 16:55:44 +08:00
|
|
|
|
grid-gap: 20px;
|
|
|
|
|
|
overflow-y: auto;
|
2025-09-11 16:14:55 +08:00
|
|
|
|
align-content: flex-start;
|
|
|
|
|
|
// grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
|
2025-09-01 16:55:44 +08:00
|
|
|
|
.device-item {
|
|
|
|
|
|
border-radius: 15px;
|
|
|
|
|
|
background: $bg2-color;
|
|
|
|
|
|
padding: 15px;
|
2025-09-10 09:23:47 +08:00
|
|
|
|
min-width: 340px;
|
|
|
|
|
|
max-width: 430px;
|
2025-09-11 16:14:55 +08:00
|
|
|
|
height: 260px;
|
2025-09-10 09:23:47 +08:00
|
|
|
|
flex: 1;
|
2025-09-01 16:55:44 +08:00
|
|
|
|
.item-header {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
height: 70px;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
.icon-bg {
|
2025-09-09 09:39:15 +08:00
|
|
|
|
width: 66px;
|
|
|
|
|
|
height: 66px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
line-height: 66px;
|
2025-09-01 16:55:44 +08:00
|
|
|
|
border-radius: 6px;
|
|
|
|
|
|
background: linear-gradient(90deg, #3dfefa 0%, #2a82e4 2.96%, #27a188 100%),
|
|
|
|
|
|
linear-gradient(90deg, #3dfefa 0%, #01dfef 2.96%, #08a5ff 100%);
|
2025-09-09 09:39:15 +08:00
|
|
|
|
.iconfont {
|
2025-09-10 09:23:47 +08:00
|
|
|
|
font-size: 45px;
|
2025-09-09 09:39:15 +08:00
|
|
|
|
}
|
2025-09-01 16:55:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
.title {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
margin-left: 15px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.number {
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.name {
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
}
|
|
|
|
|
|
.type {
|
|
|
|
|
|
color: #08a5ff;
|
|
|
|
|
|
}
|
|
|
|
|
|
.status {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
width: 50%;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
&-item {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
justify-content: space-evenly;
|
|
|
|
|
|
span:first-child {
|
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
}
|
|
|
|
|
|
.text {
|
|
|
|
|
|
color: $text-color;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.item-content {
|
|
|
|
|
|
grid-template-columns: 1fr 1fr;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
display: grid;
|
|
|
|
|
|
margin-top: 15px;
|
2025-09-10 09:23:47 +08:00
|
|
|
|
margin-bottom: 3px;
|
2025-09-01 16:55:44 +08:00
|
|
|
|
padding: 0 10px;
|
2025-09-09 09:39:15 +08:00
|
|
|
|
height: 120px;
|
|
|
|
|
|
overflow-y: auto;
|
2025-09-01 16:55:44 +08:00
|
|
|
|
.value {
|
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
|
}
|
2025-09-09 09:39:15 +08:00
|
|
|
|
.item-info {
|
|
|
|
|
|
height: 30px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.item-button {
|
2025-09-10 09:23:47 +08:00
|
|
|
|
width: 100%;
|
2025-09-09 09:39:15 +08:00
|
|
|
|
padding-left: 10px;
|
2025-09-10 09:23:47 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
|
div {
|
|
|
|
|
|
width: calc(50% - 10px);
|
|
|
|
|
|
}
|
2025-09-01 16:55:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
.text {
|
|
|
|
|
|
color: $text-color;
|
|
|
|
|
|
}
|
|
|
|
|
|
.video {
|
|
|
|
|
|
margin-top: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-09-10 09:23:47 +08:00
|
|
|
|
.content-table {
|
|
|
|
|
|
height: 700px;
|
|
|
|
|
|
margin-top: 40px;
|
|
|
|
|
|
|
|
|
|
|
|
:deep(.ant-table-header tr th) {
|
|
|
|
|
|
background: $table-border !important;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
}
|
|
|
|
|
|
:deep(.ant-table-body tr td, .ant-table-cell) {
|
|
|
|
|
|
background: $table-bg !important;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-09-01 16:55:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
.environment {
|
|
|
|
|
|
width: 200px;
|
|
|
|
|
|
}
|
2025-09-11 16:14:55 +08:00
|
|
|
|
.modal-device {
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
.modal-content {
|
|
|
|
|
|
height: 700px;
|
|
|
|
|
|
.item {
|
|
|
|
|
|
// height: 300px;
|
|
|
|
|
|
.title {
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
width: 230px;
|
|
|
|
|
|
border-bottom: 5px solid transparent;
|
|
|
|
|
|
border-image: url('@/assets/boxBottom.png') 0 0 100% 0 stretch;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.echarts {
|
|
|
|
|
|
height: 300px;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-09-09 09:39:15 +08:00
|
|
|
|
|
2025-09-10 09:23:47 +08:00
|
|
|
|
:deep(.ant-modal-body) {
|
|
|
|
|
|
:deep(.ant-table-wrapper .ant-table-row-expand-icon) {
|
|
|
|
|
|
color: $green !important;
|
2025-09-09 09:39:15 +08:00
|
|
|
|
}
|
2025-09-10 09:23:47 +08:00
|
|
|
|
//表格行悬浮样式
|
|
|
|
|
|
.no-hover-row:hover > td {
|
|
|
|
|
|
// background-color: transparent !important;
|
|
|
|
|
|
background-color: #f0f8ff !important;
|
2025-09-09 09:39:15 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-09-11 16:14:55 +08:00
|
|
|
|
:deep(.ant-table-cell) {
|
|
|
|
|
|
&::before {
|
|
|
|
|
|
width: 0 !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
:deep(.ant-table-thead > tr > td) {
|
|
|
|
|
|
border-bottom: none !important;
|
|
|
|
|
|
border-top: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
:deep(.ant-table-wrapper .ant-table-tbody > tr > td) {
|
|
|
|
|
|
border-top: none !important;
|
|
|
|
|
|
}
|
|
|
|
|
|
:deep(.ant-table-wrapper .ant-table-thead > tr > th) {
|
|
|
|
|
|
border-bottom: none !important;
|
|
|
|
|
|
}
|
2025-09-01 16:55:44 +08:00
|
|
|
|
</style>
|