This commit is contained in:
caozehui
2025-04-09 14:30:00 +08:00
parent ef63fcf807
commit 9938306884
8 changed files with 442 additions and 274 deletions

View File

@@ -18,7 +18,7 @@
<template #tableHeader=''> <template #tableHeader=''>
<el-form :model='form' :inline='true'> <el-form :model='form' :inline='true'>
<el-form-item label='关键字'> <el-form-item label='关键字'>
<el-input v-model='form.search' placeholder='请输入设备名称' clearable style='width: 140px;'></el-input> <el-input v-model='form.search' placeholder='请输入设备名称' clearable style='width: 170px;' show-word-limit maxlength="32"></el-input>
</el-form-item> </el-form-item>
<el-form-item label='检测状态' v-if='form.activeTabs != 3 && form.activeTabs != 4 && form.activeTabs != 5'> <el-form-item label='检测状态' v-if='form.activeTabs != 3 && form.activeTabs != 4 && form.activeTabs != 5'>
<el-select v-model='form.checkStatus' clearable> <el-select v-model='form.checkStatus' clearable>

View File

@@ -5,6 +5,8 @@
placeholder='请输入计划名称' placeholder='请输入计划名称'
clearable clearable
v-model='searchForm.planName' v-model='searchForm.planName'
show-word-limit
maxlength="32"
></el-input> ></el-input>
<el-tooltip content="检测计划列表" placement="top"> <el-tooltip content="检测计划列表" placement="top">
<Menu style='width: 26px;height: 26px; margin-left: 8px;cursor: pointer;color:var(--el-color-primary)' <Menu style='width: 26px;height: 26px; margin-left: 8px;cursor: pointer;color:var(--el-color-primary)'

View File

@@ -114,7 +114,7 @@
<div class="form-item-container"> <div class="form-item-container">
<el-form-item label="频率:" prop="name"> <el-form-item label="频率:" prop="name">
<div class="input-label-container"> <div class="input-label-container">
<el-input type="number" style="width: 100px" v-model="form.ffreq" /> <el-input type="number" style="width: 100px" v-model="form.ffreq" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))" @change="validateFreq" />
<label>Hz</label> <label>Hz</label>
</div> </div>
</el-form-item> </el-form-item>
@@ -611,6 +611,15 @@ const copyRow = (num: number, index: number) => {
}) })
} }
const validateFreq = () => {
if (form.value.ffreq < 40) {
ElMessage.warning("频率不能低于40Hz")
form.value.ffreq = 40
} else if (form.value.ffreq > 60) {
ElMessage.warning("频率不能高于60Hz")
form.value.ffreq = 60
}
}
// 打开 drawer(新增、编辑) // 打开 drawer(新增、编辑)
const openDialog = () => {} const openDialog = () => {}

View File

@@ -33,14 +33,17 @@
v-model="form[0].dipData.ftransValue" v-model="form[0].dipData.ftransValue"
style="width: 150px" style="width: 150px"
:disabled="!form[0].dipFlag" :disabled="!form[0].dipFlag"
onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
/> />
</el-form-item> </el-form-item>
<el-form-item label-width="120px" label="持续时间(周波)"> <el-form-item label-width="120px" label="持续时间(周波)">
<el-input <el-input
type="number" type="number"
v-model="form[0].dipData.retainTime" v-model="form[0].dipData.retainTime"
@input="handleInputRetainTime"
style="width: 150px" style="width: 150px"
:disabled="!form[0].dipFlag" :disabled="!form[0].dipFlag"
onkeypress="return (/[\d.]/.test(String.fromCharCode(event.keyCode)))"
/> />
</el-form-item> </el-form-item>
</div> </div>
@@ -63,9 +66,21 @@ const form: any = computed({
}) })
const handleInput = value => { const handleInput = value => {
if (value < 0) { if (value < 0) {
ElMessage.warning("设定幅度不能小于0%")
props.childForm[0].dipData.ftransValue = 0 props.childForm[0].dipData.ftransValue = 0
} else if (value > 200) { } else if (value > 140) {
props.childForm[0].dipData.ftransValue = 200 ElMessage.warning("设定幅度不能大于140%")
props.childForm[0].dipData.ftransValue = 140
}
}
const handleInputRetainTime = value => {
if (value < 0) {
ElMessage.warning("持续时间不能小于0周波")
props.childForm[0].dipData.retainTime = 0
}else if (value > 300) {
ElMessage.warning("持续时间不能大于300周波")
props.childForm[0].dipData.retainTime = 300
} }
} }
</script> </script>

