比对检测计划

This commit is contained in:
sjl
2025-07-21 13:47:56 +08:00
parent c8f3b4eddc
commit e29f25653e
31 changed files with 1174 additions and 673 deletions

View File

@@ -12,13 +12,12 @@
<el-input v-model='formContent.name' placeholder="请输入设备名称" :disabled="scene === '1' || formContent.importFlag == 1" maxlength="32" show-word-limit />
</el-form-item>
<el-form-item label='设备类型' prop='devType'>
<el-select v-model="formContent.devType" filterable clearable placeholder="请选择设备类型" @change="handleDevTypeChange" :disabled="formContent.importFlag == 1">
<el-select v-model="formContent.devType" filterable clearable placeholder="请选择设备类型" @change="handleDevTypeChange" :disabled="formContent.importFlag == 1">
<el-option
v-for="item in devTypeOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
@@ -39,7 +38,6 @@
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
@@ -51,12 +49,25 @@
:disabled="formContent.importFlag == 1"
/>
</el-form-item>
<el-form-item label="固件版本" prop="hardwareVersion" v-if="scene === '0'">
<el-input v-model="formContent.hardwareVersion" placeholder="请输入固件版本"/>
<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-form-item>
<el-form-item label="软件版本" prop="softwareVersion" v-if="scene === '0'">
<el-input v-model="formContent.softwareVersion" placeholder="请输入软件版本"/>
<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-form-item>
<el-form-item label='定检日期' prop='inspectDate' v-if="MonIsShow">
<el-date-picker
@@ -135,14 +146,35 @@
/>
</el-select>
</el-form-item>
<el-form-item label='所属地市' prop='cityName' clearable placeholder="请输入所属地市" v-if="MonIsShow">
<el-input v-model='formContent.cityName' :disabled="formContent.importFlag == 1"/>
<el-form-item label="所属地市" prop="cityName" v-if="MonIsShow">
<el-select v-model="formContent.cityName" clearable 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' clearable placeholder="请输入所属供电公司" v-if="MonIsShow">
<el-input v-model='formContent.gdName' :disabled="formContent.importFlag == 1"/>
<el-form-item label="所属供电公司" prop="gdName" v-if="MonIsShow">
<el-select v-model="formContent.gdName" clearable 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' clearable placeholder="请输入所属电站" v-if="MonIsShow">
<el-input v-model='formContent.subName' :disabled="formContent.importFlag == 1"/>
<el-form-item label="所属电站" prop="subName" v-if="MonIsShow">
<el-select v-model="formContent.subName" clearable 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'" label="是否支持系数校准" prop='factorFlag' v-if="scene === '1'">
<el-radio-group v-model="formContent.factorFlag">
@@ -155,7 +187,7 @@
</el-tab-pane>
<el-tab-pane label="监测点台账信息" v-if="MonIsShow">
<!-- 监测点台账信息 tab pane -->
<MonitorTable @getParameter="getParameter" :DevFormContent = "formContent" :tableHeight="monitorTableHeight"></MonitorTable>
<MonitorTable @getParameter="getParameter" :DevFormContent = "formContent" :tableHeight="monitorTableHeight" :selectOptions = "selectOptions"></MonitorTable>
</el-tab-pane>
</el-tabs>
<template #footer>
@@ -171,7 +203,7 @@
import {dialogBig} from '@/utils/elementBind'
import {type Device} from '@/api/device/interface/device'
import {ElMessage, type FormItemRule} from 'element-plus'
import {addPqDev, updatePqDev} from '@/api/device/device'
import {addPqDev, updatePqDev,getSelectOptions} from '@/api/device/device'
import {computed, reactive, type Ref, ref, watchEffect, nextTick} from 'vue'
import {useDictStore} from '@/stores/modules/dict'
import {CirclePlus, Delete, EditPen} from '@element-plus/icons-vue'
@@ -198,6 +230,11 @@ const dialogFormRef = ref()
const createDateTitle = ref('')
const activeTab = ref('0') // '0' 对应第一个 tab
const monitorTableHeight = ref(375) // 默认高度
const selectOptions = ref<Record<string, Device.SelectOption[]>>({})
const pqChannelArray = ref([
{
value: '1',
@@ -348,8 +385,8 @@ const rules = computed(() => {
}
if (scene.value !== '0') {
dynamicRules.name = [{required: true, message: '设备名称必填!', trigger: 'blur'}];
dynamicRules.hardwareVersion = [{required: true, message: '固件版本必', trigger: 'blur'}];
dynamicRules.softwareVersion = [{required: true, message: '软件版本必', trigger: 'blur'}];
dynamicRules.hardwareVersion = [{required: true, message: '固件版本必', trigger: 'change'}];
dynamicRules.softwareVersion = [{required: true, message: '软件版本必', trigger: 'change'}];
dynamicRules.manufacturer = [{required: true, message: '生产厂家必选!', trigger: 'change'}];
}
@@ -361,9 +398,9 @@ const rules = computed(() => {
if(mode.value === '比对式'){
dynamicRules.inspectDate = [{required: true, message: '定检日期必填!', trigger: 'blur'}];
dynamicRules.cityName = [{required: true, message: '所属地市必', trigger: 'blur'}];
dynamicRules.gdName = [{required: true, message: '所属供电公司必', trigger: 'blur'}];
dynamicRules.subName = [{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'}];
}
@@ -473,6 +510,21 @@ const open = async (sign: string, data: Device.ResPqDev, currentMode: string, cu
activeTab.value = '0' // 强制回到第一个 tab
if (currentMode === '比对式') {
const patternItem = dictStore.getDictData('Pattern').find(item => item.name === currentMode)
if (patternItem) {
const { data } = await getSelectOptions({ pattern: patternItem.id }) as { data: Record<string, any[]> }
// 遍历 data 的所有字段并映射为 { label, value }
for (const key in data) {
if (Array.isArray(data[key])) {
selectOptions.value[key] = data[key].map((value: string) => ({
label: value,
value: value
}))
}
}
}
createDateTitle.value = '投运日期'
DevIsShow.value = false
MonIsShow.value = true
@@ -555,9 +607,9 @@ const handleDevTypeChange = (value: string) => {
const handleInput = (value: string) => {
// 在这里处理选中事件的逻辑
if (scene.value === '1') {
//if (scene.value === '1') {
formContent.name = value
}
//}
}