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 |   72 +++++++++++++++++++++++++++++++++--
 1 files changed, 67 insertions(+), 5 deletions(-)

diff --git a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
index 8dddf2b..f044fbe 100644
--- a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
+++ b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
@@ -18,21 +18,23 @@
           <el-input
               v-model="formData.fieldName"
               placeholder="璇疯緭鍏ュ瓧娈靛悕绉�"
+              :disabled="isViewMode"
+              @blur="checkFieldNameExists"
           />
         </el-form-item>
         <el-form-item label="瀛楁鎻忚堪" prop="fieldDescription">
-          <el-input v-model="formData.fieldDescription" type="textarea" placeholder="璇疯緭鍏ュ瓧娈垫弿杩�"/>
+          <el-input v-model="formData.fieldDescription" type="textarea" placeholder="璇疯緭鍏ュ瓧娈垫弿杩�" :disabled="isViewMode"/>
         </el-form-item>
         <el-form-item class="dialog-footer">
           <el-button v-if="addOrEdit === 'edit'" @click="resetForm"
           >閲嶇疆
           </el-button
           >
-          <el-button v-if="addOrEdit === 'add'" @click="cancelForm"
+          <el-button v-if="addOrEdit === 'add' || addOrEdit.includes('viewRow')" @click="cancelForm"
           >鍙栨秷
           </el-button
           >
-          <el-button type="primary" @click="submitForm"> 纭畾</el-button>
+          <el-button type="primary" v-if="!isViewMode" @click="submitForm" > 纭畾</el-button>
         </el-form-item>
       </el-form>
     </el-dialog>
@@ -40,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: {
@@ -57,9 +61,27 @@
     default: "",
   },
 });
+const isViewMode = computed(() => {
+  return props.addOrEdit.includes("view");
+});
 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();
@@ -124,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