View File

@@ -1,322 +1,377 @@
<template> <template>
<div class="tabs-container"> <div class="tabs-container">
<el-tabs type="border-card" class="right-tabs" style="height: 100%"> <el-tabs type="border-card" class="right-tabs" style="height: 100%">
<el-tab-pane label="电压通道"> <el-tab-pane label="电压通道">
<el-form :inline="true" :model="formInline" :disabled="!props.childForm[0].harmFlag"> <el-form :inline="true" :model="formInline" :disabled="!props.childForm[0].harmFlag">
<el-form-item label="次数"> <el-form-item label="次数">
<el-select <el-select
v-model="formInline.harm" v-model="formInline.harm"
multiple multiple
collapse-tags collapse-tags
collapse-tags-tooltip collapse-tags-tooltip
style="width: 160px" style="width: 160px"
filterable filterable
clearable clearable
> >
<el-option label="全部" value="0" /> <el-option label="全部" value="0"/>
<el-option v-for="item in 49" :key="item" :label="item + 1" :value="item + 1" /> <el-option v-for="item in 49" :key="item" :label="item + 1" :value="item + 1"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="含有率"> <el-form-item label="含有率">
<el-input <el-input
v-model="formInline.famp" v-model="formInline.famp"
type="number" type="number"
placeholder="含有率" placeholder="含有率"
style="width: 80px" style="width: 80px"
clearable onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
/> @input="validateInput('famp',0)"
</el-form-item> clearable
<el-form-item label="相角"> />
<el-input </el-form-item>
v-model="formInline.fphase" <el-form-item label="相角">
type="number" <el-input
placeholder="相角" v-model="formInline.fphase"
style="width: 80px" type="number"
clearable placeholder="相角"
/> style="width: 80px"
</el-form-item> onkeypress="return (/[\d-]/.test(String.fromCharCode(event.keyCode)))"
<el-form-item> @input="validateInput('fphase',0)"
<el-button type="primary" :icon="Check" @click="onSubmit" size="small">确定</el-button> clearable
<el-button type="primary" :icon="Delete" @click="empty(0)" size="small">清空表格</el-button> />
</el-form-item> </el-form-item>
</el-form> <el-form-item>
<!-- 电压通道内容 --> <el-button type="primary" :icon="Check" @click="onSubmit" size="small">确定</el-button>
<div class="table-container"> <el-button type="primary" :icon="Delete" @click="empty(0)" size="small">清空表格</el-button>
<el-table :data="form[0].harmList" border stripe size="small"> </el-form-item>
<el-table-column prop="harm" align="center" label="次数" width="60" /> </el-form>
<el-table-column prop="famp" align="center" label="谐波含有率"> <!-- 电压通道内容 -->
<template #default="{ row }"> <div class="table-container">
<el-input type="number" v-if="row.show" v-model="row.famp" /> <el-table :data="form[0].harmList" border stripe size="small">
<span v-else>{{ row.famp }}%</span> <el-table-column prop="harm" align="center" label="次数" width="60"/>
</template> <el-table-column prop="famp" align="center" label="谐波含有率">
</el-table-column> <template #default="{ row }">
<el-table-column prop="fphase" label="谐波相角" align="center"> <el-input type="number" v-if="row.show" v-model="row.famp"/>
<template #default="{ row }"> <span v-else>{{ row.famp }}%</span>
<el-input type="number" v-if="row.show" v-model="row.fphase" /> </template>
<span v-else>{{ row.fphase }}°</span> </el-table-column>
</template> <el-table-column prop="fphase" label="谐波相角" align="center">
</el-table-column> <template #default="{ row }">
<el-table-column label="操作" align="center"> <el-input type="number" v-if="row.show" v-model="row.fphase"/>
<template #default="{ row, $index }"> <span v-else>{{ row.fphase }}°</span>
<el-button </template>
type="primary" </el-table-column>
link <el-table-column label="操作" align="center">
:icon="EditPen" <template #default="{ row, $index }">
v-if="!row.show" <el-button
@click="row.show = true" type="primary"
> link
编辑 :icon="EditPen"
</el-button> v-if="!row.show"
<el-button type="primary" link :icon="Check" v-else @click="row.show = false"> @click="row.show = true"
保存 >
</el-button> 编辑
<el-button type="primary" link :icon="Delete" @click="HarmFlagDelete(0, $index)"> </el-button>
删除 <el-button type="primary" link :icon="Check" v-else @click="row.show = false">
</el-button> 保存
</template> </el-button>
</el-table-column> <el-button type="primary" link :icon="Delete" @click="HarmFlagDelete(0, $index)">
</el-table> 删除
</div> </el-button>
</el-tab-pane> </template>
</el-tabs> </el-table-column>
<el-tabs type="border-card" style="height: 100%"> </el-table>
<el-tab-pane label="电流通道"> </div>
<el-form :inline="true" :model="formInline1" :disabled="!props.childForm[1].harmFlag"> </el-tab-pane>
<el-form-item label="次数"> </el-tabs>
<el-select <el-tabs type="border-card" style="height: 100%">
v-model="formInline1.harm" <el-tab-pane label="电流通道">
multiple <el-form :inline="true" :model="formInline1" :disabled="!props.childForm[1].harmFlag">
collapse-tags <el-form-item label="次数">
collapse-tags-tooltip <el-select
style="width: 160px" v-model="formInline1.harm"
filterable multiple
clearable collapse-tags
> collapse-tags-tooltip
<el-option label="全部" value="0" /> style="width: 160px"
<el-option v-for="item in 49" :key="item" :label="item + 1" :value="item + 1" /> filterable
</el-select> clearable
</el-form-item> >
<el-form-item label="含有率"> <el-option label="全部" value="0"/>
<el-input <el-option v-for="item in 49" :key="item" :label="item + 1" :value="item + 1"/>
v-model="formInline1.famp" </el-select>
type="number" </el-form-item>
placeholder="含有率" <el-form-item label="含有率">
style="width: 80px" <el-input
clearable v-model="formInline1.famp"
/> type="number"
</el-form-item> placeholder="含有率"
<el-form-item label="相角"> style="width: 80px"
<el-input onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
v-model="formInline1.fphase" @input="validateInput('famp',1)"
type="number" clearable
placeholder="相角" />
style="width: 80px" </el-form-item>
clearable <el-form-item label="相角">
/> <el-input
</el-form-item> v-model="formInline1.fphase"
<el-form-item> type="number"
<el-button type="primary" :icon="Check" @click="onSubmit1" size="small">确定</el-button> placeholder="相角"
<el-button type="primary" :icon="Delete" @click="empty(1)" size="small">清空表格</el-button> style="width: 80px"
</el-form-item> onkeypress="return (/[\d-]/.test(String.fromCharCode(event.keyCode)))"
</el-form> @input="validateInput('fphase',1)"
<!-- 电流通道内容 --> clearable
<div class="table-container"> />
<el-table :data="form[1].harmList" border stripe size="small"> </el-form-item>
<el-table-column prop="harm" align="center" label="次数" width="60" /> <el-form-item>
<el-table-column prop="famp" align="center" label="谐波含有率"> <el-button type="primary" :icon="Check" @click="onSubmit1" size="small">确定</el-button>
<template #default="{ row }"> <el-button type="primary" :icon="Delete" @click="empty(1)" size="small">清空表格</el-button>
<el-input type="number" v-if="row.show" v-model="row.famp" /> </el-form-item>
<span v-else>{{ row.famp }}%</span> </el-form>
</template> <!-- 电流通道内容 -->
</el-table-column> <div class="table-container">
<el-table-column prop="fphase" label="谐波相角" align="center"> <el-table :data="form[1].harmList" border stripe size="small">
<template #default="{ row }"> <el-table-column prop="harm" align="center" label="次数" width="60"/>
<el-input type="number" v-if="row.show" v-model="row.fphase" /> <el-table-column prop="famp" align="center" label="谐波含有率">
<span v-else>{{ row.fphase }}°</span> <template #default="{ row }">
</template> <el-input type="number" v-if="row.show" v-model="row.famp"/>
</el-table-column> <span v-else>{{ row.famp }}%</span>
<el-table-column label="操作" align="center"> </template>
<template #default="{ row, $index }"> </el-table-column>
<el-button <el-table-column prop="fphase" label="谐波相角" align="center">
type="primary" <template #default="{ row }">
link <el-input type="number" v-if="row.show" v-model="row.fphase"/>
:icon="EditPen" <span v-else>{{ row.fphase }}°</span>
v-if="!row.show" </template>
@click="row.show = true" </el-table-column>
> <el-table-column label="操作" align="center">
编辑 <template #default="{ row, $index }">
</el-button> <el-button
<el-button type="primary" link :icon="Check" v-else @click="row.show = false"> type="primary"
保存 link
</el-button> :icon="EditPen"
<el-button type="primary" link :icon="Delete" @click="HarmFlagDelete(1, $index)"> v-if="!row.show"
删除 @click="row.show = true"
</el-button> >
</template> 编辑
</el-table-column> </el-button>
</el-table> <el-button type="primary" link :icon="Check" v-else @click="row.show = false">
</div> 保存
</el-tab-pane> </el-button>
</el-tabs> <el-button type="primary" link :icon="Delete" @click="HarmFlagDelete(1, $index)">
</div> 删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-tab-pane>
</el-tabs>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { Check, Delete, EditPen, CopyDocument } from '@element-plus/icons-vue' import {Check, Delete, EditPen} from '@element-plus/icons-vue'
import { ref } from 'vue' import {ref} from 'vue'
const props = defineProps({ const props = defineProps({
childForm: { childForm: {
type: Array as any, type: Array as any,
required: true required: true
} }
}) })
const form: any = computed({ const form: any = computed({
get() { get() {
return props.childForm return props.childForm
}, },
set(value) {} set(value) {
}
}) })
const formInline = ref({ const formInline = ref({
harm: [], harm: [],
famp: '', famp: '',
fphase: '' fphase: ''
}) })
const formInline1 = ref({ const formInline1 = ref({
harm: [], harm: [],
famp: '', famp: '',
fphase: '' fphase: ''
}) })
// 定义表格数据项的类型 // 定义表格数据项的类型
interface TableItem { interface TableItem {
date: string date: string
harmonicRate?: string harmonicRate?: string
harmonicPhase?: string harmonicPhase?: string
name?: string name?: string
} }
const empty = (index: number) => { const empty = (index: number) => {
props.childForm[index].harmList = [] props.childForm[index].harmList = []
} }
const onSubmit = () => { const onSubmit = () => {
console.log('🚀 ~ onSubmit ~ props.childForm[0]:', props.childForm[0].harmList) console.log('🚀 ~ onSubmit ~ props.childForm[0]:', props.childForm[0].harmList)
if (formInline.value.harm.length == 0 || formInline.value.famp == '' || formInline.value.fphase == '') { if (formInline.value.harm.length == 0 || formInline.value.famp == '' || formInline.value.fphase == '') {
ElMessage.warning('请填写值!') ElMessage.warning('请填写值!')
return return
}
if (formInline.value.harm.includes('0')) {
props.childForm[0].harmList = []
for (let i = 2; i < 51; i++) {
props.childForm[0].harmList.push({
harm: i, //间谐波次数
famp: formInline.value.famp, //间谐波含有率
fphase: formInline.value.fphase // 间谐波相角
})
} }
if (formInline.value.harm.includes('0')) { } else {
props.childForm[0].harmList = [] formInline.value.harm.forEach((item: any) => {
for (let i = 2; i < 51; i++) { props.childForm[0].harmList.push({
props.childForm[0].harmList.push({ harm: item, //间谐波次数
harm: i, //间谐波次数 famp: formInline.value.famp, //间谐波含有率
famp: formInline.value.famp, //间谐波含有率 fphase: formInline.value.fphase // 间谐波相角
fphase: formInline.value.fphase // 间谐波相角 })
}) })
} const seen = new Set()
} else { const uniqueData = []
formInline.value.harm.forEach((item: any) => {
props.childForm[0].harmList.push({
harm: item, //间谐波次数
famp: formInline.value.famp, //间谐波含有率
fphase: formInline.value.fphase // 间谐波相角
})
})
const seen = new Set()
const uniqueData = []
// 反向遍历数组 // 反向遍历数组
for (let i = props.childForm[0].harmList.length - 1; i >= 0; i--) { for (let i = props.childForm[0].harmList.length - 1; i >= 0; i--) {
const item = props.childForm[0].harmList[i] const item = props.childForm[0].harmList[i]
// 如果 harm 还未出现过,则添加到结果数组 // 如果 harm 还未出现过,则添加到结果数组
if (!seen.has(item.harm)) { if (!seen.has(item.harm)) {
seen.add(item.harm) seen.add(item.harm)
uniqueData.unshift(item) // 添加到结果数组的开头 uniqueData.unshift(item) // 添加到结果数组的开头
} }
}
props.childForm[0].harmList = uniqueData.sort((a, b) => a.harm - b.harm)
} }
props.childForm[0].harmList = uniqueData.sort((a, b) => a.harm - b.harm)
}
} }
const onSubmit1 = () => { const onSubmit1 = () => {
if (formInline1.value.harm.length == 0 || formInline1.value.famp == '' || formInline1.value.fphase == '') { if (formInline1.value.harm.length == 0 || formInline1.value.famp == '' || formInline1.value.fphase == '') {
ElMessage.warning('请填写值!') ElMessage.warning('请填写值!')
return return
}
if (formInline1.value.harm.includes('0')) {
props.childForm[1].harmList = []
for (let i = 2; i < 51; i++) {
props.childForm[1].harmList.push({
harm: i, //间谐波次数
famp: formInline1.value.famp, //间谐波含有率
fphase: formInline1.value.fphase // 间谐波相角
})
} }
if (formInline1.value.harm.includes('0')) { } else {
props.childForm[1].harmList = [] formInline1.value.harm.forEach((item: any) => {
for (let i = 2; i < 51; i++) { props.childForm[1].harmList.push({
props.childForm[1].harmList.push({ harm: item, //间谐波次数
harm: i, //间谐波次数 famp: formInline1.value.famp, //间谐波含有率
famp: formInline1.value.famp, //间谐波含有率 fphase: formInline1.value.fphase // 间谐波相角
fphase: formInline1.value.fphase // 间谐波相角 })
}) })
} const seen = new Set()
} else { const uniqueData = []
formInline1.value.harm.forEach((item: any) => {
props.childForm[1].harmList.push({
harm: item, //间谐波次数
famp: formInline1.value.famp, //间谐波含有率
fphase: formInline1.value.fphase // 间谐波相角
})
})
const seen = new Set()
const uniqueData = []
// 反向遍历数组 // 反向遍历数组
for (let i = props.childForm[1].harmList.length - 1; i >= 0; i--) { for (let i = props.childForm[1].harmList.length - 1; i >= 0; i--) {
const item = props.childForm[1].harmList[i] const item = props.childForm[1].harmList[i]
// 如果 harm 还未出现过,则添加到结果数组 // 如果 harm 还未出现过,则添加到结果数组
if (!seen.has(item.harm)) { if (!seen.has(item.harm)) {
seen.add(item.harm) seen.add(item.harm)
uniqueData.unshift(item) // 添加到结果数组的开头 uniqueData.unshift(item) // 添加到结果数组的开头
} }
}
props.childForm[1].harmList = uniqueData.sort((a, b) => a.harm - b.harm)
} }
props.childForm[1].harmList = uniqueData.sort((a, b) => a.harm - b.harm)
}
} }
// 删除 // 删除
const HarmFlagDelete = (index: number, number: number) => { const HarmFlagDelete = (index: number, number: number) => {
props.childForm[index].harmList.splice(number, 1) props.childForm[index].harmList.splice(number, 1)
}
const validateInput = (type: string, index: number) => {
if (type == 'famp') {
if (Number(formInline.value.famp) < 0 || Number(formInline1.value.famp) < 0) {
ElMessage.warning("含有率不能低于0")
if (index == 0) {
formInline.value.famp = '0'
}
if (index == 1) {
formInline1.value.famp = '0'
}
}
if (Number(formInline.value.famp) > 200 || Number(formInline1.value.famp) > 200) {
ElMessage.warning("含有率不能高于200")
if (index == 0) {
formInline.value.famp = '200'
}
if (index == 1) {
formInline1.value.famp = '200'
}
}
}
if (type == 'fphase') {
if (Number(formInline.value.fphase) < -360 || Number(formInline1.value.fphase) < -360) {
ElMessage.warning("相角不能低于-360°")
if (index == 0) {
formInline.value.fphase = '-360';
}
if (index == 1) {
formInline1.value.fphase = '-360';
}
} else if (Number(formInline.value.fphase) > 360 || Number(formInline1.value.fphase) > 360) {
ElMessage.warning("相角不能高于360°")
if (index == 0) {
formInline.value.fphase = '360';
}
if (index == 1) {
formInline1.value.fphase = '360';
}
}
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.tabs-container { .tabs-container {
display: flex; display: flex;
justify-content: space-between; /* 使两个 el-tabs 之间有间距 */ justify-content: space-between; /* 使两个 el-tabs 之间有间距 */
height: 100%; height: 100%;
} }
.right-tabs { .right-tabs {
flex: 1; /* 使两个 el-tabs 占据相同的空间 */ flex: 1; /* 使两个 el-tabs 占据相同的空间 */
margin-right: 10px; /* 可选:添加右侧间距 */ margin-right: 10px; /* 可选:添加右侧间距 */
} }
.el-tabs { .el-tabs {
flex: 1; /* 使两个 el-tabs 占据相同的空间 */ flex: 1; /* 使两个 el-tabs 占据相同的空间 */
} }
.table-container { .table-container {
display: flex; display: flex;
justify-content: space-between; /* 使两个表格之间有间距 */ justify-content: space-between; /* 使两个表格之间有间距 */
width: 100%; width: 100%;
} }
.half-width-table { .half-width-table {
flex: 1; /* 使两个表格占据相同的空间 */ flex: 1; /* 使两个表格占据相同的空间 */
margin-right: 10px; /* 可选:添加表格之间的间距 */ margin-right: 10px; /* 可选:添加表格之间的间距 */
} }
.half-width-table:last-child { .half-width-table:last-child {
margin-right: 0; /* 最后一个表格不需要右侧间距 */ margin-right: 0; /* 最后一个表格不需要右侧间距 */
} }
.input-label-container { .input-label-container {
display: flex; display: flex;
align-items: center; /* 垂直居中对齐 */ align-items: center; /* 垂直居中对齐 */
} }
.input-label-container label { .input-label-container label {
margin-left: 5px; /* 添加标签与输入框之间的间距 */ margin-left: 5px; /* 添加标签与输入框之间的间距 */
} }
// 全局css 加上以下代码,可以隐藏上下箭头 // 全局css 加上以下代码,可以隐藏上下箭头
// 取消input的上下箭头 // 取消input的上下箭头

View File

@@ -23,6 +23,8 @@
type="number" type="number"
placeholder="含有率" placeholder="含有率"
style="width: 80px" style="width: 80px"
onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
@input="validateInput('famp',0)"
clearable clearable
/> />
</el-form-item> </el-form-item>
@@ -32,6 +34,8 @@
type="number" type="number"
placeholder="相角" placeholder="相角"
style="width: 80px" style="width: 80px"
onkeypress="return (/[\d-]/.test(String.fromCharCode(event.keyCode)))"
@input="validateInput('fphase',0)"
clearable clearable
/> />
</el-form-item> </el-form-item>
@@ -102,6 +106,8 @@
type="number" type="number"
placeholder="含有率" placeholder="含有率"
style="width: 80px" style="width: 80px"
onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
@input="validateInput('famp',1)"
clearable clearable
/> />
</el-form-item> </el-form-item>
@@ -111,6 +117,8 @@
type="number" type="number"
placeholder="相角" placeholder="相角"
style="width: 80px" style="width: 80px"
onkeypress="return (/[\d-]/.test(String.fromCharCode(event.keyCode)))"
@input="validateInput('fphase',1)"
clearable clearable
/> />
</el-form-item> </el-form-item>
@@ -276,6 +284,48 @@ const onSubmit1 = () => {
const inHarmFlagDelete = (index: number, number: number) => { const inHarmFlagDelete = (index: number, number: number) => {
props.childForm[index].inharmList.splice(number, 1) props.childForm[index].inharmList.splice(number, 1)
} }
const validateInput = (type: string, index: number) => {
if (type == 'famp') {
if (Number(formInline.value.famp) < 0 || Number(formInline1.value.famp) < 0) {
ElMessage.warning("含有率不能低于0")
if (index == 0) {
formInline.value.famp = '0'
}
if (index == 1) {
formInline1.value.famp = '0'
}
}
if (Number(formInline.value.famp) > 200 || Number(formInline1.value.famp) > 200) {
ElMessage.warning("含有率不能高于200")
if (index == 0) {
formInline.value.famp = '200'
}
if (index == 1) {
formInline1.value.famp = '200'
}
}
}
if (type == 'fphase') {
if (Number(formInline.value.fphase) < -360 || Number(formInline1.value.fphase) < -360) {
ElMessage.warning("相角不能低于-360°")
if (index == 0) {
formInline.value.fphase = '-360';
}
if (index == 1) {
formInline1.value.fphase = '-360';
}
} else if (Number(formInline.value.fphase) > 360 || Number(formInline1.value.fphase) > 360) {
ElMessage.warning("相角不能高于360°")
if (index == 0) {
formInline.value.fphase = '360';
}
if (index == 1) {
formInline1.value.fphase = '360';
}
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@@ -9,17 +9,17 @@
<!-- 右侧编辑区域内容 --> <!-- 右侧编辑区域内容 -->
<el-form :inline="true" label-width="auto" :model="form" class="form-two"> <el-form :inline="true" label-width="auto" :model="form" class="form-two">
<el-form-item :label="`电压有效值(${valueCode == 'Absolute' ? 'V' : '%'})`"> <el-form-item :label="`电压有效值(${valueCode == 'Absolute' ? 'V' : '%'})`">
<el-input type="number" v-model="form[0].famp" :disabled="!form[0].channelFlag" /> <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')"/>
</el-form-item> </el-form-item>
<el-form-item label="电压相角(°)"> <el-form-item label="电压相角(°)">
<el-input type="number" v-model="form[0].fphase" :disabled="!form[0].channelFlag" /> <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')"/>
</el-form-item> </el-form-item>
<el-form-item :label="`电流有效值(${valueCode == 'Absolute' ? 'A' : '%'})`"> <el-form-item :label="`电流有效值(${valueCode == 'Absolute' ? 'A' : '%'})`">
<el-input type="number" v-model="form[1].famp" :disabled="!form[1].channelFlag" /> <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')"/>
</el-form-item> </el-form-item>
<el-form-item label="电流相角(°)"> <el-form-item label="电流相角(°)">
<el-input type="number" v-model="form[1].fphase" :disabled="!form[1].channelFlag" /> <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')"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@@ -109,6 +109,41 @@ function drawSineWave() {
} }
} }
} }
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;
}
}
}
</script> </script>
<style scoped> <style scoped>

View File

@@ -16,7 +16,8 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label='检测最大次数' prop='maxTime' :label-width="110"> <el-form-item label='检测最大次数' prop='maxTime' :label-width="110">
<el-input-number v-model='TestConfigForm.maxTime' :min='1' :max='999'/> <!-- <el-input-number v-model='TestConfigForm.maxTime' :min='1' :max='999' onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/>-->
<el-input number v-model.number='TestConfigForm.maxTime' placeholder="请输入检测最大次数" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@@ -43,17 +44,17 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="实时数据有效组数" prop="realTime" :label-width="140"> <el-form-item label="实时数据有效组数" prop="realTime" :label-width="140">
<el-input number v-model.number='RegResForm.realTime' placeholder="请输入实时数据有效组数"/> <el-input number v-model.number='RegResForm.realTime' placeholder="请输入实时数据有效组数" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="统计数据有效组数" prop="statistics" :label-width="140"> <el-form-item label="统计数据有效组数" prop="statistics" :label-width="140">
<el-input number v-model.number='RegResForm.statistics' placeholder="请输入统计数据有效组数"/> <el-input number v-model.number='RegResForm.statistics' placeholder="请输入统计数据有效组数" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="闪变数据有效组数" prop="flicker" :label-width="140"> <el-form-item label="闪变数据有效组数" prop="flicker" :label-width="140">
<el-input number v-model.number='RegResForm.flicker' placeholder="请输入闪变数据有效组数"/> <el-input number v-model.number='RegResForm.flicker' placeholder="请输入闪变数据有效组数" onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -257,6 +258,7 @@ const rules = computed(() => {
const baseRules: Ref<Record<string, Array<FormItemRule>>> = ref({ const baseRules: Ref<Record<string, Array<FormItemRule>>> = ref({
maxTime: [ maxTime: [
{required: true, trigger: 'blur', message: '检测最大次数必填!'}, {required: true, trigger: 'blur', message: '检测最大次数必填!'},
{pattern: /^(?:[1-9]|[1-9][0-9]|[1-9][0-9]{2})$/, message: '检测最大次数为1~999的正整数', trigger: 'blur'}
], ],
realTime: [ realTime: [
{required: true, trigger: 'blur', message: '实时数据有效组数必填!'}, {required: true, trigger: 'blur', message: '实时数据有效组数必填!'},