From e0699ce1a404b1d819d7ef0b40cfd2631bb964d1 Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 12 三月 2026 17:56:06 +0800
Subject: [PATCH] 问题修改
---
src/views/productionPlan/productionPlan/index.vue | 125 +++++++++++++++++++++++++++++++++--------
1 files changed, 101 insertions(+), 24 deletions(-)
diff --git a/src/views/productionPlan/productionPlan/index.vue b/src/views/productionPlan/productionPlan/index.vue
index d3fb161..e70fa22 100644
--- a/src/views/productionPlan/productionPlan/index.vue
+++ b/src/views/productionPlan/productionPlan/index.vue
@@ -234,19 +234,26 @@
placeholder="璇疯緭鍏ュ鎴峰悕绉�" />
</el-form-item>
<el-form-item label="浜у搧鍚嶇О"
- prop="productName">
- <el-input v-model="form.productName"
- placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�" />
+ prop="productMaterialId">
+ <el-tree-select v-model="form.productMaterialId"
+ placeholder="璇烽�夋嫨"
+ clearable
+ :data="productOptions"
+ :render-after-expand="false"
+ filterable
+ @change="handleProductChange"
+ style="width: 100%" />
</el-form-item>
<el-form-item label="浜у搧瑙勬牸"
- prop="specification">
- <el-input v-model="form.specification"
- placeholder="璇疯緭鍏ヤ骇鍝佽鏍�" />
- </el-form-item>
- <el-form-item label="鐗╂枡缂栫爜"
- prop="materialCode">
- <el-input v-model="form.materialCode"
- placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" />
+ prop="productMaterialSkuId">
+ <el-select v-model="form.productMaterialSkuId"
+ @change="handleChangeSpecification"
+ placeholder="璇烽�夋嫨">
+ <el-option v-for="item in specificationOptions"
+ :key="item.skuId"
+ :label="item.specification"
+ :value="item.skuId" />
+ </el-select>
</el-form-item>
<el-form-item label="鍧楁暟"
prop="quantity">
@@ -335,6 +342,7 @@
productionPlanCombine,
} from "@/api/productionPlan/productionPlan.js";
import PIMTable from "./components/PIMTable.vue";
+ import { modelListPage, productTreeList } from "@/api/basicData/newProduct.js";
const { proxy } = getCurrentInstance();
@@ -482,6 +490,7 @@
clickFun: row => {
// 鍗曠嫭涓嬪彂鎿嶄綔
// 璁剧疆琛ㄥ崟鏁版嵁
+ mergeForm.ids = [row.id];
mergeForm.materialCode = row.materialCode;
mergeForm.productName = row.productName || "";
mergeForm.specification = row.specification || "";
@@ -489,7 +498,7 @@
mergeForm.width = row.width || 0;
mergeForm.height = row.height || 0;
mergeForm.totalAssignedQuantity =
- Number(row.volume) - Number(row.assignedQuantity) || 0;
+ (Number(row.volume) - Number(row.assignedQuantity)).toFixed(4) || 0;
mergeForm.planCompleteTime = row.planCompleteTime || "";
sumAssignedQuantity.value = mergeForm.totalAssignedQuantity;
// 鎵撳紑寮圭獥
@@ -557,11 +566,15 @@
// 鏂板/缂栬緫鐩稿叧
const dialogVisible = ref(false);
const operationType = ref("add"); // add | edit
+ const productOptions = ref([]);
+ const specificationOptions = ref([]);
const formRef = ref(null);
const form = reactive({
id: undefined,
applyNo: "",
customerName: "",
+ productMaterialId: undefined,
+ productMaterialSkuId: undefined,
productName: "",
specification: "",
materialCode: "",
@@ -581,12 +594,11 @@
customerName: [
{ required: true, message: "璇疯緭鍏ュ鎴峰悕绉�", trigger: "blur" },
],
- productName: [{ required: true, message: "璇疯緭鍏ヤ骇鍝佸悕绉�", trigger: "blur" }],
- specification: [
- { required: true, message: "璇疯緭鍏ヤ骇鍝佽鏍�", trigger: "blur" },
+ productMaterialSkuId: [
+ { required: true, message: "璇烽�夋嫨浜у搧瑙勬牸", trigger: "change" },
],
- materialCode: [
- { required: true, message: "璇疯緭鍏ョ墿鏂欑紪鐮�", trigger: "blur" },
+ productMaterialId: [
+ { required: true, message: "璇烽�夋嫨浜у搧", trigger: "change" },
],
});
@@ -611,6 +623,55 @@
const onBlur = value => {
// 闄愬埗鍥涗綅灏忔暟
mergeForm.totalAssignedQuantity = Number(value.toFixed(4));
+ };
+
+ const fetchProductOptions = () => {
+ return productTreeList().then(res => {
+ productOptions.value = convertIdToValue(res.data);
+ return res;
+ });
+ };
+
+ const convertIdToValue = data => {
+ return data.map(item => {
+ const newItem = {
+ value: `config_${item.configId}`, // 浣跨敤config_鍓嶇紑纭繚鍞竴鎬�
+ label: item.configName,
+ disabled: item.materialList.length === 0,
+ };
+ if (item.materialList && item.materialList.length > 0) {
+ newItem.children = item.materialList.map(material => ({
+ value: material.id, // 浣跨敤material鐨刬d浣滀负value
+ label: material.materialName, // 浣跨敤materialName浣滀负label
+ }));
+ }
+
+ return newItem;
+ });
+ };
+
+ const handleProductChange = value => {
+ form.productMaterialSkuId = undefined;
+ fetchSpecificationOptions(value);
+ };
+
+ const fetchSpecificationOptions = materialId => {
+ specificationOptions.value = [];
+ if (materialId) {
+ modelListPage({ materialId: materialId }).then(res => {
+ specificationOptions.value = res.data;
+ });
+ }
+ };
+
+ const handleChangeSpecification = value => {
+ form.materialCode = undefined;
+ const selectedModel = specificationOptions.value.find(
+ item => item.id === value
+ );
+ if (selectedModel) {
+ form.materialCode = selectedModel.materialCode;
+ }
};
// 鐢熸垚妯℃嫙杩涘害璇︽儏鏁版嵁
@@ -734,8 +795,9 @@
totalAssignedQuantity: 0,
};
}
- summary[category].totalAssignedQuantity +=
- Number(row.volume) - Number(row.assignedQuantity);
+ summary[category].totalAssignedQuantity += (
+ Number(row.volume) - Number(row.assignedQuantity)
+ ).toFixed(4);
});
// 杞崲涓烘暟缁勬牸寮�
@@ -796,7 +858,9 @@
// 鎷夊彇鏁版嵁鎸夐挳鎿嶄綔
const getLoadProdData = () => {
loadProdData()
- .then(res => {})
+ .then(res => {
+ getList();
+ })
.catch(() => {});
};
const sumAssignedQuantity = ref(0);
@@ -813,7 +877,7 @@
sum +
(row.volume == null
? 0
- : Number(row.volume) - Number(row.assignedQuantity))
+ : (Number(row.volume) - Number(row.assignedQuantity)).toFixed(4))
);
}, 0);
sumAssignedQuantity.value = totalAssignedQuantity;
@@ -828,6 +892,7 @@
mergeForm.height = firstRow.height || 0;
mergeForm.totalAssignedQuantity = totalAssignedQuantity;
mergeForm.planCompleteTime = firstRow.planCompleteTime || "";
+ mergeForm.ids = selectedRows.value.map(row => row.id);
// 鎵撳紑寮圭獥
isShowNewModal.value = true;
@@ -835,6 +900,10 @@
// 澶勭悊鍚堝苟涓嬪彂鎻愪氦
const handleMergeSubmit = () => {
+ if (mergeForm.totalAssignedQuantity === 0) {
+ ElMessage.warning("璇疯緭鍏ョ敓浜ф柟鏁�");
+ return;
+ }
console.log(sumAssignedQuantity.value, "sumAssignedQuantity");
// 璁$畻褰撳墠閫変腑琛岀殑鎬绘柟鏁�
const totalVolume = selectedRows.value.reduce((sum, row) => {
@@ -847,16 +916,17 @@
return;
}
- mergeForm.ids = selectedRows.value.map(row => row.id);
console.log(mergeForm, "mergeForm");
productionPlanCombine(mergeForm)
.then(res => {
if (res.code === 200) {
- ElMessage.success("鍚堝苟涓嬪彂鎴愬姛");
+ ElMessage.success("涓嬪彂鎴愬姛");
+ getList();
isShowNewModal.value = false;
// 鍙互閫夋嫨鍒锋柊鍒楄〃鎴栧叾浠栨搷浣�
+ getList();
} else {
- ElMessage.error(res.message || "鍚堝苟涓嬪彂澶辫触");
+ ElMessage.error(res.message || "涓嬪彂澶辫触");
}
})
.catch(err => {
@@ -950,6 +1020,8 @@
applyNo: "",
customerName: "",
productName: "",
+ productMaterialId: undefined,
+ productMaterialSkuId: undefined,
specification: "",
materialCode: "",
quantity: 0,
@@ -964,6 +1036,7 @@
remarkTwo: "",
});
dialogVisible.value = true;
+ fetchProductOptions();
};
// 缂栬緫
@@ -974,6 +1047,8 @@
applyNo: row.applyNo || "",
customerName: row.customerName || "",
productName: row.productName || "",
+ productMaterialId: row.productMaterialId || undefined,
+ productMaterialSkuId: row.productMaterialSkuId || undefined,
specification: row.specification || "",
materialCode: row.materialCode || "",
quantity: row.quantity || 0,
@@ -988,6 +1063,8 @@
remarkTwo: row.remarkTwo || "",
});
dialogVisible.value = true;
+ fetchProductOptions();
+ fetchSpecificationOptions(row.productMaterialId);
};
// 鍒犻櫎
--
Gitblit v1.9.3