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 | 122 +++++++++++++++++++++++++++++++--------- 1 files changed, 93 insertions(+), 29 deletions(-) diff --git a/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue b/src/views/basicInformation/mould/coalMeiZhiZiDuanWeiHu.vue index a7dcbdb..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: "鏂板", @@ -91,8 +117,6 @@ result }; } else { - delete formData.value.createTime - delete formData.value.updateTime let result = await addOrEditCoalField({ ...formData.value, }) @@ -113,7 +137,7 @@ }; // 閲嶇疆琛ㄥ崟 const resetForm = () => { - if (!formRef.value) return + if (!formRef.value) return formData.value = JSON.parse(JSON.stringify(copyForm.value)); } // 鍏抽棴寮圭獥 @@ -122,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