From fa701a87310e2665b563eee14efe770a357d3ca5 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 18 三月 2026 11:44:22 +0800
Subject: [PATCH] 若上一个工序没有报工,则无法报工
---
src/views/productionManagement/productionOrder/index.vue | 116 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 96 insertions(+), 20 deletions(-)
diff --git a/src/views/productionManagement/productionOrder/index.vue b/src/views/productionManagement/productionOrder/index.vue
index 3af5008..7018d63 100644
--- a/src/views/productionManagement/productionOrder/index.vue
+++ b/src/views/productionManagement/productionOrder/index.vue
@@ -1,24 +1,25 @@
+<!-- 鐢熶骇璁㈠崟 -->
<template>
<div class="app-container">
<div class="search_form">
<el-form :model="searchForm"
:inline="true">
- <el-form-item label="瀹㈡埛鍚嶇О:">
+ <!-- <el-form-item label="瀹㈡埛鍚嶇О:">
<el-input v-model="searchForm.customerName"
placeholder="璇疯緭鍏�"
clearable
prefix-icon="Search"
style="width: 160px;"
@change="handleQuery" />
- </el-form-item>
- <el-form-item label="鍚堝悓鍙�:">
+ </el-form-item> -->
+ <!-- <el-form-item label="鍚堝悓鍙�:">
<el-input v-model="searchForm.salesContractNo"
placeholder="璇疯緭鍏�"
clearable
prefix-icon="Search"
style="width: 160px;"
@change="handleQuery" />
- </el-form-item>
+ </el-form-item> -->
<el-form-item label="浜у搧鍚嶇О:">
<el-input v-model="searchForm.productCategory"
placeholder="璇疯緭鍏�"
@@ -42,6 +43,7 @@
</el-form>
<div>
<el-button type="primary" @click="isShowNewModal = true">鏂板</el-button>
+ <el-button type="danger" @click="handleDelete">鍒犻櫎</el-button>
<el-button @click="handleOut">瀵煎嚭</el-button>
</div>
</div>
@@ -52,13 +54,17 @@
:page="page"
:tableLoading="tableLoading"
:row-class-name="tableRowClassName"
+ :isSelection="true"
+ @selection-change="handleSelectionChange"
@pagination="pagination">
<template #completionStatus="{ row }">
- <el-progress
- :percentage="toProgressPercentage(row?.completionStatus)"
- :color="progressColor(toProgressPercentage(row?.completionStatus))"
- :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''"
- />
+ <div class="progress-link" @click="goProductionDetail(row)">
+ <el-progress
+ :percentage="toProgressPercentage(row?.completionStatus)"
+ :color="progressColor(toProgressPercentage(row?.completionStatus))"
+ :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''"
+ />
+ </div>
</template>
</PIMTable>
</div>
@@ -103,32 +109,54 @@
productOrderListPage,
listProcessRoute,
bindingRoute,
- listProcessBom,
+ listProcessBom, delProductOrder,
} from "@/api/productionManagement/productionOrder.js";
import { listMain as getOrderProcessRouteMain } from "@/api/productionManagement/productProcessRoute.js";
+ import {fileDel} from "@/api/financialManagement/revenueManagement.js";
+ import PIMTable from "@/components/PIMTable/PIMTable.vue";
const NewProductOrder = defineAsyncComponent(() => import("@/views/productionManagement/productionOrder/New.vue"));
const { proxy } = getCurrentInstance();
+ const { priority_type } = proxy.useDict("priority_type");
const router = useRouter();
const isShowNewModal = ref(false);
const tableColumn = ref([
{
+ label: "浼樺厛绾�",
+ prop: "priority",
+ width: '100px',
+ dataType: "tag",
+ formatData: val => proxy.selectDictLabel(priority_type.value, val),
+ formatType: val => {
+ const v = Number(val);
+ if (v === 0) return "danger"; // 绾㈣壊
+ if (v === 1) return "warning"; // 榛勮壊
+ if (v === 2) return "success"; // 缁胯壊
+ return "";
+ },
+ },
+ {
+ label: "鐢熶骇鎵瑰彿",
+ prop: "lotNo",
+ width: '120px',
+ },
+ {
label: "鐢熶骇璁㈠崟鍙�",
prop: "npsNo",
width: '120px',
},
- {
- label: "閿�鍞悎鍚屽彿",
- prop: "salesContractNo",
- width: '150px',
- },
- {
- label: "瀹㈡埛鍚嶇О",
- prop: "customerName",
- width: '200px',
- },
+ // {
+ // label: "閿�鍞悎鍚屽彿",
+ // prop: "salesContractNo",
+ // width: '150px',
+ // },
+ // {
+ // label: "瀹㈡埛鍚嶇О",
+ // prop: "customerName",
+ // width: '200px',
+ // },
{
label: "浜у搧鍚嶇О",
prop: "productCategory",
@@ -187,6 +215,7 @@
{
name: "宸ヨ壓璺嚎",
type: "text",
+ showHide: row => row.processRouteCode,
clickFun: row => {
showRouteItemModal(row);
},
@@ -216,6 +245,7 @@
size: 100,
total: 0,
});
+ const selectedRows = ref([]);
const data = reactive({
searchForm: {
@@ -247,6 +277,7 @@
// 娣诲姞琛ㄨ绫诲悕鏂规硶
const tableRowClassName = ({ row }) => {
+ if (!row.deliveryDate) return '';
if (row.isFh) return '';
const diff = row.deliveryDaysDiff;
@@ -394,6 +425,47 @@
});
};
+ const goProductionDetail = (row) => {
+ if (!row) return;
+ router.push({
+ path: "/productionManagement/productionOrder/detail",
+ query: {
+ orderId: row.id,
+ npsNo: row.npsNo || "",
+ lotNo: row.lotNo || "",
+ productCategory: row.productCategory || "",
+ specificationModel: row.specificationModel || "",
+ },
+ });
+ };
+
+ // 琛ㄦ牸閫夋嫨鏁版嵁
+ const handleSelectionChange = (selection) => {
+ selectedRows.value = selection;
+ };
+
+ const handleDelete = () => {
+ let ids = [];
+ if (selectedRows.value.length > 0) {
+ ids = selectedRows.value.map((item) => item.id);
+ } else {
+ proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁");
+ return;
+ }
+ ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "瀵煎嚭", {
+ confirmButtonText: "纭",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }).then(() => {
+ delProductOrder(ids).then((res) => {
+ proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ getList();
+ });
+ }).catch(() => {
+ proxy.$modal.msg("宸插彇娑�");
+ });
+ };
+
// 瀵煎嚭
const handleOut = () => {
ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", {
@@ -436,4 +508,8 @@
::v-deep .purple{
background-color: #F4DEFA;
}
+.progress-link {
+ cursor: pointer;
+}
+
</style>
--
Gitblit v1.9.3