|
|
|
@ -99,40 +99,11 @@
|
|
|
|
<div v-else class="fault-empty">当前无故障</div>
|
|
|
|
<div v-else class="fault-empty">当前无故障</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="circuit-section">
|
|
|
|
<div class="circuit-section">
|
|
|
|
<!-- 上排回路 -->
|
|
|
|
<div class="circuit-grid">
|
|
|
|
<div class="circuit-row">
|
|
|
|
<div v-for="(circuit, index) in monitorLoops" :key="`${circuit.name}-${index}`" class="circuit-item">
|
|
|
|
<div v-for="(circuit, index) in info?.Loops?.slice(0, 5)" :key="circuit.name" class="circuit-item">
|
|
|
|
|
|
|
|
<div class="circuit-status" :class="{ active: circuit.is_open }">
|
|
|
|
<div class="circuit-status" :class="{ active: circuit.is_open }">
|
|
|
|
直流回路{{ index + 1 }}:{{ circuit.is_open ? '打开' : '关闭' }}
|
|
|
|
直流回路{{ loopNo(circuit, index) }}:{{ circuit.is_open ? '打开' : '关闭' }}
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- <div class="circuit-icon" :class="{ active: circuit.is_open }">
|
|
|
|
|
|
|
|
<el-icon>
|
|
|
|
|
|
|
|
<Sunny />
|
|
|
|
|
|
|
|
</el-icon>
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
<div class="circuitStatus">
|
|
|
|
|
|
|
|
<div class="line">
|
|
|
|
|
|
|
|
<div class="line_item">电压: <span>{{ circuit.V ? circuit.V?.toFixed(2) : 0 }}V</span></div>
|
|
|
|
|
|
|
|
<div class="line_item">电流: <span>{{ circuit.A ? circuit.A?.toFixed(2) : 0 }}A</span></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="line">
|
|
|
|
|
|
|
|
<div class="line_item">功率: <span>{{ circuit.Kw ? circuit.Kw?.toFixed(3) : 0 }}kW</span></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 下排回路 -->
|
|
|
|
|
|
|
|
<div class="circuit-row">
|
|
|
|
|
|
|
|
<div v-for="(circuit, index) in info?.Loops?.slice(5, 10)" :key="circuit.name" class="circuit-item">
|
|
|
|
|
|
|
|
<div class="circuit-status" :class="{ active: circuit.is_open }">
|
|
|
|
|
|
|
|
直流回路{{ index + 6 }}:{{ circuit.is_open ? '打开' : '关闭' }}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- <div class="circuit-icon" :class="{ active: circuit.is_open }">
|
|
|
|
|
|
|
|
<el-icon>
|
|
|
|
|
|
|
|
<Sunny />
|
|
|
|
|
|
|
|
</el-icon>
|
|
|
|
|
|
|
|
</div> -->
|
|
|
|
|
|
|
|
<div class="circuitStatus">
|
|
|
|
<div class="circuitStatus">
|
|
|
|
<div class="line">
|
|
|
|
<div class="line">
|
|
|
|
<div class="line_item">电压: <span>{{ circuit.V ? circuit.V?.toFixed(2) : 0 }}V</span></div>
|
|
|
|
<div class="line_item">电压: <span>{{ circuit.V ? circuit.V?.toFixed(2) : 0 }}V</span></div>
|
|
|
|
@ -146,20 +117,9 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="dimming-section">
|
|
|
|
<div class="dimming-section">
|
|
|
|
<!-- 上排调光通道 -->
|
|
|
|
<div class="dimming-grid">
|
|
|
|
<div class="dimming-row">
|
|
|
|
<div v-for="(channel, index) in monitorLoops" :key="`${channel.name}-${index}`" class="dimming-item">
|
|
|
|
<div v-for="(channel, index) in info?.Loops?.slice(0, 5)" :key="channel.name" class="dimming-item">
|
|
|
|
<div class="channel-label">调光通道{{ loopNo(channel, index) }}</div>
|
|
|
|
<div class="channel-label">调光通道{{ index + 1 }}</div>
|
|
|
|
|
|
|
|
<div class="brightness-display" :class="{ active: channel.pwm > 0 }">
|
|
|
|
|
|
|
|
{{ channel.pwm }}%
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 下排调光通道 -->
|
|
|
|
|
|
|
|
<div class="dimming-row">
|
|
|
|
|
|
|
|
<div v-for="(channel, index) in info?.Loops?.slice(5, 10)" :key="channel.name" class="dimming-item">
|
|
|
|
|
|
|
|
<div class="channel-label">调光通道{{ index + 6 }}</div>
|
|
|
|
|
|
|
|
<div class="brightness-display" :class="{ active: channel.pwm > 0 }">
|
|
|
|
<div class="brightness-display" :class="{ active: channel.pwm > 0 }">
|
|
|
|
{{ channel.pwm }}%
|
|
|
|
{{ channel.pwm }}%
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@ -406,6 +366,15 @@ const scanDeviceCount = computed(() => {
|
|
|
|
return info.value?.scan_device_count ?? info.value?.ScanDeviceCount ?? info.value?.Loops?.length ?? 0
|
|
|
|
return info.value?.scan_device_count ?? info.value?.ScanDeviceCount ?? info.value?.Loops?.length ?? 0
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const monitorLoops = computed(() => {
|
|
|
|
|
|
|
|
return info.value?.Loops || []
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const loopNo = (loop, index) => {
|
|
|
|
|
|
|
|
const loopIndex = loop?.index ?? loop?.Index
|
|
|
|
|
|
|
|
return Number.isInteger(loopIndex) ? loopIndex + 1 : index + 1
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const currentFaults = computed(() => {
|
|
|
|
const currentFaults = computed(() => {
|
|
|
|
const loops = info.value?.Loops || []
|
|
|
|
const loops = info.value?.Loops || []
|
|
|
|
return loops.flatMap((loop, index) => {
|
|
|
|
return loops.flatMap((loop, index) => {
|
|
|
|
@ -701,7 +670,7 @@ onUnmounted(() => {
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
// justify-content: space-between;
|
|
|
|
// justify-content: space-between;
|
|
|
|
/* width: 500px; */
|
|
|
|
/* width: 500px; */
|
|
|
|
gap: 20px;
|
|
|
|
gap: 12px;
|
|
|
|
height: 100%;
|
|
|
|
height: 100%;
|
|
|
|
overflow-y: auto;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -844,12 +813,13 @@ onUnmounted(() => {
|
|
|
|
.circuit-section {
|
|
|
|
.circuit-section {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 10px;
|
|
|
|
gap: 8px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.circuit-row {
|
|
|
|
.circuit-grid {
|
|
|
|
display: flex;
|
|
|
|
display: grid;
|
|
|
|
justify-content: space-between;
|
|
|
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
|
|
|
|
|
|
gap: 8px;
|
|
|
|
font-size: 12px;
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
|
|
|
|
|
|
.circuitStatus {
|
|
|
|
.circuitStatus {
|
|
|
|
@ -859,12 +829,11 @@ onUnmounted(() => {
|
|
|
|
.line {
|
|
|
|
.line {
|
|
|
|
width: 100%;
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
margin-top: 10px;
|
|
|
|
margin-top: 6px;
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
|
|
|
|
.line_item {
|
|
|
|
.line_item {
|
|
|
|
width: 45%;
|
|
|
|
width: 48%;
|
|
|
|
// flex: 1;
|
|
|
|
// flex: 1;
|
|
|
|
flex-shrink: 0;
|
|
|
|
flex-shrink: 0;
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
@ -879,14 +848,14 @@ onUnmounted(() => {
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
align-items: center;
|
|
|
|
// gap: 10px;
|
|
|
|
// gap: 10px;
|
|
|
|
width: 18%;
|
|
|
|
min-width: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.circuit-status {
|
|
|
|
.circuit-status {
|
|
|
|
background: rgba(255, 255, 255, 0.08);
|
|
|
|
background: rgba(255, 255, 255, 0.08);
|
|
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
|
border-radius: 8px;
|
|
|
|
border-radius: 8px;
|
|
|
|
padding: 8px 12px;
|
|
|
|
padding: 6px 8px;
|
|
|
|
color: rgba(255, 255, 255, 0.7);
|
|
|
|
color: rgba(255, 255, 255, 0.7);
|
|
|
|
text-align: center;
|
|
|
|
text-align: center;
|
|
|
|
width: 100%;
|
|
|
|
width: 100%;
|
|
|
|
@ -928,21 +897,22 @@ onUnmounted(() => {
|
|
|
|
.dimming-section {
|
|
|
|
.dimming-section {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 10px;
|
|
|
|
gap: 8px;
|
|
|
|
font-size: 12px;
|
|
|
|
font-size: 12px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.dimming-row {
|
|
|
|
.dimming-grid {
|
|
|
|
display: flex;
|
|
|
|
display: grid;
|
|
|
|
justify-content: space-between;
|
|
|
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
|
|
|
|
|
|
gap: 8px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.dimming-item {
|
|
|
|
.dimming-item {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
align-items: center;
|
|
|
|
gap: 10px;
|
|
|
|
gap: 8px;
|
|
|
|
width: 18%;
|
|
|
|
min-width: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.channel-label {
|
|
|
|
.channel-label {
|
|
|
|
|