From cc5f8607d1f80fdb5d31b29d87b25d708505b03a Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期六, 19 九月 2026 21:06:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津_君歌化工new' into dev_天津_君歌化工new
---
src/views/qualityManagement/finalInspection/components/formDia.vue | 395 +++++++++++++-------------------------------------------
1 files changed, 92 insertions(+), 303 deletions(-)
diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 10bfad9..b87d37c 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -6,10 +6,10 @@
width="70%"
@close="closeDia"
>
- <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
+ <el-form :model="form" label-position="top" :rules="rules" ref="formRef">
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="浜у搧鍚嶇О锛�" prop="productId">
+ <el-form-item label="鍚嶇О锛�" prop="productId">
<el-tree-select
v-model="form.productId"
placeholder="璇烽�夋嫨"
@@ -24,9 +24,9 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
+ <el-form-item label="鍥惧彿锛�" prop="productModelId">
<el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable :disabled="isViewMode || operationType === 'edit'"
- filterable readonly @change="handleChangeModel">
+ filterable readonly @change="handleChangeModel" style="width: 100%">
<el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id" />
</el-select>
</el-form-item>
@@ -34,94 +34,43 @@
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="鎸囨爣閫夋嫨锛�" prop="testStandardId">
- <el-select
- v-model="form.testStandardId"
- placeholder="璇烽�夋嫨鎸囨爣"
- clearable
- @change="handleTestStandardChange"
- style="width: 100%"
- :disabled="isViewMode"
- >
- <el-option
- v-for="item in testStandardOptions"
- :key="item.id"
- :label="item.standardName || item.standardNo"
- :value="item.id"
- />
- </el-select>
+ <el-form-item label="鏉愯川锛�" prop="material">
+ <el-input v-model="form.material" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="楠屾敹渚濇嵁锛�" prop="acceptanceBasis">
+ <el-input v-model="form.acceptanceBasis" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="鍗曚綅锛�" prop="unit">
- <el-input v-model="form.unit" placeholder="璇疯緭鍏�" disabled/>
- </el-form-item>
- </el-col>
<el-col :span="12">
<el-form-item label="鏁伴噺锛�" prop="quantity">
- <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2" :disabled="isViewMode || processQuantityDisabled"/>
+ <el-input v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎶芥鏁帮細" prop="samplingCount">
+ <el-input v-model="form.samplingCount" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="鍚堟牸鏁伴噺锛�"
- prop="qualifiedQuantity">
- <el-input-number :step="0.01"
- :min="0"
- style="width: 100%"
- v-model="form.qualifiedQuantity"
- placeholder="璇疯緭鍏�"
- clearable
- :precision="2"
- @change="handleQualifiedQuantityChange"
- :disabled="isViewMode" />
+ <el-form-item label="鍥剧焊鍏抽敭閮ㄤ綅灏哄锛�" prop="drawingKeyDimensions">
+ <el-input v-model="form.drawingKeyDimensions" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="涓嶅悎鏍兼暟閲忥細"
- prop="unqualifiedQuantity">
- <el-input-number :step="0.01"
- :min="0"
- style="width: 100%"
- v-model="form.unqualifiedQuantity"
- placeholder="璇疯緭鍏�"
- clearable
- :precision="2"
- @change="handleUnqualifiedQuantityChange"
- :disabled="isViewMode" />
+ <el-form-item label="瀹炴祴鍏抽敭閮ㄤ綅灏哄锛�" prop="measuredKeyDimensions">
+ <el-input v-model="form.measuredKeyDimensions" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="妫�娴嬪崟浣嶏細" prop="checkCompany">
- <el-input v-model="form.checkCompany" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
- <el-select v-model="form.checkResult" :disabled="isViewMode">
- <el-option label="鍚堟牸" value="鍚堟牸" />
- <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�" />
- <el-option label="閮ㄥ垎鍚堟牸" value="閮ㄥ垎鍚堟牸" />
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- <el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="妫�楠屽憳锛�" prop="checkName">
- <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable :disabled="isViewMode">
- <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">
- <el-form-item label="妫�娴嬫棩鏈燂細" prop="checkTime">
+ <el-form-item label="妫�楠屾棩鏈燂細" prop="checkTime">
<el-date-picker
v-model="form.checkTime"
type="date"
@@ -134,19 +83,36 @@
/>
</el-form-item>
</el-col>
+ <el-col :span="12">
+ <el-form-item label="鍏ュ簱缂栧彿锛�" prop="warehouseCode">
+ <el-input v-model="form.warehouseCode" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="鎵�灞炶澶囧悕绉帮細" prop="equipmentName">
+ <el-input v-model="form.equipmentName" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="椤圭洰鍚嶇О锛�" prop="projectName">
+ <el-input v-model="form.projectName" placeholder="璇疯緭鍏�" clearable :disabled="isViewMode"/>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="鍒ゅ畾锛�" prop="verdict">
+ <el-select v-model="form.verdict" placeholder="璇烽�夋嫨" clearable :disabled="isViewMode" style="width: 100%">
+ <el-option label="鍚堟牸" value="鍚堟牸" />
+ <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12"></el-col>
</el-row>
</el-form>
- <PIMTable
- rowKey="id"
- :column="tableColumn"
- :tableData="tableData"
- :tableLoading="tableLoading"
- height="400"
- >
- <template #slot="{ row }">
- <el-input v-model="row.testValue" clearable :disabled="isViewMode"/>
- </template>
- </PIMTable>
<template #footer>
<div class="dialog-footer">
<template v-if="!isViewMode">
@@ -162,12 +128,8 @@
<script setup>
import {ref, reactive, toRefs, computed, getCurrentInstance, nextTick} from "vue";
-import {getOptions} from "@/api/procurementManagement/procurementLedger.js";
import {modelList, productTreeList} from "@/api/basicData/product.js";
import {qualityInspectAdd, qualityInspectUpdate} from "@/api/qualityManagement/rawMaterialInspection.js";
-import {userListNoPage} from "@/api/system/user.js";
-import {qualityInspectDetailByProductId, getQualityTestStandardParamByTestStandardId} from "@/api/qualityManagement/metricMaintenance.js";
-import {qualityInspectParamInfo} from "@/api/qualityManagement/qualityInspectParam.js";
const { proxy } = getCurrentInstance()
const emit = defineEmits(['close'])
@@ -175,164 +137,66 @@
const operationType = ref("");
const data = reactive({
form: {
+ id: "",
checkTime: "",
- process: "",
- checkName: "",
- productName: "",
productId: "",
productModelId: "",
model: "",
- testStandardId: "",
- unit: "",
- quantity: "",
- qualifiedQuantity: "",
- unqualifiedQuantity: "",
- checkCompany: "",
- checkResult: "",
+ productName: "",
+ material: "",
+ acceptanceBasis: "",
+ quantity: undefined,
+ samplingCount: undefined,
+ drawingKeyDimensions: "",
+ measuredKeyDimensions: "",
+ warehouseCode: "",
+ equipmentName: "",
+ projectName: "",
+ verdict: "",
},
rules: {
- checkTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- process: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- checkName: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
- productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ productId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
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" }],
- checkCompany: [{ required: false, message: "璇疯緭鍏�", trigger: "blur" }],
- checkResult: [{ required: true, message: "璇疯緭鍏�", trigger: "change" }],
},
});
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 supplierList = ref([]);
+// 宸叉彁浜ょ殑璁板綍鐐圭紪杈戞椂鎸夊彧璇诲鐞�
+const readOnlyEdit = ref(false);
+// 鏄惁涓哄彧璇绘ā寮忥紙鏌ョ湅 鎴� 宸叉彁浜よ褰曠偣缂栬緫锛�
+const isViewMode = computed(() => operationType.value === 'view' || readOnlyEdit.value);
const productOptions = ref([]);
-const tableColumn = ref([
- {
- label: "鎸囨爣",
- prop: "parameterItem",
- },
- {
- label: "鍗曚綅",
- prop: "unit",
- },
- {
- label: "鏍囧噯鍊�",
- prop: "standardValue",
- },
- {
- label: "鍐呮帶鍊�",
- prop: "controlValue",
- },
- {
- label: "妫�楠屽��",
- prop: "testValue",
- dataType: 'slot',
- slot: 'slot',
- },
-]);
-const tableData = ref([]);
-const tableLoading = ref(false);
-const userList = ref([]);
-const currentProductId = ref(0);
-const testStandardOptions = ref([]); // 鎸囨爣閫夋嫨涓嬫媺妗嗘暟鎹�
const modelOptions = ref([]);
+const currentProductId = ref(0);
// 鎵撳紑寮规
const openDialog = async (type, row) => {
+ readOnlyEdit.value = type === 'edit' && row?.inspectState == 1;
operationType.value = type;
+ // 鍏堥噸缃〃鍗曪紝閬垮厤寮傛鍔犺浇澶辫触鏃舵畫鐣欎笂涓�娆′細璇濈殑鏁版嵁锛堝惈id锛�
+ form.value = { ...data.form };
+ if (operationType.value === 'edit' || operationType.value === 'view') {
+ form.value = { ...form.value, ...row };
+ }
dialogFormVisible.value = true;
- // 鍏堟竻绌鸿〃鍗曢獙璇佺姸鎬侊紝閬垮厤闂儊
await nextTick();
proxy.$refs.formRef?.clearValidate();
- // 骞惰鍔犺浇鍩虹鏁版嵁
- const [userListsRes] = await Promise.all([
- userListNoPage(),
- getProductOptions(),
- getOptions().then((res) => {
- supplierList.value = res.data;
- })
- ]);
- userList.value = userListsRes.data;
-
- form.value = {}
- testStandardOptions.value = [];
- tableData.value = [];
+ await getProductOptions();
+ modelOptions.value = [];
if (operationType.value === 'edit' || operationType.value === 'view') {
- // 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
- const savedTestStandardId = row.testStandardId;
- // 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
- form.value = {...row, testStandardId: ''}
- currentProductId.value = row.productId || 0
- // 娓呯┖楠岃瘉鐘舵�侊紝閬垮厤鏁版嵁鍔犺浇杩囩▼涓殑鏍¢獙闂儊
- nextTick(() => {
- proxy.$refs.formRef?.clearValidate();
- });
-
- // 缂栬緫妯″紡涓嬶紝骞惰鍔犺浇瑙勬牸鍨嬪彿鍜屾寚鏍囬�夐」
+ currentProductId.value = row.productId || 0;
if (currentProductId.value) {
- // 璁剧疆浜у搧鍚嶇О
form.value.productName = findNodeById(productOptions.value, currentProductId.value);
-
- // 骞惰鍔犺浇瑙勬牸鍨嬪彿鍜屾寚鏍囬�夐」
- const params = {
- productId: currentProductId.value,
- inspectType: 2
- };
-
- Promise.all([
- modelList({ id: currentProductId.value }),
- qualityInspectDetailByProductId(params)
- ]).then(([modelRes, testStandardRes]) => {
- // 璁剧疆瑙勬牸鍨嬪彿閫夐」
- modelOptions.value = modelRes || [];
- // 濡傛灉琛ㄥ崟涓凡鏈� productModelId锛岃缃搴旂殑 model 鍜� unit
- if (form.value.productModelId && modelOptions.value.length > 0) {
- const selectedModel = modelOptions.value.find(item => item.id == form.value.productModelId);
- if (selectedModel) {
- form.value.model = selectedModel.model || '';
- form.value.unit = selectedModel.unit || '';
- }
- }
-
- // 璁剧疆鎸囨爣閫夐」
- testStandardOptions.value = testStandardRes.data || [];
-
- // 璁剧疆 testStandardId 骞跺姞杞藉弬鏁板垪琛�
- nextTick(() => {
- if (savedTestStandardId) {
- // 纭繚绫诲瀷鍖归厤锛坕tem.id 鍙兘鏄暟瀛楁垨瀛楃涓诧級
- const matchedOption = testStandardOptions.value.find(item =>
- item.id == savedTestStandardId || String(item.id) === String(savedTestStandardId)
- );
- if (matchedOption) {
- // 纭繚浣跨敤鍖归厤椤圭殑 id锛堜繚鎸佺被鍨嬩竴鑷达級
- form.value.testStandardId = matchedOption.id;
- } else {
- // 濡傛灉鎵句笉鍒板尮閰嶉」锛屽皾璇曠洿鎺ヤ娇鐢ㄥ師鍊�
- console.warn('鏈壘鍒板尮閰嶇殑鎸囨爣閫夐」锛宼estStandardId:', savedTestStandardId, '鍙敤閫夐」:', testStandardOptions.value);
- form.value.testStandardId = savedTestStandardId;
- }
- }
- // 缂栬緫鍦烘櫙淇濈暀宸叉湁妫�楠屽�硷紝鐩存帴鎷夊彇鍘熷弬鏁版暟鎹�
- getQualityInspectParamList(row.id);
- });
+ modelList({ id: currentProductId.value }).then((res) => {
+ modelOptions.value = res || [];
});
- } else {
- getQualityInspectParamList(row.id);
}
}
-}
+ nextTick(() => {
+ proxy.$refs.formRef?.clearValidate();
+ });
+};
const getProductOptions = () => {
return productTreeList().then((res) => {
productOptions.value = convertIdToValue(res);
@@ -340,44 +204,20 @@
};
const getModels = (value) => {
form.value.productModelId = undefined;
- form.value.unit = undefined;
+ form.value.model = undefined;
modelOptions.value = [];
currentProductId.value = value
form.value.productName = findNodeById(productOptions.value, value);
- modelList({ id: value }).then((res) => {
- modelOptions.value = res;
- })
- if (currentProductId.value) {
- getList();
+ if (value) {
+ modelList({ id: value }).then((res) => {
+ modelOptions.value = res || [];
+ })
}
};
const handleChangeModel = (value) => {
form.value.model = modelOptions.value.find(item => item.id == value)?.model || '';
- form.value.unit = modelOptions.value.find(item => item.id == value)?.unit || '';
}
-
-const handleQualifiedQuantityChange = (value) => {
- if (value === null || value === undefined) {
- form.value.qualifiedQuantity = 0;
- return;
- }
- const quantity = parseFloat(form.value.quantity) || 0;
- const qualified = parseFloat(value) || 0;
- form.value.qualifiedQuantity = qualified > quantity?quantity:qualified;
- form.value.unqualifiedQuantity = Math.max(0, quantity - qualified);
-};
-
-const handleUnqualifiedQuantityChange = (value) => {
- if (value === null || value === undefined) {
- form.value.unqualifiedQuantity = 0;
- return;
- }
- const quantity = parseFloat(form.value.quantity) || 0;
- const unqualified = parseFloat(value) || 0;
- form.value.unqualifiedQuantity = unqualified > quantity?quantity:unqualified;
- form.value.qualifiedQuantity = Math.max(0, quantity - unqualified);
-};
const findNodeById = (nodes, productId) => {
for (let i = 0; i < nodes.length; i++) {
@@ -411,14 +251,9 @@
const submitForm = () => {
proxy.$refs.formRef.validate(valid => {
if (valid) {
- form.value.inspectType = 2;
+ const data = { ...form.value, inspectType: 2 };
if (operationType.value === "add") {
- tableData.value.forEach((item) => {
- delete item.id;
- });
- }
- const data = { ...form.value, qualityInspectParams: tableData.value };
- if (operationType.value === "add") {
+ delete data.id;
qualityInspectAdd(data).then(res => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
@@ -432,57 +267,11 @@
}
});
}
-const getList = () => {
- if (!currentProductId.value) {
- testStandardOptions.value = [];
- tableData.value = [];
- return;
- }
- let params = {
- productId: currentProductId.value,
- inspectType: 2
- };
- qualityInspectDetailByProductId(params).then(res => {
- // 淇濆瓨涓嬫媺妗嗛�夐」鏁版嵁
- testStandardOptions.value = res.data || [];
- // 娓呯┖琛ㄦ牸鏁版嵁锛岀瓑寰呯敤鎴烽�夋嫨鎸囨爣
- tableData.value = [];
- // 娓呯┖鎸囨爣閫夋嫨
- form.value.testStandardId = '';
- });
-}
-
-// 鎸囨爣閫夋嫨鍙樺寲澶勭悊
-const handleTestStandardChange = (testStandardId) => {
- if (!testStandardId) {
- tableData.value = [];
- return;
- }
- tableLoading.value = true;
- getQualityTestStandardParamByTestStandardId(testStandardId).then(res => {
- tableData.value = res.data || [];
- tableData.value = tableData.value.map(item => ({
- ...item,
- id: null
- }));
- }).catch(error => {
- console.error('鑾峰彇鏍囧噯鍙傛暟澶辫触:', error);
- tableData.value = [];
- }).finally(() => {
- tableLoading.value = false;
- });
-}
-const getQualityInspectParamList = (id) => {
- qualityInspectParamInfo(id).then(res => {
- tableData.value = res.data;
- });
-}
// 鍏抽棴寮规
const closeDia = () => {
proxy.resetForm("formRef");
- tableData.value = [];
- testStandardOptions.value = [];
- form.value.testStandardId = '';
+ modelOptions.value = [];
+ readOnlyEdit.value = false;
dialogFormVisible.value = false;
emit('close');
}
--
Gitblit v1.9.3