From aa2210a9fec0e32df76e54e9e4e7a7110af2fd1e Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 18 七月 2025 15:55:00 +0800
Subject: [PATCH] 1.巡检上传-提交字段修改

---
 src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue |  120 ++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 93 insertions(+), 27 deletions(-)

diff --git a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
index c7de9c3..f044fbe 100644
--- a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
+++ b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue
@@ -1,35 +1,40 @@
 <template>
   <div>
     <el-dialog
-      v-model="dialogVisible"
-      :title="title"
-      width="600"
-      :close-on-click-modal="false"
-      :before-close="handleClose"
+        v-model="dialogVisible"
+        :title="title"
+        width="600"
+        :close-on-click-modal="false"
+        :before-close="handleClose"
     >
       <el-form
-        ref="formRef"
-        style="max-width: 400px; margin: 0 auto"
-        :model="formData"
-        :rules="rules"
-        label-width="auto"
+          ref="formRef"
+          style="max-width: 400px; margin: 0 auto"
+          :model="formData"
+          :rules="rules"
+          label-width="auto"
       >
         <el-form-item label="瀛楁鍚嶇О" prop="fieldName">
           <el-input
-            v-model="formData.fieldName"
-            placeholder="璇疯緭鍏ュ瓧娈靛悕绉�"
+              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-form-item>
+        <el-form-item label="瀛楁鎻忚堪" prop="fieldDescription">
+          <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
           >
-          <el-button v-if="addOrEdit === 'add'" @click="cancelForm"
-            >鍙栨秷</el-button
+          <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>
@@ -37,8 +42,11 @@
 </template>
 
 <script setup>
-import { ref, reactive, watch, defineProps } from "vue";
-import { addOrEditCoalField } from "@/api/basicInformation/coalFieldMaintenance.js";
+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: {
     type: Object,
@@ -53,20 +61,38 @@
     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();
 const emit = defineEmits(["submit", "handleBeforeClose"]);
 // 琛ㄥ崟鏁版嵁
-const formData = ref({ ...props.form });
+const formData = ref({...props.form});
 
 // 鐩戝惉props.form鐨勫彉鍖栵紝鏇存柊formData
 watch(() => props.form, (newForm) => {
-  formData.value = { ...newForm };
-}, { deep: true, immediate: true });
+  formData.value = {...newForm};
+}, {deep: true, immediate: true});
 // 寮圭獥鍙鎬�
 const dialogVisible = defineModel("coalMaintenanceFieldDialogVisible", {
   required: true,
@@ -82,8 +108,8 @@
       console.log("鎻愪氦琛ㄥ崟", formData.value);
       if (props.title.includes('鏂板')) {
         let result = await addOrEditCoalField(
-         {...formData.value}
-          ,)
+            {...formData.value}
+            ,)
         console.log(result);
         obj.value = {
           title: "鏂板",
@@ -111,7 +137,7 @@
 };
 // 閲嶇疆琛ㄥ崟
 const resetForm = () => {
-    if (!formRef.value) return
+  if (!formRef.value) return
   formData.value = JSON.parse(JSON.stringify(copyForm.value));
 }
 // 鍏抽棴寮圭獥
@@ -120,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