186 lines
5.9 KiB
Vue
186 lines
5.9 KiB
Vue
<template>
|
||
<div>
|
||
<el-table
|
||
:data="tableData"
|
||
:header-cell-style="{
|
||
textAlign: 'center',
|
||
backgroundColor: 'var(--el-color-primary)',
|
||
color: '#fff'
|
||
}"
|
||
stripe
|
||
:height="`calc(100vh - ${props.shrink ? '535px' : '480px'})`"
|
||
:style="{ overflow: 'hidden' }"
|
||
row-key="id"
|
||
:expand-row-keys="[props.activeName]"
|
||
>
|
||
<el-table-column prop="name" label="指标" show-overflow-tooltip />
|
||
<el-table-column align="center" label="参与误差比较" width="110px">
|
||
<template #default="{ row }">
|
||
<el-switch
|
||
v-model="row.errorFlag"
|
||
v-if="row.show"
|
||
:active-value="1"
|
||
:inactive-value="0"
|
||
:disabled="row.disabled || disabled"
|
||
>
|
||
<template #active-action>
|
||
<span>√</span>
|
||
</template>
|
||
<template #inactive-action>
|
||
<span>×</span>
|
||
</template>
|
||
</el-switch>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="是否启用" width="85px">
|
||
<template #default="{ row }">
|
||
<el-switch
|
||
v-model="row.enable"
|
||
v-if="row.show"
|
||
:active-value="1"
|
||
:inactive-value="0"
|
||
:disabled="row.disabled || disabled"
|
||
>
|
||
<template #active-action>
|
||
<span>√</span>
|
||
</template>
|
||
<template #inactive-action>
|
||
<span>×</span>
|
||
</template>
|
||
</el-switch>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</template>
|
||
<script setup lang="ts">
|
||
import { ref, reactive } from 'vue'
|
||
import type { Dict } from '@/api/system/dictionary/interface'
|
||
import { getDictTreeByCode } from '@/api/system/dictionary/dictTree'
|
||
import { checkDataList } from '@/api/device/testScript'
|
||
|
||
const props = defineProps({
|
||
activeName: {
|
||
type: String,
|
||
required: true
|
||
},
|
||
formContent: {
|
||
type: Object,
|
||
required: true
|
||
},
|
||
disabled: {
|
||
type: Boolean,
|
||
default: true
|
||
},
|
||
options: {
|
||
type: Array,
|
||
required: true
|
||
},
|
||
shrink: {
|
||
type: Boolean
|
||
}
|
||
})
|
||
const tableData = ref<any[]>([])
|
||
const info = async () => {
|
||
let checkData: any = []
|
||
let title = props.options.filter((i: any) => i.value == props.activeName)[0]
|
||
|
||
await checkDataList({
|
||
scriptId: props.formContent.id,
|
||
scriptType: props.activeName
|
||
}).then((res: any) => {
|
||
checkData = res.data
|
||
})
|
||
|
||
let { data } = await getDictTreeByCode({
|
||
name: '',
|
||
id: '',
|
||
pid: '',
|
||
pids: '',
|
||
code: 'Script_Error',
|
||
sort: 0
|
||
})
|
||
|
||
data[0].children.forEach((item: any, i: number) => {
|
||
tableData.value.push({
|
||
id: item.id,
|
||
name: item.name,
|
||
show: false,
|
||
children: []
|
||
})
|
||
item.children.forEach((k: any) => {
|
||
let childrenList: any = []
|
||
checkData.forEach((j: any) => {
|
||
if (j.valueType == k.id) {
|
||
childrenList.push(j)
|
||
}
|
||
})
|
||
if (childrenList.length > 0) {
|
||
tableData.value[i].children.push({
|
||
id: k.id,
|
||
pid: item.id,
|
||
name: k.name,
|
||
pname: item.name,
|
||
dataType:
|
||
item.name == '谐波有功功率'
|
||
? 'avg'
|
||
: item.name == '闪变'
|
||
? 'avg'
|
||
: item.name == '暂态'
|
||
? 'avg'
|
||
: 'real',
|
||
show: true,
|
||
errorFlag: childrenList[0].errorFlag,
|
||
enable: childrenList[0].enable
|
||
})
|
||
} else {
|
||
tableData.value[i].children.push({
|
||
id: k.id,
|
||
pid: item.id,
|
||
name: k.name,
|
||
disabled: false,
|
||
pname: item.name,
|
||
dataType: item.name =='谐波有功功率'
|
||
? 'avg'
|
||
: item.name == '闪变'
|
||
? 'avg'
|
||
: item.name == '暂态'
|
||
? 'avg'
|
||
: 'real',
|
||
show: true,
|
||
errorFlag: 0,
|
||
enable: 0
|
||
})
|
||
}
|
||
})
|
||
// 默认够选通讯脚本
|
||
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)
|
||
}
|
||
const getData = () => {
|
||
return tableData.value
|
||
}
|
||
onMounted(() => {
|
||
info()
|
||
// tableData.value = data.data[0].children || []
|
||
})
|
||
|
||
// 对外映射
|
||
defineExpose({ getData })
|
||
</script>
|
||
<style lang="scss" scoped></style>
|