From bfff831304d65d948613e3774364bb29bebaeb0c Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 15 六月 2026 09:20:18 +0800
Subject: [PATCH] pro 1.数据模拟前端页面
---
src/views/productionPlan/productionPlan/index.vue | 109 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 90 insertions(+), 19 deletions(-)
diff --git a/src/views/productionPlan/productionPlan/index.vue b/src/views/productionPlan/productionPlan/index.vue
index 0c8399c..fd6c1a3 100644
--- a/src/views/productionPlan/productionPlan/index.vue
+++ b/src/views/productionPlan/productionPlan/index.vue
@@ -13,6 +13,14 @@
style="width: 160px;"
@keyup.enter="handleQuery" />
</el-form-item>
+ <el-form-item label="閿�鍞悎鍚屽彿:"
+ prop="salesContractNo">
+ <el-input v-model="searchForm.salesContractNo"
+ placeholder="璇疯緭鍏�"
+ clearable
+ style="width: 160px;"
+ @keyup.enter="handleQuery" />
+ </el-form-item>
<el-form-item label="闇�姹傛棩鏈熻寖鍥�:"
prop="dateRange">
<el-date-picker v-model="searchForm.dateRange"
@@ -48,7 +56,7 @@
style="width: 160px;"
@keyup.enter="handleQuery" />
</el-form-item>
- <el-form-item label="浜у搧瑙勬牸:"
+ <el-form-item label="瑙勬牸鍨嬪彿:"
prop="model">
<el-input v-model="searchForm.model"
placeholder="璇疯緭鍏�"
@@ -88,6 +96,13 @@
<template #qtyRequired="{ row }">
{{ row.qtyRequired || '-' }}<span style="color:rgba(12, 46, 40, 0.76)"> {{ row.unit || '鏂�' }}</span>
</template>
+ <template #salesContractNo="{ row }">
+ <el-button type="primary"
+ text
+ link
+ @click="showDetail(row)">{{ row.salesContractNo }}
+ </el-button>
+ </template>
</PIMTable>
</div>
<!-- 鍚堝苟涓嬪彂寮圭獥 -->
@@ -106,7 +121,7 @@
</el-row>
<el-row :gutter="20">
<el-col>
- <el-form-item label="浜у搧瑙勬牸">
+ <el-form-item label="瑙勬牸鍨嬪彿">
<div class="info-display">{{ mergeForm.model || '-' }}</div>
</el-form-item>
</el-col>
@@ -124,12 +139,18 @@
@change="onBlur"
style="width: 100%" />
</el-form-item>
+ <el-form-item label="鍒涘缓鏃堕棿">
+ <el-date-picker v-model="mergeCreateTimeDate"
+ type="date"
+ value-format="YYYY-MM-DD"
+ style="width: 100%" />
+ </el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
- <el-button @click="isShowNewModal = false">鍙栨秷</el-button>
<el-button type="primary"
@click="handleMergeSubmit">纭畾涓嬪彂</el-button>
+ <el-button @click="isShowNewModal = false">鍙栨秷</el-button>
</span>
</template>
</el-dialog>
@@ -158,7 +179,7 @@
prop="mpsNo">
<el-input v-model="form.mpsNo"
disabled
- placeholder="鏂板鍚庤嚜鍔ㄧ敓鎴�" />
+ placeholder="淇濆瓨鍚庤嚜鍔ㄧ敓鎴�" />
</el-form-item>
<el-form-item label="浜у搧鍚嶇О"
prop="productId">
@@ -171,7 +192,7 @@
@change="handleProductChange"
style="width: 100%" />
</el-form-item>
- <el-form-item label="浜у搧瑙勬牸"
+ <el-form-item label="瑙勬牸鍨嬪彿"
prop="productModelId">
<el-select v-model="form.productModelId"
@change="handleChangeSpecification"
@@ -212,6 +233,14 @@
style="width: 100%"
placeholder="璇烽�夋嫨鎵胯鏃ユ湡" />
</el-form-item>
+ <el-form-item label="鍒涘缓鏃堕棿"
+ prop="createTime">
+ <el-date-picker v-model="formCreateTimeDate"
+ type="date"
+ value-format="YYYY-MM-DD"
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" />
+ </el-form-item>
<el-form-item label="澶囨敞"
prop="remark">
<el-input v-model="form.remark"
@@ -221,9 +250,9 @@
</el-form>
<template #footer>
<span class="dialog-footer">
- <el-button @click="dialogVisible = false">鍙栨秷</el-button>
<el-button type="primary"
@click="handleSubmit">纭畾</el-button>
+ <el-button @click="dialogVisible = false">鍙栨秷</el-button>
</span>
</template>
</el-dialog>
@@ -251,6 +280,7 @@
productionPlanUpdate,
productionPlanDelete,
productionPlanCombine,
+ exportProductionPlan,
} from "@/api/productionPlan/productionPlan.js";
import { productTreeList, modelListPage } from "@/api/basicData/product.js";
import PIMTable from "./components/PIMTable.vue";
@@ -262,11 +292,6 @@
const loadProdData = () => {
console.log("Mock loadProdData called");
return Promise.resolve({ code: 200, msg: "鍚屾鎴愬姛" });
- };
-
- const exportProductionPlan = () => {
- console.log("Mock exportProductionPlan called");
- return Promise.resolve();
};
// const productionPlanCombine = payload => {
@@ -293,6 +318,14 @@
},
},
{
+ label: "閿�鍞悎鍚屽彿",
+ prop: "salesContractNo",
+ width: "200px",
+ dataType: "slot",
+ slot: "salesContractNo",
+ },
+
+ {
label: "浜у搧鍚嶇О",
prop: "productName",
width: "200px",
@@ -302,7 +335,7 @@
},
},
{
- label: "浜у搧瑙勬牸",
+ label: "瑙勬牸鍨嬪彿",
prop: "model",
width: "150px",
className: "spec-cell",
@@ -316,7 +349,6 @@
label: "鎵�闇�鏁伴噺",
prop: "qtyRequired",
width: "150px",
- align: "right",
dataType: "slot",
slot: "qtyRequired",
className: "volume-cell",
@@ -365,6 +397,17 @@
className: "date-cell",
formatData: cell => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
},
+
+ {
+ label: "瀹㈡埛鍚嶇О",
+ prop: "customerName",
+ width: "150px",
+ },
+ {
+ label: "椤圭洰鍚嶇О",
+ prop: "projectName",
+ width: "150px",
+ },
{
label: "澶囨敞",
width: "150px",
@@ -382,7 +425,7 @@
type: "primary",
link: true,
showHide: row => {
- return row.status == 0;
+ return row.status == 0 && row.source != "閿�鍞�";
},
clickFun: row => {
handleEdit(row);
@@ -401,6 +444,7 @@
Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
mergeForm.planCompleteTime = row.requiredDate || "";
mergeForm.productId = row.productId || "";
+ mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
mergeForm.ids = [row.id];
sumAssignedQuantity.value =
Number(row.qtyRequired || 0) - Number(row.quantityIssued || 0);
@@ -444,6 +488,13 @@
totalAssignedQuantity: 0,
planCompleteTime: "",
productId: "",
+ createTime: "",
+ });
+ const mergeCreateTimeDate = computed({
+ get: () => (mergeForm.createTime ? String(mergeForm.createTime).split(" ")[0] : ""),
+ set: (value) => {
+ mergeForm.createTime = value ? `${value} ${dayjs().format("HH:mm:ss")}` : "";
+ },
});
// 瀵煎叆鐩稿叧
@@ -474,11 +525,18 @@
requiredDate: "",
promisedDeliveryDate: "",
remark: "",
+ createTime: "",
+ });
+ const formCreateTimeDate = computed({
+ get: () => (form.createTime ? String(form.createTime).split(" ")[0] : ""),
+ set: (value) => {
+ form.createTime = value ? `${value} ${dayjs().format("HH:mm:ss")}` : "";
+ },
});
const rules = reactive({
productId: [{ required: true, message: "璇烽�夋嫨浜у搧", trigger: "change" }],
productModelId: [
- { required: true, message: "璇烽�夋嫨浜у搧瑙勬牸", trigger: "change" },
+ { required: true, message: "璇烽�夋嫨瑙勬牸鍨嬪彿", trigger: "change" },
],
qtyRequired: [{ required: true, message: "璇疯緭鍏ユ暟閲�", trigger: "blur" }],
requiredDate: [
@@ -568,6 +626,7 @@
const data = reactive({
searchForm: {
mpsNo: "",
+ salesContractNo: "",
productName: "",
model: "",
status: "",
@@ -596,6 +655,7 @@
}
Object.assign(searchForm.value, {
mpsNo: "",
+ salesContractNo: "",
productName: "",
model: "",
status: "",
@@ -655,17 +715,17 @@
});
};
- // 閫変腑鐨勪骇鍝佽鏍糏D
+ // 閫変腑鐨勮鏍煎瀷鍙稩D
const selectedProductModelId = ref("");
// 琛ㄦ牸閫夋嫨鏁版嵁
const handleSelectionChange = selection => {
selectedRows.value = selection;
- // 濡傛灉鏈夐�変腑鐨勮锛岃褰曠涓�涓�変腑琛岀殑浜у搧瑙勬牸ID
+ // 濡傛灉鏈夐�変腑鐨勮锛岃褰曠涓�涓�変腑琛岀殑瑙勬牸鍨嬪彿ID
if (selection.length > 0) {
selectedProductModelId.value = selection[0].productModelId;
} else {
- // 濡傛灉娌℃湁閫変腑鐨勮锛屾竻绌轰骇鍝佽鏍糏D
+ // 濡傛灉娌℃湁閫変腑鐨勮锛屾竻绌鸿鏍煎瀷鍙稩D
selectedProductModelId.value = "";
}
};
@@ -686,7 +746,7 @@
if (!selectedProductModelId.value) {
return true;
}
- // 濡傛灉鏈夐�変腑鐨勮锛屽彧鏈変骇鍝佽鏍糏D鐩稿悓鐨勮鎵嶅彲閫夋嫨
+ // 濡傛灉鏈夐�変腑鐨勮锛屽彧鏈夎鏍煎瀷鍙稩D鐩稿悓鐨勮鎵嶅彲閫夋嫨
return row.productModelId === selectedProductModelId.value;
};
// 鎷夊彇鏁版嵁鎸夐挳鎿嶄綔
@@ -715,10 +775,19 @@
mergeForm.totalAssignedQuantity = totalAssignedQuantity;
mergeForm.planCompleteTime = firstRow.requiredDate || "";
mergeForm.productId = firstRow.productId || "";
+ mergeForm.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss");
mergeForm.ids = selectedRows.value.map(row => row.id);
// 鎵撳紑寮圭獥
isShowNewModal.value = true;
+ };
+ const showDetail = row => {
+ router.push({
+ path: "/salesManagement/salesLedger",
+ query: {
+ salesContractNo: row.salesContractNo,
+ },
+ });
};
// 澶勭悊鍚堝苟涓嬪彂鎻愪氦
@@ -850,6 +919,7 @@
requiredDate: "",
promisedDeliveryDate: "",
remark: "",
+ createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
});
dialogVisible.value = true;
fetchProductOptions();
@@ -870,6 +940,7 @@
requiredDate: row.requiredDate || "",
promisedDeliveryDate: row.promisedDeliveryDate || "",
remark: row.remark || "",
+ createTime: row.createTime || "",
});
dialogVisible.value = true;
fetchProductOptions();
--
Gitblit v1.9.3