From ffe58e0cf73fa61d8b05de09645c5d8d89007ce5 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 16 六月 2026 15:20:52 +0800
Subject: [PATCH] 君歌 1.部署修改
---
src/views/qualityManagement/nonconformingManagement/index.vue | 448 +++++++++++++++++++++++++------------------------------
1 files changed, 205 insertions(+), 243 deletions(-)
diff --git a/src/views/qualityManagement/nonconformingManagement/index.vue b/src/views/qualityManagement/nonconformingManagement/index.vue
index d3ac667..084fc71 100644
--- a/src/views/qualityManagement/nonconformingManagement/index.vue
+++ b/src/views/qualityManagement/nonconformingManagement/index.vue
@@ -1,303 +1,265 @@
<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-option label="鍘熸潗鏂欐楠�" :value="0" />
- <el-option label="杩囩▼妫�楠�" :value="1" />
- <el-option label="鍑哄巶妫�楠�" :value="2" />
- </el-select>
- </div>
- <div style="margin-left: 10px">
- <span class="search_title">鐘舵�侊細</span>
- <el-select v-model="searchForm.inspectState" clearable style="width: 240px" @change="handleQuery">
- <el-option label="寰呭鐞�" :value="0" />
- <el-option label="宸插鐞�" :value="1" />
- </el-select>
- </div>
- <div style="margin-left: 10px">
- <span class="search_title">浜у搧鍚嶇О锛�</span>
- <el-input
- v-model="searchForm.productName"
- style="width: 240px"
- 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"
- placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
- <el-button type="primary" @click="handleQuery" style="margin-left: 10px">鎼滅储</el-button>
- </div>
- <div>
- <el-button type="primary" @click="openForm('add')">鏂板</el-button>
- <el-button @click="handleOut">瀵煎嚭</el-button>
- <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
- </div>
+ <el-form :model="queryParams" inline style="margin-bottom: 0;">
+ <el-form-item label="澶勭悊鍗曠紪鍙�">
+ <el-input v-model="queryParams.orderNo" style="width: 200px" placeholder="杈撳叆缂栧彿" clearable
+ :prefix-icon="Search" @change="handleQuery" />
+ </el-form-item>
+ <el-form-item label="椤圭洰鍚嶇О">
+ <el-input v-model="queryParams.projectName" style="width: 200px" placeholder="杈撳叆椤圭洰" clearable
+ :prefix-icon="Search" @change="handleQuery" />
+ </el-form-item>
+<!-- <el-form-item label="鐘舵��">–>-->
+<!-- <el-select v-model="queryParams.status" clearable style="width: 150px" @change="handleQuery" placeholder="鍏ㄩ儴">–>-->
+<!-- <el-option label="鑽夌" :value="0" />–>-->
+<!-- <el-option label="寰呭鎵�" :value="1" />–>-->
+<!-- <el-option label="瀹℃壒涓�" :value="2" />–>-->
+<!-- <el-option label="宸插畬鎴�" :value="3" />–>-->
+<!-- <el-option label="宸查┏鍥�" :value="4" />–>-->
+<!-- </el-select>–>-->
+<!-- </el-form-item>–>-->
+ <el-form-item label="鍒涘缓鏃堕棿">
+ <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange"
+ style="width: 260px" placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" @click="handleQuery">鎼滅储</el-button>
+ <el-button @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <div class="mb20" style="text-align: right;">
+ <el-button type="primary" @click="handleAdd">鏂板澶勭悊鍗�</el-button>
+ <el-button type="danger" plain :disabled="!selectedRows.length" @click="handleDelete">鍒犻櫎</el-button>
</div>
<div class="table_list">
- <PIMTable
- rowKey="id"
- :column="tableColumn"
- :tableData="tableData"
- :page="page"
- :isSelection="true"
- @selection-change="handleSelectionChange"
- :tableLoading="tableLoading"
- @pagination="pagination"
- :total="page.total"
- ></PIMTable>
+ <PIMTable rowKey="id" :column="tableColumn" :tableData="tableData" :page="page"
+ :isSelection="true" @selection-change="handleSelectionChange"
+ :tableLoading="tableLoading" @pagination="pagination" :total="page.total" />
</div>
- <FormDia ref="formDia" @close="handleQuery"></FormDia>
- <InspectionFormDia ref="inspectionFormDia" @close="handleQuery"></InspectionFormDia>
+ <OrderFormDia ref="orderFormDia" @close="handleQuery" />
</div>
</template>
<script setup>
import { Search } from "@element-plus/icons-vue";
-import {onMounted, ref} 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 { onMounted, ref, reactive, nextTick, getCurrentInstance } from "vue";
+import { ElMessageBox } from "element-plus";
+import {
+ qualityUnqualifiedOrderListPage,
+ deleteQualityUnqualifiedOrder,
+} from "@/api/qualityManagement/nonconformingManagement.js";
+import OrderFormDia from "@/views/qualityManagement/nonconformingManagement/components/orderFormDia.vue";
import dayjs from "dayjs";
-const data = reactive({
- searchForm: {
- inspectType: "",
- inspectState: "",
- productName: "",
- 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"),
- },
+const { proxy } = getCurrentInstance();
+
+const disposalMethodMap = { 1: "璁╂鎺ユ敹", 2: "鍘傚唴缁翠慨", 3: "杩斿巶缁翠慨", 4: "鎹㈣揣", 5: "閫�璐�", 6: "鎶ュ簾" };
+const statusMap = { 0: "鑽夌", 1: "寰呭鎵�", 2: "瀹℃壒涓�", 3: "宸插畬鎴�", 4: "宸查┏鍥�" };
+
+const queryParams = reactive({
+ orderNo: "",
+ projectName: "",
+ status: null,
+ entryDateStart: undefined,
+ entryDateEnd: undefined,
});
-const { searchForm } = toRefs(data);
-const tableColumn = ref([
- {
- label: "鐘舵��",
- prop: "inspectState",
- dataType: "tag",
- formatData: (params) => {
- if (params == 0) {
- return "寰呭鐞�";
- } else if (params == 1) {
- return "宸插鐞�";
- } else {
- return null;
- }
- },
- formatType: (params) => {
- if (params == '涓嶅悎鏍�') {
- return "danger";
- } else if (params == '鍚堟牸') {
- return "success";
- } else {
- return null;
- }
- },
- },
- {
- label: "妫�娴嬫棩鏈�",
- prop: "checkTime",
- width: 120
- },
- {
- label: "绫诲埆",
- prop: "inspectType",
- dataType: "tag",
- width: 120,
- formatData: (params) => {
- if (params == 0) {
- return "鍘熸潗鏂欐楠�";
- } else if (params == 1) {
- return "杩囩▼妫�楠�";
- } else {
- return '鍑哄巶妫�楠�';
- }
- },
- formatType: (params) => {
- if (params == '涓嶅悎鏍�') {
- return "info";
- } else if (params == '鍚堟牸') {
- return "success";
- } else {
- return 'primary';
- }
- },
- },
- {
- label: "妫�楠屽憳",
- prop: "checkName",
- },
- {
- label: "浜у搧鍚嶇О",
- prop: "productName",
- },
- {
- label: "瑙勬牸鍨嬪彿",
- prop: "model",
- },
- {
- label: "鍗曚綅",
- prop: "unit",
- },
- {
- label: "鏁伴噺",
- prop: "quantity",
- width: 100
- },
- {
- label: "涓嶅悎鏍肩幇璞�",
- prop: "defectivePhenomena",
- width: 120
- },
- {
- label: "澶勭悊缁撴灉",
- prop: "dealResult",
- width: 120
- },
- {
- label: "澶勭悊浜�",
- prop: "dealName",
- width: 120
- },
- {
- label: "澶勭悊鏃ユ湡",
- prop: "dealTime",
- width: 120
- },
- {
- dataType: "action",
- label: "鎿嶄綔",
- align: "center",
- fixed: "right",
- width: 120,
- operation: [
- {
- name: "缂栬緫",
- type: "text",
- clickFun: (row) => {
- openForm("edit", row);
- },
- },
- {
- name: "澶勭悊",
- type: "text",
- clickFun: (row) => {
- openInspectionForm("edit", row);
- },
- },
- ],
- },
-]);
+
+const dateRange = ref(undefined);
const tableData = ref([]);
const selectedRows = ref([]);
const tableLoading = ref(false);
const page = reactive({
current: 1,
size: 100,
- total: 0
+ total: 0,
});
-const formDia = ref()
-const inspectionFormDia = ref()
-const { proxy } = getCurrentInstance()
+const orderFormDia = ref();
+
+const tableColumn = ref([
+ {
+ label: "澶勭悊鍗曠紪鍙�",
+ prop: "orderNo",
+ width: 160,
+ },
+ {
+ label: "椤圭洰鍚嶇О",
+ prop: "projectName",
+ },
+ {
+ label: "鍨嬪彿瑙勬牸",
+ prop: "specificationModel",
+ width: 120,
+ },
+ {
+ label: "涓嶅悎鏍兼暟閲�",
+ prop: "unqualifiedQuantity",
+ width: 100,
+ },
+ {
+ label: "澶勭疆鏂瑰紡",
+ prop: "disposalMethod",
+ width: 110,
+ dataType: "tag",
+ formatData: (val) => disposalMethodMap[val] || "",
+ },
+ // {
+ // label: "鐘舵��",
+ // prop: "status",
+ // width: 80,
+ // dataType: "tag",
+ // formatData: (val) => statusMap[val] || "",
+ // formatType: (val) => {
+ // const map = { 0: "info", 1: "warning", 2: "", 3: "success", 4: "danger" };
+ // return map[val] || "info";
+ // },
+ // },
+ {
+ label: "妫�楠屽憳",
+ prop: "inspectorName",
+ width: 100,
+ },
+ {
+ label: "妫�楠屾棩鏈�",
+ prop: "inspectDate",
+ width: 110,
+ },
+ {
+ label: "鍒涘缓鏃堕棿",
+ prop: "createTime",
+ width: 160,
+ },
+ {
+ dataType: "action",
+ label: "鎿嶄綔",
+ align: "center",
+ fixed: "right",
+ width: 160,
+ operation: [
+ {
+ name: "瀵煎嚭",
+ type: "text",
+ clickFun: (row) => {
+ handleExport(row);
+ },
+ },
+ {
+ name: "澶勭疆",
+ type: "text",
+ showHide: (row) => row.status === 0,
+ clickFun: (row) => {
+ nextTick(() => {
+ orderFormDia.value?.openDialog("dispose", row);
+ });
+ },
+ },
+ {
+ name: "缂栬緫",
+ type: "text",
+ clickFun: (row) => {
+ nextTick(() => {
+ orderFormDia.value?.openDialog("edit", row);
+ });
+ },
+ },
+ {
+ name: "璇︽儏",
+ type: "text",
+ clickFun: (row) => {
+ nextTick(() => {
+ orderFormDia.value?.openDialog("view", row);
+ });
+ },
+ },
+ ],
+ },
+]);
const changeDaterange = (value) => {
- searchForm.value.entryDateStart = undefined;
- searchForm.value.entryDateEnd = undefined;
+ queryParams.entryDateStart = undefined;
+ queryParams.entryDateEnd = undefined;
if (value) {
- searchForm.value.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
- searchForm.value.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
+ queryParams.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD");
+ queryParams.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD");
}
getList();
};
-// 鏌ヨ鍒楄〃
-/** 鎼滅储鎸夐挳鎿嶄綔 */
+
const handleQuery = () => {
page.current = 1;
getList();
};
+
+const resetQuery = () => {
+ queryParams.orderNo = "";
+ queryParams.projectName = "";
+ queryParams.status = null;
+ dateRange.value = undefined;
+ queryParams.entryDateStart = undefined;
+ queryParams.entryDateEnd = undefined;
+ handleQuery();
+};
+
const pagination = (obj) => {
page.current = obj.page;
page.size = obj.limit;
getList();
};
+
const getList = () => {
tableLoading.value = true;
- 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;
- }).catch(err => {
- tableLoading.value = false;
- })
+ const params = { ...queryParams, page: page.current, size: page.size };
+ qualityUnqualifiedOrderListPage(params)
+ .then((res) => {
+ tableLoading.value = false;
+ tableData.value = res.data?.records || [];
+ page.total = res.data?.total || 0;
+ })
+ .catch(() => {
+ tableLoading.value = false;
+ });
};
-// 琛ㄦ牸閫夋嫨鏁版嵁
+
const handleSelectionChange = (selection) => {
selectedRows.value = selection;
};
-// 鎵撳紑寮规
-const openForm = (type, row) => {
+const handleAdd = () => {
nextTick(() => {
- formDia.value?.openDialog(type, row)
- })
-};
-// 鎵撳紑澶勭悊寮规
-const openInspectionForm = (type, row) => {
- nextTick(() => {
- inspectionFormDia.value?.openDialog(type, row)
- })
+ orderFormDia.value?.openDialog("add", null);
+ });
};
-// 鍒犻櫎
const handleDelete = () => {
- let ids = [];
- if (selectedRows.value.length > 0) {
- ids = selectedRows.value.map((item) => item.id);
- } else {
+ if (selectedRows.value.length === 0) {
proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
return;
}
- ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+ const ids = selectedRows.value.map((item) => item.id);
+ ElMessageBox.confirm("閫変腑鐨勫鐞嗗崟灏嗚鍒犻櫎锛屾槸鍚︾‘璁わ紵", "鎻愮ず", {
confirmButtonText: "纭",
cancelButtonText: "鍙栨秷",
type: "warning",
})
- .then(() => {
- qualityUnqualifiedDel(ids).then((res) => {
- proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
- getList();
- });
- })
- .catch(() => {
- proxy.$modal.msg("宸插彇娑�");
+ .then(() => {
+ deleteQualityUnqualifiedOrder(ids).then(() => {
+ proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ getList();
});
+ })
+ .catch(() => {
+ proxy.$modal.msg("宸插彇娑�");
+ });
};
-// 瀵煎嚭
-const handleOut = () => {
- ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
- confirmButtonText: "纭",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
- .then(() => {
- proxy.download("/quality/qualityUnqualified/export", {}, "涓嶅悎鏍肩鐞�.xlsx");
- })
- .catch(() => {
- proxy.$modal.msg("宸插彇娑�");
- });
+
+const handleExport = (row) => {
+ proxy.$download.zip(
+ `/qualityUnqualifiedOrder/export/${row.id}`,
+ `涓嶅悎鏍煎搧澶勭悊鍗昣${row.orderNo || row.id}.xlsx`
+ );
};
+
onMounted(() => {
getList();
});
--
Gitblit v1.9.3