优化检测脚本页面
录入检测脚本
This commit is contained in:
@@ -21,7 +21,7 @@
|
|||||||
v-if="row.show"
|
v-if="row.show"
|
||||||
:active-value="1"
|
:active-value="1"
|
||||||
:inactive-value="0"
|
:inactive-value="0"
|
||||||
:disabled="disabled"
|
:disabled="row.disabled || disabled"
|
||||||
>
|
>
|
||||||
<template #active-action>
|
<template #active-action>
|
||||||
<span>√</span>
|
<span>√</span>
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
v-if="row.show"
|
v-if="row.show"
|
||||||
:active-value="1"
|
:active-value="1"
|
||||||
:inactive-value="0"
|
:inactive-value="0"
|
||||||
:disabled="disabled"
|
:disabled="row.disabled || disabled"
|
||||||
>
|
>
|
||||||
<template #active-action>
|
<template #active-action>
|
||||||
<span>√</span>
|
<span>√</span>
|
||||||
@@ -71,11 +71,17 @@ const props = defineProps({
|
|||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const tableData = ref<any[]>([])
|
const tableData = ref<any[]>([])
|
||||||
const info = async () => {
|
const info = async () => {
|
||||||
let checkData: any = []
|
let checkData: any = []
|
||||||
|
let title = props.options.filter((i: any) => i.value == props.activeName)[0]
|
||||||
|
|
||||||
await checkDataList({
|
await checkDataList({
|
||||||
scriptId: props.formContent.id,
|
scriptId: props.formContent.id,
|
||||||
scriptType: props.activeName
|
scriptType: props.activeName
|
||||||
@@ -111,6 +117,7 @@ const info = async () => {
|
|||||||
id: k.id,
|
id: k.id,
|
||||||
pid: item.id,
|
pid: item.id,
|
||||||
name: k.name,
|
name: k.name,
|
||||||
|
pname: item.name,
|
||||||
dataType: item.name == '闪变' ? 'avg' : item.name == '暂态' ? 'avg' : 'real',
|
dataType: item.name == '闪变' ? 'avg' : item.name == '暂态' ? 'avg' : 'real',
|
||||||
show: true,
|
show: true,
|
||||||
errorFlag: childrenList[0].errorFlag,
|
errorFlag: childrenList[0].errorFlag,
|
||||||
@@ -121,6 +128,8 @@ const info = async () => {
|
|||||||
id: k.id,
|
id: k.id,
|
||||||
pid: item.id,
|
pid: item.id,
|
||||||
name: k.name,
|
name: k.name,
|
||||||
|
disabled: false,
|
||||||
|
pname: item.name,
|
||||||
dataType: item.name == '闪变' ? 'avg' : item.name == '暂态' ? 'avg' : 'real',
|
dataType: item.name == '闪变' ? 'avg' : item.name == '暂态' ? 'avg' : 'real',
|
||||||
show: true,
|
show: true,
|
||||||
errorFlag: 0,
|
errorFlag: 0,
|
||||||
@@ -128,7 +137,22 @@ const info = async () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// 默认够选通讯脚本
|
||||||
|
if (item.name == title.label.replace(/准确度|检测/g, '')) {
|
||||||
|
if (item.name == '暂态') {
|
||||||
|
tableData.value[i].children.forEach((k: any) => {
|
||||||
|
k.disabled = true
|
||||||
|
k.enable = 1
|
||||||
|
k.errorFlag = 1
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
tableData.value[i].children[0].disabled = true
|
||||||
|
tableData.value[i].children[0].enable = 1
|
||||||
|
tableData.value[i].children[0].errorFlag = 1
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
console.log('🚀 ~ item.children.forEach ~ tableData.value:', tableData.value)
|
console.log('🚀 ~ item.children.forEach ~ tableData.value:', tableData.value)
|
||||||
}
|
}
|
||||||
const getData = () => {
|
const getData = () => {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ let scriptForm: any = {
|
|||||||
inHarmFlag: false, //间谐波使能
|
inHarmFlag: false, //间谐波使能
|
||||||
flickerFlag: false, //闪变使能
|
flickerFlag: false, //闪变使能
|
||||||
dipFlag: false, //暂态使能
|
dipFlag: false, //暂态使能
|
||||||
famp: 0, //幅值
|
famp: 100, //幅值
|
||||||
fphase: 0, //相角
|
fphase: 0, //相角
|
||||||
harmList: [
|
harmList: [
|
||||||
// {
|
// {
|
||||||
@@ -27,15 +27,15 @@ let scriptForm: any = {
|
|||||||
], //间谐波
|
], //间谐波
|
||||||
flickerData: {
|
flickerData: {
|
||||||
flickerValue: '1', //标准值
|
flickerValue: '1', //标准值
|
||||||
fchagValue: '', //变动量
|
fchagValue: '2.724', //变动量
|
||||||
fchagFre: '', //波动频度
|
fchagFre: '1', //波动频度
|
||||||
waveType: 'CPM', // 波动类型
|
waveType: 'CPM', // 波动类型
|
||||||
waveFluType: 'SQU', //波类型
|
waveFluType: 'SQU', //波类型
|
||||||
fdutyCycle: 50 //占空比
|
fdutyCycle: 50 //占空比
|
||||||
}, //闪变
|
}, //闪变
|
||||||
dipData: {
|
dipData: {
|
||||||
ftransValue: 0, // 暂态幅值
|
ftransValue: '', // 暂态幅值
|
||||||
retainTime: 0 // 暂态持续时间
|
retainTime: '' // 暂态持续时间
|
||||||
} //暂态
|
} //暂态
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -45,7 +45,7 @@ let scriptForm: any = {
|
|||||||
inHarmFlag: false, //间谐波使能
|
inHarmFlag: false, //间谐波使能
|
||||||
flickerFlag: false, //闪变使能
|
flickerFlag: false, //闪变使能
|
||||||
dipFlag: false, //暂态使能
|
dipFlag: false, //暂态使能
|
||||||
famp: 0, //幅值
|
famp: 100, //幅值
|
||||||
fphase: 0, //相角
|
fphase: 0, //相角
|
||||||
harmList: [], //谐波
|
harmList: [], //谐波
|
||||||
inharmList: [
|
inharmList: [
|
||||||
@@ -64,8 +64,8 @@ let scriptForm: any = {
|
|||||||
fdutyCycle: 50 //占空比
|
fdutyCycle: 50 //占空比
|
||||||
}, //闪变
|
}, //闪变
|
||||||
dipData: {
|
dipData: {
|
||||||
ftransValue: 0, // 暂态幅值
|
ftransValue: '', // 暂态幅值
|
||||||
retainTime: 0 // 暂态持续时间
|
retainTime: '' // 暂态持续时间
|
||||||
} //暂态
|
} //暂态
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -75,8 +75,8 @@ let scriptForm: any = {
|
|||||||
inHarmFlag: false, //间谐波使能
|
inHarmFlag: false, //间谐波使能
|
||||||
flickerFlag: false, //闪变使能
|
flickerFlag: false, //闪变使能
|
||||||
dipFlag: false, //暂态使能
|
dipFlag: false, //暂态使能
|
||||||
famp: 0, //幅值
|
famp: 100, //幅值
|
||||||
fphase: 0, //相角
|
fphase: -120, //相角
|
||||||
harmList: [], //谐波
|
harmList: [], //谐波
|
||||||
inharmList: [
|
inharmList: [
|
||||||
{
|
{
|
||||||
@@ -87,15 +87,15 @@ let scriptForm: any = {
|
|||||||
], //间谐波
|
], //间谐波
|
||||||
flickerData: {
|
flickerData: {
|
||||||
flickerValue: '1', //标准值
|
flickerValue: '1', //标准值
|
||||||
fchagValue: '', //变动量
|
fchagValue: '2.724', //变动量
|
||||||
fchagFre: '', //波动频度
|
fchagFre: '1', //波动频度
|
||||||
waveType: 'CMP', // 波动类型
|
waveType: 'CMP', // 波动类型
|
||||||
waveFluType: 'SQU', //波类型
|
waveFluType: 'SQU', //波类型
|
||||||
fdutyCycle: 50 //占空比
|
fdutyCycle: 50 //占空比
|
||||||
}, //闪变
|
}, //闪变
|
||||||
dipData: {
|
dipData: {
|
||||||
ftransValue: 0, // 暂态幅值
|
ftransValue: '', // 暂态幅值
|
||||||
retainTime: 0 // 暂态持续时间
|
retainTime: '' // 暂态持续时间
|
||||||
} //暂态
|
} //暂态
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -105,8 +105,8 @@ let scriptForm: any = {
|
|||||||
inHarmFlag: false, //间谐波使能
|
inHarmFlag: false, //间谐波使能
|
||||||
flickerFlag: false, //闪变使能
|
flickerFlag: false, //闪变使能
|
||||||
dipFlag: false, //暂态使能
|
dipFlag: false, //暂态使能
|
||||||
famp: 0, //幅值
|
famp: 100, //幅值
|
||||||
fphase: 0, //相角
|
fphase:-120, //相角
|
||||||
harmList: [], //谐波
|
harmList: [], //谐波
|
||||||
inharmList: [
|
inharmList: [
|
||||||
{
|
{
|
||||||
@@ -124,8 +124,8 @@ let scriptForm: any = {
|
|||||||
fdutyCycle: 50 //占空比
|
fdutyCycle: 50 //占空比
|
||||||
}, //闪变
|
}, //闪变
|
||||||
dipData: {
|
dipData: {
|
||||||
ftransValue: 0, // 暂态幅值
|
ftransValue: '', // 暂态幅值
|
||||||
retainTime: 0 // 暂态持续时间
|
retainTime: '' // 暂态持续时间
|
||||||
} //暂态
|
} //暂态
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -135,8 +135,8 @@ let scriptForm: any = {
|
|||||||
inHarmFlag: false, //间谐波使能
|
inHarmFlag: false, //间谐波使能
|
||||||
flickerFlag: false, //闪变使能
|
flickerFlag: false, //闪变使能
|
||||||
dipFlag: false, //暂态使能
|
dipFlag: false, //暂态使能
|
||||||
famp: 0, //幅值
|
famp: 100, //幅值
|
||||||
fphase: 0, //相角
|
fphase: 120, //相角
|
||||||
harmList: [], //谐波
|
harmList: [], //谐波
|
||||||
inharmList: [
|
inharmList: [
|
||||||
{
|
{
|
||||||
@@ -147,15 +147,15 @@ let scriptForm: any = {
|
|||||||
], //间谐波
|
], //间谐波
|
||||||
flickerData: {
|
flickerData: {
|
||||||
flickerValue: '1', //标准值
|
flickerValue: '1', //标准值
|
||||||
fchagValue: '', //变动量
|
fchagValue: '2.724', //变动量
|
||||||
fchagFre: '', //波动频度
|
fchagFre: '1', //波动频度
|
||||||
waveType: 'CMP', // 波动类型
|
waveType: 'CMP', // 波动类型
|
||||||
waveFluType: 'SQU', //波类型
|
waveFluType: 'SQU', //波类型
|
||||||
fdutyCycle: 50 //占空比
|
fdutyCycle: 50 //占空比
|
||||||
}, //闪变
|
}, //闪变
|
||||||
dipData: {
|
dipData: {
|
||||||
ftransValue: 0, // 暂态幅值
|
ftransValue: '', // 暂态幅值
|
||||||
retainTime: 0 // 暂态持续时间
|
retainTime: '' // 暂态持续时间
|
||||||
} //暂态
|
} //暂态
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -165,8 +165,8 @@ let scriptForm: any = {
|
|||||||
inHarmFlag: false, //间谐波使能
|
inHarmFlag: false, //间谐波使能
|
||||||
flickerFlag: false, //闪变使能
|
flickerFlag: false, //闪变使能
|
||||||
dipFlag: false, //暂态使能
|
dipFlag: false, //暂态使能
|
||||||
famp: 0, //幅值
|
famp: 100, //幅值
|
||||||
fphase: 0, //相角
|
fphase: 120, //相角
|
||||||
harmList: [], //谐波
|
harmList: [], //谐波
|
||||||
inharmList: [
|
inharmList: [
|
||||||
{
|
{
|
||||||
@@ -184,8 +184,8 @@ let scriptForm: any = {
|
|||||||
fdutyCycle: 50 //占空比
|
fdutyCycle: 50 //占空比
|
||||||
}, //闪变
|
}, //闪变
|
||||||
dipData: {
|
dipData: {
|
||||||
ftransValue: 0, // 暂态幅值
|
ftransValue: '', // 暂态幅值
|
||||||
retainTime: 0 // 暂态持续时间
|
retainTime: '' // 暂态持续时间
|
||||||
} //暂态
|
} //暂态
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -202,5 +202,5 @@ function getScriptForm() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getScriptForm()
|
// getScriptForm()
|
||||||
export default scriptForm
|
export default scriptForm
|
||||||
|
|||||||
@@ -13,10 +13,23 @@
|
|||||||
>
|
>
|
||||||
<el-table-column type="index" label="序号" width="60" />
|
<el-table-column type="index" label="序号" width="60" />
|
||||||
<el-table-column prop="pname" label="参考设定值类型" />
|
<el-table-column prop="pname" label="参考设定值类型" />
|
||||||
<el-table-column prop="name" label="参考设定值子类型" />
|
<el-table-column prop="name" label="参考设定值子类型" width="250">
|
||||||
|
<template #default="{ row }">{{ row.harmNum ? `(${row.harmNum}次)` : '' }} {{ row.name }}</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="dataType" label="值类型" :formatter="formatter" />
|
<el-table-column prop="dataType" label="值类型" :formatter="formatter" />
|
||||||
<el-table-column prop="phase" label="相别" />
|
<el-table-column prop="phase" label="相别" />
|
||||||
<el-table-column prop="value" label="参考设定值" />
|
<el-table-column prop="value" label="参考设定值">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span v-if="row.show">{{ row.value }}</span>
|
||||||
|
<el-input
|
||||||
|
type="number"
|
||||||
|
v-else
|
||||||
|
v-model="row.value"
|
||||||
|
placeholder="请输入值"
|
||||||
|
@blur="row.show = !row.show"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="value" label="参与误差比较">
|
<el-table-column prop="value" label="参与误差比较">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
{{ row.errorFlag == 0 ? '否' : '是' }}
|
{{ row.errorFlag == 0 ? '否' : '是' }}
|
||||||
@@ -24,7 +37,10 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作">
|
<el-table-column label="操作">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-button type="primary" link :icon="EditPen">编辑</el-button>
|
<el-button type="primary" link :icon="EditPen" @click="row.show = !row.show" v-if="row.show">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" link :icon="Check" @click="row.show = !row.show" v-else>保存</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -52,7 +68,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { CirclePlus, EditPen, Delete, Share } from '@element-plus/icons-vue'
|
import { CirclePlus, EditPen, Check, Share } from '@element-plus/icons-vue'
|
||||||
import { reactive, ref } from 'vue'
|
import { reactive, ref } from 'vue'
|
||||||
import { getDictTreeByCode } from '@/api/system/dictionary/dictTree'
|
import { getDictTreeByCode } from '@/api/system/dictionary/dictTree'
|
||||||
import { dialogBig } from '@/utils/elementBind'
|
import { dialogBig } from '@/utils/elementBind'
|
||||||
@@ -101,7 +117,7 @@ const formatter = (row: any, column: any) => {
|
|||||||
|
|
||||||
// 打开弹窗,可能是新增,也可能是编辑
|
// 打开弹窗,可能是新增,也可能是编辑
|
||||||
|
|
||||||
const open = async (row: any) => {
|
const open = async (row: any, copyRowList: any) => {
|
||||||
let treeData: any = []
|
let treeData: any = []
|
||||||
await getDictTreeByCode({
|
await getDictTreeByCode({
|
||||||
name: '',
|
name: '',
|
||||||
@@ -127,21 +143,57 @@ const open = async (row: any) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
let form = handleHarmData(JSON.parse(JSON.stringify(props.form)))
|
||||||
|
let retryCompute = isEqual(form, copyRowList)
|
||||||
await scriptDtlsCheckDataList({
|
await scriptDtlsCheckDataList({
|
||||||
...props.form,
|
...form,
|
||||||
scriptId: props.formContent?.id,
|
scriptId: props.formContent?.id,
|
||||||
scriptType: props.activeName,
|
scriptType: props.activeName,
|
||||||
checkDataList: checkDataList
|
checkDataList: checkDataList,
|
||||||
|
retryCompute: retryCompute
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
res.data.forEach((item: any) => {
|
res.data.forEach((item: any) => {
|
||||||
let pList = treeData.filter((i: any) => i.id == item.pid)[0]
|
let pList = treeData.filter((i: any) => i.id == item.pid)[0]
|
||||||
item.pname = pList.name
|
item.pname = pList.name
|
||||||
item.name = pList.children.filter((i: any) => i.id == item.valueType)[0].name
|
item.name = pList.children.filter((i: any) => i.id == item.valueType)[0].name
|
||||||
|
item.show = true
|
||||||
})
|
})
|
||||||
tableData.value = res.data
|
tableData.value = res.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 处理多余数据
|
||||||
|
const handleHarmData = row => {
|
||||||
|
row.channelList.forEach((channel: any) => {
|
||||||
|
// 筛选出 famp 和 fphase 不同时为 0 的对象
|
||||||
|
channel.harmList = channel.harmList.filter((item: any) => item.famp != 0 || item.fphase != 0)
|
||||||
|
channel.inharmList = channel.inharmList.filter(
|
||||||
|
(item: any) => item.inharm !== '' || item.famp !== 0 || item.fphase !== 0
|
||||||
|
)
|
||||||
|
})
|
||||||
|
return row
|
||||||
|
}
|
||||||
|
// 判断数据是否变化
|
||||||
|
const isEqual = (obj1, obj2) => {
|
||||||
|
// 如果两个对象是同一个引用,直接返回 true
|
||||||
|
if (obj1 == obj2) return true
|
||||||
|
// 如果其中一个是 null 或者不是对象,返回 false
|
||||||
|
if (obj1 === null || typeof obj1 !== 'object' || obj2 === null || typeof obj2 !== 'object') {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// 获取两个对象的键
|
||||||
|
const keys1 = Object.keys(obj1)
|
||||||
|
const keys2 = Object.keys(obj2)
|
||||||
|
// 如果键的数量不同,返回 false
|
||||||
|
if (keys1.length !== keys2.length) return false
|
||||||
|
// 遍历所有键,递归比较值
|
||||||
|
for (const key of keys1) {
|
||||||
|
if (!keys2.includes(key) || !isEqual(obj1[key], obj2[key])) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
const save = () => {
|
const save = () => {
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog :title="dialogTitle" v-model="dialogVisible" @close="close" v-bind="dialogBig" width="1400px">
|
<el-dialog :title="dialogTitle" v-model="dialogVisible" @close="close" v-bind="dialogBig" width="1450px">
|
||||||
<el-carousel height="620px" :autoplay="false" ref="carouselRef" indicator-position="none">
|
<el-carousel height="600px" :autoplay="false" ref="carouselRef" indicator-position="none">
|
||||||
<el-carousel-item :name="0" style="height: 100%; overflow-y: auto">
|
<el-carousel-item :name="0" style="height: 100%; overflow-y: auto">
|
||||||
<div class="dialog-content">
|
<div class="dialog-content">
|
||||||
<el-tabs type="border-card" class="right-tabs">
|
<el-tabs type="border-card" class="right-tabs">
|
||||||
@@ -110,16 +110,11 @@
|
|||||||
<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="全局设置菜单">
|
||||||
<!-- 全局设置菜单内容 -->
|
<!-- 全局设置菜单内容 -->
|
||||||
<div style="height: 295px">
|
<div style="height: 295px; width: 170px">
|
||||||
<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
|
<el-input type="number" style="width: 100px" v-model="form.ffreq" />
|
||||||
type="number"
|
|
||||||
@mousewheel.native.prevent
|
|
||||||
style="width: 100px"
|
|
||||||
v-model="form.ffreq"
|
|
||||||
/>
|
|
||||||
<label>Hz</label>
|
<label>Hz</label>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -132,7 +127,7 @@
|
|||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top: 10px; height: 245px">
|
<div style="margin-top: 10px; height: 234px">
|
||||||
<el-tabs type="border-card" class="custom-tabs">
|
<el-tabs type="border-card" class="custom-tabs">
|
||||||
<el-tab-pane label="电压/电流编辑" v-if="childForm[0].channelFlag || childForm[1].channelFlag">
|
<el-tab-pane label="电压/电流编辑" v-if="childForm[0].channelFlag || childForm[1].channelFlag">
|
||||||
<TestScriptVolCurTab :childForm="childForm" :valueCode="valueCode" />
|
<TestScriptVolCurTab :childForm="childForm" :valueCode="valueCode" />
|
||||||
@@ -213,6 +208,7 @@ const props = defineProps({
|
|||||||
required: true
|
required: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const copyRowList = ref({})
|
||||||
const key = ref(0)
|
const key = ref(0)
|
||||||
// let valueType
|
// let valueType
|
||||||
const showSetValueTable = ref(false)
|
const showSetValueTable = ref(false)
|
||||||
@@ -262,7 +258,7 @@ const tableStyle = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const handleRowClick = async (row: any, column: any) => {
|
const handleRowClick = async (row: any, column: any) => {
|
||||||
if (column.label == '相别') {
|
if (column.label == '相别' || column.label == '操作') {
|
||||||
childForm.value = []
|
childForm.value = []
|
||||||
selectedRow.value = row.name
|
selectedRow.value = row.name
|
||||||
childForm.value.push(form.value.channelList[row.sort * 2])
|
childForm.value.push(form.value.channelList[row.sort * 2])
|
||||||
@@ -283,6 +279,12 @@ const close = () => {
|
|||||||
const save = () => {
|
const save = () => {
|
||||||
let copyForm = handleHarmData()
|
let copyForm = handleHarmData()
|
||||||
copyForm.checkDataList = setValueTableRef.value?.getTableData()
|
copyForm.checkDataList = setValueTableRef.value?.getTableData()
|
||||||
|
if (copyForm.checkDataList.some(item => item.value === null || item.value === '')) {
|
||||||
|
return ElMessage.warning({
|
||||||
|
message: '请填写所有参考设定值',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
}
|
||||||
addScriptDtls({ ...copyForm, scriptId: props.formContent.id, scriptType: props.activeName }).then(res => {
|
addScriptDtls({ ...copyForm, scriptId: props.formContent.id, scriptType: props.activeName }).then(res => {
|
||||||
if (res.code === 'A0000') {
|
if (res.code === 'A0000') {
|
||||||
ElMessage.success({
|
ElMessage.success({
|
||||||
@@ -305,48 +307,207 @@ const next = () => {
|
|||||||
emit('getCommunication')
|
emit('getCommunication')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// 判断通讯脚本
|
// 判断通讯脚本
|
||||||
if (!checkFlags(props.communicationList)) {
|
if (form.value.ffreq == '') {
|
||||||
ElMessage.warning({
|
ElMessage.warning({
|
||||||
message: '请先完善通讯脚本',
|
message: '请填写频率!',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// 判断够选通道
|
let { flag, message } = checkFlags()
|
||||||
if (!checkChannel(form.value)) {
|
// // 判断够选通道
|
||||||
|
if (!flag) {
|
||||||
ElMessage.warning({
|
ElMessage.warning({
|
||||||
message: '请先选择使能通道',
|
message: message,
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}, 100)
|
|
||||||
showSetValueTable.value = true
|
|
||||||
setTimeout(() => {
|
|
||||||
setValueTableRef.value?.open(props.communicationList)
|
|
||||||
|
|
||||||
carouselRef.value.setActiveItem(1)
|
showSetValueTable.value = true
|
||||||
|
setTimeout(() => {
|
||||||
|
setValueTableRef.value?.open(props.communicationList, copyRowList.value)
|
||||||
|
|
||||||
|
carouselRef.value.setActiveItem(1)
|
||||||
|
}, 100)
|
||||||
}, 100)
|
}, 100)
|
||||||
// 切换轮播图
|
// 切换轮播图
|
||||||
}
|
}
|
||||||
// 判断通讯脚本是否有值
|
|
||||||
const checkFlags = (data: any) => {
|
// 判断够选通道
|
||||||
for (let i = 0; i < data.length; i++) {
|
const checkFlags = () => {
|
||||||
const item = data[i]
|
let list: any = []
|
||||||
if (item.children) {
|
let flag = true
|
||||||
for (let j = 0; j < item.children.length; j++) {
|
let message = ''
|
||||||
const child = item.children[j]
|
props.communicationList.forEach((item: any) => {
|
||||||
if (child.errorFlag != 0 || child.enable != 0) {
|
list.push(...item.children.filter((item: any) => item.enable != 0 || item.errorFlag != 0))
|
||||||
return true
|
})
|
||||||
}
|
|
||||||
}
|
for (const item of list) {
|
||||||
|
switch (item.pname) {
|
||||||
|
case '频率':
|
||||||
|
flag = form.value.channelList.some(item => item.channelFlag == true)
|
||||||
|
message = '请选择通道使能'
|
||||||
|
break
|
||||||
|
case '电压':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].channelFlag == false &&
|
||||||
|
form.value.channelList[2].channelFlag == false &&
|
||||||
|
form.value.channelList[4].channelFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了电压,请选择电压通道使能' }
|
||||||
|
|
||||||
|
break
|
||||||
|
case '谐波电压':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].harmFlag == false &&
|
||||||
|
form.value.channelList[2].harmFlag == false &&
|
||||||
|
form.value.channelList[4].harmFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了谐波电压,请选择谐波电压通道使能' }
|
||||||
|
break
|
||||||
|
case '谐波电流':
|
||||||
|
if (
|
||||||
|
form.value.channelList[1].harmFlag == false &&
|
||||||
|
form.value.channelList[3].harmFlag == false &&
|
||||||
|
form.value.channelList[5].harmFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了谐波电流,请选择谐波电流通道使能' }
|
||||||
|
break
|
||||||
|
case '谐波有功功率':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].harmFlag == false &&
|
||||||
|
form.value.channelList[1].harmFlag == false &&
|
||||||
|
form.value.channelList[2].harmFlag == false &&
|
||||||
|
form.value.channelList[3].harmFlag == false &&
|
||||||
|
form.value.channelList[4].harmFlag == false &&
|
||||||
|
form.value.channelList[5].harmFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了谐波有功功率,请选择间电压、电流谐波通道使能' }
|
||||||
|
break
|
||||||
|
case '间谐波电压':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].inHarmFlag == false &&
|
||||||
|
form.value.channelList[2].inHarmFlag == false &&
|
||||||
|
form.value.channelList[4].inHarmFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了间谐波电压,请选择间谐波电压通道使能' }
|
||||||
|
break
|
||||||
|
case '间谐波电流':
|
||||||
|
if (
|
||||||
|
form.value.channelList[1].inHarmFlag == false &&
|
||||||
|
form.value.channelList[3].inHarmFlag == false &&
|
||||||
|
form.value.channelList[5].inHarmFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了间谐波电流,请选择间谐波电流通道使能' }
|
||||||
|
break
|
||||||
|
case '暂态':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].dipFlag == false &&
|
||||||
|
form.value.channelList[2].dipFlag == false &&
|
||||||
|
form.value.channelList[4].dipFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了暂态,请选择电压暂态通道使能' }
|
||||||
|
break
|
||||||
|
case '电流':
|
||||||
|
if (
|
||||||
|
form.value.channelList[1].channelFlag == false &&
|
||||||
|
form.value.channelList[3].channelFlag == false &&
|
||||||
|
form.value.channelList[5].channelFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了电压,请选择电压通道使能' }
|
||||||
|
break
|
||||||
|
case '三相电压不平衡度':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].channelFlag == false ||
|
||||||
|
form.value.channelList[2].channelFlag == false ||
|
||||||
|
form.value.channelList[4].channelFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了三相电压不平衡度,请选择电压A、B、C通道使能' }
|
||||||
|
break
|
||||||
|
case '三相电流不平衡度':
|
||||||
|
if (
|
||||||
|
form.value.channelList[1].channelFlag == false ||
|
||||||
|
form.value.channelList[3].channelFlag == false ||
|
||||||
|
form.value.channelList[5].channelFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了三相电流不平衡度,请选择电流A、B、C通道使能' }
|
||||||
|
break
|
||||||
|
case '闪变':
|
||||||
|
if (
|
||||||
|
form.value.channelList[0].flickerFlag == false &&
|
||||||
|
form.value.channelList[2].flickerFlag == false &&
|
||||||
|
form.value.channelList[4].flickerFlag == false
|
||||||
|
)
|
||||||
|
return { flag: false, message: '通讯脚本中够选了闪变,请选择电压闪变通道使能' }
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false
|
|
||||||
|
for (let index = 0; index < form.value.channelList.length; index++) {
|
||||||
|
const item = form.value.channelList[index]
|
||||||
|
const result = checkChannelValues(item, index)
|
||||||
|
|
||||||
|
if (!result.flag) {
|
||||||
|
flag = result.flag
|
||||||
|
message = result.message
|
||||||
|
break // 如果发现错误,直接退出循环
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { flag, message }
|
||||||
}
|
}
|
||||||
// 判断够选通道
|
// 判断通道值
|
||||||
const checkChannel = (data: row) => {
|
const checkChannelValues = (item: any, index: number) => {
|
||||||
return data.channelList.every(item => item.channelFlag === true)
|
const channelNames = ['L1/Ua', 'L1/Ia', 'L2/Ub', 'L2/Ib', 'L3/Uc', 'L3/Ic']
|
||||||
|
const channelName = channelNames[index] || ''
|
||||||
|
|
||||||
|
// 检查通道使能
|
||||||
|
if (item.channelFlag === false && (item.harmFlag || item.inHarmFlag || item.flickerFlag || item.dipFlag)) {
|
||||||
|
return { flag: false, message: `请选择${channelName}通道使能` }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查通道使能值
|
||||||
|
if (item.channelFlag === true && (item.famp === '' || item.fphase === '')) {
|
||||||
|
return { flag: false, message: '请填写通道使能值' }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查谐波使能值
|
||||||
|
if (item.harmFlag === true && item.harmList.filter(harm => harm.famp != 0 || harm.fphase != 0).length == 0) {
|
||||||
|
return { flag: false, message: '请填写谐波使能值' }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查间谐波使能值
|
||||||
|
if (
|
||||||
|
item.inHarmFlag === true &&
|
||||||
|
item.inharmList.filter(harm => harm.inharm !== '' || harm.famp !== 0 || harm.fphase !== 0).length === 0
|
||||||
|
) {
|
||||||
|
return { flag: false, message: '请填写间谐波使能值' }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查闪变使能值
|
||||||
|
if (
|
||||||
|
item.flickerFlag === true &&
|
||||||
|
(item.flickerData.fchagFre === '' || item.flickerData.fchagValue === '') &&
|
||||||
|
index != 1 &&
|
||||||
|
index != 3 &&
|
||||||
|
index != 5
|
||||||
|
) {
|
||||||
|
return { flag: false, message: '请填写闪变使能值' }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查暂态使能值
|
||||||
|
if (
|
||||||
|
item.dipFlag === true &&
|
||||||
|
(item.dipData.ftransValue === '' || item.dipData.retainTime === '') &&
|
||||||
|
index != 1 &&
|
||||||
|
index != 3 &&
|
||||||
|
index != 5
|
||||||
|
) {
|
||||||
|
return { flag: false, message: '请填写暂态使能值' }
|
||||||
|
}
|
||||||
|
|
||||||
|
return { flag: true, message: '' }
|
||||||
}
|
}
|
||||||
//处理谐波数据
|
//处理谐波数据
|
||||||
const handleHarmData = () => {
|
const handleHarmData = () => {
|
||||||
@@ -354,7 +515,7 @@ const handleHarmData = () => {
|
|||||||
|
|
||||||
copyForm.channelList.forEach((channel: any) => {
|
copyForm.channelList.forEach((channel: any) => {
|
||||||
// 筛选出 famp 和 fphase 不同时为 0 的对象
|
// 筛选出 famp 和 fphase 不同时为 0 的对象
|
||||||
channel.harmList = channel.harmList.filter((item: any) => item.famp !== 0 || item.fphase !== 0)
|
channel.harmList = channel.harmList.filter((item: any) => item.famp != 0 || item.fphase != 0)
|
||||||
channel.inharmList = channel.inharmList.filter(
|
channel.inharmList = channel.inharmList.filter(
|
||||||
(item: any) => item.inharm !== '' || item.famp !== 0 || item.fphase !== 0
|
(item: any) => item.inharm !== '' || item.famp !== 0 || item.fphase !== 0
|
||||||
)
|
)
|
||||||
@@ -365,40 +526,61 @@ const handleHarmData = () => {
|
|||||||
// 打开弹窗,可能是新增,也可能是编辑
|
// 打开弹窗,可能是新增,也可能是编辑
|
||||||
const open = (sign: string, row: any) => {
|
const open = (sign: string, row: any) => {
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
|
|
||||||
dialogTitle.value = sign === 'add' ? '新增检测项目信息' : '编辑检测项目信息'
|
|
||||||
// 添加选择检测项目
|
|
||||||
tabChildren.value = props.options.filter(item => item.value == props.activeName)[0].children || []
|
|
||||||
// subType.value = tabChildren.value[0].code || ''
|
|
||||||
if (sign == 'add') {
|
|
||||||
form.value.subType = props.childActiveName == '' ? tabChildren.value[0].code || '' : props.childActiveName
|
|
||||||
} else {
|
|
||||||
form.value = setharmList(JSON.parse(JSON.stringify(row)))
|
|
||||||
}
|
|
||||||
handleRowClick({ name: 'L1', sort: 0 }, { label: '相别' })
|
|
||||||
dictStore.getDictData('Script_Value_Type')
|
|
||||||
valueCode.value = dictStore
|
valueCode.value = dictStore
|
||||||
.getDictData('Script_Value_Type')
|
.getDictData('Script_Value_Type')
|
||||||
.filter(item => item.id == props.formContent.valueType)[0].code
|
.filter(item => item.id == props.formContent.valueType)[0].code
|
||||||
|
dialogTitle.value = sign === 'add' ? '新增检测项目信息' : '编辑检测项目信息'
|
||||||
|
// 添加选择检测项目
|
||||||
|
tabChildren.value = JSON.parse(
|
||||||
|
JSON.stringify(props.options.filter(item => item.value == props.activeName)[0].children || [])
|
||||||
|
)
|
||||||
|
|
||||||
|
// 判断是否存在 code 在 targetCodes 中
|
||||||
|
const hasTargetCode = tabChildren.value.some(item =>
|
||||||
|
['Base_0_10', 'Base_20_85', 'Base_110_200'].includes(item.code)
|
||||||
|
)
|
||||||
|
if (hasTargetCode) {
|
||||||
|
tabChildren.value.unshift({
|
||||||
|
code: 'Base',
|
||||||
|
label: '额定工作条件下的检测',
|
||||||
|
value: '999999999999999999'
|
||||||
|
})
|
||||||
|
tabChildren.value = tabChildren.value.filter(
|
||||||
|
item => item.code !== 'Base_0_10' && item.code !== 'Base_20_85' && item.code !== 'Base_110_200'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// subType.value = tabChildren.value[0].code || ''
|
||||||
|
if (sign == 'add') {
|
||||||
|
form.value.subType =
|
||||||
|
props.childActiveName == ''
|
||||||
|
? JSON.parse(JSON.stringify(tabChildren.value[0].code)) || ''
|
||||||
|
: JSON.parse(JSON.stringify(props.childActiveName))
|
||||||
|
|
||||||
|
if (valueCode.value == 'Absolute') {
|
||||||
|
form.value.channelList.forEach((item: any) => {
|
||||||
|
item.famp = 0
|
||||||
|
item.fphase = 0
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
form.value = setharmList(JSON.parse(JSON.stringify(row)))
|
||||||
|
copyRowList.value = JSON.parse(JSON.stringify(row))
|
||||||
|
}
|
||||||
|
if (['Base_0_10', 'Base_20_85', 'Base_110_200'].includes(form.value.subType)) {
|
||||||
|
form.value.subType = 'Base'
|
||||||
|
}
|
||||||
|
|
||||||
|
handleRowClick({ name: 'L1', sort: 0 }, { label: '相别' })
|
||||||
|
dictStore.getDictData('Script_Value_Type')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断后台没有谐波,简谐波值 用于回显
|
// 判断后台没有谐波,简谐波值 用于回显
|
||||||
|
|
||||||
const setharmList = (row: any) => {
|
const setharmList = (row: any) => {
|
||||||
row.channelList.forEach((item: any) => {
|
row.channelList.forEach((item: any) => {
|
||||||
let harmList = []
|
|
||||||
|
|
||||||
for (let i = 2; i < 51; i++) {
|
|
||||||
let data = item.harmList.filter((harm: any) => harm.harm == i)
|
|
||||||
if (data.length > 0) {
|
|
||||||
harmList.push({ harm: i, famp: data[0].famp, fphase: data[0].fphase })
|
|
||||||
} else {
|
|
||||||
harmList.push({ harm: i, famp: 0, fphase: 0 })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
item.harmList = harmList
|
|
||||||
|
|
||||||
if (item.inharmList.length == 0) {
|
if (item.inharmList.length == 0) {
|
||||||
item.inharmList.push({ inharm: 0, famp: 0, fphase: 0 })
|
item.inharmList.push({ inharm: '', famp: 0, fphase: 0 })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -408,12 +590,12 @@ const setharmList = (row: any) => {
|
|||||||
const copyRow = (num: number, index: number) => {
|
const copyRow = (num: number, index: number) => {
|
||||||
form.value.channelList[index] = JSON.parse(JSON.stringify(form.value.channelList[num]))
|
form.value.channelList[index] = JSON.parse(JSON.stringify(form.value.channelList[num]))
|
||||||
form.value.channelList[index + 1] = JSON.parse(JSON.stringify(form.value.channelList[num + 1]))
|
form.value.channelList[index + 1] = JSON.parse(JSON.stringify(form.value.channelList[num + 1]))
|
||||||
form.value.channelList[num].channelType == 'Ua'
|
form.value.channelList[0].channelType = 'Ua'
|
||||||
? (form.value.channelList[index].channelType = 'Ub')
|
form.value.channelList[1].channelType = 'Ia'
|
||||||
: (form.value.channelList[index].channelType = 'Uc')
|
form.value.channelList[2].channelType = 'Ub'
|
||||||
form.value.channelList[num + 1].channelType == 'Ia'
|
form.value.channelList[3].channelType = 'Ia'
|
||||||
? (form.value.channelList[index + 1].channelType = 'Ib')
|
form.value.channelList[4].channelType = 'Uc'
|
||||||
: (form.value.channelList[index + 1].channelType = 'Ic')
|
form.value.channelList[5].channelType = 'Ic'
|
||||||
key.value += 1
|
key.value += 1
|
||||||
ElMessage.success({
|
ElMessage.success({
|
||||||
message: '复制成功!',
|
message: '复制成功!',
|
||||||
@@ -480,4 +662,10 @@ defineExpose({ open })
|
|||||||
:deep(.el-carousel__arrow) {
|
:deep(.el-carousel__arrow) {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
:deep(.el-tabs--border-card > .el-tabs__content) {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
:deep(.el-table__body) {
|
||||||
|
border-top: var(--el-table-border);
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
<Commun
|
<Commun
|
||||||
:activeName="activeName"
|
:activeName="activeName"
|
||||||
:formContent="props.formContent"
|
:formContent="props.formContent"
|
||||||
|
:options="props.options"
|
||||||
style="width: 400px"
|
style="width: 400px"
|
||||||
:disabled="tab.children.length == 0 ? false : true"
|
:disabled="tab.children.length == 0 ? false : true"
|
||||||
ref="communRef"
|
ref="communRef"
|
||||||
@@ -65,36 +66,50 @@
|
|||||||
>
|
>
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<table class="tableL">
|
<table class="tableL">
|
||||||
<tr>
|
<tbody>
|
||||||
<td class="theFirst">V</td>
|
<tr>
|
||||||
<td>
|
<td class="theFirst">V</td>
|
||||||
{{
|
<td>
|
||||||
'电压=' +
|
{{
|
||||||
row.channelList[item.num]?.famp +
|
row.channelList[item.num].famp == null
|
||||||
(valueCode == 'Absolute' ? 'V' : '%')
|
? '/'
|
||||||
}}
|
: '电压=' +
|
||||||
</td>
|
row.channelList[item.num]?.famp +
|
||||||
<td>
|
(valueCode == 'Absolute' ? 'V' : '%')
|
||||||
{{ '相角=' + row.channelList[item.num]?.fphase + '°' }}
|
}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
<td>
|
||||||
<tr>
|
{{
|
||||||
<td class="theFirst">I</td>
|
row.channelList[item.num].fphase == null
|
||||||
<td>
|
? '/'
|
||||||
{{
|
: '相角=' +
|
||||||
'电流=' +
|
row.channelList[item.num].fphase +
|
||||||
row.channelList[item.num + 1]?.famp +
|
'°'
|
||||||
(valueCode == 'Absolute' ? 'V' : '%')
|
}}
|
||||||
}}
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
<td>
|
<tr>
|
||||||
{{
|
<td class="theFirst">I</td>
|
||||||
'相角=' +
|
<td>
|
||||||
row.channelList[item.num + 1]?.fphase +
|
{{
|
||||||
'°'
|
row.channelList[item.num + 1].famp == null
|
||||||
}}
|
? '/'
|
||||||
</td>
|
: '电流=' +
|
||||||
</tr>
|
row.channelList[item.num + 1].famp +
|
||||||
|
(valueCode == 'Absolute' ? 'V' : '%')
|
||||||
|
}}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{
|
||||||
|
row.channelList[item.num + 1].fphase == null
|
||||||
|
? '/'
|
||||||
|
: '相角=' +
|
||||||
|
row.channelList[item.num + 1].fphase +
|
||||||
|
'°'
|
||||||
|
}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -181,6 +196,7 @@ import { CheckData } from '@/api/check/interface'
|
|||||||
import { dlsDetails, deleteDtls, updateDtls, addScriptDtls, checkDataList } from '@/api/device/testScript'
|
import { dlsDetails, deleteDtls, updateDtls, addScriptDtls, checkDataList } from '@/api/device/testScript'
|
||||||
import { useDictStore } from '@/stores/modules/dict'
|
import { useDictStore } from '@/stores/modules/dict'
|
||||||
import { useHandleData } from '@/hooks/useHandleData'
|
import { useHandleData } from '@/hooks/useHandleData'
|
||||||
|
import { scriptDtlsCheckDataList } from '@/api/device/testScript/index'
|
||||||
interface TabOption {
|
interface TabOption {
|
||||||
label?: string
|
label?: string
|
||||||
name?: string
|
name?: string
|
||||||
@@ -273,9 +289,15 @@ const getCommunication = () => {
|
|||||||
const tabChange = () => {
|
const tabChange = () => {
|
||||||
if (copyActiveName.value != activeName.value) {
|
if (copyActiveName.value != activeName.value) {
|
||||||
copyActiveName.value == activeName.value
|
copyActiveName.value == activeName.value
|
||||||
childActiveName.value = ''
|
|
||||||
childActiveName.value =
|
if (
|
||||||
tabData.value.filter((item: any) => item.value == activeName.value)[0]?.children[0]?.value || ''
|
tabData.value
|
||||||
|
.filter((item: any) => item.value == activeName.value)[0]
|
||||||
|
?.children.filter((item: any) => item.value == childActiveName.value).length == 0
|
||||||
|
) {
|
||||||
|
childActiveName.value =
|
||||||
|
tabData.value.filter((item: any) => item.value == activeName.value)[0]?.children[0]?.value || ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
inquireTable()
|
inquireTable()
|
||||||
}
|
}
|
||||||
@@ -308,10 +330,26 @@ const openDialog = (titleType: string, row: Partial<TestScript.ResTestScript> =
|
|||||||
}, 0)
|
}, 0)
|
||||||
}
|
}
|
||||||
// 复制
|
// 复制
|
||||||
const copyRow = (row: any) => {
|
const copyRow = async (row: any) => {
|
||||||
|
let checkDataList: any = []
|
||||||
|
await communRef.value[0]?.getData().forEach((item: any) => {
|
||||||
|
item.children.forEach((k: any) => {
|
||||||
|
if (k.enable != 0 || k.errorFlag != 0) {
|
||||||
|
checkDataList.push({
|
||||||
|
pid: k.pid,
|
||||||
|
valueType: k.id,
|
||||||
|
dataType: k.dataType,
|
||||||
|
enable: k.enable,
|
||||||
|
errorFlag: k.errorFlag
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
let { data } = await scriptDtlsCheckDataList({ checkDataList: checkDataList, ...row, retryCompute: true })
|
||||||
let copyRow = JSON.parse(JSON.stringify(row))
|
let copyRow = JSON.parse(JSON.stringify(row))
|
||||||
delete copyRow.index
|
delete copyRow.index
|
||||||
addScriptDtls({ ...copyRow, scriptType: activeName.value }).then(res => {
|
|
||||||
|
await addScriptDtls({ ...copyRow, scriptType: activeName.value, checkDataList: data }).then(res => {
|
||||||
if (res.code === 'A0000') {
|
if (res.code === 'A0000') {
|
||||||
ElMessage.success({
|
ElMessage.success({
|
||||||
message: '复制成功!',
|
message: '复制成功!',
|
||||||
|
|||||||
@@ -27,10 +27,21 @@
|
|||||||
<div class="right-editor">
|
<div class="right-editor">
|
||||||
<!-- 右侧编辑区域内容 -->
|
<!-- 右侧编辑区域内容 -->
|
||||||
<el-form-item label-width="120px" label="设定幅度(%)">
|
<el-form-item label-width="120px" label="设定幅度(%)">
|
||||||
<el-input v-model="form[0].dipData.ftransValue" style="width: 150px" :disabled="!form[0].dipFlag"/>
|
<el-input
|
||||||
|
type="number"
|
||||||
|
@input="handleInput"
|
||||||
|
v-model="form[0].dipData.ftransValue"
|
||||||
|
style="width: 150px"
|
||||||
|
:disabled="!form[0].dipFlag"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label-width="120px" label="持续时间(周波)">
|
<el-form-item label-width="120px" label="持续时间(周波)">
|
||||||
<el-input v-model="form[0].dipData.retainTime" style="width: 150px" :disabled="!form[0].dipFlag"/>
|
<el-input
|
||||||
|
type="number"
|
||||||
|
v-model="form[0].dipData.retainTime"
|
||||||
|
style="width: 150px"
|
||||||
|
:disabled="!form[0].dipFlag"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -50,6 +61,13 @@ const form: any = computed({
|
|||||||
},
|
},
|
||||||
set(value) {}
|
set(value) {}
|
||||||
})
|
})
|
||||||
|
const handleInput = value => {
|
||||||
|
if (value < 0) {
|
||||||
|
props.childForm[0].dipData.ftransValue = 0
|
||||||
|
} else if (value > 200) {
|
||||||
|
props.childForm[0].dipData.ftransValue = 200
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@@ -5,20 +5,6 @@
|
|||||||
<!-- 全局设置菜单内容 Modulation-->
|
<!-- 全局设置菜单内容 Modulation-->
|
||||||
|
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<el-form-item label="标准值">
|
|
||||||
<el-select
|
|
||||||
v-model="form[0].flickerData.flickerValue"
|
|
||||||
style="width: 180px"
|
|
||||||
placeholder="请选择标准值"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in standard"
|
|
||||||
:key="item.label"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item abel-width="180px">
|
<el-form-item abel-width="180px">
|
||||||
<template #label>
|
<template #label>
|
||||||
<el-select
|
<el-select
|
||||||
@@ -39,7 +25,6 @@
|
|||||||
placeholder="请选择波动类型"
|
placeholder="请选择波动类型"
|
||||||
style="width: 180px"
|
style="width: 180px"
|
||||||
filterable
|
filterable
|
||||||
allow-create
|
|
||||||
v-model="form[0].flickerData.fchagFre"
|
v-model="form[0].flickerData.fchagFre"
|
||||||
:disabled="!form[0].flickerFlag || props.childForm[0].flickerData.flickerValue == null"
|
:disabled="!form[0].flickerFlag || props.childForm[0].flickerData.flickerValue == null"
|
||||||
@change="changeWaveType"
|
@change="changeWaveType"
|
||||||
@@ -105,21 +90,27 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const standard = [
|
|
||||||
{
|
|
||||||
label: '1',
|
|
||||||
value: '1'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '3',
|
|
||||||
value: '3'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
const waveList = [
|
const waveList = [
|
||||||
{
|
{
|
||||||
label: '变动频度(次/min)',
|
label: '变动频度(次/min)',
|
||||||
value: 'CPM',
|
value: 'CPM',
|
||||||
children1: [
|
children: [
|
||||||
|
{
|
||||||
|
fchagFre: '0.1',
|
||||||
|
fchagValue: '7.4'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.2',
|
||||||
|
fchagValue: '4.58'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.4',
|
||||||
|
fchagValue: '3.54'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.6',
|
||||||
|
fchagValue: '3.2'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '1',
|
fchagFre: '1',
|
||||||
fchagValue: '2.724'
|
fchagValue: '2.724'
|
||||||
@@ -128,42 +119,116 @@ const waveList = [
|
|||||||
fchagFre: '2',
|
fchagFre: '2',
|
||||||
fchagValue: '2.211'
|
fchagValue: '2.211'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '3',
|
||||||
|
fchagValue: '1.95'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '5',
|
||||||
|
fchagValue: '1.64'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '7',
|
fchagFre: '7',
|
||||||
fchagValue: '1.459'
|
fchagValue: '1.459'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '10',
|
||||||
|
fchagValue: '1.29'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '22',
|
||||||
|
fchagValue: '1.02'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '39',
|
fchagFre: '39',
|
||||||
fchagValue: '0.906'
|
fchagValue: '0.906'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '48',
|
||||||
|
fchagValue: '0.87'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '68',
|
||||||
|
fchagValue: '0.81'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '110',
|
fchagFre: '110',
|
||||||
fchagValue: '0.725'
|
fchagValue: '0.725'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '176',
|
||||||
|
fchagValue: '0.64'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '273',
|
||||||
|
fchagValue: '0.56'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '375',
|
||||||
|
fchagValue: '0.5'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '480',
|
||||||
|
fchagValue: '0.48'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '585',
|
||||||
|
fchagValue: '0.42'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '682',
|
||||||
|
fchagValue: '0.37'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '796',
|
||||||
|
fchagValue: '0.32'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '1020',
|
||||||
|
fchagValue: '0.28'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '1055',
|
||||||
|
fchagValue: '0.28'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '1200',
|
||||||
|
fchagValue: '0.29'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '1390',
|
||||||
|
fchagValue: '0.34'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '1620',
|
fchagFre: '1620',
|
||||||
fchagValue: '0.402'
|
fchagValue: '0.402'
|
||||||
}
|
|
||||||
],
|
|
||||||
children3: [
|
|
||||||
{
|
|
||||||
fchagFre: '7',
|
|
||||||
fchagValue: '4.377'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '110',
|
fchagFre: '2400',
|
||||||
fchagValue: '2.175'
|
fchagValue: '0.77'
|
||||||
},
|
|
||||||
{
|
|
||||||
fchagFre: '1620',
|
|
||||||
fchagValue: '1.206'
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '变动频率(HZ)',
|
label: '变动频率(HZ)',
|
||||||
value: 'HZ',
|
value: 'HZ',
|
||||||
children1: [
|
children: [
|
||||||
|
{
|
||||||
|
fchagFre: '0.000833',
|
||||||
|
fchagValue: '7.4'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.001667',
|
||||||
|
fchagValue: '4.58'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.003333',
|
||||||
|
fchagValue: '3.54'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.005000',
|
||||||
|
fchagValue: '3.2'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '0.008333',
|
fchagFre: '0.008333',
|
||||||
fchagValue: '2.724'
|
fchagValue: '2.724'
|
||||||
@@ -172,67 +237,121 @@ const waveList = [
|
|||||||
fchagFre: '0.016667',
|
fchagFre: '0.016667',
|
||||||
fchagValue: '2.211'
|
fchagValue: '2.211'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.025000',
|
||||||
|
fchagValue: '1.95'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.041667',
|
||||||
|
fchagValue: '1.64'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '0.058333',
|
fchagFre: '0.058333',
|
||||||
fchagValue: '1.459'
|
fchagValue: '1.459'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '0.325',
|
fchagFre: '0.083333',
|
||||||
|
fchagValue: '1.29'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.183333',
|
||||||
|
fchagValue: '1.02'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.325000',
|
||||||
fchagValue: '0.906'
|
fchagValue: '0.906'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '0.916',
|
fchagFre: '0.400000',
|
||||||
|
fchagValue: '0.87'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.566667',
|
||||||
|
fchagValue: '0.81'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '0.916667',
|
||||||
fchagValue: '0.725'
|
fchagValue: '0.725'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '13.5',
|
fchagFre: '1.466667',
|
||||||
|
fchagValue: '0.64'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '2.275000',
|
||||||
|
fchagValue: '0.56'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '3.125000',
|
||||||
|
fchagValue: '0.5'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '4.000000',
|
||||||
|
fchagValue: '0.48'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '4.875000',
|
||||||
|
fchagValue: '0.42'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '5.683333',
|
||||||
|
fchagValue: '0.37'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '6.633333',
|
||||||
|
fchagValue: '0.32'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '8.500000',
|
||||||
|
fchagValue: '0.28'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '8.791667',
|
||||||
|
fchagValue: '0.28'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '10.000000',
|
||||||
|
fchagValue: '0.29'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '11.583333',
|
||||||
|
fchagValue: '0.34'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
fchagFre: '13.500000',
|
||||||
fchagValue: '0.402'
|
fchagValue: '0.402'
|
||||||
}
|
|
||||||
],
|
|
||||||
children3: [
|
|
||||||
{
|
|
||||||
fchagFre: '0.058333',
|
|
||||||
fchagValue: '4.377'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
fchagFre: '0.916',
|
fchagFre: '20.000000',
|
||||||
fchagValue: '2.175'
|
fchagValue: '0.77'
|
||||||
},
|
|
||||||
{
|
|
||||||
fchagFre: '13.5',
|
|
||||||
fchagValue: '1.206'
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
const waveChildrenList = computed(() => {
|
const waveChildrenList = computed(() => {
|
||||||
return waveList.filter((item: any) => item.value === form.value[0].flickerData.waveType)[0][
|
return waveList.filter((item: any) => item.value === form.value[0].flickerData.waveType)[0].children
|
||||||
props.childForm[0].flickerData.flickerValue == '1' ? 'children1' : 'children3'
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
const changeLable = e => {
|
const changeLable = e => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (props.childForm[0].flickerData.fchagFre != '') {
|
let data = {
|
||||||
let data = waveChildrenList.value.filter((item: any) =>
|
fchagFre: '',
|
||||||
props.childForm[0].flickerData.waveType == 'CPM'
|
fchagValue: ''
|
||||||
? item.fchagFre == Math.round(props.childForm[0].flickerData.fchagFre * 120)
|
|
||||||
: (item.fchagFre - 0).toFixed(3) == (props.childForm[0].flickerData.fchagFre / 120).toFixed(3)
|
|
||||||
)
|
|
||||||
if (data.length > 0) {
|
|
||||||
props.childForm[0].flickerData.fchagValue = data[0].fchagValue
|
|
||||||
props.childForm[0].flickerData.fchagFre = data[0].fchagFre
|
|
||||||
} else {
|
|
||||||
props.childForm[0].flickerData.fchagFre =
|
|
||||||
props.childForm[0].flickerData.waveType == 'CPM'
|
|
||||||
? Math.round(props.childForm[0].flickerData.fchagFre * 120)
|
|
||||||
: (props.childForm[0].flickerData.fchagFre / 120).toFixed(3)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
waveList.forEach((item: any, i: number) => {
|
||||||
|
item.children.forEach((item1: any, j: number) => {
|
||||||
|
if (item1.fchagFre == props.childForm[0].flickerData.fchagFre) {
|
||||||
|
data = waveList[i == 0 ? 1 : 0].children[j]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
props.childForm[0].flickerData.fchagFre = data.fchagFre
|
||||||
|
props.childForm[0].flickerData.fchagValue = data.fchagValue
|
||||||
}, 100)
|
}, 100)
|
||||||
}
|
}
|
||||||
// [频率变化]
|
// [频率变化]
|
||||||
const changeWaveType = e => {
|
const changeWaveType = e => {
|
||||||
props.childForm[0].flickerData.fchagValue = waveChildrenList.value?.filter(
|
props.childForm[0].flickerData.fchagValue = waveChildrenList.value.filter(
|
||||||
(item: any) => item.fchagFre == e
|
(item: any) => item.fchagFre == e
|
||||||
)[0].fchagValue
|
)[0].fchagValue
|
||||||
}
|
}
|
||||||
@@ -246,6 +365,8 @@ const form: any = computed({
|
|||||||
},
|
},
|
||||||
set(value) {}
|
set(value) {}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
onMounted(() => {})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|||||||
@@ -2,47 +2,97 @@
|
|||||||
<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-item label="次数">
|
||||||
|
<el-select
|
||||||
|
v-model="formInline.harm"
|
||||||
|
multiple
|
||||||
|
collapse-tags
|
||||||
|
collapse-tags-tooltip
|
||||||
|
style="width: 160px"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option label="全部" value="0" />
|
||||||
|
<el-option v-for="item in 49" :key="item" :label="item + 1" :value="item + 1" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="含有率">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.famp"
|
||||||
|
type="number"
|
||||||
|
placeholder="含有率"
|
||||||
|
style="width: 80px"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="相角">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline.fphase"
|
||||||
|
type="number"
|
||||||
|
placeholder="相角"
|
||||||
|
style="width: 80px"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="onSubmit" size="small">确定</el-button>
|
||||||
|
<el-button type="primary" @click="empty(0)" size="small">清空列表</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
<!-- 电压通道内容 -->
|
<!-- 电压通道内容 -->
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<el-table :data="tableData1" border size="small" class="half-width-table">
|
<el-table :data="form[0].harmList" border stripe size="small">
|
||||||
<el-table-column prop="date" align="center" label="次数" width="60" />
|
<el-table-column prop="harm" align="center" label="次数" width="60" />
|
||||||
<el-table-column prop="date" align="center" label="谐波含有率" width="120">
|
<el-table-column prop="famp" align="center" label="谐波含有率">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row }">
|
||||||
<div class="input-label-container">
|
<el-input
|
||||||
<el-input
|
type="number"
|
||||||
type="number"
|
v-if="row.show"
|
||||||
@mousewheel.native.prevent
|
@blur="row.show = !row.show"
|
||||||
size="small"
|
v-model="row.famp"
|
||||||
v-model="form[0].harmList[$index].famp"
|
/>
|
||||||
:disabled="!form[0].harmFlag"
|
<span v-else>{{ row.famp }}%</span>
|
||||||
/>
|
|
||||||
<label>%</label>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="谐波相角" align="center" width="120">
|
<el-table-column prop="fphase" label="谐波相角" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-input
|
||||||
|
type="number"
|
||||||
|
v-if="row.show"
|
||||||
|
@blur="row.show = !row.show"
|
||||||
|
v-model="row.fphase"
|
||||||
|
/>
|
||||||
|
<span v-else>{{ row.fphase }}°</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<div class="input-label-container">
|
<el-button
|
||||||
<el-input
|
type="primary"
|
||||||
type="number"
|
link
|
||||||
@mousewheel.native.prevent
|
:icon="EditPen"
|
||||||
size="small"
|
v-if="!row.show"
|
||||||
v-model="form[0].harmList[$index].fphase"
|
@click="row.show = true"
|
||||||
:disabled="!form[0].harmFlag"
|
>
|
||||||
/>
|
编辑
|
||||||
<label>°</label>
|
</el-button>
|
||||||
</div>
|
<el-button type="primary" link :icon="Check" v-else @click="row.show = false">
|
||||||
|
保存
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" link :icon="Delete" @click="HarmFlagDelete(0, $index)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-table :data="tableData2" border size="small" class="half-width-table">
|
<!-- <el-table :data="tableData2" border size="small" class="half-width-table">
|
||||||
<el-table-column prop="date" label="次数" align="center" width="60" />
|
<el-table-column prop="date" label="次数" align="center" width="60" />
|
||||||
<el-table-column prop="date" label="谐波含有率" align="center" width="120">
|
<el-table-column prop="date" label="谐波含有率" align="center" width="120">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<div class="input-label-container">
|
<div class="input-label-container">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form[0].harmList[$index + 24].famp"
|
v-model="form[0].harmList[$index + 24].famp"
|
||||||
:disabled="!form[0].harmFlag"
|
:disabled="!form[0].harmFlag"
|
||||||
@@ -56,7 +106,6 @@
|
|||||||
<div class="input-label-container">
|
<div class="input-label-container">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form[0].harmList[$index + 24].fphase"
|
v-model="form[0].harmList[$index + 24].fphase"
|
||||||
:disabled="!form[0].harmFlag"
|
:disabled="!form[0].harmFlag"
|
||||||
@@ -65,73 +114,93 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table> -->
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<el-tabs type="border-card" style="height: 100%">
|
<el-tabs type="border-card" style="height: 100%">
|
||||||
<el-tab-pane label="电流通道">
|
<el-tab-pane label="电流通道">
|
||||||
|
<el-form :inline="true" :model="formInline1" :disabled="!props.childForm[1].harmFlag">
|
||||||
|
<el-form-item label="次数">
|
||||||
|
<el-select
|
||||||
|
v-model="formInline1.harm"
|
||||||
|
multiple
|
||||||
|
collapse-tags
|
||||||
|
collapse-tags-tooltip
|
||||||
|
style="width: 160px"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
>
|
||||||
|
<el-option label="全部" value="0" />
|
||||||
|
<el-option v-for="item in 49" :key="item" :label="item + 1" :value="item + 1" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="含有率">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline1.famp"
|
||||||
|
type="number"
|
||||||
|
placeholder="含有率"
|
||||||
|
style="width: 80px"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="相角">
|
||||||
|
<el-input
|
||||||
|
v-model="formInline1.fphase"
|
||||||
|
type="number"
|
||||||
|
placeholder="相角"
|
||||||
|
style="width: 80px"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" @click="onSubmit1" size="small">确定</el-button>
|
||||||
|
<el-button type="primary" @click="empty(1)" size="small">清空列表</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
<!-- 电流通道内容 -->
|
<!-- 电流通道内容 -->
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<el-table :data="tableData1" border size="small" class="half-width-table">
|
<el-table :data="form[1].harmList" border stripe size="small">
|
||||||
<el-table-column prop="date" label="次数" align="center" width="60" />
|
<el-table-column prop="harm" align="center" label="次数" width="60" />
|
||||||
<el-table-column prop="date" label="谐波含有率" align="center" width="120">
|
<el-table-column prop="famp" align="center" label="谐波含有率">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row }">
|
||||||
<div class="input-label-container">
|
<el-input
|
||||||
<el-input
|
type="number"
|
||||||
type="number"
|
v-if="row.show"
|
||||||
@mousewheel.native.prevent
|
@blur="row.show = !row.show"
|
||||||
size="small"
|
v-model="row.famp"
|
||||||
v-model="form[1].harmList[$index].famp"
|
/>
|
||||||
:disabled="!form[1].harmFlag"
|
<span v-else>{{ row.famp }}%</span>
|
||||||
/>
|
|
||||||
<label>%</label>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" align="center" label="谐波相角" width="120">
|
<el-table-column prop="fphase" label="谐波相角" align="center">
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row }">
|
||||||
<div class="input-label-container">
|
<el-input
|
||||||
<el-input
|
type="number"
|
||||||
type="number"
|
v-if="row.show"
|
||||||
@mousewheel.native.prevent
|
@blur="row.show = !row.show"
|
||||||
size="small"
|
v-model="row.fphase"
|
||||||
v-model="form[1].harmList[$index].fphase"
|
/>
|
||||||
:disabled="!form[1].harmFlag"
|
<span v-else>{{ row.fphase }}°</span>
|
||||||
/>
|
|
||||||
<label>°</label>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
<el-table-column label="操作" align="center">
|
||||||
<el-table :data="tableData2" border size="small" class="half-width-table">
|
|
||||||
<el-table-column prop="date" label="次数" align="center" width="60" />
|
|
||||||
<el-table-column prop="date" label="谐波含有率" align="center" width="120">
|
|
||||||
<template #default="{ row, $index }">
|
<template #default="{ row, $index }">
|
||||||
<div class="input-label-container">
|
<el-button
|
||||||
<el-input
|
type="primary"
|
||||||
type="number"
|
link
|
||||||
@mousewheel.native.prevent
|
:icon="EditPen"
|
||||||
size="small"
|
v-if="!row.show"
|
||||||
v-model="form[1].harmList[$index + 24].famp"
|
@click="row.show = true"
|
||||||
:disabled="!form[1].harmFlag"
|
>
|
||||||
/>
|
编辑
|
||||||
<label>%</label>
|
</el-button>
|
||||||
</div>
|
<el-button type="primary" link :icon="Check" v-else @click="row.show = false">
|
||||||
</template>
|
保存
|
||||||
</el-table-column>
|
</el-button>
|
||||||
<el-table-column prop="name" label="谐波相角" align="center" width="120">
|
<el-button type="primary" link :icon="Delete" @click="HarmFlagDelete(1, $index)">
|
||||||
<template #default="{ row, $index }">
|
删除
|
||||||
<div class="input-label-container">
|
</el-button>
|
||||||
<el-input
|
|
||||||
type="number"
|
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
|
||||||
v-model="form[1].harmList[$index + 24].fphase"
|
|
||||||
:disabled="!form[1].harmFlag"
|
|
||||||
/>
|
|
||||||
<label>°</label>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -142,10 +211,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { Check, Delete, EditPen, CopyDocument } from '@element-plus/icons-vue'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
childForm: {
|
childForm: {
|
||||||
type: Array,
|
type: Array as any,
|
||||||
required: true
|
required: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -156,7 +226,16 @@ const form: any = computed({
|
|||||||
},
|
},
|
||||||
set(value) {}
|
set(value) {}
|
||||||
})
|
})
|
||||||
|
const formInline = ref({
|
||||||
|
harm: [],
|
||||||
|
famp: '',
|
||||||
|
fphase: ''
|
||||||
|
})
|
||||||
|
const formInline1 = ref({
|
||||||
|
harm: [],
|
||||||
|
famp: '',
|
||||||
|
fphase: ''
|
||||||
|
})
|
||||||
// 定义表格数据项的类型
|
// 定义表格数据项的类型
|
||||||
interface TableItem {
|
interface TableItem {
|
||||||
date: string
|
date: string
|
||||||
@@ -164,6 +243,88 @@ interface TableItem {
|
|||||||
harmonicPhase?: string
|
harmonicPhase?: string
|
||||||
name?: string
|
name?: string
|
||||||
}
|
}
|
||||||
|
const empty = (index: number) => {
|
||||||
|
props.childForm[index].harmList = []
|
||||||
|
}
|
||||||
|
const onSubmit = () => {
|
||||||
|
console.log('🚀 ~ onSubmit ~ props.childForm[0]:', props.childForm[0].harmList)
|
||||||
|
if (formInline.value.harm.length == 0 || formInline.value.famp == '' || formInline.value.fphase == '') {
|
||||||
|
ElMessage.warning('请填写值!')
|
||||||
|
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 // 间谐波相角
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
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--) {
|
||||||
|
const item = props.childForm[0].harmList[i]
|
||||||
|
// 如果 harm 还未出现过,则添加到结果数组
|
||||||
|
if (!seen.has(item.harm)) {
|
||||||
|
seen.add(item.harm)
|
||||||
|
uniqueData.unshift(item) // 添加到结果数组的开头
|
||||||
|
}
|
||||||
|
}
|
||||||
|
props.childForm[0].harmList = uniqueData.sort((a, b) => a.harm - b.harm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const onSubmit1 = () => {
|
||||||
|
if (formInline1.value.harm.length == 0 || formInline1.value.famp == '' || formInline1.value.fphase == '') {
|
||||||
|
ElMessage.warning('请填写值!')
|
||||||
|
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 // 间谐波相角
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
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--) {
|
||||||
|
const item = props.childForm[1].harmList[i]
|
||||||
|
// 如果 harm 还未出现过,则添加到结果数组
|
||||||
|
if (!seen.has(item.harm)) {
|
||||||
|
seen.add(item.harm)
|
||||||
|
uniqueData.unshift(item) // 添加到结果数组的开头
|
||||||
|
}
|
||||||
|
}
|
||||||
|
props.childForm[1].harmList = uniqueData.sort((a, b) => a.harm - b.harm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 删除
|
||||||
|
const HarmFlagDelete = (index: number, number: number) => {
|
||||||
|
props.childForm[index].harmList.splice(number, 1)
|
||||||
|
}
|
||||||
|
|
||||||
// 定义并初始化 tableData
|
// 定义并初始化 tableData
|
||||||
const tableData1 = ref<TableItem[]>([])
|
const tableData1 = ref<TableItem[]>([])
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
<div class="input-label-container">
|
<div class="input-label-container">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form[0].inharmList[$index].famp"
|
v-model="form[0].inharmList[$index].famp"
|
||||||
:disabled="!form[0].inHarmFlag"
|
:disabled="!form[0].inHarmFlag"
|
||||||
@@ -37,7 +36,6 @@
|
|||||||
<div class="input-label-container">
|
<div class="input-label-container">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form[0].inharmList[$index].fphase"
|
v-model="form[0].inharmList[$index].fphase"
|
||||||
:disabled="!form[0].inHarmFlag"
|
:disabled="!form[0].inHarmFlag"
|
||||||
@@ -89,7 +87,6 @@
|
|||||||
<div class="input-label-container">
|
<div class="input-label-container">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form[1].inharmList[$index].famp"
|
v-model="form[1].inharmList[$index].famp"
|
||||||
:disabled="!form[1].inHarmFlag"
|
:disabled="!form[1].inHarmFlag"
|
||||||
@@ -103,7 +100,6 @@
|
|||||||
<div class="input-label-container">
|
<div class="input-label-container">
|
||||||
<el-input
|
<el-input
|
||||||
type="number"
|
type="number"
|
||||||
@mousewheel.native.prevent
|
|
||||||
size="small"
|
size="small"
|
||||||
v-model="form[1].inharmList[$index].fphase"
|
v-model="form[1].inharmList[$index].fphase"
|
||||||
:disabled="!form[1].inHarmFlag"
|
:disabled="!form[1].inHarmFlag"
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ const save = () => {
|
|||||||
if (res.code === 'A0000') {
|
if (res.code === 'A0000') {
|
||||||
ElMessage.success({ message: res.message })
|
ElMessage.success({ message: res.message })
|
||||||
formContent.value.id = res.data
|
formContent.value.id = res.data
|
||||||
titleType.value == '编辑检测脚本'
|
titleType.value = '编辑检测脚本'
|
||||||
show.value = true
|
show.value = true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -179,8 +179,11 @@ const treeInfo = async (currentMode: string) => {
|
|||||||
sort: 0
|
sort: 0
|
||||||
}
|
}
|
||||||
const result = await getDictTreeByCode(data)
|
const result = await getDictTreeByCode(data)
|
||||||
const allOptions = convertToOptions(result.data as Dict.ResDictTree[])
|
const result1 = (await getDictTreeByCode({ ...data, code: 'Script_Error' })).data[0].children
|
||||||
secondLevelOptions.push(...(allOptions[0]?.children || []))
|
const allOptions = await convertToOptions(result.data as Dict.ResDictTree[])
|
||||||
|
console.log('🚀 ~ treeInfo ~ result1:', allOptions[0]?.children)
|
||||||
|
const setallTree = await setTree(allOptions[0]?.children, result1)
|
||||||
|
secondLevelOptions.push(...(setallTree || []))
|
||||||
modeId.value = dictStore.getDictData('Pattern').find(item => item.name === currentMode)?.id
|
modeId.value = dictStore.getDictData('Pattern').find(item => item.name === currentMode)?.id
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,7 +196,16 @@ onMounted(() => {
|
|||||||
await open(data.title, data.row)
|
await open(data.title, data.row)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
const setTree = async (data, data1) => {
|
||||||
|
data.forEach(item => {
|
||||||
|
data1.forEach(item1 => {
|
||||||
|
if (item.label.replace(/准确度|检测/g, '') == item1.name) {
|
||||||
|
item.value = item1.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return data
|
||||||
|
}
|
||||||
// 转换函数
|
// 转换函数
|
||||||
const convertToOptions = (dictTree: Dict.ResDictTree[]): CascaderOption[] => {
|
const convertToOptions = (dictTree: Dict.ResDictTree[]): CascaderOption[] => {
|
||||||
return dictTree.map(item => ({
|
return dictTree.map(item => ({
|
||||||
|
|||||||
@@ -9,37 +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
|
<el-input type="number" v-model="form[0].famp" :disabled="!form[0].channelFlag" />
|
||||||
type="number"
|
|
||||||
@mousewheel.native.prevent
|
|
||||||
v-model="form[0].famp"
|
|
||||||
:disabled="!form[0].channelFlag"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电压相角(°)">
|
<el-form-item label="电压相角(°)">
|
||||||
<el-input
|
<el-input type="number" v-model="form[0].fphase" :disabled="!form[0].channelFlag" />
|
||||||
type="number"
|
|
||||||
@mousewheel.native.prevent
|
|
||||||
v-model="form[0].fphase"
|
|
||||||
:disabled="!form[0].channelFlag"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="`电流有效值(${valueCode == 'Absolute' ? 'A' : '%'})`">
|
<el-form-item :label="`电流有效值(${valueCode == 'Absolute' ? 'A' : '%'})`">
|
||||||
<el-input
|
<el-input type="number" v-model="form[1].famp" :disabled="!form[1].channelFlag" />
|
||||||
type="number"
|
|
||||||
@mousewheel.native.prevent
|
|
||||||
v-model="form[1].famp"
|
|
||||||
:disabled="!form[1].channelFlag"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="电流相角(°)">
|
<el-form-item label="电流相角(°)">
|
||||||
<el-input
|
<el-input type="number" v-model="form[1].fphase" :disabled="!form[1].channelFlag" />
|
||||||
type="number"
|
|
||||||
@mousewheel.native.prevent
|
|
||||||
v-model="form[1].fphase"
|
|
||||||
:disabled="!form[1].channelFlag"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user