From 64a65ca91d1b21755088616af63db669515aff6d Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 14 八月 2025 15:16:31 +0800 Subject: [PATCH] 出厂检验修改 --- src/views/qualityManagement/finalInspection/components/formDia.vue | 79 ++++++++++++++++++- src/views/qualityManagement/rawMaterialInspection/index.vue | 8 +- src/views/qualityManagement/finalInspection/index.vue | 142 +++++++++++++++++++++++++++++++++-- src/views/qualityManagement/processInspection/index.vue | 7 + 4 files changed, 216 insertions(+), 20 deletions(-) diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue index 34f5990..6547e3f 100644 --- a/src/views/qualityManagement/finalInspection/components/formDia.vue +++ b/src/views/qualityManagement/finalInspection/components/formDia.vue @@ -58,8 +58,10 @@ <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> + <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"> @@ -77,6 +79,17 @@ </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/> + </template> + </PIMTable> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">纭</el-button> @@ -92,6 +105,9 @@ import {getOptions} from "@/api/procurementManagement/procurementLedger.js"; import {productTreeList} from "@/api/basicData/product.js"; import {qualityInspectAdd, qualityInspectUpdate} from "@/api/qualityManagement/rawMaterialInspection.js"; +import {userListNoPage} from "@/api/system/user.js"; +import {qualityInspectDetailByProductId} from "@/api/qualityManagement/metricMaintenance.js"; +import {qualityInspectParamInfo} from "@/api/qualityManagement/qualityInspectParam.js"; const { proxy } = getCurrentInstance() const emit = defineEmits(['close']) @@ -125,17 +141,50 @@ const { form, rules } = toRefs(data); const supplierList = ref([]); 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 openDialog = (type, row) => { +const openDialog = async (type, row) => { operationType.value = type; dialogFormVisible.value = true; getOptions().then((res) => { supplierList.value = res.data; }); + let userLists = await userListNoPage(); + userList.value = userLists.data; + form.value = {} getProductOptions(); if (operationType.value === 'edit') { form.value = {...row} + currentProductId.value = row.productId || 0 + getQualityInspectParamList(row.id) } } const getProductOptions = () => { @@ -144,7 +193,11 @@ }); }; const getModels = (value) => { + currentProductId.value = value form.value.productName = findNodeById(productOptions.value, value); + if (currentProductId) { + getList(); + } }; const findNodeById = (nodes, productId) => { for (let i = 0; i < nodes.length; i++) { @@ -179,13 +232,19 @@ proxy.$refs.formRef.validate(valid => { if (valid) { 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") { - qualityInspectAdd(form.value).then(res => { + qualityInspectAdd(data).then(res => { proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); closeDia(); }) } else { - qualityInspectUpdate(form.value).then(res => { + qualityInspectUpdate(data).then(res => { proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); closeDia(); }) @@ -193,6 +252,16 @@ } }) } +const getList = () => { + qualityInspectDetailByProductId(currentProductId.value).then(res => { + tableData.value = res.data; + }) +} +const getQualityInspectParamList = (id) => { + qualityInspectParamInfo(id).then(res => { + tableData.value = res.data; + }) +} // 鍏抽棴寮规 const closeDia = () => { proxy.resetForm("formRef"); diff --git a/src/views/qualityManagement/finalInspection/index.vue b/src/views/qualityManagement/finalInspection/index.vue index e8dcee6..3f2595f 100644 --- a/src/views/qualityManagement/finalInspection/index.vue +++ b/src/views/qualityManagement/finalInspection/index.vue @@ -40,6 +40,23 @@ <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia> <FormDia ref="formDia" @close="handleQuery"></FormDia> <files-dia ref="filesDia" @close="handleQuery"></files-dia> + <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%" + @close="closeDia"> + <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> + <el-form-item label="妫�楠屽憳锛�" prop="checkName"> + <el-select v-model="form.checkName" placeholder="璇烽�夋嫨" clearable> + <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" + :value="item.nickName"/> + </el-select> + </el-form-item> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭</el-button> + <el-button @click="closeDia">鍙栨秷</el-button> + </div> + </template> + </el-dialog> </div> </template> @@ -49,9 +66,15 @@ import InspectionFormDia from "@/views/qualityManagement/finalInspection/components/inspectionFormDia.vue"; import FormDia from "@/views/qualityManagement/finalInspection/components/formDia.vue"; import {ElMessageBox} from "element-plus"; -import {qualityInspectDel, qualityInspectListPage} from "@/api/qualityManagement/rawMaterialInspection.js"; +import { + downloadQualityInspect, + qualityInspectDel, + qualityInspectListPage, qualityInspectUpdate, + submitQualityInspect +} from "@/api/qualityManagement/rawMaterialInspection.js"; import FilesDia from "@/views/qualityManagement/finalInspection/components/filesDia.vue"; import dayjs from "dayjs"; +import {userListNoPage} from "@/api/system/user.js"; const data = reactive({ searchForm: { @@ -63,6 +86,9 @@ entryDateStart: dayjs().format("YYYY-MM-DD"), entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"), }, + rules: { + checkName: [{required: true, message: "璇烽�夋嫨", trigger: "change"}], + }, }); const { searchForm } = toRefs(data); const tableColumn = ref([ @@ -111,12 +137,23 @@ } }, }, + { + label: "鎻愪氦鐘舵��", + prop: "inspectState", + formatData: (params) => { + if (params) { + return "宸叉彁浜�"; + } else { + return "鏈彁浜�"; + } + }, + }, { dataType: "action", label: "鎿嶄綔", align: "center", fixed: "right", - width: 190, + width: 280, operation: [ { name: "缂栬緫", @@ -124,13 +161,9 @@ clickFun: (row) => { openForm("edit", row); }, - }, - { - name: "鏂板妫�楠岃褰�", - type: "text", - clickFun: (row) => { - openInspectionForm("edit", row); - }, + disabled: (row) => { + return row.inspectState == 1; + } }, { name: "闄勪欢", @@ -139,12 +172,44 @@ openFilesFormDia(row); }, }, + { + name: "鎻愪氦", + type: "text", + clickFun: (row) => { + submit(row.id); + }, + disabled: (row) => { + return row.inspectState == 1; + } + }, + { + name: "鍒嗛厤妫�楠屽憳", + type: "text", + clickFun: (row) => { + if (!row.checkName) { + open(row) + } else { + proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�"); + } + }, + disabled: (row) => { + return row.inspectState == 1 || row.checkName; + } + }, + { + name: "涓嬭浇", + type: "text", + clickFun: (row) => { + downLoadFile(row); + }, + }, ], }, ]); const tableData = ref([]); const selectedRows = ref([]); const tableLoading = ref(false); +const currentRow = ref(null) const page = reactive({ current: 1, size: 100, @@ -154,6 +219,11 @@ const filesDia = ref() const inspectionFormDia = ref() const { proxy } = getCurrentInstance() +const userList = ref([]); +const form = ref({ + checkName: "" +}); +const dialogFormVisible = ref(false); const changeDaterange = (value) => { searchForm.value.entryDateStart = undefined; @@ -249,6 +319,60 @@ proxy.$modal.msg("宸插彇娑�"); }); }; + +// 鎻愪环 +const submit = async (id) => { + const res = await submitQualityInspect({id: id}) + if (res.code === 200) { + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + getList(); + } +} + +// 鍏抽棴寮规 +const closeDia = () => { + proxy.resetForm("formRef"); + dialogFormVisible.value = false; +}; + +const submitForm = () => { + if (currentRow.value) { + const data = { + ...form.value, + id: currentRow.value.id + } + qualityInspectUpdate(data).then(res => { + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + closeDia(); + getList(); + }) + } +}; + +const open = async (row) => { + let userLists = await userListNoPage(); + userList.value = userLists.data; + currentRow.value = row + dialogFormVisible.value = true +} + +const downLoadFile = (row) => { + downloadQualityInspect({ id: row.id }).then((blobData) => { + const blob = new Blob([blobData], { + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + }) + const downloadUrl = window.URL.createObjectURL(blob) + + const link = document.createElement('a') + link.href = downloadUrl + link.download = '鍘熸潗鏂欐楠屾姤鍛�.docx' + document.body.appendChild(link) + link.click() + + document.body.removeChild(link) + window.URL.revokeObjectURL(downloadUrl) + }) +}; onMounted(() => { getList(); }); diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue index 6908322..6f5ddec 100644 --- a/src/views/qualityManagement/processInspection/index.vue +++ b/src/views/qualityManagement/processInspection/index.vue @@ -40,7 +40,7 @@ <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia> <FormDia ref="formDia" @close="handleQuery"></FormDia> <files-dia ref="filesDia" @close="handleQuery"></files-dia> - <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="70%" + <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> <el-form-item label="妫�楠屽憳锛�" prop="checkName"> @@ -86,6 +86,9 @@ entryDateStart: dayjs().format("YYYY-MM-DD"), entryDateEnd: dayjs().add(1, "day").format("YYYY-MM-DD"), }, + rules: { + checkName: [{required: true, message: "璇烽�夋嫨", trigger: "change"}], + }, }); const { searchForm } = toRefs(data); const tableColumn = ref([ @@ -195,7 +198,7 @@ } }, disabled: (row) => { - return row.inspectState == 1 || row.checkName !== ''; + return row.inspectState == 1 || row.checkName; } }, { diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue index 21cf85f..7536274 100644 --- a/src/views/qualityManagement/rawMaterialInspection/index.vue +++ b/src/views/qualityManagement/rawMaterialInspection/index.vue @@ -41,7 +41,7 @@ <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia> <FormDia ref="formDia" @close="handleQuery"></FormDia> <files-dia ref="filesDia" @close="handleQuery"></files-dia> - <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="70%" + <el-dialog v-model="dialogFormVisible" title="缂栬緫妫�楠屽憳" width="30%" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> <el-form-item label="妫�楠屽憳锛�" prop="checkName"> @@ -199,9 +199,9 @@ proxy.$modal.msgError("妫�楠屽憳宸插瓨鍦�"); } }, - disabled: (row) => { - return row.inspectState; - } + disabled: (row) => { + return row.inspectState == 1 || row.checkName; + } }, { name: "涓嬭浇", -- Gitblit v1.9.3