| | |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="PLC类型" prop="plcType"> |
| | | <el-select v-model="deviceForm.plcType" placeholder="选择PLC类型" style="width: 100%;" clearable> |
| | | <el-form-item label="通讯类型" prop="plcType"> |
| | | <el-select v-model="deviceForm.plcType" placeholder="选择通讯类型" style="width: 100%;" clearable> |
| | | <el-option label="西门子 S7-1200" value="S1200" /> |
| | | <el-option label="西门子 S7-1500" value="S1500" /> |
| | | <el-option label="Modbus 控制器" value="MODBUS" /> |
| | | <el-option label="Modbus TCP" value="MODBUS" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="通讯协议" prop="protocolType"> |
| | | <el-select |
| | | v-model="deviceForm.protocolType" |
| | | placeholder="选择通讯协议" |
| | | style="width: 100%;" |
| | | @change="handleProtocolTypeChange" |
| | | > |
| | | <el-option label="S7 Communication" value="S7 Communication" /> |
| | | <el-option label="Modbus TCP" value="Modbus TCP" /> |
| | | <el-option label="OPC UA" value="OPC UA" /> |
| | | <el-option label="EtherNet/IP" value="EtherNet/IP" /> |
| | | <el-option label="Profinet" value="Profinet" /> |
| | | <el-option label="其他" value="其他" /> |
| | | </el-select> |
| | | <span class="form-tip">S7系列PLC通常使用S7 Communication协议</span> |
| | | </el-form-item> |
| | | |
| | | |
| | | <el-form-item label="超时时间(秒)" prop="timeout"> |
| | | <el-input-number |
| | |
| | | const deviceTypesLoading = ref(false) |
| | | |
| | | // 设备逻辑参数(根据设备类型动态显示) |
| | | const deviceLogicParams = reactive({}) |
| | | const deviceLogicParams = ref({}) |
| | | |
| | | const S7_PLC_TYPES = ['S1200', 'S1500'] |
| | | const MODBUS_PLC_TYPES = ['MODBUS'] |
| | |
| | | moduleName: [ |
| | | { required: true, message: '请输入模块名称', trigger: 'blur' } |
| | | ], |
| | | protocolType: [ |
| | | { required: true, message: '请选择通讯协议', trigger: 'change' } |
| | | ], |
| | | |
| | | timeout: [ |
| | | { required: true, message: '请输入超时时间', trigger: 'blur' }, |
| | | { type: 'number', min: 1, max: 300, message: '超时时间在 1 到 300 秒之间', trigger: 'blur' } |
| | |
| | | } |
| | | }) |
| | | |
| | | // 处理通讯协议变化 |
| | | const handleProtocolTypeChange = (value) => { |
| | | if (!deviceForm.plcType || !value) { |
| | | return |
| | | } |
| | | |
| | | if (value !== 'S7 Communication' && S7_PLC_TYPES.includes(deviceForm.plcType)) { |
| | | ElMessage.warning('S7系列PLC通常使用S7 Communication协议,请确认协议选择是否正确') |
| | | return |
| | | } |
| | | |
| | | if (value !== 'Modbus TCP' && MODBUS_PLC_TYPES.includes(deviceForm.plcType)) { |
| | | ElMessage.warning('Modbus 类型PLC通常使用 Modbus TCP 协议,请确认协议选择是否正确') |
| | | } |
| | | } |
| | | |
| | | // 方法定义 |
| | | // 加载设备类型列表 |
| | |
| | | } |
| | | |
| | | // 加载设备逻辑参数 |
| | | const loadDeviceLogicParams = (deviceLogic, deviceType) => { |
| | | // 清空现有参数 |
| | | Object.keys(deviceLogicParams).forEach(key => { |
| | | delete deviceLogicParams[key] |
| | | }) |
| | | |
| | | // 根据设备类型加载对应的参数 |
| | | const loadDeviceLogicParams = (deviceLogic) => { |
| | | if (deviceLogic && Object.keys(deviceLogic).length > 0) { |
| | | Object.assign(deviceLogicParams, deviceLogic) |
| | | deviceLogicParams.value = { ...deviceLogic } |
| | | } else { |
| | | deviceLogicParams.value = {} |
| | | } |
| | | } |
| | | |
| | |
| | | deviceFormRef.value?.clearValidate() |
| | | |
| | | // 重置设备逻辑参数 |
| | | Object.keys(deviceLogicParams).forEach(key => { |
| | | delete deviceLogicParams[key] |
| | | }) |
| | | deviceLogicParams.value = {} |
| | | } |
| | | |
| | | const addConfigParam = () => { |
| | |
| | | } |
| | | |
| | | // 保存设备逻辑参数(直接使用deviceLogicParams,由各个配置组件管理) |
| | | if (deviceLogicParams && Object.keys(deviceLogicParams).length > 0) { |
| | | extraObj.deviceLogic = { ...deviceLogicParams } |
| | | if (deviceLogicParams.value && Object.keys(deviceLogicParams.value).length > 0) { |
| | | extraObj.deviceLogic = { ...deviceLogicParams.value } |
| | | } else { |
| | | delete extraObj.deviceLogic |
| | | } |
| | | |
| | | // 构建 configJson:将 configParams 数组转换为 JSON 字符串 |