Files
pqs-9100_client/frontend/src/views/machine/testScript/components/testScriptVolCurTab.vue

170 lines
4.8 KiB
Vue
Raw Normal View History

2024-12-30 14:43:13 +08:00
<template>
2025-02-13 16:15:26 +08:00
<div class="editor-container">
<div class="left-editor">
<!-- 左侧编辑区域内容 -->
2025-02-17 08:39:18 +08:00
<!-- <canvas ref="canvas" width="700" height="165"></canvas> -->
<Line :options="chartsData" style="width: 700px; height: 165px" ref="lineRef" />
2025-02-13 16:15:26 +08:00
</div>
<div class="right-editor">
<!-- 右侧编辑区域内容 -->
2025-02-17 08:39:18 +08:00
<el-form :inline="true" label-width="auto" :model="form" class="form-two">
2025-02-24 16:45:39 +08:00
<el-form-item :label="`电压有效值(${valueCode == 'Absolute' ? 'V' : '%'})`">
2025-04-09 14:30:00 +08:00
<el-input type="number" v-model="form[0].famp" :disabled="!form[0].channelFlag" onkeypress="return (/[\d.]/.test(String.fromCharCode(event.keyCode)))" @input="validateInput(0, 'famp')"/>
2025-02-13 16:15:26 +08:00
</el-form-item>
2025-02-24 16:45:39 +08:00
<el-form-item label="电压相角(°)">
2025-04-09 14:30:00 +08:00
<el-input type="number" v-model="form[0].fphase" :disabled="!form[0].channelFlag" onkeypress="return (/[\d-]/.test(String.fromCharCode(event.keyCode)))" @input="validateInput(0, 'fphase')"/>
2025-02-13 16:15:26 +08:00
</el-form-item>
2025-02-24 16:45:39 +08:00
<el-form-item :label="`电流有效值(${valueCode == 'Absolute' ? 'A' : '%'})`">
2025-04-09 14:30:00 +08:00
<el-input type="number" v-model="form[1].famp" :disabled="!form[1].channelFlag" onkeypress="return (/[\d.]/.test(String.fromCharCode(event.keyCode)))" @input="validateInput(1, 'famp')"/>
2025-02-13 16:15:26 +08:00
</el-form-item>
2025-02-24 16:45:39 +08:00
2025-02-13 16:15:26 +08:00
<el-form-item label="电流相角(°)">
2025-04-09 14:30:00 +08:00
<el-input type="number" v-model="form[1].fphase" :disabled="!form[1].channelFlag" onkeypress="return (/[\d-]/.test(String.fromCharCode(event.keyCode)))" @input="validateInput(1, 'fphase')"/>
2025-02-13 16:15:26 +08:00
</el-form-item>
</el-form>
</div>
2024-12-30 14:43:13 +08:00
</div>
</template>
<script setup lang="ts">
2025-02-20 16:39:15 +08:00
import { onMounted, ref, watch } from 'vue'
2025-02-17 08:39:18 +08:00
import Line from '@/components/echarts/line/index.vue'
2025-02-17 16:44:02 +08:00
// const emit = defineEmits(['update'])
const props = defineProps({
childForm: {
type: Array,
required: true
2025-02-24 16:45:39 +08:00
},
valueCode: {
type: String,
required: true
2025-02-17 16:44:02 +08:00
}
2025-02-13 16:15:26 +08:00
})
2025-02-17 16:44:02 +08:00
2025-02-17 08:39:18 +08:00
const lineRef: any = ref()
const chartsData = ref({})
2025-02-17 16:44:02 +08:00
// 解构并创建响应式变量
2025-02-20 16:39:15 +08:00
const form: any = computed({
2025-02-17 16:44:02 +08:00
get() {
return props.childForm
},
2025-02-20 16:39:15 +08:00
set(value) {}
2025-02-17 16:44:02 +08:00
})
2025-01-06 09:21:24 +08:00
onMounted(() => {
2025-02-17 08:39:18 +08:00
drawSineWave()
2025-02-13 16:15:26 +08:00
})
2025-01-06 09:21:24 +08:00
2025-02-17 08:39:18 +08:00
function drawSineWave() {
chartsData.value = {
tooltip: {
show: false
},
legend: {
show: false
},
grid: {
left: 0,
right: 0,
top: '10px',
bottom: '10px'
},
xAxis: {
name: '',
boundaryGap: false,
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: ['#cfcfcf']
}
},
axisLabel: {
show: false
}
},
yAxis: {
name: '',
splitLine: {
lineStyle: {
// 使用深浅的间隔色
color: ['#ccc'],
type: 'solid',
opacity: 1
}
}
},
options: {
dataZoom: null,
series: [
{
name: '',
type: 'line',
2025-02-17 16:44:02 +08:00
data: [10, -10, 10, -10, 10, -10, 10, -10, 10, -10, 10],
2025-02-17 08:39:18 +08:00
showSymbol: false,
smooth: true
}
]
}
2025-02-13 16:15:26 +08:00
}
2025-01-06 09:21:24 +08:00
}
2025-04-09 14:30:00 +08:00
const validateInput = (index: number, field: string) => {
const value = form.value[index][field];
if (index === 0) {
if (field === 'famp') {
if (value < 0) {
ElMessage.warning("电压不能低于0V")
form.value[index][field] = 0;
} else if (value > 380) {
ElMessage.warning("电压不能高于380V")
form.value[index][field] = 380;
}
}
}
if (index === 1) {
if (field === 'famp') {
if (value < 0) {
ElMessage.warning("电流不能低于0A")
form.value[index][field] = 0;
} else if (value > 20) {
ElMessage.warning("电流不能高于20A")
form.value[index][field] = 20;
}
}
}
if (field === 'fphase') {
if (value < -360) {
ElMessage.warning("相角不能低于-360°")
form.value[index][field] = -360;
} else if (value > 360) {
ElMessage.warning("相角不能高于360°")
form.value[index][field] = 360;
}
}
}
2024-12-30 14:43:13 +08:00
</script>
<style scoped>
canvas {
2025-02-13 16:15:26 +08:00
border: 1px solid #ccc;
2024-12-30 14:43:13 +08:00
}
.editor-container {
2025-02-13 16:15:26 +08:00
display: flex;
height: 100%;
2024-12-30 14:43:13 +08:00
}
.left-editor {
2025-02-17 08:39:18 +08:00
flex: 1;
margin-left: 20px;
2024-12-30 14:43:13 +08:00
}
.right-editor {
2025-02-13 16:15:26 +08:00
width: 600px;
display: flex;
align-items: center;
2024-12-30 14:43:13 +08:00
}
2025-02-13 16:15:26 +08:00
</style>