| | |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="设备编码" prop="deviceCode"> |
| | | <el-input |
| | | v-model="deviceForm.deviceCode" |
| | | placeholder="请输入设备编码" |
| | | maxlength="50" |
| | | :disabled="isEdit" |
| | | /> |
| | | <template v-if="isEdit"> |
| | | <el-input |
| | | v-model="deviceForm.deviceCode" |
| | | maxlength="50" |
| | | disabled |
| | | /> |
| | | </template> |
| | | <template v-else> |
| | | <el-tag type="info">保存后自动生成</el-tag> |
| | | </template> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="设备类型" prop="deviceType"> |
| | |
| | | description: '', |
| | | isPrimary: false, |
| | | enabled: true, |
| | | extraParams: null |
| | | extraParams: null, |
| | | projectId: 1 |
| | | }) |
| | | |
| | | const deviceForm = reactive(getDefaultForm()) |
| | |
| | | const isEdit = computed(() => !!props.deviceData) |
| | | |
| | | // 表单验证规则 |
| | | const validateDeviceCode = async (rule, value, callback) => { |
| | | if (!value) { |
| | | // 允许留空,后台自动生成 |
| | | return callback() |
| | | } |
| | | try { |
| | | const res = await deviceConfigApi.checkCode( |
| | | value.trim(), |
| | | isEdit.value ? props.deviceData?.id : null |
| | | ) |
| | | if (res?.data === true) { |
| | | callback(new Error('设备编码已存在,请更换')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } catch (err) { |
| | | console.error('检查设备编码失败', err) |
| | | callback(new Error('设备编码校验失败,请稍后重试')) |
| | | } |
| | | } |
| | | |
| | | const deviceRules = { |
| | | deviceName: [ |
| | | { required: true, message: '请输入设备名称', trigger: 'blur' }, |
| | | { min: 1, max: 50, message: '设备名称长度在 1 到 50 个字符', trigger: 'blur' } |
| | | ], |
| | | deviceCode: [ |
| | | { required: true, message: '请输入设备编码', trigger: 'blur' }, |
| | | { pattern: /^[A-Z0-9_]+$/, message: '设备编码只能包含大写字母、数字和下划线', trigger: 'blur' } |
| | | { pattern: /^[A-Z0-9_]+$/, message: '设备编码只能包含大写字母、数字和下划线', trigger: 'blur' }, |
| | | { validator: validateDeviceCode, trigger: 'blur' } |
| | | ], |
| | | deviceType: [ |
| | | { required: true, message: '请选择设备类型', trigger: 'change' } |
| | |
| | | isPrimary: deviceForm.isPrimary, |
| | | enabled: deviceForm.enabled, |
| | | description: deviceForm.description, |
| | | projectId: deviceForm.projectId, |
| | | configJson: configJsonValue, // 保存配置参数JSON |
| | | extraParams: JSON.stringify(extraObj) |
| | | } |