huang
2 天以前 ab389a5a6b329b15a655340ba7b87bce7fd7871d
mes-web/src/views/device/DeviceEditDialog.vue
@@ -31,12 +31,16 @@
            </el-form-item>
            <el-form-item label="设备编码" prop="deviceCode">
              <template v-if="isEdit">
              <el-input
                v-model="deviceForm.deviceCode"
                placeholder="请输入设备编码"
                maxlength="50"
                :disabled="isEdit"
                  disabled
              />
              </template>
              <template v-else>
                <el-tag type="info">保存后自动生成</el-tag>
              </template>
            </el-form-item>
            <el-form-item label="设备类型" prop="deviceType">
@@ -373,7 +377,8 @@
  description: '',
  isPrimary: false,
  enabled: true,
  extraParams: null
  extraParams: null,
  projectId: 1
})
const deviceForm = reactive(getDefaultForm())
@@ -382,14 +387,35 @@
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' }
@@ -771,6 +797,7 @@
      isPrimary: deviceForm.isPrimary,
      enabled: deviceForm.enabled,
      description: deviceForm.description,
      projectId: deviceForm.projectId,
      configJson: configJsonValue,  // 保存配置参数JSON
      extraParams: JSON.stringify(extraObj)
    }