12 Commits

Author SHA1 Message Date
sjl
e7c93d03aa Merge branch 'master' of http://192.168.1.22:3000/ClientApps/pqs-9100_client
# Conflicts:
#	frontend/src/views/machine/device/components/monitorTab.vue
2025-11-04 09:18:40 +08:00
sjl
a4b016ef0d 新增设备时监测点清空 2025-11-04 09:17:34 +08:00
caozehui
d329b68592 已检测过的监测点不可编辑、删除 2025-11-04 08:54:40 +08:00
贾同学
e12a1baf99 feat(device): 添加harmSysId字段支持 2025-10-30 11:12:59 +08:00
贾同学
8aae184a8b fix(device):添加谐波系统设备ID字段支持 2025-10-30 11:09:50 +08:00
贾同学
7f2275bad9 fix(home): 更新标签页切换事件处理函数 2025-10-30 11:08:37 +08:00
贾同学
aab884e524 feat(machine): 替换输入框为数字输入框 2025-10-30 10:01:02 +08:00
sjl
0215dbc875 下拉可选可输入框改成input 2025-10-30 09:47:26 +08:00
贾同学
b09a2bab10 feat(plan): 根据数据源动态显示设置项 2025-10-29 16:11:58 +08:00
贾同学
4dbcdd20df feat(plan): 闪变提示信息做大做显眼,居中显示; 2025-10-29 15:40:36 +08:00
贾同学
6fde670f96 Merge remote-tracking branch 'origin/master' 2025-10-29 14:24:41 +08:00
贾同学
ba1748830a feat(monitor):被检设备的监测点提示颜色改为红色且将符号提到上面去 2025-10-29 14:24:01 +08:00
8 changed files with 218 additions and 143 deletions

View File

