From ab389a5a6b329b15a655340ba7b87bce7fd7871d Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 24 十二月 2025 17:16:19 +0800
Subject: [PATCH] 添加新增设备自动生成编码

---
 mes-web/src/views/device/DeviceEditDialog.vue |   45 ++++++++++++++++++++++++++++++++++++---------
 1 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/mes-web/src/views/device/DeviceEditDialog.vue b/mes-web/src/views/device/DeviceEditDialog.vue
index ad6668c..63123c5 100644
--- a/mes-web/src/views/device/DeviceEditDialog.vue
+++ b/mes-web/src/views/device/DeviceEditDialog.vue
@@ -31,12 +31,16 @@
             </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">
@@ -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)
     }

--
Gitblit v1.8.0