From d2fb1300564eaa8166f4db1184c521e468cd2ed3 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 17 四月 2026 14:23:09 +0800
Subject: [PATCH] 不合格处理:增加字段增删改,展示
---
src/views/qualityManagement/nonconformingManagement/components/formDia.vue | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 109 insertions(+), 10 deletions(-)
diff --git a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
index cf6ad6d..7a2c49a 100644
--- a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
+++ b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue
@@ -34,7 +34,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="model">
<el-select v-model="form.model" placeholder="璇烽�夋嫨" clearable :disabled="operationType === 'edit'"
filterable readonly @change="handleChangeModel">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
@@ -57,7 +57,9 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="妫�楠屽憳锛�" prop="checkName">
- <el-input v-model="form.checkName" placeholder="璇疯緭鍏�" clearable/>
+ <el-select v-model="form.checkName" 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="12">
@@ -91,7 +93,9 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="澶勭悊浜猴細" prop="dealName">
- <el-input v-model="form.dealName" placeholder="璇疯緭鍏�" clearable/>
+ <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="12">
@@ -108,6 +112,56 @@
</el-form-item>
</el-col>
</el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="鍘熷洜鍒嗘瀽锛�" prop="reasonAnalysis">
+ <el-input
+ v-model="form.reasonAnalysis"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏�"
+ clearable
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="棰勯槻涓庣籂姝f帾鏂斤細" prop="preventiveCorrective">
+ <el-input
+ v-model="form.preventiveCorrective"
+ type="textarea"
+ :rows="4"
+ placeholder="璇疯緭鍏�"
+ clearable
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="宸ユ椂鎹熷け锛�" prop="lossWorking">
+ <el-input-number
+ v-model="form.lossWorking"
+ :min="0"
+ :step="0.01"
+ :precision="2"
+ style="width: 100%"
+ placeholder="璇疯緭鍏�"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏉愭枡璐规崯澶憋細" prop="lossMaterial">
+ <el-input-number
+ v-model="form.lossMaterial"
+ :min="0"
+ :step="0.01"
+ :precision="2"
+ style="width: 100%"
+ placeholder="璇疯緭鍏�"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
</el-form>
<template #footer>
<div class="dialog-footer">
@@ -120,14 +174,17 @@
</template>
<script setup>
-import {ref} from "vue";
+import {ref, reactive, toRefs, getCurrentInstance} from "vue";
import {modelList, productTreeList} from "@/api/basicData/product.js";
import {
getQualityUnqualifiedInfo,
qualityUnqualifiedAdd,
qualityUnqualifiedUpdate
} from "@/api/qualityManagement/nonconformingManagement.js";
+import {userListNoPage} from "@/api/system/user.js";
+import useUserStore from "@/store/modules/user";
const { proxy } = getCurrentInstance()
+const userStore = useUserStore()
const emit = defineEmits(['close'])
const dialogFormVisible = ref(false);
@@ -148,33 +205,75 @@
inspectType: '',
defectivePhenomena: '',
dealResult: '',
+ dealName: '',
+ dealTime: '',
+ reasonAnalysis: '',
+ preventiveCorrective: '',
+ lossWorking: 0,
+ lossMaterial: 0,
},
rules: {
checkTime: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" },],
process: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- checkName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+ checkName: [{ required: true, message: "璇烽�夋嫨妫�楠屽憳", trigger: "change" }],
productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- model: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+ model: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
unit: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+ dealName: [{ required: true, message: "璇烽�夋嫨澶勭悊浜�", trigger: "change" }],
},
});
const { form, rules } = toRefs(data);
const productOptions = ref([]);
-const modelOptions = ref([])
+const modelOptions = ref([]);
+const userList = ref([]); // 妫�楠屽憳/澶勭悊浜轰笅鎷夊垪琛�
// 鎵撳紑寮规
-const openDialog = (type, row) => {
+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 = {}
+ if (operationType.value === 'add') {
+ form.value = {
+ checkName: userStore.nickName || '',
+ dealName: '',
+ dealTime: '',
+ dealResult: '',
+ defectivePhenomena: '',
+ inspectType: '',
+ checkTime: '',
+ productId: '',
+ model: '',
+ unit: '',
+ quantity: '',
+ productName: '',
+ reasonAnalysis: '',
+ preventiveCorrective: '',
+ lossWorking: 0,
+ lossMaterial: 0,
+ };
+ } else {
+ form.value = {};
+ }
getProductOptions();
if (operationType.value === 'edit') {
getQualityUnqualifiedInfo(row.id).then(res => {
const { inspectState, ...rest } = (res.data || {})
- form.value = { ...rest }
+ form.value = {
+ reasonAnalysis: '',
+ preventiveCorrective: '',
+ lossWorking: 0,
+ lossMaterial: 0,
+ ...rest
+ }
})
}
}
--
Gitblit v1.9.3