From 2c7bb17c8337f237b8e9ac02d404a6ec90123bae Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 14 八月 2025 14:53:57 +0800 Subject: [PATCH] 过程检验功能添加 --- src/views/qualityManagement/rawMaterialInspection/index.vue | 234 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 196 insertions(+), 38 deletions(-) diff --git a/src/views/qualityManagement/rawMaterialInspection/index.vue b/src/views/qualityManagement/rawMaterialInspection/index.vue index 29e52df..21cf85f 100644 --- a/src/views/qualityManagement/rawMaterialInspection/index.vue +++ b/src/views/qualityManagement/rawMaterialInspection/index.vue @@ -2,17 +2,21 @@ <div class="app-container"> <div class="search_form"> <div> - <span class="search_title">濮撳悕锛�</span> + <span class="search_title">渚涘簲鍟嗭細</span> <el-input - v-model="searchForm.staffName" + v-model="searchForm.supplier" style="width: 240px" - placeholder="璇疯緭鍏ュ鍚嶆悳绱�" + placeholder="璇疯緭鍏ヤ緵搴斿晢鎼滅储" @change="handleQuery" clearable :prefix-icon="Search" /> + <span style="margin-left: 10px" class="search_title">妫�娴嬫棩鏈燂細</span> + <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" + placeholder="璇烽�夋嫨" clearable @change="changeDaterange"/> <el-button type="primary" @click="handleQuery" style="margin-left: 10px" - >鎼滅储</el-button + >鎼滅储 + </el-button > </div> <div> @@ -34,78 +38,120 @@ :total="page.total" ></PIMTable> </div> - <form-dia ref="formDia" @close="handleQuery"></form-dia> + <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%" + @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> <script setup> -import { Search } from "@element-plus/icons-vue"; +import {Search} from "@element-plus/icons-vue"; import {onMounted, ref} from "vue"; +import InspectionFormDia from "@/views/qualityManagement/rawMaterialInspection/components/inspectionFormDia.vue"; import FormDia from "@/views/qualityManagement/rawMaterialInspection/components/formDia.vue"; -import {staffJoinDel, staffJoinListPage} from "@/api/personnelManagement/onboarding.js"; import {ElMessageBox} from "element-plus"; +import { + downloadQualityInspect, + qualityInspectDel, + qualityInspectListPage, qualityInspectUpdate, + submitQualityInspect +} from "@/api/qualityManagement/rawMaterialInspection.js"; +import FilesDia from "@/views/qualityManagement/rawMaterialInspection/components/filesDia.vue"; +import dayjs from "dayjs"; +import {userListNoPage} from "@/api/system/user.js"; const data = reactive({ searchForm: { - staffName: "", + supplier: "", + entryDate: [ + dayjs().format("YYYY-MM-DD"), + dayjs().add(1, "day").format("YYYY-MM-DD"), + ], // 褰曞叆鏃ユ湡 + 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 {searchForm, rules} = toRefs(data); const tableColumn = ref([ { label: "妫�娴嬫棩鏈�", - prop: "staffNo", + prop: "checkTime", + width: 120 }, { label: "渚涘簲鍟�", - prop: "staffName", + prop: "supplier", + width: 230 }, { label: "妫�楠屽憳", - prop: "sex", + prop: "checkName", }, { label: "浜у搧鍚嶇О", - prop: "nativePlace", + prop: "productName", }, { label: "瑙勬牸鍨嬪彿", - prop: "nativePlace", + prop: "model", }, { label: "鍗曚綅", - prop: "nativePlace", + prop: "unit", }, { label: "鏁伴噺", - prop: "contractStartTime", + prop: "quantity", width: 120 }, { label: "妫�娴嬪崟浣�", - prop: "contractEndTime", + prop: "checkCompany", width: 120 }, { label: "妫�娴嬬粨鏋�", - prop: "staffState", + prop: "checkResult", dataType: "tag", - formatData: (params) => { - if (params == 0) { - return "绂昏亴"; - } else if (params == 1) { - return "鍦ㄨ亴"; + formatType: (params) => { + if (params === '涓嶅悎鏍�') { + return "danger"; + } else if (params === '鍚堟牸') { + return "success"; } else { return null; } }, - formatType: (params) => { - if (params == 0) { - return "danger"; - } else if (params == 1) { - return "primary"; + }, + { + label: "鎻愪氦鐘舵��", + prop: "inspectState", + formatData: (params) => { + if (params) { + return "宸叉彁浜�"; } else { - return null; + return "鏈彁浜�"; } }, }, @@ -114,20 +160,54 @@ label: "鎿嶄綔", align: "center", fixed: "right", - width: 160, + width: 280, operation: [ { - name: "鏂板妫�楠岃褰�", + name: "缂栬緫", type: "text", clickFun: (row) => { openForm("edit", row); }, + disabled: (row) => { + return row.inspectState == 1; + } }, { name: "闄勪欢", type: "text", clickFun: (row) => { - openForm("edit", row); + 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; + } + }, + { + name: "涓嬭浇", + type: "text", + clickFun: (row) => { + downLoadFile(row); }, }, ], @@ -136,14 +216,30 @@ const tableData = ref([]); const selectedRows = ref([]); const tableLoading = ref(false); +const userList = ref([]); +const dialogFormVisible = ref(false); +const form = ref({ + checkName: "" +}); const page = reactive({ current: 1, size: 100, total: 0 }); +const currentRow = ref(null) const formDia = ref() -const { proxy } = getCurrentInstance() - +const filesDia = ref() +const inspectionFormDia = ref() +const {proxy} = getCurrentInstance() +const changeDaterange = (value) => { + searchForm.value.entryDateStart = undefined; + searchForm.value.entryDateEnd = undefined; + if (value) { + searchForm.value.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD"); + searchForm.value.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD"); + } + getList(); +}; // 鏌ヨ鍒楄〃 /** 鎼滅储鎸夐挳鎿嶄綔 */ const handleQuery = () => { @@ -157,11 +253,12 @@ }; const getList = () => { tableLoading.value = true; - staffJoinListPage({...page, ...searchForm.value, staffState: 0}).then(res => { + const params = {...searchForm.value, ...page}; + params.entryDate = undefined + qualityInspectListPage({...params, inspectType: 0}).then(res => { tableLoading.value = false; tableData.value = res.data.records page.total = res.data.total; - console.log(page) }).catch(err => { tableLoading.value = false; }) @@ -175,6 +272,12 @@ const openForm = (type, row) => { nextTick(() => { formDia.value?.openDialog(type, row) + }) +}; +// 鎵撳紑闄勪欢寮规 +const openFilesFormDia = (type, row) => { + nextTick(() => { + filesDia.value?.openDialog(type, row) }) }; @@ -193,7 +296,7 @@ type: "warning", }) .then(() => { - staffJoinDel(ids).then((res) => { + qualityInspectDel(ids).then((res) => { proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); getList(); }); @@ -210,12 +313,67 @@ type: "warning", }) .then(() => { - proxy.download("/staff/staffJoinLeaveRecord/export", {staffState: 0}, "浜哄憳绂昏亴.xlsx"); + proxy.download("/quality/qualityInspect/export", {inspectType: 0}, "鍘熸潗鏂欐楠�.xlsx"); }) .catch(() => { 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(); }); -- Gitblit v1.9.3