From 62b4b7af6fb8dea23cf14b0709156871a3c144af Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 23 六月 2026 14:41:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_新疆_大罗素马铃薯new' into dev_新疆_大罗素马铃薯new
---
src/views/qualityManagement/processInspection/components/formDia.vue | 398 ++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 282 insertions(+), 116 deletions(-)
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index b15eabb..8654e86 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -1,7 +1,7 @@
<template>
<div>
<el-dialog v-model="dialogFormVisible"
- :title="operationType === 'add' ? '鏂板杩囩▼妫�楠�' : '缂栬緫杩囩▼妫�楠�'"
+ :title="operationType === 'add' ? '鏂板杩囩▼妫�楠�' : operationType === 'view' ? '鏌ョ湅杩囩▼妫�楠�' : '缂栬緫杩囩▼妫�楠�'"
width="70%"
@close="closeDia">
<el-form :model="form"
@@ -11,17 +11,18 @@
ref="formRef">
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="宸ュ簭锛�"
- prop="process">
- <el-select v-model="form.process"
- placeholder="璇烽�夋嫨宸ュ簭"
+ <el-form-item label="閲囪喘鍚堝悓鍙凤細"
+ prop="purchaseContractNo">
+ <el-select v-model="form.purchaseContractNo"
+ placeholder="璇烽�夋嫨"
clearable
- :disabled="processQuantityDisabled"
+ filterable
+ :disabled="isViewMode"
style="width: 100%">
- <el-option v-for="item in processList"
- :key="item.name"
- :label="item.name"
- :value="item.name" />
+ <el-option v-for="item in purchaseContractList"
+ :key="item.id"
+ :label="item.purchaseContractNumber + ' - ' + item.supplierName"
+ :value="item.purchaseContractNumber" />
</el-select>
</el-form-item>
</el-col>
@@ -35,7 +36,7 @@
@change="getModels"
:data="productOptions"
:render-after-expand="false"
- :disabled="operationType === 'edit'"
+ :disabled="isViewMode || operationType === 'edit'"
style="width: 100%" />
</el-form-item>
</el-col>
@@ -47,7 +48,7 @@
<el-select v-model="form.productModelId"
placeholder="璇烽�夋嫨"
clearable
- :disabled="operationType === 'edit'"
+ :disabled="isViewMode || operationType === 'edit'"
filterable
readonly
@change="handleChangeModel">
@@ -65,7 +66,8 @@
placeholder="璇烽�夋嫨鎸囨爣"
clearable
@change="handleTestStandardChange"
- style="width: 100%">
+ style="width: 100%"
+ :disabled="isViewMode">
<el-option v-for="item in testStandardOptions"
:key="item.id"
:label="item.standardName || item.standardNo"
@@ -93,7 +95,7 @@
placeholder="璇疯緭鍏�"
clearable
:precision="2"
- :disabled="processQuantityDisabled" />
+ :disabled="isViewMode || processQuantityDisabled" />
</el-form-item>
</el-col>
</el-row>
@@ -108,7 +110,8 @@
placeholder="璇疯緭鍏�"
clearable
:precision="2"
- @change="handleQualifiedQuantityChange" />
+ @change="handleQualifiedQuantityChange"
+ :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -121,7 +124,28 @@
placeholder="璇疯緭鍏�"
clearable
:precision="2"
- @change="handleUnqualifiedQuantityChange" />
+ @change="handleUnqualifiedQuantityChange"
+ :disabled="isViewMode" />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="妫�楠岃鍒�" prop="inspectRule">
+ <el-radio-group v-model="form.inspectRule" :disabled="isViewMode">
+ <el-radio :label="0">鍏ㄦ</el-radio>
+ <el-radio :label="1">鎶芥</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ <el-col :span="6" v-if="form.inspectRule === 1">
+ <el-form-item label="鎶芥姣斾緥(%)" prop="sampleRatio">
+ <el-input-number v-model="form.sampleRatio" :min="0.01" :max="100" :precision="2" placeholder="璇疯緭鍏ユ娊妫�姣斾緥" style="width: 100%" @change="calcSampleQuantity" :disabled="isViewMode" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="6" v-if="form.inspectRule === 1">
+ <el-form-item label="鎶芥鏁伴噺" prop="sampleQuantity">
+ <el-input-number v-model="form.sampleQuantity" :min="0" :precision="2" style="width: 100%" disabled />
</el-form-item>
</el-col>
</el-row>
@@ -131,20 +155,18 @@
prop="checkCompany">
<el-input v-model="form.checkCompany"
placeholder="璇疯緭鍏�"
- clearable />
+ clearable
+ :disabled="isViewMode" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="妫�娴嬬粨鏋滐細"
prop="checkResult">
- <el-select v-model="form.checkResult">
- <el-option label="鍚堟牸"
- value="鍚堟牸" />
- <el-option label="涓嶅悎鏍�"
- value="涓嶅悎鏍�" />
- <el-option label="閮ㄥ垎鍚堟牸"
- value="閮ㄥ垎鍚堟牸" />
- </el-select>
+ <el-radio-group v-model="form.checkResult" :disabled="isViewMode || autoJudgeResult === '涓嶅悎鏍�'">
+ <el-radio label="鍚堟牸">鍚堟牸</el-radio>
+ <el-radio label="涓嶅悎鏍�">涓嶅悎鏍�</el-radio>
+ <el-radio label="閮ㄥ垎鍚堟牸">閮ㄥ垎鍚堟牸</el-radio>
+ </el-radio-group>
</el-form-item>
</el-col>
</el-row>
@@ -154,7 +176,8 @@
prop="checkName">
<el-select v-model="form.checkName"
placeholder="璇烽�夋嫨"
- clearable>
+ clearable
+ :disabled="isViewMode">
<el-option v-for="item in userList"
:key="item.nickName"
:label="item.nickName"
@@ -171,7 +194,8 @@
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
clearable
- style="width: 100%" />
+ style="width: 100%"
+ :disabled="isViewMode" />
</el-form-item>
</el-col>
</el-row>
@@ -180,17 +204,70 @@
:column="tableColumn"
:tableData="tableData"
:tableLoading="tableLoading"
+ :isShowPagination="false"
height="400">
- <template #slot="{ row }">
+ <template #judgeTypeSlot="{ row }">
+ <el-tag v-if="row.judgeType === '鈮�'" type="success">鈮�</el-tag>
+ <el-tag v-else-if="row.judgeType === '鈮�'" type="warning">鈮�</el-tag>
+ <el-tag v-else-if="row.judgeType === '鑼冨洿'" type="info">鑼冨洿</el-tag>
+ <el-tag v-else>鏂囧瓧</el-tag>
+ </template>
+ <template #isRequiredSlot="{ row }">
+ <el-tag v-if="row.isRequired === 1" type="danger">鏄�</el-tag>
+ <el-tag v-else type="info">鍚�</el-tag>
+ </template>
+ <template #testValueSlot="{ row }">
<el-input v-model="row.testValue"
- clearable />
+ clearable
+ :disabled="isViewMode"
+ @input="handleTestValueChange(row)" />
+ </template>
+ <template #isQualifiedSlot="{ row }">
+ <template v-if="row.judgeType !== '鏂囧瓧鎻忚堪'">
+ <el-tag v-if="row.isQualified === 1" type="success">鍚堟牸</el-tag>
+ <el-tag v-else-if="row.isQualified === 0" type="danger">涓嶅悎鏍�</el-tag>
+ <span v-else>-</span>
+ </template>
+ <template v-else>
+ <el-select v-model="row.isQualified" placeholder="璇烽�夋嫨" size="small" :disabled="isViewMode" @change="handleTextResultChange">
+ <el-option :value="1" label="鍚堟牸" />
+ <el-option :value="0" label="涓嶅悎鏍�" />
+ </el-select>
+ </template>
</template>
</PIMTable>
+
+ <div v-if="!isViewMode" style="margin-top: 16px;">
+ <el-form label-width="120px">
+ <el-form-item label="鑷姩鍒ゆ柇缁撴灉">
+ <template v-if="autoJudgeResult">
+ <el-tag v-if="autoJudgeResult === '鍚堟牸'" type="success" size="large">鍚堟牸</el-tag>
+ <el-tag v-else-if="autoJudgeResult === '閮ㄥ垎鍚堟牸'" type="warning" size="large">閮ㄥ垎鍚堟牸</el-tag>
+ <el-tag v-else type="danger" size="large">涓嶅悎鏍�</el-tag>
+ <span v-if="autoJudgeResult === '涓嶅悎鏍�'" style="margin-left: 10px; color: #909399;">
+ 锛堝繀瑕佸垽鏂弬鏁版湁涓嶅悎鏍奸」锛屼笉鍙墜鍔ㄤ慨鏀癸級
+ </span>
+ <span v-if="autoJudgeResult === '閮ㄥ垎鍚堟牸'" style="margin-left: 10px; color: #909399;">
+ 锛堝繀瑕佸垽鏂弬鏁板潎鍚堟牸锛岄潪蹇呰鍙傛暟鏈変笉鍚堟牸椤癸紝鍙墜鍔ㄩ�夋嫨鏈�缁堢粨鏋滐級
+ </span>
+ </template>
+ <template v-else>
+ <el-tag type="info" size="large">闇�鎵嬪姩鍒ゆ柇</el-tag>
+ <span style="margin-left: 10px; color: #909399;">
+ 锛堟墍鏈夊弬鏁板潎涓烘枃瀛楁弿杩扮被鍨嬶紝璇锋墜鍔ㄩ�夋嫨锛�
+ </span>
+ </template>
+ </el-form-item>
+ </el-form>
+ </div>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary"
- @click="submitForm">纭</el-button>
- <el-button @click="closeDia">鍙栨秷</el-button>
+ <template v-if="!isViewMode">
+ <el-button type="primary"
+ @click="submitForm">纭</el-button>
+ <el-button @click="closeDia">鍙栨秷</el-button>
+ </template>
+ <el-button v-else @click="closeDia">鍏抽棴</el-button>
</div>
</template>
</el-dialog>
@@ -206,7 +283,7 @@
getCurrentInstance,
nextTick,
} from "vue";
- import { getOptions } from "@/api/procurementManagement/procurementLedger.js";
+ import { getOptions, purchaseListPage } from "@/api/procurementManagement/procurementLedger.js";
import { modelList, productTreeList } from "@/api/basicData/product.js";
import {
qualityInspectAdd,
@@ -218,7 +295,7 @@
} from "@/api/qualityManagement/metricMaintenance.js";
import { userListNoPage } from "@/api/system/user.js";
import { qualityInspectParamInfo } from "@/api/qualityManagement/qualityInspectParam.js";
- import { list } from "@/api/productionManagement/productionProcess";
+
import qualified from "@/views/inventoryManagement/stockManagement/Qualified.vue";
const { proxy } = getCurrentInstance();
const emit = defineEmits(["close"]);
@@ -228,7 +305,6 @@
const data = reactive({
form: {
checkTime: "",
- process: "",
checkName: "",
productName: "",
productId: "",
@@ -236,63 +312,59 @@
model: "",
testStandardId: "",
unit: "",
- quantity: "",
+ quantity: undefined,
qualifiedQuantity: "",
unqualifiedQuantity: "",
checkCompany: "",
checkResult: "",
+ purchaseContractNo: "",
+ inspectRule: 0,
+ sampleRatio: undefined,
+ sampleQuantity: undefined,
},
rules: {
- checkTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- process: [{ required: true, message: "璇烽�夋嫨宸ュ簭", trigger: "change" }],
+ checkTime: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
checkName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
testStandardId: [{ required: false, message: "璇烽�夋嫨鎸囨爣", trigger: "change" }],
unit: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
- quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- qualifiedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- unqualifiedQuantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ quantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+ qualifiedQuantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
+ unqualifiedQuantity: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
- checkResult: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
+ purchaseContractNo: [{ required: false, message: "璇烽�夋嫨", trigger: "change" }],
+ checkResult: [{ required: false, message: "璇疯緭鍏�", trigger: "change" }],
},
});
const userList = ref([]);
const { form, rules } = toRefs(data);
+ // 鏄惁涓烘煡鐪嬫ā寮�
+ const isViewMode = computed(() => operationType.value === 'view');
// 缂栬緫鏃讹細productMainId 鎴� purchaseLedgerId 浠讳竴鏈夊�煎垯宸ュ簭銆佹暟閲忕疆鐏�
const processQuantityDisabled = computed(() => {
const v = form.value || {};
return !!(v.productMainId != null || v.purchaseLedgerId != null);
});
- const processList = ref([]); // 宸ュ簭涓嬫媺鍒楄〃锛堝伐搴忓悕绉� name锛�
+
const supplierList = ref([]);
const productOptions = ref([]);
+ const purchaseContractList = ref([]); // 閲囪喘鍚堝悓鍙峰垪琛�
const tableColumn = ref([
- {
- label: "鎸囨爣",
- prop: "parameterItem",
- },
- {
- label: "鍗曚綅",
- prop: "unit",
- },
- {
- label: "鏍囧噯鍊�",
- prop: "standardValue",
- },
- {
- label: "鍐呮帶鍊�",
- prop: "controlValue",
- },
- {
- label: "妫�楠屽��",
- prop: "testValue",
- dataType: "slot",
- slot: "slot",
- },
+ { label: "鎸囨爣", prop: "parameterItem" },
+ { label: "鍗曚綅", prop: "unit" },
+ { label: "鍘傚鏍囧噯鍊�", prop: "standardValue" },
+ { label: "涓嬮檺鍊�", prop: "minValue" },
+ { label: "涓婇檺鍊�", prop: "maxValue" },
+ { label: "鍐呮帶鍊�", prop: "controlValue" },
+ { label: "鍒ゆ柇绫诲瀷", prop: "judgeType", dataType: "slot", slot: "judgeTypeSlot" },
+ { label: "蹇呰鍒ゆ柇", prop: "isRequired", dataType: "slot", slot: "isRequiredSlot" },
+ { label: "妫�楠屽��", prop: "testValue", dataType: "slot", slot: "testValueSlot" },
+ { label: "鏄惁鍚堟牸", prop: "isQualified", dataType: "slot", slot: "isQualifiedSlot" },
]);
const tableData = ref([]);
const tableLoading = ref(false);
+ const autoJudgeResult = ref(null);
const currentProductId = ref(0);
const testStandardOptions = ref([]); // 鎸囨爣閫夋嫨涓嬫媺妗嗘暟鎹�
const modelOptions = ref([]);
@@ -303,20 +375,19 @@
getOptions().then(res => {
supplierList.value = res.data;
});
- // 鍔犺浇宸ュ簭涓嬫媺鍒楄〃
- try {
- const res = await list({ size: -1, current: -1 });
- processList.value = res.data.records || [];
- } catch (e) {
- console.error("鍔犺浇宸ュ簭鍒楄〃澶辫触", e);
- processList.value = [];
- }
let userLists = await userListNoPage();
userList.value = userLists.data;
- // 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡鈥滈棯涓�涓嬧�濓級
+ // 鍔犺浇閲囪喘鍚堝悓鍙峰垪琛�
+ try {
+ const contractRes = await purchaseListPage({ pageNum: -1, pageSize: -1 });
+ purchaseContractList.value = contractRes.data?.records || [];
+ } catch (e) {
+ console.error("鍔犺浇閲囪喘鍚堝悓鍙峰け璐�", e);
+ purchaseContractList.value = [];
+ }
+ // 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡"闂竴涓�"锛�
form.value = {
checkTime: "",
- process: "",
checkName: "",
productName: "",
productId: "",
@@ -324,15 +395,19 @@
model: "",
testStandardId: "",
unit: "",
- quantity: "",
+ quantity: undefined,
checkCompany: "",
checkResult: "",
+ purchaseContractNo: "",
+ inspectRule: 0,
+ sampleRatio: undefined,
+ sampleQuantity: undefined,
};
testStandardOptions.value = [];
tableData.value = [];
// 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/瑙勬牸鍨嬪彿鏃犳硶鍙嶆樉
await getProductOptions();
- if (operationType.value === "edit") {
+ if (operationType.value === "edit" || operationType.value === "view") {
// 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
const savedTestStandardId = row.testStandardId;
// 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
@@ -358,7 +433,6 @@
let params = {
productId: currentProductId.value,
inspectType: 1,
- process: form.value.process || "",
};
qualityInspectDetailByProductId(params).then(res => {
testStandardOptions.value = res.data || [];
@@ -400,6 +474,7 @@
getQualityInspectParamList(row.id);
}
}
+ autoJudgeResult.value = null;
// 鏈�鍚庡啀鎵撳紑寮圭獥锛屽苟娓呯悊鏍¢獙鎬侊紝閬垮厤蹇呭~鎻愮ず闂儊
dialogFormVisible.value = true;
nextTick(() => {
@@ -435,24 +510,36 @@
const handleQualifiedQuantityChange = (value) => {
if (value === null || value === undefined) {
- form.value.qualifiedQuantity = 0;
+ form.value.qualifiedQuantity = undefined;
return;
}
- const quantity = parseFloat(form.value.quantity) || 0;
+ const quantity = parseFloat(form.value.quantity);
+ if (isNaN(quantity) || quantity <= 0) return;
const qualified = parseFloat(value) || 0;
- form.value.qualifiedQuantity = qualified > quantity?quantity:qualified;
+ form.value.qualifiedQuantity = Math.min(qualified, quantity);
form.value.unqualifiedQuantity = Math.max(0, quantity - qualified);
};
const handleUnqualifiedQuantityChange = (value) => {
if (value === null || value === undefined) {
- form.value.unqualifiedQuantity = 0;
+ form.value.unqualifiedQuantity = undefined;
return;
}
- const quantity = parseFloat(form.value.quantity) || 0;
+ const quantity = parseFloat(form.value.quantity);
+ if (isNaN(quantity) || quantity <= 0) return;
const unqualified = parseFloat(value) || 0;
- form.value.unqualifiedQuantity = unqualified > quantity?quantity:unqualified;
+ form.value.unqualifiedQuantity = Math.min(unqualified, quantity);
form.value.qualifiedQuantity = Math.max(0, quantity - unqualified);
+ };
+
+ const calcSampleQuantity = () => {
+ const q = parseFloat(form.value.quantity) || 0;
+ const r = parseFloat(form.value.sampleRatio) || 0;
+ if (q > 0 && r > 0) {
+ form.value.sampleQuantity = Number((q * r / 100).toFixed(2));
+ } else {
+ form.value.sampleQuantity = undefined;
+ }
};
const findNodeById = (nodes, productId) => {
@@ -483,45 +570,119 @@
return newItem;
});
}
+ const handleTestValueChange = (row) => {
+ if (isViewMode.value) return;
+ if (!row.testValue || !row.judgeType || row.judgeType === '鏂囧瓧鎻忚堪') {
+ return;
+ }
+ const testVal = parseFloat(row.testValue);
+ if (isNaN(testVal)) return;
+
+ let qualified = false;
+ if (row.judgeType === '鈮�') {
+ const stdVal = parseFloat(row.standardValue);
+ if (isNaN(stdVal)) return;
+ qualified = testVal >= stdVal;
+ } else if (row.judgeType === '鈮�') {
+ const stdVal = parseFloat(row.standardValue);
+ if (isNaN(stdVal)) return;
+ qualified = testVal <= stdVal;
+ } else if (row.judgeType === '鑼冨洿') {
+ const minVal = parseFloat(row.minValue);
+ const maxVal = parseFloat(row.maxValue);
+ if (isNaN(minVal) || isNaN(maxVal)) return;
+ qualified = testVal >= minVal && testVal <= maxVal;
+ } else {
+ return;
+ }
+ row.isQualified = qualified ? 1 : 0;
+ performAutoJudgeAll();
+ };
+
+ const handleTextResultChange = () => {
+ performAutoJudgeAll()
+ };
+
+ const performAutoJudgeAll = () => {
+ if (!tableData.value.length) return;
+ const allTextDesc = tableData.value.every(item => item.judgeType === '鏂囧瓧鎻忚堪');
+ if (allTextDesc) {
+ autoJudgeResult.value = null;
+ return;
+ }
+ const requiredParams = tableData.value.filter(item => item.isRequired === 1);
+ if (requiredParams.length === 0) {
+ autoJudgeResult.value = null;
+ return;
+ }
+ const hasUnqualified = requiredParams.some(item => item.isQualified === 0);
+ const allJudged = requiredParams.every(item => item.isQualified === 1 || item.isQualified === 0);
+ if (!allJudged) {
+ autoJudgeResult.value = null;
+ return;
+ }
+ if (hasUnqualified) {
+ autoJudgeResult.value = '涓嶅悎鏍�';
+ form.value.checkResult = '涓嶅悎鏍�';
+ return;
+ }
+ const nonRequiredUnqualified = tableData.value.filter(item => item.isRequired !== 1 && item.isQualified === 0);
+ if (nonRequiredUnqualified.length > 0) {
+ autoJudgeResult.value = '閮ㄥ垎鍚堟牸';
+ form.value.checkResult = '閮ㄥ垎鍚堟牸';
+ } else {
+ autoJudgeResult.value = '鍚堟牸';
+ form.value.checkResult = '鍚堟牸';
+ }
+};
+
// 宸ュ簭鍙樺寲澶勭悊
// 鎻愪氦浜у搧琛ㄥ崟
const submitForm = () => {
proxy.$refs.formRef.validate(valid => {
if (valid) {
- form.value.inspectType = 1;
- const processName = form.value.process || "";
- if (operationType.value === "add") {
- tableData.value.forEach(item => {
- delete item.id;
- });
- }
- // 纭繚鏁伴噺涓嶄负null
- const quantity = parseFloat(form.value.quantity) || 0;
- const qualified = parseFloat(form.value.qualifiedQuantity) || 0;
- const unqualified = parseFloat(form.value.unqualifiedQuantity) || 0;
+ performAutoJudgeAll();
+ form.value.inspectType = 1;
+ const processName = form.value.process || "";
+ if (operationType.value === "add") {
+ tableData.value.forEach(item => {
+ delete item.id;
+ });
+ }
+ // 纭繚鏁伴噺涓嶄负null
+ const quantity = parseFloat(form.value.quantity) || 0;
+ const qualified = parseFloat(form.value.qualifiedQuantity) || 0;
+ const unqualified = parseFloat(form.value.unqualifiedQuantity) || 0;
- // 楠岃瘉鏁伴噺鍏崇郴
- if (qualified + unqualified !== quantity) {
- proxy.$modal.msgError("鍚堟牸鏁伴噺涓庝笉鍚堟牸鏁伴噺涔嬪拰蹇呴』绛変簬鎬绘暟閲�");
- return;
- }
+ // 楠岃瘉鏁伴噺鍏崇郴
+ if (qualified + unqualified !== quantity) {
+ proxy.$modal.msgError("鍚堟牸鏁伴噺涓庝笉鍚堟牸鏁伴噺涔嬪拰蹇呴』绛変簬鎬绘暟閲�");
+ return;
+ }
- const data = {
- ...form.value,
- process: processName, // 淇濈暀 process 瀛楁浠ュ吋瀹瑰悗绔�
- qualityInspectParams: tableData.value,
- };
- if (operationType.value === "add") {
- qualityInspectAdd(data).then(res => {
- proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
- closeDia();
- });
- } else {
- qualityInspectUpdate(data).then(res => {
- proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
- closeDia();
- });
- }
+ // 鏍规嵁閲囪喘鍚堝悓鍙锋煡鎵惧搴旂殑 purchaseLedgerId
+ const selectedContract = purchaseContractList.value.find(
+ item => item.purchaseContractNumber === form.value.purchaseContractNo
+ );
+ const purchaseLedgerId = selectedContract ? selectedContract.id : null;
+
+ const data = {
+ ...form.value,
+ process: processName, // 淇濈暀 process 瀛楁浠ュ吋瀹瑰悗绔�
+ purchaseLedgerId: purchaseLedgerId, // 鎻愪氦 purchaseLedgerId
+ qualityInspectParams: tableData.value,
+ };
+ if (operationType.value === "add") {
+ qualityInspectAdd(data).then(res => {
+ proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+ closeDia();
+ });
+ } else {
+ qualityInspectUpdate(data).then(res => {
+ proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+ closeDia();
+ });
+ }
}
});
};
@@ -557,6 +718,10 @@
getQualityTestStandardParamByTestStandardId(testStandardId)
.then(res => {
tableData.value = res.data || [];
+ tableData.value = tableData.value.map(item => ({
+ ...item,
+ id: null
+ }));
})
.catch(error => {
console.error("鑾峰彇鏍囧噯鍙傛暟澶辫触:", error);
@@ -577,6 +742,7 @@
tableData.value = [];
testStandardOptions.value = [];
form.value.testStandardId = "";
+ autoJudgeResult.value = null;
dialogFormVisible.value = false;
emit("close");
};
--
Gitblit v1.9.3