From e986cee1c804ecdf6d03c080ce9a8bb187f724a4 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期一, 14 七月 2025 18:02:50 +0800
Subject: [PATCH] 1、煤质字段添加校验 使其唯一 2、优化首页 数据刷新 3、开发配煤计算器

---
 src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue |   62 ++++++++++++++++++++++++++++++-
 1 files changed, 60 insertions(+), 2 deletions(-)

diff --git a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
index 45cb626..f044fbe 100644
--- a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
+++ b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
@@ -19,6 +19,7 @@
               v-model="formData.fieldName"
               placeholder="璇疯緭鍏ュ瓧娈靛悕绉�"
               :disabled="isViewMode"
+              @blur="checkFieldNameExists"
           />
         </el-form-item>
         <el-form-item label="瀛楁鎻忚堪" prop="fieldDescription">
@@ -41,8 +42,10 @@
 </template>
 
 <script setup>
-import {ref, reactive, watch, defineProps} from "vue";
+import {ref, reactive, watch, defineProps, computed, onMounted} from "vue";
+import {ElMessage} from "element-plus";
 import {addOrEditCoalField} from "@/api/basicInformation/coalFieldMaintenance.js";
+import {getCoalFieldList} from "@/api/publicApi/index.js";
 
 const props = defineProps({
   form: {
@@ -64,6 +67,21 @@
 const copyForm = defineModel("copyForm", {
   required: true,
   type: Object,
+});
+
+// 瀛樺偍宸叉湁鐨勫瓧娈靛垪琛�
+const existingFields = ref([]);
+
+// 缁勪欢鎸傝浇鏃惰幏鍙栧凡鏈夊瓧娈靛垪琛�
+onMounted(async () => {
+  try {
+    const {data, code} = await getCoalFieldList();
+    if (code === 200) {
+      existingFields.value = data || [];
+    }
+  } catch (error) {
+    console.error("鑾峰彇瀛楁鍒楄〃澶辫触", error);
+  }
 });
 // 琛ㄥ崟寮曠敤
 const formRef = ref();
@@ -128,9 +146,49 @@
   emit("handleBeforeClose");
   emit("update:coalMaintenanceFieldDialogVisible", false);
 };
+
+// 妫�鏌ュ瓧娈靛悕绉版槸鍚﹀凡瀛樺湪
+const checkFieldNameExists = () => {
+  if (!formData.value.fieldName) return;
+  
+  const isNameExists = existingFields.value.some(field => 
+    field.fieldName === formData.value.fieldName
+  );
+  
+  // 缂栬緫妯″紡涓嬶紝濡傛灉鏄綋鍓嶅瓧娈电殑鍘熷悕绉板垯涓嶆彁绀�
+  if (isNameExists && !(props.addOrEdit === 'edit' && props.form.fieldName === formData.value.fieldName)) {
+    ElMessage.warning("璇ュ瓧娈靛悕绉板凡瀛樺湪锛岃鎹㈠叾浠栧悕瀛�");
+    // 鍙�夛細鑷姩娓呯┖杈撳叆妗�
+    // formData.value.fieldName = '';
+  }
+};
 const rules = reactive({
   fieldName: [
-    {required: true, message: "璇疯緭鍏ョ叅绉嶅悕绉�", trigger: "blur"},
+    {required: true, message: "璇疯緭鍏ュ瓧娈靛悕绉�", trigger: "blur"},
+    {
+      validator: (rule, value, callback) => {
+        if (!value) {
+          callback();
+          return;
+        }
+        // 妫�鏌ュ瓧娈靛悕绉版槸鍚﹀凡瀛樺湪
+        const isNameExists = existingFields.value.some(field => 
+          field.fieldName === value
+        );
+        
+        // 缂栬緫妯″紡涓嬶紝濡傛灉鏄綋鍓嶅瓧娈电殑鍘熷悕绉板垯鍏佽
+        if (isNameExists) {
+          if (props.addOrEdit === 'edit' && props.form.fieldName === value) {
+            callback();
+          } else {
+            callback(new Error("璇ュ瓧娈靛悕绉板凡瀛樺湪锛岃鎹㈠叾浠栧悕瀛�"));
+          }
+        } else {
+          callback();
+        }
+      },
+      trigger: "blur"
+    }
   ],
 });
 </script>

--
Gitblit v1.9.3