From df1406d0f571972d033dffd6a93fb4b94febeb56 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 24 六月 2025 16:46:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/basicInformation/mould/coalQualityMaintenance.vue |  172 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 91 insertions(+), 81 deletions(-)

diff --git a/src/views/basicInformation/mould/coalQualityMaintenance.vue b/src/views/basicInformation/mould/coalQualityMaintenance.vue
index 4f3dd9f..1b3d911 100644
--- a/src/views/basicInformation/mould/coalQualityMaintenance.vue
+++ b/src/views/basicInformation/mould/coalQualityMaintenance.vue
@@ -1,55 +1,26 @@
 <!-- 鐓よ川鏂规缁存姢寮圭獥缁勪欢 -->
 <template>
-  <el-dialog 
-    v-model="dialogVisible" 
-    :title="title" 
-    width="600" 
-    :close-on-click-modal="false"
-    :before-close="handleClose"
-  >
+  <el-dialog v-model="dialogVisible" :title="title" width="600" :close-on-click-modal="false"
+             :before-close="handleClose">
     <!-- 琛ㄥ崟鍖哄煙 -->
-    <el-form 
-      ref="formRef" 
-      :model="formData" 
-      :rules="formRules"
-      label-width="120px"
-      style="max-width: 400px; margin: 0 auto"
-    >
+    <el-form ref="formRef" :model="formData" :rules="formRules" label-width="120px"
+             style="max-width: 400px; margin: 0 auto">
       <!-- 鏂规鍚嶇О杈撳叆妗� -->
       <el-form-item label="鐓よ川鏂规鍚嶇О" prop="plan">
-        <el-input 
-          v-model="formData.plan" 
-          placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堝悕绉�" 
-          clearable
-        />
+        <el-input v-model="formData.plan" placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堝悕绉�" clearable/>
       </el-form-item>
 
       <!-- 鐓よ川瀛楁澶氶�変笅鎷夋 -->
-      <el-form-item label="鐓よ川鏂规绫诲瀷" prop="coalFields">
-        <el-select 
-          v-model="formData.coalFields" 
-          placeholder="璇烽�夋嫨鐓よ川鏂规绫诲瀷" 
-          style="width: 100%"
-          clearable 
-          multiple
-        >
-          <el-option 
-            v-for="item in fieldOptions" 
-            :key="item.value" 
-            :label="item.label" 
-            :value="item.value" 
-          />
+      <el-form-item label="鐓よ川鏂规绫诲瀷" prop="coalFieldList">
+        <el-select v-model="formData.coalFieldList" placeholder="璇烽�夋嫨鐓よ川鏂规绫诲瀷" style="width: 100%" clearable
+                   multiple>
+          <el-option v-for="item in fieldOptions" :key="item.id" :label="item.label" :value="item"/>
         </el-select>
       </el-form-item>
 
       <!-- 鏂规鎻忚堪鏂囨湰鍩� -->
       <el-form-item label="鐓よ川鏂规鎻忚堪" prop="schemeDesc">
-        <el-input 
-          v-model="formData.schemeDesc" 
-          type="textarea" 
-          placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堟弿杩�"
-          :rows="3"
-        />
+        <el-input v-model="formData.schemeDesc" type="textarea" placeholder="璇疯緭鍏ョ叅璐ㄦ柟妗堟弿杩�" :rows="3"/>
       </el-form-item>
 
       <!-- 鎿嶄綔鎸夐挳鍖哄煙 -->
@@ -62,15 +33,16 @@
   </el-dialog>
 </template>
 <script setup>
-import { ref, reactive, watch, computed, onMounted } from "vue";
-import { getCoalFieldList, addOrEditCoalPlan } from "@/api/basicInformation/coalQualityMaintenance";
+import {ref, reactive, watch, computed, onMounted} from "vue";
+import {getCoalFieldList, addOrEditCoalPlan} from "@/api/basicInformation/coalQualityMaintenance";
 
 // ===== 缁勪欢灞炴�у畾涔� =====
 const props = defineProps({
   /** 鍏抽棴寮圭獥鍓嶇殑鍥炶皟鍑芥暟 */
   beforeClose: {
     type: Function,
-    default: () => {},
+    default: () => {
+    },
   },
   /** 琛ㄥ崟鏁版嵁 */
   form: {
@@ -88,7 +60,10 @@
     default: "",
   },
 });
