From e65bfa1d46d255f307eaa057665f01c8bde0e122 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 16 六月 2026 11:14:36 +0800
Subject: [PATCH] 君歌 1.端口修改

---
 src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue |  291 ++++++++++++++++++++++++++++++---------------------------
 1 files changed, 153 insertions(+), 138 deletions(-)

diff --git a/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue b/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
index 308d960..c423cea 100644
--- a/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
+++ b/src/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue
@@ -1,115 +1,121 @@
 <template>
   <div>
     <el-dialog
-        v-model="dialogFormVisible"
-        :title="operationType === 'add' ? '鏂板鍘熸潗鏂欐楠�' : '缂栬緫鍘熸潗鏂欐楠�'"
-        width="70%"
-        @close="closeDia"
+      v-model="dialogFormVisible"
+      :title="operationType === 'add' ? '鏂板涓嶅悎鏍煎鐞�' : '澶勭悊涓嶅悎鏍�'"
+      width="75%"
+      @close="closeDia"
     >
-      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
-        <el-row :gutter="30">
+      <el-form :model="form" label-width="130px" :rules="rules" ref="formRef">
+        <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="鐘舵�侊細" prop="inspectState">
-              <el-select v-model="form.inspectState">
-                <el-option label="寰呭鐞�" :value="0" />
-                <el-option label="宸插鐞�" :value="1" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="绫诲埆锛�" prop="inspectType">
-              <el-select v-model="form.inspectType" disabled>
+            <el-form-item label="绫诲埆">
+              <el-select v-model="form.inspectType" disabled style="width: 100%">
                 <el-option label="鍘熸潗鏂欐楠�" :value="0" />
                 <el-option label="杩囩▼妫�楠�" :value="1" />
                 <el-option label="鍑哄巶妫�楠�" :value="2" />
               </el-select>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row :gutter="30">
           <el-col :span="12">
-            <el-form-item label="浜у搧鍚嶇О锛�" prop="productId">
+            <el-form-item label="浜у搧鍚嶇О">
               <el-tree-select
-                  v-model="form.productId"
-                  placeholder="璇烽�夋嫨"
-                  clearable
-                  disabled
-                  check-strictly
-                  @change="getModels"
-                  :data="productOptions"
-                  :render-after-expand="false"
-                  style="width: 100%"
+                v-model="form.productId"
+                placeholder="璇烽�夋嫨"
+                clearable
+                disabled
+                check-strictly
+                @change="getModels"
+                :data="productOptions"
+                :render-after-expand="false"
+                style="width: 100%"
               />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="model">
-              <el-input v-model="form.model" placeholder="璇疯緭鍏�" clearable disabled/>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="瑙勬牸鍨嬪彿">
+              <el-input v-model="form.model" placeholder="璇疯緭鍏�" clearable disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鍗曚綅">
+              <el-input v-model="form.unit" placeholder="璇疯緭鍏�" clearable disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="鏁伴噺">
+              <el-input v-model="form.quantity" placeholder="璇疯緭鍏�" clearable disabled />
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="30">
+
+        <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="鍗曚綅锛�" prop="unit">
-              <el-input v-model="form.unit" placeholder="璇疯緭鍏�" clearable disabled/>
+            <el-form-item label="妫�楠屽憳">
+              <el-input v-model="form.checkName" placeholder="璇疯緭鍏�" clearable disabled />
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="鏁伴噺锛�" prop="quantity">
-              <el-input v-model="form.quantity" placeholder="璇疯緭鍏�" clearable disabled/>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="妫�楠屽憳锛�" prop="checkName">
-              <el-input v-model="form.checkName" placeholder="璇疯緭鍏�" clearable disabled/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="妫�娴嬫棩鏈燂細" prop="checkTime">
+            <el-form-item label="妫�娴嬫棩鏈�">
               <el-date-picker
