From 5e94a2858a40bc32f3b0369172e16ce17597714a Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 16 一月 2026 16:28:29 +0800
Subject: [PATCH] fix: 同步军泰伟业生产模块变更
---
src/views/productionManagement/productStructure/Detail/index.vue | 106 ++++++++++++++++++++++++++++-------------------------
1 files changed, 56 insertions(+), 50 deletions(-)
diff --git a/src/views/productionManagement/productStructure/Detail/index.vue b/src/views/productionManagement/productStructure/Detail/index.vue
index a131830..75f936e 100644
--- a/src/views/productionManagement/productStructure/Detail/index.vue
+++ b/src/views/productionManagement/productStructure/Detail/index.vue
@@ -1,30 +1,32 @@
<template>
<div class="app-container">
- <el-button v-if="dataValue.isEdit"
- type="primary"
- @click="addItem"
- style="margin-bottom: 10px">娣诲姞
- </el-button>
- <el-button v-if="!dataValue.isEdit"
- type="primary"
- @click="dataValue.isEdit = true"
- style="margin-bottom: 10px">缂栬緫
- </el-button>
- <el-button v-if="dataValue.isEdit"
- type="primary"
- @click="cancelEdit"
- style="margin-bottom: 10px">鍙栨秷
- </el-button>
- <el-button type="primary"
- :loading="dataValue.loading"
- @click="submit"
- :disabled="!dataValue.isEdit"
- style="margin-bottom: 10px">纭
- </el-button>
+ <PageHeader content="浜у搧缁撴瀯璇︽儏">
+ <template #right-button>
+ <el-button v-if="dataValue.isEdit && !isOrderPage"
+ type="primary"
+ @click="addItem">娣诲姞
+ </el-button>
+ <el-button v-if="!dataValue.isEdit && !isOrderPage"
+ type="primary"
+ @click="dataValue.isEdit = true">缂栬緫
+ </el-button>
+ <el-button v-if="dataValue.isEdit && !isOrderPage"
+ type="primary"
+ @click="cancelEdit">鍙栨秷
+ </el-button>
+ <el-button v-if="!isOrderPage"
+ type="primary"
+ :loading="dataValue.loading"
+ @click="submit"
+ :disabled="!dataValue.isEdit">纭
+ </el-button>
+ </template>
+ </PageHeader>
<el-table
:data="tableData"
border
:preserve-expanded-content="false"
+ :default-expand-all="true"
style="width: 100%"
>
<el-table-column type="expand">
@@ -120,25 +122,10 @@
</el-form-item>
</template>
</el-table-column>
- <el-table-column prop="diskQuantity"
- label="鐩樻暟锛堢洏锛�">
- <template #default="{ row, $index }">
- <el-form-item :prop="`dataList.${$index}.diskQuantity`"
- :rules="[{ required: true, message: '璇疯緭鍏ョ洏鏁�', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input-number v-model="row.diskQuantity"
- :min="0"
- :precision="0"
- :step="1"
- controls-position="right"
- style="width: 100%"
- :disabled="!dataValue.isEdit" />
- </el-form-item>
- </template>
- </el-table-column>
<el-table-column label="鎿嶄綔" fixed="right" width="100">
<template #default="{ row, $index }">
- <el-button type="danger"
+ <el-button v-if="dataValue.isEdit"
+ type="danger"
text
@click="dataValue.dataList.splice($index, 1)">鍒犻櫎
</el-button>
@@ -148,10 +135,9 @@
</el-form>
</template>
</el-table-column>
- <el-table-column label="浜у搧缂栫爜" prop="productCode" />
+ <el-table-column label="BOM缂栧彿" prop="bomNo" />
<el-table-column label="浜у搧鍚嶇О" prop="productName" />
<el-table-column label="瑙勬牸鍨嬪彿" prop="model" />
- <el-table-column label="鍗曚綅" prop="unit" />
</el-table>
<product-select-dialog v-if="dataValue.showProductDialog"
@@ -170,6 +156,7 @@
ref,
} from "vue";
import { queryList, add } from "@/api/productionManagement/productStructure.js";
+import { listProcessBom } from "@/api/productionManagement/productionOrder.js";
import { list } from "@/api/productionManagement/productionProcess";
import { ElMessage } from "element-plus";
import {useRoute, useRouter} from "vue-router";
@@ -195,6 +182,13 @@
}
});
+// 浠庤矾鐢卞弬鏁拌幏鍙栦骇鍝佷俊鎭�
+const routeBomNo = computed(() => route.query.bomNo || '');
+const routeProductName = computed(() => route.query.productName || '');
+const routeProductModelName = computed(() => route.query.productModelName || '');
+const routeOrderId = computed(() => route.query.orderId);
+const pageType = computed(() => route.query.type);
+const isOrderPage = computed(() => pageType.value === 'order' && routeOrderId.value);
const dataValue = reactive({
dataList: [],
@@ -210,8 +204,7 @@
{
productName: "",
model: "",
- unit: "",
- productCode: "",
+ bomNo: "",
}
])
@@ -221,12 +214,15 @@
};
const fetchData = async () => {
- const { data } = await queryList(routeId.value);
- tableData[0].productName = data.productName;
- tableData[0].model = data.model;
- tableData[0].unit = data.unit;
- tableData[0].productCode = data.productCode;
- dataValue.dataList = data.productStructureList;
+ if (isOrderPage.value) {
+ // 璁㈠崟鎯呭喌锛氫娇鐢ㄨ鍗曠殑浜у搧缁撴瀯鎺ュ彛
+ const { data } = await listProcessBom({ orderId: routeOrderId.value });
+ dataValue.dataList = data || [];
+ } else {
+ // 闈炶鍗曟儏鍐碉細浣跨敤鍘熸潵鐨勬帴鍙�
+ const { data } = await queryList(routeId.value);
+ dataValue.dataList = data || [];
+ }
};
const fetchProcessOptions = async () => {
@@ -242,6 +238,7 @@
row[0].productName;
dataValue.dataList[dataValue.currentRowIndex].model = row[0].model;
dataValue.dataList[dataValue.currentRowIndex].productModelId = row[0].id;
+ dataValue.dataList[dataValue.currentRowIndex].unit = row[0].unit || "";
dataValue.showProductDialog = false;
};
@@ -251,7 +248,7 @@
dataValue.loading = true;
if (valid) {
add({
- parentId: routeId.value,
+ bomId: routeId.value,
productStructureList: dataValue.dataList || [],
}).then(res => {
router.push({
@@ -277,7 +274,6 @@
unitQuantity: 0,
demandedQuantity: 0,
unit: "",
- diskQuantity: 0,
});
};
@@ -287,6 +283,16 @@
};
onMounted(() => {
+ // 浠庤矾鐢卞弬鏁板洖鏄炬暟鎹�
+ tableData[0].productName = routeProductName.value;
+ tableData[0].model = routeProductModelName.value;
+ tableData[0].bomNo = routeBomNo.value;
+
+ // 璁㈠崟鎯呭喌涓嬬鐢ㄧ紪杈�
+ if (isOrderPage.value) {
+ dataValue.isEdit = false;
+ }
+
fetchData();
fetchProcessOptions();
});
--
Gitblit v1.9.3