feat: 反应器配置编辑页面
This commit is contained in:
parent
bdd217f696
commit
8d95ef8628
@ -126,3 +126,8 @@ export const AppType = {
|
|||||||
MVC: { name: 'MVC', value: 2, desc: '' },
|
MVC: { name: 'MVC', value: 2, desc: '' },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const EnumPressureUnit = {
|
||||||
|
Mpa: { name: 'mbar', value: 'mbar', desc: 'mbar' },
|
||||||
|
Psi: { name: 'psi', value: 'psi', desc: 'psi' },
|
||||||
|
Kpa: { name: 'kPa', value: 'kPa', desc: 'kPa' },
|
||||||
|
}
|
||||||
|
@ -95,6 +95,74 @@ export interface ReactorDto {
|
|||||||
modifiedTime?: string | null
|
modifiedTime?: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 反应器添加和更新输入接口 */
|
||||||
|
export interface ReactorAddInputAndUpdateInput {
|
||||||
|
/** 设备编号 */
|
||||||
|
deviceNo?: string | null
|
||||||
|
/** 资产编号 */
|
||||||
|
assetNo?: string | null
|
||||||
|
/** 产品ID */
|
||||||
|
productID?: string | null
|
||||||
|
/** 型号 */
|
||||||
|
model?: string | null
|
||||||
|
/** 规格 */
|
||||||
|
specification?: string | null
|
||||||
|
/** 容量(g) */
|
||||||
|
capacity?: number
|
||||||
|
/** 房间ID */
|
||||||
|
roomID?: number
|
||||||
|
/** 负责人ID */
|
||||||
|
principalId?: number
|
||||||
|
/** 设备状态 */
|
||||||
|
deviceStatus?: DeviceStatusEnum
|
||||||
|
/** 维护标志 */
|
||||||
|
maintenanceFlag?: MaintenanceFlagEnum
|
||||||
|
/** 维护时间 */
|
||||||
|
maintenanceTime?: string | null
|
||||||
|
/** 压力单位 */
|
||||||
|
pressureUnit?: string | null
|
||||||
|
/** 反应器地秤ID */
|
||||||
|
equScaleId?: number
|
||||||
|
/** 补料秤ID */
|
||||||
|
feedingScaleId?: number
|
||||||
|
/** 继电器ID */
|
||||||
|
relayID?: number
|
||||||
|
/** 报警器ID */
|
||||||
|
equAlarmId?: number
|
||||||
|
/** 警告下限 */
|
||||||
|
warningLowerLimit?: number
|
||||||
|
/** 警告上限 */
|
||||||
|
warningUpperLimit?: number
|
||||||
|
/** 错误码 */
|
||||||
|
errorCode?: string | null
|
||||||
|
/** 是否外置泵 */
|
||||||
|
isExternalPump?: boolean
|
||||||
|
/** OPC IP */
|
||||||
|
opcip?: string | null
|
||||||
|
/** OPC 端口 */
|
||||||
|
opcPort?: string | null
|
||||||
|
/** 排序 */
|
||||||
|
sort?: number
|
||||||
|
/** 主键Id */
|
||||||
|
id?: number
|
||||||
|
/** 泵1配置 */
|
||||||
|
pump1: PumpConfig
|
||||||
|
/** 泵2配置 */
|
||||||
|
pump2: PumpConfig
|
||||||
|
/** 泵3配置 */
|
||||||
|
pump3: PumpConfig
|
||||||
|
/** 泵4配置 */
|
||||||
|
pump4: PumpConfig
|
||||||
|
/** 泵5配置 */
|
||||||
|
pump5: PumpConfig
|
||||||
|
/** 泵6配置 */
|
||||||
|
pump6: PumpConfig
|
||||||
|
/** 泵7配置 */
|
||||||
|
pump7: PumpConfig
|
||||||
|
/** 泵8配置 */
|
||||||
|
pump8: PumpConfig
|
||||||
|
}
|
||||||
|
|
||||||
// 反应器类型枚举项
|
// 反应器类型枚举项
|
||||||
export interface ReactorTypeEnumItem {
|
export interface ReactorTypeEnumItem {
|
||||||
/** 枚举值 */
|
/** 枚举值 */
|
||||||
@ -105,6 +173,35 @@ export interface ReactorTypeEnumItem {
|
|||||||
label: string
|
label: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 泵配置接口 */
|
||||||
|
export interface PumpConfig {
|
||||||
|
/** 速度 */
|
||||||
|
speed?: number
|
||||||
|
/** 超时时间 */
|
||||||
|
timeout: number
|
||||||
|
/** 异常信息 */
|
||||||
|
exception: string
|
||||||
|
/** 错误码 */
|
||||||
|
errorCode: string
|
||||||
|
/** 是否喂料 */
|
||||||
|
isFeeding: boolean
|
||||||
|
/** 速度偏移 */
|
||||||
|
speedOffset: number
|
||||||
|
/** 配置ID */
|
||||||
|
configId?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 默认泵配置 */
|
||||||
|
export const defaultPumpConfig: PumpConfig = {
|
||||||
|
speed: undefined,
|
||||||
|
timeout: 0,
|
||||||
|
exception: '',
|
||||||
|
errorCode: '',
|
||||||
|
isFeeding: true,
|
||||||
|
speedOffset: 0,
|
||||||
|
configId: undefined
|
||||||
|
}
|
||||||
|
|
||||||
// API 类型定义
|
// API 类型定义
|
||||||
export type ReactorPageInput = ServiceRequestPage<ReactorFilter>;
|
export type ReactorPageInput = ServiceRequestPage<ReactorFilter>;
|
||||||
export type ReactorPageResponse = ServiceResponse<PageResponse<ReactorDto>>;
|
export type ReactorPageResponse = ServiceResponse<PageResponse<ReactorDto>>;
|
||||||
|
@ -1,20 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog
|
<el-dialog v-model="dialogVisible" :title="form.id ? '编辑反应器' : '新增反应器'" width="900px" :close-on-click-modal="false"
|
||||||
v-model="dialogVisible"
|
:close-on-press-escape="false" destroy-on-close draggable class="reactor-form-dialog">
|
||||||
:title="form.id ? '编辑反应器' : '新增反应器'"
|
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px" class="reactor-form">
|
||||||
width="900px"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
:close-on-press-escape="false"
|
|
||||||
destroy-on-close
|
|
||||||
class="reactor-form-dialog"
|
|
||||||
>
|
|
||||||
<el-form
|
|
||||||
ref="formRef"
|
|
||||||
:model="form"
|
|
||||||
:rules="rules"
|
|
||||||
label-width="100px"
|
|
||||||
class="reactor-form"
|
|
||||||
>
|
|
||||||
<el-tabs v-model="activeTab" class="reactor-tabs">
|
<el-tabs v-model="activeTab" class="reactor-tabs">
|
||||||
<el-tab-pane label="基本信息" name="basic">
|
<el-tab-pane label="基本信息" name="basic">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@ -23,19 +10,24 @@
|
|||||||
<el-input v-model="form.deviceNo" placeholder="请输入设备编号" />
|
<el-input v-model="form.deviceNo" placeholder="请输入设备编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="反应器名称" prop="productID">
|
||||||
|
<el-input v-model="form.productID" placeholder="请输入反应器名称" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="资产编号" prop="assetNo">
|
<el-form-item label="资产编号" prop="assetNo">
|
||||||
<el-input v-model="form.assetNo" placeholder="请输入资产编号" />
|
<el-input v-model="form.assetNo" placeholder="请输入资产编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="产品编号" prop="productID">
|
|
||||||
<el-input v-model="form.productID" placeholder="请输入产品编号" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="设备型号" prop="model">
|
<el-form-item label="设备型号" prop="model">
|
||||||
<el-input v-model="form.model" placeholder="请输入设备型号" />
|
<el-select v-model="form.model" placeholder="请选择设备型号" style="width: 100%" filterable allow-create>
|
||||||
|
<el-option v-for="item in state.deviceModelOptions" :key="item.id" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@ -44,66 +36,52 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="容量" prop="capacity">
|
<el-form-item label="容量(g)" prop="capacity">
|
||||||
<el-input-number v-model="form.capacity" :min="0" :step="1" style="width: 100%" placeholder="请输入容量" />
|
<el-input-number v-model="form.capacity" :min="0" :step="1" style="width: 100%" placeholder="请输入容量" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="房间" prop="roomID">
|
<el-form-item label="房间" prop="roomID">
|
||||||
<el-select v-model="form.roomID" placeholder="请选择房间" style="width: 100%">
|
<el-select v-model="form.roomID" placeholder="请选择房间" style="width: 100%">
|
||||||
<el-option
|
<el-option v-for="item in state.roomOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
v-for="item in roomOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="负责人" prop="principalId">
|
<el-form-item label="设备负责人" prop="principalId">
|
||||||
<el-select v-model="form.principalId" placeholder="请选择负责人" style="width: 100%">
|
<el-select v-model="form.principalId" placeholder="请选择设备负责人" style="width: 100%">
|
||||||
<el-option
|
<el-option v-for="item in state.principalOptions" :key="item.id" :label="item.name"
|
||||||
v-for="item in principalOptions"
|
:value="item.id" />
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="压力单位" prop="pressureUnit">
|
||||||
|
<el-select v-model="form.pressureUnit" placeholder="请选择压力单位" class="w100">
|
||||||
|
<el-option v-for="item in state.pressureUnitOptions" :key="item.label" :label="item.label"
|
||||||
|
:value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="设备状态" prop="deviceStatus">
|
<el-form-item label="设备状态" prop="deviceStatus">
|
||||||
<el-select v-model="form.deviceStatus" placeholder="请选择设备状态" style="width: 100%">
|
<el-tag>
|
||||||
<el-option
|
{{ getDeviceStatusDesc(form.deviceStatus ?? 1) }}
|
||||||
v-for="item in deviceStatusOptions"
|
</el-tag>
|
||||||
:key="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="维护标志" prop="maintenanceFlag">
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||||||
<el-select v-model="form.maintenanceFlag" placeholder="请选择维护标志" style="width: 100%">
|
<el-form-item label="维护标记">
|
||||||
<el-option
|
<el-switch v-model="form.maintenanceFlag" active-text="维护中" inactive-text="正常" />
|
||||||
v-for="item in maintenanceFlagOptions"
|
|
||||||
:key="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||||||
<el-input-number v-model="form.sort" :min="0" :step="1" style="width: 100%" placeholder="请输入排序" />
|
<el-form-item label="维修完成时间" v-if="form.maintenanceFlag">
|
||||||
</el-form-item>
|
<el-date-picker v-model="form.maintenanceTime" type="date" placeholder="预计完成时间" format="YYYY-MM-DD"
|
||||||
</el-col>
|
value-format="YYYY-MM-DD" style="width: 180px" />
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="是否维护中" prop="isMaintenance">
|
|
||||||
<el-switch v-model="form.isMaintenance" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -111,38 +89,44 @@
|
|||||||
<el-tab-pane label="设备配置" name="config">
|
<el-tab-pane label="设备配置" name="config">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="地秤ID" prop="equScaleId">
|
<el-form-item label="反应器地秤" prop="equScaleId">
|
||||||
<el-input-number v-model="form.equScaleId" :min="0" :step="1" style="width: 100%" placeholder="请输入地秤ID" />
|
<el-select v-model="form.equScaleId" placeholder="请选择反应器地秤" class="w100">
|
||||||
|
<el-option v-for="item in state.equScaleOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="补料秤ID" prop="feedingScaleId">
|
<el-form-item label="补料地秤" prop="feedingScaleId">
|
||||||
<el-input-number v-model="form.feedingScaleId" :min="0" :step="1" style="width: 100%" placeholder="请输入补料秤ID" />
|
<el-select v-model="form.feedingScaleId" placeholder="请选择补料地秤" class="w100">
|
||||||
|
<el-option v-for="item in state.feedingScaleOptions" :key="item.id" :label="item.name"
|
||||||
|
:value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="继电器ID" prop="relayID">
|
<el-form-item label="继电器" prop="relayID">
|
||||||
<el-input-number v-model="form.relayID" :min="0" :step="1" style="width: 100%" placeholder="请输入继电器ID" />
|
<el-select v-model="form.relayID" placeholder="请选择继电器" class="w100">
|
||||||
|
<el-option v-for="item in state.relayOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="报警器ID" prop="equAlarmId">
|
<el-form-item label="报警器" prop="equAlarmId">
|
||||||
<el-input-number v-model="form.equAlarmId" :min="0" :step="1" style="width: 100%" placeholder="请输入报警器ID" />
|
<el-select v-model="form.equAlarmId" placeholder="请选择报警器" class="w100">
|
||||||
|
<el-option v-for="item in state.equAlarmOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="警告下限" prop="warningLowerLimit">
|
<el-form-item label="警告下限(g)" prop="warningLowerLimit">
|
||||||
<el-input-number v-model="form.warningLowerLimit" :min="0" :step="1" style="width: 100%" placeholder="请输入警告下限" />
|
<el-input-number v-model="form.warningLowerLimit" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入警告下限" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="警告上限" prop="warningUpperLimit">
|
<el-form-item label="警告上限(g)" prop="warningUpperLimit">
|
||||||
<el-input-number v-model="form.warningUpperLimit" :min="0" :step="1" style="width: 100%" placeholder="请输入警告上限" />
|
<el-input-number v-model="form.warningUpperLimit" :min="0" :step="1" style="width: 100%"
|
||||||
</el-form-item>
|
placeholder="请输入警告上限" />
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="是否外置泵" prop="isExternalPump">
|
|
||||||
<el-switch v-model="form.isExternalPump" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@ -155,51 +139,254 @@
|
|||||||
<el-input v-model="form.opcPort" placeholder="请输入OPC 端口" />
|
<el-input v-model="form.opcPort" placeholder="请输入OPC 端口" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="需要外置泵" prop="isExternalPump">
|
||||||
|
<el-switch v-model="form.isExternalPump" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-tab-pane>
|
||||||
|
|
||||||
|
<el-tab-pane label="泵配置" name="pumpConfig">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵1速度" prop="pump1.speed">
|
||||||
|
<el-input-number v-model="form.pump1.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵1速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵1配置" prop="pump1.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump1.configId"
|
||||||
|
placeholder="请选择泵1配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵2速度" prop="pump2.speed">
|
||||||
|
<el-input-number v-model="form.pump2.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵2速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵2配置" prop="pump2.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump2.configId"
|
||||||
|
placeholder="请选择泵2配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵3速度" prop="pump3.speed">
|
||||||
|
<el-input-number v-model="form.pump3.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵3速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵3配置" prop="pump3.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump3.configId"
|
||||||
|
placeholder="请选择泵3配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵4速度" prop="pump4.speed">
|
||||||
|
<el-input-number v-model="form.pump4.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵4速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵4配置" prop="pump4.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump4.configId"
|
||||||
|
placeholder="请选择泵4配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵5速度" prop="pump5.speed">
|
||||||
|
<el-input-number v-model="form.pump5.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵5速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵5配置" prop="pump5.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump5.configId"
|
||||||
|
placeholder="请选择泵5配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵6速度" prop="pump6.speed">
|
||||||
|
<el-input-number v-model="form.pump6.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵6速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵6配置" prop="pump6.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump6.configId"
|
||||||
|
placeholder="请选择泵6配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵7速度" prop="pump7.speed">
|
||||||
|
<el-input-number v-model="form.pump7.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵7速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵7配置" prop="pump7.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump7.configId"
|
||||||
|
placeholder="请选择泵7配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵8速度" prop="pump8.speed">
|
||||||
|
<el-input-number v-model="form.pump8.speed" :min="0" :step="1" style="width: 100%"
|
||||||
|
placeholder="请输入泵8速度" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="泵8配置" prop="pump8.configId">
|
||||||
|
<el-select
|
||||||
|
v-model="form.pump8.configId"
|
||||||
|
placeholder="请选择泵8配置"
|
||||||
|
style="width: 100%"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in state.pumpConfigOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="OnCancel" size="default">取 消</el-button>
|
||||||
<el-button type="primary" :loading="loading" @click="handleSubmit">确 定</el-button>
|
<el-button type="primary" :loading="state.sureLoading" @click="submitForm" size="default">确 定</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts" name="admin/reactor/form">
|
||||||
import { ref, reactive, onMounted } from 'vue'
|
import { ref, reactive, onMounted, watch, getCurrentInstance } from 'vue'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import type { FormInstance, FormRules } from 'element-plus'
|
import type { FormInstance, FormRules } from 'element-plus'
|
||||||
import { ReactorApi } from '/@/api/admin/reactor'
|
import { ReactorApi } from '/@/api/admin/reactor'
|
||||||
import { RoomApi } from '/@/api/admin/Room'
|
import { RoomApi } from '/@/api/admin/Room'
|
||||||
import { UserApi } from '/@/api/admin/User'
|
import { UserApi } from '/@/api/admin/User'
|
||||||
import type { ReactorDto } from '/@/api/types/ReactorType'
|
import { DictApi } from '/@/api/admin/Dict'
|
||||||
import { DeviceStatusEnum, MaintenanceFlagEnum } from '/@/api/types/ReactorType'
|
import { UspscaleApi } from '/@/api/admin/UspscaleApi'
|
||||||
|
import { UspRelayApi } from '/@/api/admin/UspRelayApi'
|
||||||
|
import { AlarmApi } from '/@/api/admin/AlarmApi'
|
||||||
|
import { UspFeedingConfigApi } from '/@/api/admin/UspFeedingConfigApi'
|
||||||
|
|
||||||
|
import {
|
||||||
|
DeviceStatusEnum,
|
||||||
|
MaintenanceFlagEnum,
|
||||||
|
ReactorAddInputAndUpdateInput,
|
||||||
|
PumpConfig,
|
||||||
|
defaultPumpConfig
|
||||||
|
} from '/@/api/types/ReactorType'
|
||||||
import type { ReactorTypeEnumItem } from '/@/api/types/ReactorType'
|
import type { ReactorTypeEnumItem } from '/@/api/types/ReactorType'
|
||||||
|
import { toOptionsByValue } from '/@/utils/enum'
|
||||||
|
import { EnumPressureUnit } from '/@/api/admin/enum-contracts'
|
||||||
|
import eventBus from '/@/utils/mitt'
|
||||||
|
|
||||||
|
const { proxy } = getCurrentInstance() as any
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
title: string
|
title: string
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const emit = defineEmits(['ok'])
|
|
||||||
|
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
const formRef = ref<FormInstance>()
|
const formRef = ref<FormInstance>()
|
||||||
const activeTab = ref('basic')
|
const activeTab = ref('basic')
|
||||||
const activePumpTab = ref('pump1')
|
|
||||||
const deviceStatusOptions = ref<ReactorTypeEnumItem[]>([])
|
|
||||||
|
|
||||||
const defaultPumpConfig = {
|
const form = reactive<ReactorAddInputAndUpdateInput>({
|
||||||
speed: 0,
|
|
||||||
timeout: 0,
|
|
||||||
exception: '',
|
|
||||||
errorCode: '',
|
|
||||||
isFeeding: true,
|
|
||||||
speedOffset: 0,
|
|
||||||
configId: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
const form = reactive<ReactorDto>({
|
|
||||||
sort: 0,
|
sort: 0,
|
||||||
deviceNo: '',
|
deviceNo: '',
|
||||||
assetNo: '',
|
assetNo: '',
|
||||||
@ -209,14 +396,20 @@ const form = reactive<ReactorDto>({
|
|||||||
capacity: 0,
|
capacity: 0,
|
||||||
roomID: undefined,
|
roomID: undefined,
|
||||||
principalId: undefined,
|
principalId: undefined,
|
||||||
deviceStatus: undefined ,
|
deviceStatus: 1,
|
||||||
maintenanceFlag: undefined,
|
maintenanceFlag: undefined,
|
||||||
equScaleId: 0,
|
maintenanceTime: '',
|
||||||
feedingScaleId: 0,
|
pressureUnit: '',
|
||||||
relayID: 0,
|
equScaleId: undefined,
|
||||||
|
feedingScaleId: undefined,
|
||||||
|
relayID: undefined,
|
||||||
|
equAlarmId: undefined,
|
||||||
warningLowerLimit: 0,
|
warningLowerLimit: 0,
|
||||||
warningUpperLimit: 0,
|
warningUpperLimit: 0,
|
||||||
errorCode: '',
|
errorCode: '',
|
||||||
|
isExternalPump: true,
|
||||||
|
opcip: '',
|
||||||
|
opcPort: '',
|
||||||
pump1: { ...defaultPumpConfig },
|
pump1: { ...defaultPumpConfig },
|
||||||
pump2: { ...defaultPumpConfig },
|
pump2: { ...defaultPumpConfig },
|
||||||
pump3: { ...defaultPumpConfig },
|
pump3: { ...defaultPumpConfig },
|
||||||
@ -224,73 +417,116 @@ const form = reactive<ReactorDto>({
|
|||||||
pump5: { ...defaultPumpConfig },
|
pump5: { ...defaultPumpConfig },
|
||||||
pump6: { ...defaultPumpConfig },
|
pump6: { ...defaultPumpConfig },
|
||||||
pump7: { ...defaultPumpConfig },
|
pump7: { ...defaultPumpConfig },
|
||||||
pump8: { ...defaultPumpConfig },
|
pump8: { ...defaultPumpConfig }
|
||||||
isExternalPump: true,
|
})
|
||||||
opcip: '',
|
|
||||||
opcPort: '',
|
const state = reactive({
|
||||||
equAlarmId: 0,
|
sureLoading: false,
|
||||||
status: true,
|
roomOptions: [] as Array<{ id: number; name: string }>,
|
||||||
isMaintenance: false,
|
principalOptions: [] as Array<{ id: number; name: string }>,
|
||||||
maintenanceTime: '',
|
deviceStatusOptions: [] as ReactorTypeEnumItem[],
|
||||||
id: 0
|
deviceModelOptions: [] as Array<{ id: string; name: string }>,
|
||||||
|
pressureUnitOptions: toOptionsByValue(EnumPressureUnit),
|
||||||
|
equScaleOptions: [] as Array<{ id: number; name: string }>,
|
||||||
|
feedingScaleOptions: [] as Array<{ id: number; name: string }>,
|
||||||
|
relayOptions: [] as Array<{ id: number; name: string }>,
|
||||||
|
equAlarmOptions: [] as Array<{ id: number; name: string }>,
|
||||||
|
pumpConfigOptions: [] as Array<{ id: number; name: string }>,
|
||||||
})
|
})
|
||||||
|
|
||||||
const rules = reactive<FormRules>({
|
const rules = reactive<FormRules>({
|
||||||
deviceNo: [{ required: true, message: '请输入设备编号', trigger: 'blur' }],
|
deviceNo: [{ required: true, message: '请输入设备编号', trigger: 'blur' }],
|
||||||
|
productID: [{ required: true, message: '请输入反应器名称', trigger: 'blur' }],
|
||||||
|
model: [{ required: true, message: '请选择设备型号', trigger: 'change' }],
|
||||||
assetNo: [{ required: true, message: '请输入资产编号', trigger: 'blur' }],
|
assetNo: [{ required: true, message: '请输入资产编号', trigger: 'blur' }],
|
||||||
productID: [{ required: true, message: '请输入产品编号', trigger: 'blur' }],
|
specification: [{ required: false, message: '请输入规格', trigger: 'blur' }],
|
||||||
model: [{ required: true, message: '请输入设备型号', trigger: 'blur' }],
|
|
||||||
specification: [{ required: true, message: '请输入规格', trigger: 'blur' }],
|
|
||||||
capacity: [{ required: true, message: '请输入容量', trigger: 'blur' }],
|
capacity: [{ required: true, message: '请输入容量', trigger: 'blur' }],
|
||||||
roomID: [{ required: true, message: '请选择房间', trigger: 'change' }],
|
roomID: [{ required: false, message: '请选择房间', trigger: 'change' }],
|
||||||
principalId: [{ required: true, message: '请选择负责人', trigger: 'change' }],
|
principalId: [{ required: false, message: '请选择设备负责人', trigger: 'change' }],
|
||||||
deviceStatus: [{ required: true, message: '请选择设备状态', trigger: 'change' }],
|
deviceStatus: [{ required: false, message: '请选择设备状态', trigger: 'change' }],
|
||||||
maintenanceFlag: [{ required: true, message: '请选择维护标志', trigger: 'change' }],
|
pressureUnit: [{ required: true, message: '请选择压力单位', trigger: 'change' }],
|
||||||
status: [{ required: true, message: '请选择状态', trigger: 'change' }],
|
equScaleId: [{ required: true, message: '请选择反应器地秤', trigger: 'change' }],
|
||||||
isMaintenance: [{ required: true, message: '请选择是否维护中', trigger: 'change' }],
|
feedingScaleId: [{ required: false, message: '请输入补料秤ID', trigger: 'blur' }],
|
||||||
maintenanceTime: [{ required: true, message: '请选择维护时间', trigger: 'change' }],
|
relayID: [{ required: false, message: '请输入继电器ID', trigger: 'blur' }],
|
||||||
sort: [{ required: true, message: '请输入排序', trigger: 'blur' }],
|
equAlarmId: [{ required: false, message: '请输入报警器ID', trigger: 'blur' }],
|
||||||
equScaleId: [{ required: true, message: '请输入地秤ID', trigger: 'blur' }],
|
|
||||||
feedingScaleId: [{ required: true, message: '请输入补料秤ID', trigger: 'blur' }],
|
|
||||||
relayID: [{ required: true, message: '请输入继电器ID', trigger: 'blur' }],
|
|
||||||
warningLowerLimit: [{ required: true, message: '请输入警告下限', trigger: 'blur' }],
|
warningLowerLimit: [{ required: true, message: '请输入警告下限', trigger: 'blur' }],
|
||||||
warningUpperLimit: [{ required: true, message: '请输入警告上限', trigger: 'blur' }],
|
warningUpperLimit: [{ required: true, message: '请输入警告上限', trigger: 'blur' }],
|
||||||
opcip: [{ required: true, message: '请输入OPC IP', trigger: 'blur' }],
|
'pump1.speed': [
|
||||||
opcPort: [{ required: true, message: '请输入OPC 端口', trigger: 'blur' }],
|
{ required: true, message: '请输入泵1速度', trigger: 'blur' },
|
||||||
equAlarmId: [{ required: true, message: '请输入报警器ID', trigger: 'blur' }]
|
{ type: 'number', min: 0, message: '泵1速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump1.configId': [
|
||||||
|
{ required: true, message: '请输入泵1配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵1配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump2.speed': [
|
||||||
|
{ required: true, message: '请输入泵2速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵2速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump2.configId': [
|
||||||
|
{ required: true, message: '请输入泵2配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵2配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump3.speed': [
|
||||||
|
{ required: true, message: '请输入泵3速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵3速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump3.configId': [
|
||||||
|
{ required: true, message: '请输入泵3配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵3配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump4.speed': [
|
||||||
|
{ required: true, message: '请输入泵4速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵4速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump4.configId': [
|
||||||
|
{ required: true, message: '请输入泵4配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵4配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump5.speed': [
|
||||||
|
{ required: true, message: '请输入泵5速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵5速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump5.configId': [
|
||||||
|
{ required: true, message: '请输入泵5配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵5配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump6.speed': [
|
||||||
|
{ required: true, message: '请输入泵6速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵6速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump6.configId': [
|
||||||
|
{ required: true, message: '请输入泵6配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵6配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump7.speed': [
|
||||||
|
{ required: true, message: '请输入泵7速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵7速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump7.configId': [
|
||||||
|
{ required: true, message: '请输入泵7配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵7配置ID不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump8.speed': [
|
||||||
|
{ required: true, message: '请输入泵8速度', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵8速度不能小于0', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
'pump8.configId': [
|
||||||
|
{ required: true, message: '请输入泵8配置ID', trigger: 'blur' },
|
||||||
|
{ type: 'number', min: 0, message: '泵8配置ID不能小于0', trigger: 'blur' }
|
||||||
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
/** 获取设备状态枚举列表 */
|
/** 获取设备状态枚举列表 */
|
||||||
const getDeviceStatusOptions = async () => {
|
const getDeviceStatusOptions = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await new ReactorApi().getDeviceStatusEnumList()
|
const res = await new ReactorApi().getDeviceStatusEnumList()
|
||||||
deviceStatusOptions.value = res.data ?? []
|
state.deviceStatusOptions = res.data ?? []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取设备状态枚举列表失败:', error)
|
console.error('获取设备状态枚举列表失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 获取设备状态描述 */
|
|
||||||
const getDeviceStatusDesc = (status: DeviceStatusEnum) => {
|
|
||||||
const statusMap = {
|
|
||||||
[DeviceStatusEnum.Normal]: '正常',
|
|
||||||
[DeviceStatusEnum.Fault]: '故障',
|
|
||||||
[DeviceStatusEnum.Offline]: '离线',
|
|
||||||
[DeviceStatusEnum.Maintenance]: '维护中'
|
|
||||||
}
|
|
||||||
return statusMap[status] || '未知'
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 获取维护标志描述 */
|
|
||||||
const getMaintenanceFlagDesc = (flag: MaintenanceFlagEnum) => {
|
|
||||||
const flagMap = {
|
|
||||||
[MaintenanceFlagEnum.None]: '无',
|
|
||||||
[MaintenanceFlagEnum.Regular]: '定期维护',
|
|
||||||
[MaintenanceFlagEnum.Emergency]: '紧急维护'
|
|
||||||
}
|
|
||||||
return flagMap[flag] || '未知'
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 获取房间列表 */
|
/** 获取房间列表 */
|
||||||
const getRoomOptions = async () => {
|
const getRoomOptions = async () => {
|
||||||
try {
|
try {
|
||||||
@ -299,7 +535,8 @@ const getRoomOptions = async () => {
|
|||||||
pageSize: 1000,
|
pageSize: 1000,
|
||||||
filter: {}
|
filter: {}
|
||||||
})
|
})
|
||||||
roomOptions.value = res.data?.list?.map((item: any) => ({
|
|
||||||
|
state.roomOptions = res.data?.list?.map((item: any) => ({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
name: item.roomName
|
name: item.roomName
|
||||||
})) || []
|
})) || []
|
||||||
@ -316,56 +553,120 @@ const getPrincipalOptions = async () => {
|
|||||||
pageSize: 1000,
|
pageSize: 1000,
|
||||||
filter: {}
|
filter: {}
|
||||||
})
|
})
|
||||||
principalOptions.value = res.data?.list?.map((item: any) => ({
|
|
||||||
|
state.principalOptions = res.data?.list?.map((item: any) => ({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
name: item.name
|
name: item.userName
|
||||||
})) || []
|
})) || []
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取负责人列表失败:', error)
|
console.error('获取用户列表失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getDeviceModelOptions = async () => {
|
||||||
|
try {
|
||||||
|
const res = await new DictApi().getList(['ReactorModel'])
|
||||||
|
state.deviceModelOptions = res.data?.reactorModel?.map((item: any) => ({
|
||||||
|
id: item.value,
|
||||||
|
name: item.name
|
||||||
|
})) || []
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error('获取设备型号列表失败:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getEquAlarmOptions = async () => {
|
||||||
|
try {
|
||||||
|
const res = await new AlarmApi().getPage({
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
filter: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
state.equAlarmOptions = res.data?.list?.map((item: any) => ({
|
||||||
|
id: item.id,
|
||||||
|
name: item.deviceNo
|
||||||
|
})) || []
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取报警器列表失败:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getRelayOptions = async () => {
|
||||||
|
try {
|
||||||
|
const res = await new UspRelayApi().getPage({
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
filter: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
state.relayOptions = res.data?.list?.map((item: any) => ({
|
||||||
|
id: item.id,
|
||||||
|
name: item.deviceNo
|
||||||
|
})) || []
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error('获取继电器列表失败:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getEquScaleOptions = async () => {
|
||||||
|
try {
|
||||||
|
const res = await new UspscaleApi().getPage({ currentPage: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
filter: {}
|
||||||
|
})
|
||||||
|
|
||||||
|
state.equScaleOptions = res.data?.list?.filter((item: any) => item.isFeedingScale == false).map((item: any) => ({
|
||||||
|
id: item.id,
|
||||||
|
name: item.deviceNo
|
||||||
|
})) || []
|
||||||
|
|
||||||
|
state.feedingScaleOptions = res.data?.list?.filter((item: any) => item.isFeedingScale == true).map((item: any) => ({
|
||||||
|
id: item.id,
|
||||||
|
name: item.deviceNo
|
||||||
|
})) || []
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error('获取地秤列表失败:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getPumpConfigOptions = async () => {
|
||||||
|
try {
|
||||||
|
const res = await new UspFeedingConfigApi().getPage({
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 1000,
|
||||||
|
filter: {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
state.pumpConfigOptions = res.data?.list?.map((item: any) => ({
|
||||||
|
id: item.id,
|
||||||
|
name: item.configName
|
||||||
|
})) || []
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error('获取泵配置列表失败:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getDeviceStatusDesc = (status: DeviceStatusEnum) => {
|
||||||
|
return state.deviceStatusOptions.find(item => item.value === status)?.label || ''
|
||||||
|
}
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = (row?: ReactorDto) => {
|
const open = async (id?: number) => {
|
||||||
dialogVisible.value = true
|
proxy.$modal.loading()
|
||||||
if (row) {
|
|
||||||
Object.assign(form, row)
|
|
||||||
}
|
|
||||||
getDeviceStatusOptions()
|
|
||||||
getRoomOptions()
|
|
||||||
getPrincipalOptions()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 提交表单 */
|
if (id && id > 0) {
|
||||||
const submitForm = async () => {
|
const res = await new ReactorApi().get({ id }, { loading: true })
|
||||||
if (!formRef.value) return
|
if (res?.success && res.data) {
|
||||||
await formRef.value.validate(async (valid) => {
|
const formData = res.data as unknown as ReactorAddInputAndUpdateInput
|
||||||
if (valid) {
|
Object.assign(form, formData)
|
||||||
try {
|
|
||||||
const api = new ReactorApi()
|
|
||||||
const res = form.id ? await api.update(form) : await api.add(form)
|
|
||||||
if (res.success) {
|
|
||||||
ElMessage.success(form.id ? '修改成功' : '新增成功')
|
|
||||||
dialogVisible.value = false
|
|
||||||
emit('ok')
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} else {
|
||||||
console.error('提交失败:', error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 取消 */
|
|
||||||
const cancel = () => {
|
|
||||||
dialogVisible.value = false
|
|
||||||
reset()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 重置表单 */
|
|
||||||
const reset = () => {
|
|
||||||
if (!formRef.value) return
|
|
||||||
formRef.value.resetFields()
|
|
||||||
Object.assign(form, {
|
Object.assign(form, {
|
||||||
sort: 0,
|
sort: 0,
|
||||||
deviceNo: '',
|
deviceNo: '',
|
||||||
@ -374,16 +675,22 @@ const reset = () => {
|
|||||||
model: '',
|
model: '',
|
||||||
specification: '',
|
specification: '',
|
||||||
capacity: 0,
|
capacity: 0,
|
||||||
roomID: 0,
|
roomID: undefined,
|
||||||
principalId: 0,
|
principalId: undefined,
|
||||||
deviceStatus: DeviceStatusEnum.Normal,
|
deviceStatus: 1,
|
||||||
maintenanceFlag: MaintenanceFlagEnum.None,
|
maintenanceFlag: undefined,
|
||||||
equScaleId: 0,
|
maintenanceTime: '',
|
||||||
feedingScaleId: 0,
|
pressureUnit: '',
|
||||||
relayID: 0,
|
equScaleId: undefined,
|
||||||
|
feedingScaleId: undefined,
|
||||||
|
relayID: undefined,
|
||||||
|
equAlarmId: undefined,
|
||||||
warningLowerLimit: 0,
|
warningLowerLimit: 0,
|
||||||
warningUpperLimit: 0,
|
warningUpperLimit: 0,
|
||||||
errorCode: '',
|
errorCode: '',
|
||||||
|
isExternalPump: true,
|
||||||
|
opcip: '',
|
||||||
|
opcPort: '',
|
||||||
pump1: { ...defaultPumpConfig },
|
pump1: { ...defaultPumpConfig },
|
||||||
pump2: { ...defaultPumpConfig },
|
pump2: { ...defaultPumpConfig },
|
||||||
pump3: { ...defaultPumpConfig },
|
pump3: { ...defaultPumpConfig },
|
||||||
@ -392,21 +699,69 @@ const reset = () => {
|
|||||||
pump6: { ...defaultPumpConfig },
|
pump6: { ...defaultPumpConfig },
|
||||||
pump7: { ...defaultPumpConfig },
|
pump7: { ...defaultPumpConfig },
|
||||||
pump8: { ...defaultPumpConfig },
|
pump8: { ...defaultPumpConfig },
|
||||||
isExternalPump: true,
|
|
||||||
opcip: '',
|
|
||||||
opcPort: '',
|
|
||||||
equAlarmId: 0,
|
|
||||||
status: true,
|
|
||||||
isMaintenance: false,
|
|
||||||
maintenanceTime: '',
|
|
||||||
id: 0
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
proxy.$modal.closeLoading()
|
||||||
|
dialogVisible.value = true
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
getDeviceStatusOptions(),
|
||||||
|
getRoomOptions(),
|
||||||
|
getPrincipalOptions(),
|
||||||
|
getDeviceModelOptions(),
|
||||||
|
getEquScaleOptions(),
|
||||||
|
getRelayOptions(),
|
||||||
|
getEquAlarmOptions(),
|
||||||
|
getPumpConfigOptions()
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 取消 */
|
||||||
|
const OnCancel = () => {
|
||||||
|
dialogVisible.value = false
|
||||||
|
formRef.value?.resetFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 提交表单 */
|
||||||
|
const submitForm = async () => {
|
||||||
|
if (!formRef.value) return
|
||||||
|
await formRef.value.validate(async (valid) => {
|
||||||
|
if (valid) {
|
||||||
|
state.sureLoading = true // 开始加载
|
||||||
|
try {
|
||||||
|
const api = new ReactorApi()
|
||||||
|
const res = form.id ? await api.update(form) : await api.add(form)
|
||||||
|
if (res.success) {
|
||||||
|
ElMessage.success(form.id ? '修改成功' : '新增成功')
|
||||||
|
dialogVisible.value = false
|
||||||
|
eventBus.emit('refreshReactor')
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('提交失败:', error)
|
||||||
|
ElMessage.error('操作失败,请重试')
|
||||||
|
} finally {
|
||||||
|
state.sureLoading = false // 结束加载
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加对 maintenanceFlag 的监听
|
||||||
|
watch(() => form.maintenanceFlag, (newValue) => {
|
||||||
|
if (newValue != undefined && newValue == 0) {
|
||||||
|
form.maintenanceTime = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getDeviceStatusOptions()
|
getDeviceStatusOptions()
|
||||||
getRoomOptions()
|
getRoomOptions()
|
||||||
getPrincipalOptions()
|
getPrincipalOptions()
|
||||||
|
getDeviceModelOptions()
|
||||||
|
getEquScaleOptions()
|
||||||
|
getRelayOptions()
|
||||||
|
getEquAlarmOptions()
|
||||||
|
getPumpConfigOptions()
|
||||||
})
|
})
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
@ -450,7 +805,16 @@ defineExpose({
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-switch) {
|
.pump-config-section {
|
||||||
margin-top: 8px;
|
margin-top: 20px;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: #f5f7fa;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #303133;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -77,21 +77,19 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onMounted, onBeforeMount } from 'vue'
|
import { ref, reactive, onMounted, onBeforeMount, defineAsyncComponent } from 'vue'
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
import { ReactorApi } from '/@/api/admin/reactor'
|
import { ReactorApi } from '/@/api/admin/reactor'
|
||||||
import { RoomApi } from '/@/api/admin/Room'
|
import { RoomApi } from '/@/api/admin/Room'
|
||||||
import { UserApi } from '/@/api/admin/User'
|
import { UserApi } from '/@/api/admin/User'
|
||||||
import { DictApi } from '/@/api/admin/Dict'
|
import { DictApi } from '/@/api/admin/Dict'
|
||||||
|
|
||||||
import eventBus from '/@/utils/mitt'
|
import eventBus from '/@/utils/mitt'
|
||||||
import type {
|
import type {
|
||||||
ReactorPageInput,
|
ReactorPageInput,
|
||||||
ReactorDto,
|
ReactorDto,
|
||||||
ReactorTypeEnumItem
|
ReactorTypeEnumItem
|
||||||
} from '/@/api/types/ReactorType'
|
} from '/@/api/types/ReactorType'
|
||||||
|
const ReactorForm = defineAsyncComponent(() => import('./components/reactor-form.vue'))
|
||||||
import ReactorForm from './components/reactor-form.vue'
|
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
@ -158,7 +156,7 @@ const handleAdd = () => {
|
|||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
const handleEdit = (row: ReactorDto) => {
|
const handleEdit = (row: ReactorDto) => {
|
||||||
state.formTitle = '编辑反应器'
|
state.formTitle = '编辑反应器'
|
||||||
formRef.value?.open(row)
|
formRef.value?.open(row.id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user