-                  v-model="form.checkTime"
-                  type="date"
-                  disabled
-                  placeholder="璇烽�夋嫨鏃ユ湡"
-                  value-format="YYYY-MM-DD"
-                  format="YYYY-MM-DD"
-                  clearable
-                  style="width: 100%"
+                v-model="form.checkTime"
+                type="date"
+                disabled
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                value-format="YYYY-MM-DD"
+                format="YYYY-MM-DD"
+                clearable
+                style="width: 100%"
               />
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="涓嶅悎鏍肩幇璞★細" prop="defectivePhenomena">
-              <el-input v-model="form.defectivePhenomena" placeholder="璇疯緭鍏�" clearable/>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="澶勭悊缁撴灉锛�" prop="dealResult">
-              <el-input v-model="form.dealResult" placeholder="璇疯緭鍏�" clearable/>
+
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="涓嶅悎鏍肩幇璞�" prop="defectivePhenomena">
+              <el-input v-model="form.defectivePhenomena" type="textarea" :rows="2" placeholder="璇疯緭鍏�" clearable />
             </el-form-item>
           </el-col>
         </el-row>
-        <el-row :gutter="30">
-          <el-col :span="12">
-            <el-form-item label="澶勭悊浜猴細" prop="dealName">
-              <el-input v-model="form.dealName" placeholder="璇疯緭鍏�" clearable/>
+
+        <el-row :gutter="20">
+          <el-col :span="8">
+            <el-form-item label="澶勭悊缁撴灉" prop="dealResult">
+              <el-select v-model="form.dealResult" placeholder="璇烽�夋嫨" clearable style="width: 100%">
+                <el-option :label="item.label" :value="item.value" v-for="item in filteredRejectionHandling" :key="item.value" />
+              </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="澶勭悊鏃ユ湡锛�" prop="dealTime">
+          <el-col :span="8">
+            <el-form-item label="澶勭悊浜�" prop="dealName">
+              <el-select v-model="form.dealName" placeholder="璇烽�夋嫨" clearable style="width: 100%">
+                <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="澶勭悊鏃ユ湡" prop="dealTime">
               <el-date-picker
-                  v-model="form.dealTime"
-                  type="date"
-                  placeholder="璇烽�夋嫨鏃ユ湡"
-                  value-format="YYYY-MM-DD"
-                  format="YYYY-MM-DD"
-                  clearable
-                  style="width: 100%"
+                v-model="form.dealTime"
+                type="date"
+                placeholder="璇烽�夋嫨鏃ユ湡"
+                value-format="YYYY-MM-DD"
+                format="YYYY-MM-DD"
+                clearable
+                style="width: 100%"
               />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+          <el-col :span="24">
+            <el-form-item label="闄勪欢">
+              <FileUpload v-model:file-list="form.storageBlobDTOs" :file-list="form.storageBlobVOs" />
             </el-form-item>
           </el-col>
         </el-row>
@@ -125,18 +131,22 @@
 </template>
 
 <script setup>
-import {ref} from "vue";
-import {productTreeList} from "@/api/basicData/product.js";
+import { ref, reactive, toRefs, computed } from "vue";
+import { productTreeList } from "@/api/basicData/product.js";
 import {
   getQualityUnqualifiedInfo,
-  qualityUnqualifiedAdd,
-  qualityUnqualifiedUpdate
+  qualityUnqualifiedDeal
 } from "@/api/qualityManagement/nonconformingManagement.js";
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['close'])
+import { userListNoPage } from "@/api/system/user.js";
+import FileUpload from "@/components/AttachmentUpload/file/index.vue";
 
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["close"]);
+
+const { rejection_handling } = proxy.useDict("rejection_handling");
 const dialogFormVisible = ref(false);
-const operationType = ref('')
+const operationType = ref("");
+
 const data = reactive({
   form: {
     checkTime: "",
@@ -149,109 +159,114 @@
     quantity: "",
     checkCompany: "",
     checkResult: "",
-    inspectState: '',
-    inspectType: '',
-    defectivePhenomena: '',
-    dealResult: '',
-    dealName: '',
-    dealTime: '',
+    inspectType: "",
+    defectivePhenomena: "",
+    dealResult: "",
+    dealName: "",
+    dealTime: "",
+    method: undefined,
+    storageBlobDTOs: [],
+    storageBlobVOs: [],
   },
   rules: {
-    checkTime: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" },],
-    process: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    productId: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    model: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    unit: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    quantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
-    defectivePhenomena: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    dealResult: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    dealName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
-    dealTime: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
+    defectivePhenomena: [{ required: true, message: "璇疯緭鍏ヤ笉鍚堟牸鐜拌薄", trigger: "blur" }],
+    dealResult: [{ required: true, message: "璇烽�夋嫨澶勭悊缁撴灉", trigger: "change" }],
+    dealName: [{ required: true, message: "璇烽�夋嫨澶勭悊浜�", trigger: "change" }],
+    dealTime: [{ required: true, message: "璇烽�夋嫨澶勭悊鏃ユ湡", trigger: "change" }],
   },
 });
 const { form, rules } = toRefs(data);
 const productOptions = ref([]);