-
+const copyForm = defineModel("copyForm", {
+  required: true,
+  type: Object,
+});
 // ===== 浜嬩欢瀹氫箟 =====
 const emit = defineEmits(["submit", "handleBeforeClose"]);
 
@@ -115,10 +90,10 @@
 // ===== 琛ㄥ崟楠岃瘉瑙勫垯 =====
 const formRules = reactive({
   plan: [
-    { required: true, message: "璇疯緭鍏ユ柟妗堝悕绉�", trigger: "blur" },
+    {required: true, message: "璇疯緭鍏ユ柟妗堝悕绉�", trigger: "blur"},
   ],
-  coalFields: [
-    { required: true, message: "璇烽�夋嫨鏂规绫诲瀷", trigger: "blur" },
+  coalFieldList: [
+    {required: true, message: "璇烽�夋嫨鏂规绫诲瀷", trigger: "blur"},
   ],
 });
 
@@ -129,9 +104,9 @@
 const parseCoalFields = (coalFieldsStr) => {
   if (!coalFieldsStr || typeof coalFieldsStr !== 'string') return [];
   return coalFieldsStr
-    .split(',')
-    .map(id => parseInt(id.trim()))
-    .filter(id => !isNaN(id));
+      .split(',')
+      .map(id => parseInt(id.trim()))
+      .filter(id => !isNaN(id));
 };
 
 /**
@@ -147,18 +122,32 @@
  * @param {Object} newForm - 鏂扮殑琛ㄥ崟鏁版嵁
  */
 const initFormData = (newForm) => {
-  formData.value = { ...newForm };
-  
-  // 澶勭悊coalFields瀛楁锛氱紪杈戞椂闇�瑕佸皢瀛楃涓茶浆鎹负鏁扮粍渚涘閫夌粍浠朵娇鐢�
-  if (newForm.coalFields) {
-    if (typeof newForm.coalFields === 'string') {
-      formData.value.coalFields = parseCoalFields(newForm.coalFields);
-    } else if (Array.isArray(newForm.coalFields)) {
-      // 纭繚鏁扮粍涓殑鍊奸兘鏄暟瀛楃被鍨�
-      formData.value.coalFields = newForm.coalFields
-        .map(id => parseInt(id))
-        .filter(id => !isNaN(id));
+  formData.value = {...newForm};
+  // 澶勭悊 coalFieldList 瀛楁锛氱紪杈戞椂闇�瑕佸皢瀛楃涓茶浆鎹负鏁扮粍渚涘閫夌粍浠朵娇鐢�
+  if (newForm.fieldIds) {
+    if (typeof newForm.fieldIds === 'string') {
+      // 灏嗗瓧绗︿覆杞崲涓篒D鏁扮粍锛岀劧鍚庡尮閰嶅搴旂殑閫夐」瀵硅薄
+      const ids = parseCoalFields(newForm.fieldIds);
+      formData.value.coalFieldList = ids.map(id => {
+        const option = fieldOptions.find(opt => opt.value === id);
+        return option || {fields: `瀛楁${id}`, value: id};
+      });
+    } else if (Array.isArray(newForm.coalFieldList)) {
+      // 纭繚鏁扮粍涓殑鍊奸兘鏄纭殑瀵硅薄鏍煎紡
+      formData.value.coalFieldList = newForm.coalFieldList.map(item => {
+        if (typeof item === 'object' && item.value !== undefined) {
+          return item;
+        } else {
+          // 濡傛灉鏄函ID锛岄渶瑕佸尮閰嶅搴旂殑閫夐」
+          const id = parseInt(item);
+          const option = fieldOptions.find(opt => opt.value === id);
+          return option || {fields: `瀛楁${id}`, value: id};
+        }
+      });
     }
+  } else {
+    // 濡傛灉娌℃湁 coalFieldList锛屽垵濮嬪寲涓虹┖鏁扮粍
+    formData.value.coalFieldList = [];
   }
 };
 
@@ -168,12 +157,13 @@
  */
 onMounted(async () => {
   try {
-    const { data, code } = await getCoalFieldList();
+    const {data, code} = await getCoalFieldList();
     if (code === 200) {
       // 鏋勫缓閫夐」鏁版嵁锛屾牸寮忓寲涓簕 label, value }
       fieldOptions.push(...data.map(item => ({
         label: item.fieldName,
         value: item.id,
+        fields: item.fields
       })));
     } else {
       console.error("鑾峰彇鐓よ川瀛楁鍒楄〃澶辫触", data);
@@ -187,9 +177,9 @@
 /**
  * 鐩戝惉琛ㄥ崟鏁版嵁鍙樺寲锛屽疄鐜版暟鎹洖鏄�
  */
-watch(() => props.form, initFormData, { 
-  deep: true, 
-  immediate: true 
+watch(() => props.form, initFormData, {
+  deep: true,
+  immediate: true
 });
 
 // ===== 浜嬩欢澶勭悊鍑芥暟 =====
@@ -198,23 +188,44 @@
  */
 const submitForm = async () => {
   if (!formRef.value) return;
-  
+
+  // 鍒濆鍖栧瓧娈垫暟缁�
+  formData.value.fieldIds = [];
+  formData.value.coalFields = [];
+
+  // 瀹夊叏澶勭悊 coalFieldList 鏁版嵁
+  if (formData.value.coalFieldList && Array.isArray(formData.value.coalFieldList)) {
+    formData.value.coalFieldList.forEach((element) => {
+      // 妫�鏌ュ厓绱犳槸鍚︿负瀵硅薄骞朵笖鏈夊繀瑕佺殑灞炴��
+      if (element && typeof element === 'object') {
+        if (element.value !== undefined) {
+          formData.value.fieldIds.push(element.value);
+        }
+        if (element.fields !== undefined) {
+          formData.value.coalFields.push(element.fields);
+        }
+      } else {
+        // 濡傛灉鍏冪礌鏄畝鍗曞�硷紝鐩存帴浣跨敤
+        formData.value.fieldIds.push(element);
+        // 灏濊瘯浠� fieldOptions 涓壘鍒板搴旂殑 label
+        const option = fieldOptions.find(opt => opt.value === element);
+        if (option) {
+          formData.value.coalFields.push(option.fields);
+        }
+      }
+    });
+  }
+
+  // 鍒犻櫎涓存椂瀛楁
+  delete formData.value.coalFieldList;
+
   try {
-    const isValid = await formRef.value.validate();
-    if (!isValid) return;
-
-    // 鍑嗗鎻愪氦鏁版嵁锛氬皢coalFields鏁扮粍杞崲涓哄瓧绗︿覆
-    const submitData = { 
+    // 鍑嗗鎻愪氦鏁版嵁锛氬皢鏁扮粍杞崲涓哄瓧绗︿覆
+    const submitData = {
       ...formData.value,
-      coalFields: stringifyCoalFields(formData.value.coalFields)
+      coalFields: stringifyCoalFields(formData.value.coalFields),
+      fieldIds: stringifyCoalFields(formData.value.fieldIds)
     };
-
-    // 鍒犻櫎涓嶉渶瑕佺殑鏃堕棿瀛楁锛堢紪杈戞椂锛�
-    if (isEditMode.value) {
-      delete submitData.createTime;
-      delete submitData.updateTime;
-    }
-
     // 璋冪敤API鎻愪氦鏁版嵁
     const result = await addOrEditCoalPlan(submitData);
 
@@ -224,7 +235,6 @@
       ...submitData,
       result
     };
-
     emit("submit", responseData);
   } catch (error) {
     console.error("琛ㄥ崟鎻愪氦澶辫触", error);
@@ -243,8 +253,8 @@
  * 閲嶇疆琛ㄥ崟
  */
 const resetForm = () => {
-  if (!formRef.value) return;
-  formRef.value.resetFields();
+  formData.value = JSON.parse(JSON.stringify(copyForm.value));
+  initFormData(formData.value);
 };
 
 /**

--
Gitblit v1.9.3