@@ -89,8 +89,8 @@ export namespace Device {
boundPlanName?: string | null
assign?: number ////是否分配给检测人员 0否 1是
monitorList: Monitor.ResPqMon[]
checked: boolean // 是否已选择
disabled: boolean // 是否禁用
checked?: boolean // 是否已选择
disabled?: boolean // 是否禁用
}
export interface SelectOption {

View File

@@ -27,6 +27,7 @@ export namespace Monitor {
statInterval: number; //统计间隔
harmSysId: string; //默认与谐波系统监测点ID相同
checkFlag: number;//是否参与检测0否1是
resultType:string|null; //检测结果类型
}
/**

View File

@@ -8,7 +8,7 @@
:close-on-click-modal="false"
@close="handleClose"
>
<el-tabs v-if="dialogVisible" v-model="activeName" @tab-click="handleTabClick">
<el-tabs v-if="dialogVisible" v-model="activeName" @tab-change="handleTabChange">
<el-tab-pane
v-for="(result, index) in resultData"
:key="result.monitorId"
@@ -233,8 +233,8 @@ const getResultData = async () => {
dialogVisible.value = true
}
const handleTabClick = (tab: any) => {
activeName.value = tab.name
const handleTabChange = (name: any) => {
activeName.value = name
}
const handleChooseClick = async () => {
const currentResult = resultData.value[activeName.value]

View File

@@ -82,36 +82,10 @@
/>
</el-form-item>
<el-form-item label="固件版本" prop="hardwareVersion" v-if="scene === '0'">
<el-select
v-model="formContent.hardwareVersion"
clearable
placeholder="请选择固件版本"
filterable
allow-create
>
<el-option
v-for="item in selectOptions['hardwareVersion']"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-input v-model="formContent.hardwareVersion" clearable placeholder="请输入固件版本" />
</el-form-item>
<el-form-item label="软件版本" prop="softwareVersion" v-if="scene === '0'">
<el-select
v-model="formContent.softwareVersion"
clearable
placeholder="请选择软件版本"
filterable
allow-create
>
<el-option
v-for="item in selectOptions['softwareVersion']"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-input v-model="formContent.softwareVersion" clearable placeholder="请输入软件版本" />
</el-form-item>
<el-form-item label="定检日期" prop="inspectDate" v-if="MonIsShow">
<el-date-picker
@@ -218,55 +192,28 @@
</el-select>
</el-form-item>
<el-form-item label="所属地市" prop="cityName" v-if="MonIsShow">
<el-select
<el-input
v-model="formContent.cityName"
clearable
placeholder="请选择所属地市"
placeholder="请输入所属地市"
:disabled="formContent.importFlag == 1"
filterable
allow-create
>
<el-option
v-for="item in selectOptions['cityName']"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
/>
</el-form-item>
<el-form-item label="所属供电公司" prop="gdName" v-if="MonIsShow">
<el-select
<el-input
v-model="formContent.gdName"
clearable
placeholder="请选择所属供电公司"
placeholder="请输入所属供电公司"
:disabled="formContent.importFlag == 1"
filterable
allow-create
>
<el-option
v-for="item in selectOptions['gdName']"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
/>
</el-form-item>
<el-form-item label="所属电站" prop="subName" v-if="MonIsShow">
<el-select
<el-input
v-model="formContent.subName"
clearable
placeholder="请选择所属电站"
placeholder="请输入所属电站"
:disabled="formContent.importFlag == 1"
filterable
allow-create
>
<el-option
v-for="item in selectOptions['subName']"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
/>
</el-form-item>
<el-form-item
v-auth.device="'factorFlag'"
@@ -279,6 +226,14 @@
<el-radio :value="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
v-if="scene === '1'"
label="谐波系统设备id"
prop="harmSysId"
placeholder="请输入谐波系统设备id"
>
<el-input v-model="formContent.harmSysId" :disabled="formContent.importFlag == 1" />
</el-form-item>
</el-form>
</div>
</el-tab-pane>
@@ -312,7 +267,7 @@ import dayjs from 'dayjs'
import MonitorTable from '@/views/machine/device/components/monitorTab.vue'
import { useAppSceneStore } from '@/stores/modules/mode'
import { generateUUID } from '@/utils'
import { Monitor } from '@/api/device/interface/monitor'
import { type Monitor } from '@/api/device/interface/monitor'
const AppSceneStore = useAppSceneStore()
const MonIsShow = ref(false)
@@ -382,6 +337,7 @@ function useMetaInfo() {
gdName: '',
subName: '',
importFlag: 0,
harmSysId: '',
inspectChannel: [],
monitorList: []
})
@@ -421,6 +377,7 @@ const resetFormContent = () => {
subName: '',
importFlag: 0,
inspectChannel: [],
harmSysId: '',
monitorList: []
})
}
@@ -486,8 +443,10 @@ const rules = computed(() => {
}
if (scene.value !== '0') {
dynamicRules.name = [{ required: true, message: '设备名称必填!', trigger: 'blur' }]
dynamicRules.hardwareVersion = [{ required: true, message: '固件版本必选!', trigger: 'change' }]
dynamicRules.softwareVersion = [{ required: true, message: '软件版本必选!', trigger: 'change' }]
// dynamicRules.hardwareVersion = [{ required: true, message: '固件版本必选!', trigger: 'change' }]
// dynamicRules.softwareVersion = [{ required: true, message: '软件版本必选!', trigger: 'change' }]
dynamicRules.hardwareVersion = [{ required: true, message: '固件版本必填!', trigger: 'blur' }]
dynamicRules.softwareVersion = [{ required: true, message: '软件版本必填!', trigger: 'blur' }]
dynamicRules.manufacturer = [{ required: true, message: '生产厂家必选!', trigger: 'change' }]
}
@@ -498,9 +457,12 @@ const rules = computed(() => {
if (mode.value === '比对式') {
dynamicRules.inspectDate = [{ required: true, message: '定检日期必填!', trigger: 'blur' }]
dynamicRules.cityName = [{ required: true, message: '所属地市必选!', trigger: 'change' }]
dynamicRules.gdName = [{ required: true, message: '所属供电公司必选!', trigger: 'change' }]
dynamicRules.subName = [{ required: true, message: '所属电站必选!', trigger: 'change' }]
// dynamicRules.cityName = [{ required: true, message: '所属地市必选!', trigger: 'change' }]
// dynamicRules.gdName = [{ required: true, message: '所属供电公司必选!', trigger: 'change' }]
// dynamicRules.subName = [{ required: true, message: '所属电站必选!', trigger: 'change' }]
dynamicRules.cityName = [{ required: true, message: '所属地市必填!', trigger: 'blur' }]
dynamicRules.gdName = [{ required: true, message: '所属供电公司必填!', trigger: 'blur' }]
dynamicRules.subName = [{ required: true, message: '所属电站必填!', trigger: 'blur' }]
}
return dynamicRules
@@ -517,7 +479,6 @@ const close = () => {
//子组件监测点变化通知父组件设备台账
const getParameter = (data: Monitor.ResPqMon[]) => {
console.log('子组件监测点变化通知父组件设备台账', data)
monitor.value = data
//保存监测点信息自动更新设备台账的被检通道
formContent.inspectChannel = monitor.value
@@ -657,6 +618,7 @@ const open = async (
}
monitor.value = data.monitorList
} else {
monitor.value = []
resetFormContent()
//只有比对式设备ID由前端传
if (currentMode === '比对式') formContent.id = generateUUID().replaceAll('-', '')

View File

@@ -1,22 +1,27 @@
<template>
<!-- 基础信息弹出框 -->
<el-dialog :model-value="dialogVisible" :title="dialogTitle" v-bind="dialogMiddle" @close="close" align-center>
<el-dialog
:model-value="dialogVisible"
:title="dialogTitle"
v-bind="dialogMiddle"
width="50%"
@close="close"
align-center
>
<div>
<el-form :model="formContent" ref="dialogFormRef" :rules="rules" class="form-two">
<el-form :model="formContent" ref="dialogFormRef" :rules="rules" label-width="140" class="form-two">
<el-form-item label="名称" prop="name">
<el-input v-model="formContent.name" placeholder="请输入监测点名称" />
<el-input clearable v-model="formContent.name" placeholder="请输入监测点名称" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
<el-form-item label="线路号" prop="num">
<el-select
v-model="formContent.num"
clearable
placeholder="请选择线路号"
@change="handleMonNumChange"
>
<el-select v-model="formContent.num" placeholder="请选择线路号" @change="handleMonNumChange" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null">
<el-option v-for="item in lineNum" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="所属母线" prop="busbar">
<el-input v-model="formContent.busbar" clearable placeholder="请输入所属母线" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
<!-- <el-form-item label="所属母线" prop="busbar">
<el-select
v-model="formContent.busbar"
clearable
@@ -31,33 +36,9 @@
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="PT变比" required>
<div class="ratio-input-group">
<el-form-item prop="ptPrimary" class="ratio-form-item">
<el-input v-model="ptPrimary" placeholder="一次侧" @input="handlePtInput" />
</el-form-item>
<span class="colon">:</span>
<el-form-item prop="ptSecondary" class="ratio-form-item">
<el-input v-model="ptSecondary" placeholder="二次侧" @input="handlePtInput" />
</el-form-item>
</div>
</el-form-item>
<!-- 修改CT变比部分 -->
<el-form-item label="CT变比" required>
<div class="ratio-input-group">
<el-form-item prop="ctPrimary" class="ratio-form-item">
<el-input v-model="ctPrimary" placeholder="一次侧" @input="handleCtInput" />
</el-form-item>
<span class="colon">:</span>
<el-form-item prop="ctSecondary" class="ratio-form-item">
<el-input v-model="ctSecondary" placeholder="二次侧" @input="handleCtInput" />
</el-form-item>
</div>
</el-form-item>
</el-form-item> -->
<el-form-item label="接线方式" prop="connection">
<el-select v-model="formContent.connection" clearable placeholder="请选择接线方式">
<el-select v-model="formContent.connection" clearable placeholder="请选择接线方式" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null">
<el-option
v-for="item in dictStore.getDictData('Dev_Connect')"
:key="item.id"
@@ -66,8 +47,45 @@
/>
</el-select>
</el-form-item>
<el-form-item required>
<template #label>
<div style="display: flex; align-items: center">
<el-icon style="color: var(--el-color-error)"><WarningFilled /></el-icon>
<span>PT变比</span>
</div>
</template>
<div class="ratio-input-group">
<el-form-item prop="ptPrimary" class="ratio-form-item">
<el-input v-model="ptPrimary" placeholder="一次侧" @input="handlePtInput" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
<div class="colon">:</div>
<el-form-item prop="ptSecondary" style="margin-left: 10px" class="ratio-form-item">
<el-input v-model="ptSecondary" placeholder="二次侧" @input="handlePtInput" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
</div>
</el-form-item>
<!-- 修改CT变比部分 -->
<el-form-item required>
<template #label>
<div style="display: flex; align-items: center">
<el-icon style="color: var(--el-color-error)"><WarningFilled /></el-icon>
<span>CT变比</span>
</div>
</template>
<div class="ratio-input-group">
<el-form-item prop="ctPrimary" class="ratio-form-item">
<el-input v-model="ctPrimary" placeholder="一次侧" @input="handleCtInput" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
<div class="colon">:</div>
<el-form-item prop="ctSecondary" style="margin-left: 10px" class="ratio-form-item">
<el-input v-model="ctSecondary" placeholder="二次侧" @input="handleCtInput" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
</div>
</el-form-item>
<el-form-item label="统计间隔" prop="statInterval">
<el-select v-model="formContent.statInterval" clearable placeholder="请选择统计间隔">
<el-select v-model="formContent.statInterval" clearable placeholder="请选择统计间隔" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null">
<el-option
v-for="item in dictStore.getDictData('Dev_Chns')"
:key="item.id"
@@ -77,10 +95,10 @@
</el-select>
</el-form-item>
<el-form-item label="谐波系统检测点id" prop="harmSysId" placeholder="请输入谐波系统检测点id">
<el-input v-model="formContent.harmSysId" />
<el-input v-model="formContent.harmSysId" :disabled="props.DevFormContent.importFlag == 1 || formContent.resultType!=null"/>
</el-form-item>
<el-form-item label="是否参与检测" prop="checkFlag" placeholder="请输入CT编号">
<el-select v-model="formContent.checkFlag" clearable placeholder="请选择是否加密">
<el-select v-model="formContent.checkFlag" :disabled="formContent.resultType!=null">
<el-option label="是" :value="1"></el-option>
<el-option label="否" :value="0"></el-option>
</el-select>
@@ -88,9 +106,8 @@
</el-form>
</div>
<el-alert
show-icon
title="注意PT和CT变比请输入正常值不可以缩小相同的倍数"
type="warning"
type="error"
:closable="false"
></el-alert>
<template #footer>
@@ -123,6 +140,11 @@ const ptSecondary = ref<string>('')
const ctPrimary = ref<string>('')
const ctSecondary = ref<string>('')
// 定义 props
const props = defineProps<{
DevFormContent: Device.ResPqDev
}>()
// 定义弹出组件元信息
const dialogFormRef = ref()
function useMetaInfo() {
@@ -160,7 +182,8 @@ const resetFormContent = () => {
connection: '',
statInterval: 1,
harmSysId: '',
checkFlag: 1
checkFlag: 1,
resultType: null
}
}
@@ -178,7 +201,8 @@ const rules: Ref<Record<string, Array<FormItemRule>>> = ref({
name: [{ required: true, message: '监测点名称必填!', trigger: 'blur' }],
num: [{ required: true, message: '线路号必选', trigger: 'change' }],
connection: [{ required: true, message: '接线方式必选!', trigger: 'change' }],
busbar: [{ required: true, message: '所属母线必选!', trigger: 'change' }],
//busbar: [{ required: true, message: '所属母线必选!', trigger: 'change' }],
busbar: [{ required: true, message: '所属母线必填!', trigger: 'blur' }],
// harmSysId : [{ required: true, message: '谐波系统检测点id必填', trigger: 'blur' }],
checkFlag: [{ required: true, message: '是否参与检测必选!', trigger: 'change' }]
})
@@ -355,7 +379,6 @@ const sendParameter = () => {
}
// 打开弹窗,可能是新增,也可能是编辑
const open = async (sign: string, data: Monitor.ResPqMon, device: Device.ResPqDev, table: any[], options: any) => {
selectOptions.value = options
titleType.value = sign
dialogVisible.value = true
@@ -395,13 +418,12 @@ const open = async (sign: string, data: Monitor.ResPqMon, device: Device.ResPqDe
ctSecondary.value = secondary
}
} else {
// 清空PT和CT的临时变量
// 清空PT和CT的临时变量
ptPrimary.value = ''
ptSecondary.value = ''
ctPrimary.value = ''
ctSecondary.value = ''
// 重置表单内容但保留devId
const devId = formContent.value.devId
resetFormContent()
@@ -444,15 +466,15 @@ defineExpose({ open })
.ratio-input-group {
display: flex;
align-items: center;
gap: 10px;
justify-content: space-between;
}
.ratio-form-item {
flex: 1;
margin-bottom: 0 !important;
}
.colon {
text-align: center;
font-size: 16px;
font-weight: bold;
}

View File

@@ -15,7 +15,6 @@
type="primary"
:icon="CirclePlus"
@click="openDialog('add')"
:disabled="props.DevFormContent.importFlag == 1"
>
新增
</el-button>
@@ -38,7 +37,6 @@
link
:icon="EditPen"
:model-value="false"
:disabled="props.DevFormContent.importFlag == 1"
@click="openDialog('edit', scope.row)"
>
编辑
@@ -49,13 +47,14 @@
link
:icon="Delete"
@click="handleDelete(scope.row.id)"
:disabled="scope.row.resultType!=null"
>
删除
删除
</el-button>
</template>
</ProTable>
</div>
<MonitorPopup @getParameter="getParameter" ref="monitorPopup" />
<MonitorPopup @getParameter="getParameter" ref="monitorPopup" :DevFormContent="props.DevFormContent"/>
</template>
<script setup lang="ts">

View File

@@ -57,7 +57,8 @@
</el-select>
</el-col>
<el-col :span="12">
<el-input
<el-input-number
:controls="false"
v-model="row.startValue"
style="width: 60px"
:disabled="isStartValueDisabled[row.sort]"
@@ -82,7 +83,8 @@
</el-select>
</el-col>
<el-col :span="12">
<el-input
<el-input-number
:controls="false"
v-model="row.endValue"
style="width: 60px"
:disabled="isEndValueDisabled[row.sort]"
@@ -107,7 +109,7 @@
<el-table-column label="最大误差">
<el-table-column prop="maxErrorValue" label="最大误差值" width="100">
<template #default="{ row }">
<el-input v-model="row.maxErrorValue" style="width: 70px" />
<el-input-number :controls="false" v-model="row.maxErrorValue" style="width: 70px" />
</template>
</el-table-column>
<el-table-column label="误差类型" width="170">

View File

@@ -293,7 +293,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" v-if="waveRecordSetting">
<el-form-item
:label-width="140"
label="录波数据有效组数"
@@ -311,7 +311,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" v-if="realTimeSetting">
<el-form-item
:label-width="140"
label="实时数据有效组数"
@@ -329,7 +329,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" v-if="statisticsSetting">
<el-form-item
:label-width="140"
label="统计数据有效组数"
@@ -347,7 +347,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="8" v-if="flickerSetting">
<el-form-item
:label-width="140"
label="闪变数据有效组数"
@@ -378,6 +378,39 @@
</div>
</template>
<ImportExcel ref="deviceImportExcel" @result="importResult" />
<transition name="fade">
<div
v-if="shanBianDialogVisible"
style="
width: 100%;
height: 100%;
position: absolute;
z-index: 999999999;
top: 0;
left: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: rgba(0, 0, 0, 0.5);
"
>
<div
style="
padding: 10px;
border: 1px solid var(--el-color-warning);
border-radius: 5px;
user-select: none;
background-color: var(--el-color-danger-light-9);
"
>
<el-text style="font-weight: bold" type="warning" size="large">
<el-icon><WarningFilled /></el-icon>
闪变耗时较长不推荐批量被检设备在检测过程中采集该指标
<el-icon @click="() => (shanBianDialogVisible = false)"><Close /></el-icon>
</el-text>
</div>
</div>
</transition>
</el-dialog>
</template>
@@ -414,6 +447,7 @@ import { downloadTemplate, importPqDev } from '@/api/device/device'
import { getTestConfig } from '@/api/system/base'
import { getRegRes } from '@/api/system/versionRegister'
import DevSelect from '@/views/plan/planList/components/devSelect.vue'
import { WarningFilled } from '@element-plus/icons-vue'
const modeStore = useModeStore()
const AppSceneStore = useAppSceneStore()
@@ -444,8 +478,13 @@ const planType = ref<number>(0)
const subPlanBindStandardDev = ref<any>([]) //哪些标准设备已经被子计划绑定
const activeNames = ref(['1'])
const allDisabled = ref(false)
const shanBianDialogVisible = ref(false)
const leaderData = ref<any[]>([])
const memberData = ref<any[]>([])
const waveRecordSetting = ref(false)
const realTimeSetting = ref(false)
const statisticsSetting = ref(false)
const flickerSetting = ref(false)
const generateData = () => {
const manufacturerDict = dictStore.getDictData('Dev_Manufacturers')
@@ -747,6 +786,10 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
titleType.value = sign
isSelectDisabled.value = false
planType.value = plan
waveRecordSetting.value = false
statisticsSetting.value = false
realTimeSetting.value = false
flickerSetting.value = false
if (sign == 'add') {
resetFormContent()
allDisabled.value = false
@@ -761,7 +804,7 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
user_Result: any
if (mode.value === '比对式') {
[
;[
PqErrSys_Result,
pqDevList_Result,
pqReportName_Result,
@@ -805,9 +848,8 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
const dataRuleDict = dictStore.getDictData('Data_Rule')
const rule = dataRuleDict.find(item => item.code === 'Cp95_Value')
formContent.dataRule = rule ? rule.id : ''
} else {
[pqSource_Result, PqScript_Result, PqErrSys_Result, pqDevList_Result, pqReportName_Result] =
;[pqSource_Result, PqScript_Result, PqErrSys_Result, pqDevList_Result, pqReportName_Result] =
await Promise.all([
getTestSourceList(data),
getPqScriptList(data),
@@ -844,6 +886,8 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
formContent.datasourceIds = datasourceDicts
.filter(item => ['real', 'wave_data'].includes(item.code))
.map(item => item.code)
realTimeSetting.value = true
waveRecordSetting.value = true
} else {
//编辑时先给表单赋值(这会没接收被检设备),需要手动再给被检设备复制后整体表单赋值
@@ -873,7 +917,7 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
isSelectDisabled.value = true
formContent.memberIds = data.members
}
[
;[
PqErrSys_Result,
boundPqDevList_Result,
unboundPqDevList_Result,
@@ -920,7 +964,7 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
}
}
} else {
[
;[
pqSource_Result,
PqScript_Result,
PqErrSys_Result,
@@ -995,6 +1039,8 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
}
formContent.devIds = boundData.map((i: any) => i.id) // 已绑定设备id集合
}
handleDataSourceChange()
handleTestItemChange(false)
}
pqToArray() //将对象转为数组
@@ -1042,13 +1088,21 @@ const open = async (sign: string, data: Plan.ReqPlan, currentMode: string, plan:
}
// 检测项选择变化时的处理函数
const handleTestItemChange = () => {
const handleTestItemChange = (showTip: boolean = true) => {
if (formContent.testItems.length > 0) {
const hasShanBian = secondLevelOptions
.filter(option => formContent.testItems.includes(option.value))
.find(option => option.label === '闪变')
if (hasShanBian) {
ElMessage.warning('闪变耗时较长,不推荐批量被检设备在检测过程中采集该指标')
flickerSetting.value = true
if (showTip) {
shanBianDialogVisible.value = true
setTimeout(() => {
shanBianDialogVisible.value = false
}, 5000)
}
} else {
flickerSetting.value = false
}
}
}
@@ -1206,17 +1260,44 @@ const handleDataSourceChange = () => {
if (hasThreeSeconds && hasMinuteStats) {
ElMessage.warning('3s实时数据与分钟统计数据不能同时选择')
formContent.datasourceIds = []
realTimeSetting.value = false
statisticsSetting.value = false
waveRecordSetting.value = false
return
}
if(hasLuBo && hasMinuteStats){
if (hasLuBo && hasMinuteStats) {
ElMessage.warning('录波数据与分钟统计数据不能同时选择')
formContent.datasourceIds = []
realTimeSetting.value = false
statisticsSetting.value = false
waveRecordSetting.value = false
return
}
// 判断是否选择了多个“分钟统计数据”项
const minuteStatLabels = selectedLabels.filter(label => label.includes('分钟'))
if (minuteStatLabels.length > 1) {
ElMessage.warning('分钟统计数据不能多选')
formContent.datasourceIds = []
realTimeSetting.value = false
statisticsSetting.value = false
waveRecordSetting.value = false
return
}
if (hasThreeSeconds) {
realTimeSetting.value = true
} else {
realTimeSetting.value = false
}
if (hasMinuteStats) {
statisticsSetting.value = true
} else {
statisticsSetting.value = false
}
if (hasLuBo) {
waveRecordSetting.value = true
} else {
waveRecordSetting.value = false
}
}
@@ -1272,4 +1353,12 @@ const props = defineProps<{
justify-content: center;
align-items: center;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
</style>