+const userList = ref([]);
 
-// 鎵撳紑寮规
-const openDialog = (type, row) => {
-  operationType.value = type;
-  dialogFormVisible.value = true;
-  form.value = {}
-  getProductOptions();
-  if (operationType.value === 'edit') {
-    getQualityUnqualifiedInfo(row.id).then(res => {
-      form.value = {...res.data}
-    })
+const filteredRejectionHandling = computed(() => {
+  const data = rejection_handling.value;
+  if (form.value.method) {
+    return data.filter(item => item && item.label && item.label !== "杩斿伐" && item.label !== "杩斾慨");
   }
-}
+  return data;
+});
+
+const openDialog = async (type, row) => {
+  operationType.value = type;
+  try {
+    const userRes = await userListNoPage();
+    userList.value = userRes.data || [];
+  } catch (e) {
+    console.error("鍔犺浇鐢ㄦ埛鍒楄〃澶辫触", e);
+    userList.value = [];
+  }
+  dialogFormVisible.value = true;
+  form.value = {};
+  getProductOptions();
+  if (operationType.value === "edit") {
+    getQualityUnqualifiedInfo(row.id).then(res => {
+      const { inspectState, ...rest } = (res.data || {});
+      form.value = { ...rest };
+    });
+  }
+};
+
 const getProductOptions = () => {
   productTreeList().then((res) => {
     productOptions.value = convertIdToValue(res);
   });
 };
+
 const getModels = (value) => {
   form.value.productName = findNodeById(productOptions.value, value);
 };
+
 const findNodeById = (nodes, productId) => {
   for (let i = 0; i < nodes.length; i++) {
     if (nodes[i].value === productId) {
-      return nodes[i].label; // 鎵惧埌鑺傜偣锛岃繑鍥炶鑺傜偣
+      return nodes[i].label;
     }
     if (nodes[i].children && nodes[i].children.length > 0) {
       const foundNode = findNodeById(nodes[i].children, productId);
       if (foundNode) {
-        return foundNode; // 鍦ㄥ瓙鑺傜偣涓壘鍒帮紝杩斿洖璇ヨ妭鐐�
+        return foundNode;
       }
     }
   }
-  return null; // 娌℃湁鎵惧埌鑺傜偣锛岃繑鍥瀗ull
+  return null;
 };
+
 function convertIdToValue(data) {
   return data.map((item) => {
     const { id, children, ...rest } = item;
     const newItem = {
       ...rest,
-      value: id, // 灏� id 鏀逛负 value
+      value: id,
     };
     if (children && children.length > 0) {
       newItem.children = convertIdToValue(children);
     }
-    
     return newItem;
   });
 }
-// 鎻愪氦浜у搧琛ㄥ崟
+
 const submitForm = () => {
   proxy.$refs.formRef.validate(valid => {
     if (valid) {
-      if (operationType.value === "add") {
-        qualityUnqualifiedAdd(form.value).then(res => {
-          proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-          closeDia();
-        })
-      } else {
-        qualityUnqualifiedUpdate(form.value).then(res => {
-          proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
-          closeDia();
-        })
-      }
+      const { inspectState, ...payload } = (form.value || {});
+      qualityUnqualifiedDeal(payload).then(() => {
+        proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+        closeDia();
+      });
     }
-  })
-}
-// 鍏抽棴寮规
+  });
+};
+
 const closeDia = () => {
   proxy.resetForm("formRef");
   dialogFormVisible.value = false;
-  emit('close')
+  emit("close");
 };
+
 defineExpose({
   openDialog,
 });
 </script>
 
-<style scoped>
-
-</style>
\ No newline at end of file
+<style scoped></style>

--
Gitblit v1.9.3