From 65193cc9b4e27aad36a65eca447e6c62f6ee037f Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期五, 17 四月 2026 15:25:07 +0800
Subject: [PATCH] 不合格管理:重构详情展示与操作按钮
---
src/views/qualityManagement/nonconformingManagement/index.vue | 87 ++++++++++++++++++++++++++++++++++++++-----
1 files changed, 77 insertions(+), 10 deletions(-)
diff --git a/src/views/qualityManagement/nonconformingManagement/index.vue b/src/views/qualityManagement/nonconformingManagement/index.vue
index 319cfd5..132921a 100644
--- a/src/views/qualityManagement/nonconformingManagement/index.vue
+++ b/src/views/qualityManagement/nonconformingManagement/index.vue
@@ -1,10 +1,11 @@
+// 涓嶅悎鏍肩鐞�
<template>
<div class="app-container">
<div class="search_form">
<div style="display: flex;flex-direction: row;align-items: center;">
<div>
<span class="search_title">绫诲瀷锛�</span>
- <el-select v-model="searchForm.inspectType" clearable style="width: 240px" @change="handleQuery">
+ <el-select v-model="searchForm.inspectType" clearable style="width: 200px" @change="handleQuery">
<el-option label="鍘熸潗鏂欐楠�" :value="0" />
<el-option label="杩囩▼妫�楠�" :value="1" />
<el-option label="鍑哄巶妫�楠�" :value="2" />
@@ -12,7 +13,7 @@
</div>
<div style="margin-left: 10px">
<span class="search_title">鐘舵�侊細</span>
- <el-select v-model="searchForm.inspectState" clearable style="width: 240px" @change="handleQuery">
+ <el-select v-model="searchForm.inspectState" clearable style="width: 200px" @change="handleQuery">
<el-option label="寰呭鐞�" :value="0" />
<el-option label="宸插鐞�" :value="1" />
</el-select>
@@ -21,13 +22,17 @@
<span class="search_title">浜у搧鍚嶇О锛�</span>
<el-input
v-model="searchForm.productName"
- style="width: 240px"
+ style="width: 200px"
placeholder="璇疯緭鍏ヤ骇鍝佸悕绉版悳绱�"
@change="handleQuery"
clearable
:prefix-icon="Search"
/>
</div>
+ <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"
+ style="width: 300px"
+ placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
<el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
</div>
<div>
@@ -47,8 +52,10 @@
:tableLoading="tableLoading"
@pagination="pagination"
:total="page.total"
- ></PIMTable>
+ >
+ </PIMTable>
</div>
+ <DetailDia ref="detailDiaRef" />
<FormDia ref="formDia" @close="handleQuery"></FormDia>
<InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
</div>
@@ -56,17 +63,22 @@
<script setup>
import { Search } from "@element-plus/icons-vue";
-import {onMounted, ref} from "vue";
+import {onMounted, ref, reactive, toRefs, nextTick, getCurrentInstance} from "vue";
import FormDia from "@/views/qualityManagement/nonconformingManagement/components/formDia.vue";
import {ElMessageBox} from "element-plus";
import {qualityUnqualifiedDel, qualityUnqualifiedListPage} from "@/api/qualityManagement/nonconformingManagement.js";
import InspectionFormDia from "@/views/qualityManagement/nonconformingManagement/components/inspectionFormDia.vue";
+import DetailDia from "@/views/qualityManagement/nonconformingManagement/components/detailDia.vue";
+import dayjs from "dayjs";
const data = reactive({
searchForm: {
inspectType: "",
inspectState: "",
productName: "",
+ entryDate: undefined, // 褰曞叆鏃ユ湡
+ entryDateStart: undefined,
+ entryDateEnd: undefined,
},
});
const { searchForm } = toRefs(data);
@@ -165,17 +177,39 @@
width: 120
},
{
+ label: "鍘熷洜鍒嗘瀽",
+ prop: "reasonAnalysis",
+ slot: "reasonAnalysis",
+ width: 120
+ },
+ {
+ label: "棰勯槻涓庣籂姝f帾鏂�",
+ prop: "preventiveCorrective",
+ slot: "preventiveCorrective",
+ width: 120
+ },
+ {
+ label: "宸ユ椂鎹熷け",
+ prop: "lossWorking",
+ width: 140
+ },
+ {
+ label: "鏉愭枡璐规崯澶�",
+ prop: "lossMaterial",
+ width: 140
+ },
+ {
dataType: "action",
label: "鎿嶄綔",
align: "center",
fixed: "right",
- width: 120,
+ width: 140,
operation: [
{
- name: "缂栬緫",
+ name: "璇︽儏",
type: "text",
clickFun: (row) => {
- openForm("edit", row);
+ openDetailDialog(row);
},
},
{
@@ -184,6 +218,7 @@
clickFun: (row) => {
openInspectionForm("edit", row);
},
+ disabled: (row) => row.inspectState === 1,
},
],
},
@@ -198,8 +233,18 @@
});
const formDia = ref()
const inspectionFormDia = ref()
+const detailDiaRef = 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 = () => {
@@ -213,7 +258,9 @@
};
const getList = () => {
tableLoading.value = true;
- qualityUnqualifiedListPage({...page, ...searchForm.value}).then(res => {
+ const params = { ...searchForm.value, ...page };
+ params.entryDate = undefined
+ qualityUnqualifiedListPage(params).then(res => {
tableLoading.value = false;
tableData.value = res.data.records
page.total = res.data.total;
@@ -228,15 +275,27 @@
// 鎵撳紑寮规
const openForm = (type, row) => {
+ if (type !== 'add' && row?.inspectState === 1) {
+ proxy.$modal.msgWarning("宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶇紪杈�");
+ return;
+ }
nextTick(() => {
formDia.value?.openDialog(type, row)
})
};
// 鎵撳紑澶勭悊寮规
const openInspectionForm = (type, row) => {
+ if (row?.inspectState === 1) {
+ proxy.$modal.msgWarning("宸插鐞嗙殑鏁版嵁涓嶈兘鍐嶅鐞�");
+ return;
+ }
nextTick(() => {
inspectionFormDia.value?.openDialog(type, row)
})
+};
+// 鎵撳紑璇︽儏寮规
+const openDetailDialog = (row) => {
+ detailDiaRef.value?.openDialog(row);
};
// 鍒犻櫎
@@ -282,4 +341,12 @@
});
</script>
-<style scoped></style>
+<style scoped>
+.text-ellipsis {
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+</style>
--
Gitblit v1.9.3