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