From e65bfa1d46d255f307eaa057665f01c8bde0e122 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 16 六月 2026 11:14:36 +0800
Subject: [PATCH] 君歌 1.端口修改
---
src/views/productionManagement/processRoute/processRouteItem/index.vue | 655 +++++++++++++----------------------------------------------
1 files changed, 145 insertions(+), 510 deletions(-)
diff --git a/src/views/productionManagement/processRoute/processRouteItem/index.vue b/src/views/productionManagement/processRoute/processRouteItem/index.vue
index 6d64c30..db7905d 100644
--- a/src/views/productionManagement/processRoute/processRouteItem/index.vue
+++ b/src/views/productionManagement/processRoute/processRouteItem/index.vue
@@ -30,14 +30,6 @@
<span class="info-value">{{ routeInfo.model || '-' }}</span>
</div>
</div>
- <div class="info-item">
- <div class="info-label-wrapper">
- <span class="info-label">BOM缂栧彿</span>
- </div>
- <div class="info-value-wrapper">
- <span class="info-value">{{ routeInfo.bomNo || '-' }}</span>
- </div>
- </div>
<div class="info-item"
v-if="routeInfo.quantity && routeInfo.quantity !== 0">
<div class="info-label-wrapper">
@@ -47,16 +39,45 @@
<span class="info-value">{{ routeInfo.quantity || '-' }}</span>
</div>
</div>
- <div class="info-item full-width"
- v-if="routeInfo.description">
+ <div class="info-item">
<div class="info-label-wrapper">
- <span class="info-label">鎻忚堪</span>
+ <span class="info-label">澶囨敞</span>
</div>
<div class="info-value-wrapper">
<span class="info-value">{{ routeInfo.description }}</span>
</div>
</div>
</div>
+ </el-card>
+ <!-- 闄勪欢妯″潡 -->
+ <div v-if="pageType === 'order'"
+ class="section-header">
+ <div class="section-title">闄勪欢</div>
+ </div>
+ <el-card v-if="pageType === 'order'"
+ class="attachment-card"
+ shadow="hover"
+ style="margin-top: 10px; margin-bottom: 20px;">
+ <el-table :data="attachmentTableData"
+ border
+ class="attachment-table">
+ <el-table-column label="闄勪欢鍚嶇О"
+ prop="originalFilename"
+ show-overflow-tooltip />
+ <el-table-column fixed="right"
+ label="鎿嶄綔"
+ width="200"
+ align="center">
+ <template #default="scope">
+ <el-button link
+ type="primary"
+ size="small"
+ @click="downloadAttachmentFile(scope.row.downloadURL)">
+ 涓嬭浇
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
</el-card>
<!-- 琛ㄦ牸瑙嗗浘 -->
<div v-if="viewMode === 'table'"
@@ -111,6 +132,13 @@
<el-table-column label="鍗曚綅"
prop="unit"
width="100" />
+ <el-table-column label="璁¤垂绫诲瀷"
+ prop="type"
+ width="100">
+ <template #default="scope">
+ {{scope.row.type==0 ? "璁℃椂" : "璁′欢"}}
+ </template>
+ </el-table-column>
<el-table-column label="鏄惁璐ㄦ"
prop="isQuality"
width="100">
@@ -181,12 +209,16 @@
{{ item.model }}
<!-- <span v-if="item.unit" class="product-unit">{{ item.unit }}</span> -->
</div>
+ <el-tag class="product-tag"
+ :type="item.type == 1 ? 'primary' : 'success'"
+ style="margin-left: 8px;">{{ item.type==0?'璁℃椂':'璁′欢' }}</el-tag>
<el-tag type="primary"
class="product-tag"
+ style="margin-left: 8px;"
v-if="item.isQuality">璐ㄦ</el-tag>
<el-tag type="primary"
class="product-tag"
- :style="item.isQuality?'margin-left:8px':''"
+ style="margin-left: 8px;"
v-if="item.isProduction">鐢熶骇</el-tag>
</div>
<div v-else
@@ -213,164 +245,18 @@
</div>
</div>
</template>
- <!-- bom妯″潡 -->
- <div class="section-header"
- style="margin-top: 20px;">
- <div class="section-title">BOM 缁撴瀯</div>
- <div class="section-actions"
- v-if="pageType === 'order' && editable">
- <el-button v-if="!bomDataValue.isEdit"
- type="primary"
- @click="bomDataValue.isEdit = true">
- 缂栬緫
- </el-button>
- <el-button v-if="bomDataValue.isEdit"
- @click="cancelEditBom">
- 鍙栨秷
- </el-button>
- <el-button v-if="bomDataValue.isEdit"
- type="primary"
- @click="handleSaveBom"
- :loading="bomDataValue.loading">
- 淇濆瓨BOM
- </el-button>
- </div>
- </div>
- <el-table :data="bomTableData"
- border
- :preserve-expanded-content="false"
- :default-expand-all="true"
- style="width: 100%">
- <el-table-column type="expand">
- <template #default>
- <el-form ref="bomFormRef"
- :model="bomDataValue">
- <el-table :data="bomDataValue.dataList"
- row-key="tempId"
- default-expand-all
- :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
- style="width: 100%">
- <el-table-column prop="productName"
- label="浜у搧" />
- <el-table-column prop="model"
- label="瑙勬牸">
- <template #default="{ row }">
- <el-form-item v-if="pageType === 'order' && bomDataValue.isEdit"
- :rules="[{ required: true, message: '璇烽�夋嫨瑙勬牸', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-select v-model="row.model"
- placeholder="璇烽�夋嫨瑙勬牸"
- clearable
- :disabled="!bomDataValue.isEdit || bomDataValue.dataList.some(item => (item).tempId === row.tempId)"
- style="width: 100%"
- @visible-change="(v) => { if (v) openBomDialog(row.tempId) }">
- <el-option v-if="row.model"
- :label="row.model"
- :value="row.model" />
- </el-select>
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="processName"
- label="娑堣�楀伐搴�">
- <template #default="{ row }">
- <el-form-item v-if="pageType === 'order' && bomDataValue.isEdit"
- :rules="bomDataValue.dataList.some(item => (item).tempId === row.tempId) ? [] : [{ required: true, message: '璇烽�夋嫨娑堣�楀伐搴�', trigger: 'change' }]"
- style="margin: 0">
- <el-select v-model="row.processId"
- placeholder="璇烽�夋嫨"
- filterable
- clearable
- style="width: 100%"
- @change="value => handleBomProcessChange(row, value)"
- :disabled="!bomDataValue.isEdit || bomDataValue.dataList.some(item => (item).tempId === row.tempId)">
- <el-option v-for="item in bomDataValue.processOptions"
- :key="item.id"
- :label="item.name"
- :value="item.id" />
- </el-select>
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="unitQuantity"
- label="鍗曚綅浜у嚭鎵�闇�鏁伴噺">
- <template #default="{ row }">
- <el-form-item v-if="pageType === 'order' && bomDataValue.isEdit"
- :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣嶄骇鍑烘墍闇�鏁伴噺', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input-number v-model="row.unitQuantity"
- :min="0"
- :precision="2"
- :step="1"
- controls-position="right"
- style="width: 100%"
- @change="handleUnitQuantityChange(row)"
- :disabled="!bomDataValue.isEdit || bomDataValue.dataList.some(item => (item).tempId === row.tempId)" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column v-if="pageType === 'order'"
- prop="demandedQuantity"
- label="闇�姹傛�婚噺">
- <template #default="{ row }">
- <el-form-item v-if="pageType === 'order' && bomDataValue.isEdit"
- :rules="[{ required: true, message: '璇疯緭鍏ラ渶姹傛�婚噺', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input-number v-model="row.demandedQuantity"
- :min="0"
- :precision="2"
- :step="1"
- controls-position="right"
- style="width: 100%"
- :disabled="!bomDataValue.isEdit || bomDataValue.dataList.some(item => (item).tempId === row.tempId)" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column prop="unit"
- label="鍗曚綅">
- <template #default="{ row }">
- <el-form-item v-if="pageType === 'order' && bomDataValue.isEdit"
- :rules="[{ required: true, message: '璇疯緭鍏ュ崟浣�', trigger: ['blur','change'] }]"
- style="margin: 0">
- <el-input v-model="row.unit"
- placeholder="璇疯緭鍏ュ崟浣�"
- clearable
- :disabled="!bomDataValue.isEdit || bomDataValue.dataList.some(item => (item).tempId === row.tempId)" />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔"
- fixed="right"
- width="200"
- v-if="pageType === 'order' && bomDataValue.isEdit">
- <template #default="{ row }">
- <el-button v-if="bomDataValue.isEdit && !bomDataValue.dataList.some(item => (item).tempId === row.tempId)"
- type="danger"
- text
- @click="removeBomItem(row.tempId)">鍒犻櫎
- </el-button>
- <el-button v-if="bomDataValue.isEdit"
- type="primary"
- text
- @click="addBomItem(row.tempId)">娣诲姞
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-form>
- </template>
- </el-table-column>
- <el-table-column label="BOM缂栧彿"
- prop="bomNo" />
- <el-table-column label="浜у搧鍚嶇О"
- prop="productName" />
- <el-table-column label="瑙勬牸鍨嬪彿"
- prop="model" />
- </el-table>
- <ProductSelectDialog v-if="bomDataValue.showProductDialog"
- v-model="bomDataValue.showProductDialog"
- :single="true"
- @confirm="handleBomProduct" />
+ <!-- 涓婁紶缁勪欢寮圭獥 -->
+ <el-dialog v-model="uploadDialogVisible"
+ title="涓婁紶闄勪欢"
+ width="50%"
+ @close="closeAttachmentUpload">
+ <AttachmentUpload v-model:file-list="newFileList" />
+ <template #footer>
+ <el-button @click="saveAttachmentUpload"
+ type="primary">淇濆瓨</el-button>
+ <el-button @click="closeAttachmentUpload">鍏抽棴</el-button>
+ </template>
+ </el-dialog>
<!-- 鏂板/缂栬緫寮圭獥 -->
<el-dialog v-model="dialogVisible"
:title="operationType === 'add' ? '鏂板宸ヨ壓璺嚎椤圭洰' : '缂栬緫宸ヨ壓璺嚎椤圭洰'"
@@ -423,6 +309,13 @@
<el-form-item label="鍗曚綅"
v-else>
<span>{{ form.unit }}</span>
+ </el-form-item>
+ <el-form-item label="璁¤垂绫诲瀷"
+ prop="type">
+ <el-radio-group v-model="form.type">
+ <el-radio :label="0">璁℃椂</el-radio>
+ <el-radio :label="1">璁′欢</el-radio>
+ </el-radio-group>
</el-form-item>
<el-form-item label="鏄惁璐ㄦ"
prop="isQuality">
@@ -494,12 +387,12 @@
sortRouteItem,
} from "@/api/productionManagement/productProcessRoute.js";
import { processList } from "@/api/productionManagement/productionProcess.js";
- import { listProcessBom } from "@/api/productionManagement/productionOrder.js";
+ import AttachmentUpload from "@/components/AttachmentUpload/file/index.vue";
import {
- queryList,
- queryList2,
- add2,
- } from "@/api/productionManagement/productStructure.js";
+ attachmentList,
+ deleteAttachment,
+ createAttachment,
+ } from "@/api/basicData/storageAttachment.js";
import { useRoute } from "vue-router";
import { ElMessageBox, ElMessage } from "element-plus";
@@ -512,13 +405,13 @@
const orderId = computed(() => route.query.orderId);
const pageType = computed(() => route.query.type);
const editable = computed(() => route.query.editable !== "false");
+ const technologyRoutingId = computed(() => route.query.technologyRoutingId);
const tableLoading = ref(false);
const tableData = ref([]);
const dialogVisible = ref(false);
const operationType = ref("add"); // add | edit
const formRef = ref(null);
- const bomFormRef = ref(null);
const submitLoading = ref(false);
const cardsContainer = ref(null);
const tableRef = ref(null);
@@ -527,10 +420,68 @@
processRouteCode: "",
productName: "",
model: "",
- bomNo: "",
description: "",
quantity: 0,
+ technologyRoutingId: "",
});
+
+ // 闄勪欢鐩稿叧
+ const attachmentTableData = ref([]);
+ const uploadDialogVisible = ref(false);
+ const newFileList = ref([]);
+
+ const getAttachmentList = () => {
+ if (!technologyRoutingId.value) return;
+ attachmentList({
+ recordType: "technology_routing",
+ recordId: technologyRoutingId.value,
+ }).then(res => {
+ attachmentTableData.value = (res && res.data) || [];
+ });
+ };
+
+ const handleUploadAttachment = () => {
+ uploadDialogVisible.value = true;
+ };
+
+ const saveAttachmentUpload = async () => {
+ if (newFileList.value.length > 0) {
+ createAttachment({
+ application: "file",
+ recordType: "technology_routing",
+ recordId: technologyRoutingId.value,
+ storageBlobDTOs: [...newFileList.value, ...attachmentTableData.value],
+ })
+ .then(res => {
+ if (res && res.code === 200) {
+ proxy?.$modal?.msgSuccess("涓婁紶鎴愬姛");
+ newFileList.value = [];
+ getAttachmentList();
+ }
+ })
+ .finally(() => {
+ uploadDialogVisible.value = false;
+ });
+ }
+ };
+
+ const closeAttachmentUpload = () => {
+ newFileList.value = [];
+ uploadDialogVisible.value = false;
+ };
+
+ const handleDeleteAttachment = async row => {
+ deleteAttachment([row.storageAttachmentId]).then(res => {
+ if (res && res.code === 200) {
+ proxy?.$modal?.msgSuccess("鍒犻櫎鎴愬姛");
+ getAttachmentList();
+ }
+ });
+ };
+
+ const downloadAttachmentFile = url => {
+ window.open(url, "_blank");
+ };
const processOptions = ref([]);
const showProductSelectDialog = ref(false);
@@ -558,6 +509,7 @@
model: "",
unit: "",
isQuality: false,
+ type: 0,
isProduction: false,
});
@@ -644,7 +596,6 @@
processList({ size: -1, current: -1 })
.then(res => {
processOptions.value = res.data.records || [];
- bomDataValue.value.processOptions = processOptions.value;
})
.catch(err => {
console.error("鑾峰彇宸ュ簭澶辫触锛�", err);
@@ -657,15 +608,11 @@
processRouteCode: route.query.processRouteCode || "",
productName: route.query.productName || "",
model: route.query.model || "",
- bomNo: route.query.bomNo || "",
- bomId: route.query.bomId || "",
description: route.query.description || "",
quantity: route.query.quantity || 0,
+ technologyRoutingId: route.query.technologyRoutingId || "",
status: !(route.query.status == 1 || route.query.status === "false"),
};
- bomTableData.value[0].productName = routeInfo.value.productName;
- bomTableData.value[0].model = routeInfo.value.model;
- bomTableData.value[0].bomNo = routeInfo.value.bomNo;
};
// 鏂板
@@ -687,6 +634,7 @@
model: row.model || "",
unit: row.unit || "",
isQuality: row.isQuality,
+ type: row.type || 0,
isProduction: row.isProduction,
};
dialogVisible.value = true;
@@ -758,6 +706,7 @@
operationName: getProcessName(form.value.technologyOperationId),
productModelId: form.value.productModelId,
isQuality: form.value.isQuality,
+ type: form.value.type,
isProduction: form.value.isProduction,
dragSort,
})
@@ -766,6 +715,7 @@
technologyOperationId: form.value.technologyOperationId,
productModelId: form.value.productModelId,
isQuality: form.value.isQuality,
+ type: form.value.type,
isProduction: form.value.isProduction,
dragSort,
});
@@ -793,6 +743,7 @@
operationName: getProcessName(form.value.technologyOperationId),
productModelId: form.value.productModelId,
isQuality: form.value.isQuality,
+ type: form.value.type,
isProduction: form.value.isProduction,
})
: addOrUpdateProcessRouteItem1({
@@ -801,6 +752,7 @@
productModelId: form.value.productModelId,
id: form.value.id,
isQuality: form.value.isQuality,
+ type: form.value.type,
isProduction: form.value.isProduction,
});
@@ -832,6 +784,7 @@
model: "",
unit: "",
isQuality: false,
+ type: 0,
isProduction: false,
};
formRef.value?.resetFields();
@@ -1014,345 +967,27 @@
}
};
- // BOM鐩稿叧鐘舵�佸拰鏂规硶
- const bomTableData = ref([
- {
- productName: "",
- model: "",
- bomNo: "",
- },
- ]);
-
- const bomDataValue = ref({
- dataList: [],
- processOptions: [],
- showProductDialog: false,
- currentRowName: null,
- loading: false,
- isEdit: false,
- });
-
- const syncProcessOperationFields = item => {
- const processId =
- item.processId ?? item.operationId ?? item.technologyOperationId ?? "";
- if (!processId) {
- item.processId = "";
- return;
- }
- const option = bomDataValue.value.processOptions.find(
- p => p.id === processId
- );
- const processName =
- option?.name || item.processName || item.operationName || "";
-
- item.processId = processId;
- if (pageType.value === "order") {
- item.technologyOperationId = processId;
- } else {
- item.operationId = processId;
- }
- item.processName = processName;
- item.operationName = processName;
- };
-
- const normalizeTreeData = items => {
- items.forEach(item => {
- item.tempId = item.tempId || item.id || `${Date.now()}_${Math.random()}`;
- syncProcessOperationFields(item);
- if (Array.isArray(item.children) && item.children.length > 0) {
- normalizeTreeData(item.children);
- }
- });
- };
const processChange = value => {
processOptions.value.forEach(item => {
if (item.id == value) {
form.value.isQuality = item.isQuality;
+ form.value.type = item.type || 0;
form.value.isProduction = item.isProduction;
}
});
};
- const handleBomProcessChange = (row, value) => {
- row.processId = value || "";
- syncProcessOperationFields(row);
- };
-
- const openBomDialog = tempId => {
- bomDataValue.value.currentRowName = tempId;
- bomDataValue.value.showProductDialog = true;
- };
-
- const fetchBomData = async () => {
- try {
- const isOrderPage = pageType.value === "order";
- const { data } = await (isOrderPage ? queryList2 : queryList)(
- routeInfo.value.bomId
- );
- bomDataValue.value.dataList = data || [];
- normalizeTreeData(bomDataValue.value.dataList);
- } catch (err) {
- console.error("鑾峰彇BOM鏁版嵁澶辫触锛�", err);
- }
- };
-
- const childItem = (item, tempId, productData) => {
- if (item.tempId === tempId) {
- item.productName = productData.productName;
- item.model = productData.model;
- item.productModelId = productData.id;
- item.unit = productData.unit || "";
- return true;
- }
- if (item.children && item.children.length > 0) {
- for (let child of item.children) {
- if (childItem(child, tempId, productData)) {
- return true;
- }
- }
- }
- return false;
- };
-
- const handleBomProduct = row => {
- if (!Array.isArray(row) || row.length === 0) {
- ElMessage.warning("璇烽�夋嫨涓�涓骇鍝�");
- return;
- }
- const productData = row[row.length - 1];
-
- const isTopLevel = bomDataValue.value.dataList.some(
- item => item.tempId === bomDataValue.value.currentRowName
- );
- if (isTopLevel) {
- if (
- productData.productName === bomTableData.value[0].productName &&
- productData.model === bomTableData.value[0].model
- ) {
- const hasOther = bomDataValue.value.dataList.some(
- item =>
- item.tempId !== bomDataValue.value.currentRowName &&
- item.productName === bomTableData.value[0].productName &&
- item.model === bomTableData.value[0].model
- );
- if (hasOther) {
- ElMessage.warning("鏈�澶栧眰鍜屽綋鍓嶄骇鍝佷竴鏍风殑涓�绾у彧鑳芥湁涓�涓�");
- return;
- }
- }
- }
- bomDataValue.value.dataList.forEach(item => {
- if (item.tempId === bomDataValue.value.currentRowName) {
- item.productName = productData.productName;
- item.model = productData.model;
- item.productModelId = productData.id;
- item.unit = productData.unit || "";
- return;
- }
- childItem(item, bomDataValue.value.currentRowName, productData);
- });
- bomDataValue.value.showProductDialog = false;
- };
-
- const removeBomItem = tempId => {
- const topIndex = bomDataValue.value.dataList.findIndex(
- item => item.tempId === tempId
- );
- if (topIndex !== -1) {
- bomDataValue.value.dataList.splice(topIndex, 1);
- return;
- }
-
- const delchildItem = (items, tempId) => {
- for (let i = 0; i < items.length; i++) {
- const item = items[i];
- if (item.tempId === tempId) {
- items.splice(i, 1);
- return true;
- }
- if (item.children && item.children.length > 0) {
- if (delchildItem(item.children, tempId)) {
- return true;
- }
- }
- }
- return false;
- };
-
- bomDataValue.value.dataList.forEach(item => {
- if (item.children && item.children.length > 0) {
- delchildItem(item.children, tempId);
- }
- });
- };
-
- const handleUnitQuantityChange = row => {
- if (routeInfo.value.quantity && routeInfo.value.quantity !== 0) {
- row.demandedQuantity = (row.unitQuantity || 0) * routeInfo.value.quantity;
- }
- };
-
- const addchildItem = (item, tempId) => {
- if (item.tempId === tempId) {
- if (!item.children) {
- item.children = [];
- }
- item.children.push({
- parentId: item.id || "",
- parentTempId: item.tempId || "",
- productName: "",
- productId: "",
- model: undefined,
- productModelId: undefined,
- processId: "",
- processName: "",
- [pageType.value === "order" ? "technologyOperationId" : "operationId"]:
- "",
- operationName: "",
- unitQuantity: 1,
- demandedQuantity:
- routeInfo.value.quantity && routeInfo.value.quantity !== 0
- ? 1 * routeInfo.value.quantity
- : 0,
- children: [],
- unit: "",
- tempId: new Date().getTime(),
- });
- return true;
- }
- if (item.children && item.children.length > 0) {
- for (let child of item.children) {
- if (addchildItem(child, tempId)) {
- return true;
- }
- }
- }
- return false;
- };
-
- const addBomItem = tempId => {
- bomDataValue.value.dataList.forEach(item => {
- if (item.tempId === tempId) {
- if (!item.children) {
- item.children = [];
- }
- item.children.push({
- parentId: item.id || "",
- parentTempId: item.tempId || "",
- productName: "",
- productId: "",
- model: undefined,
- productModelId: undefined,
- processId: "",
- processName: "",
- [pageType.value === "order" ? "technologyOperationId" : "operationId"]:
- "",
- operationName: "",
- unitQuantity: 1,
- demandedQuantity:
- routeInfo.value.quantity && routeInfo.value.quantity !== 0
- ? 1 * routeInfo.value.quantity
- : 0,
- unit: "",
- children: [],
- tempId: new Date().getTime(),
- });
- return;
- }
- addchildItem(item, tempId);
- });
- };
-
- const validateAllBom = () => {
- let isValid = true;
- const isOrderPage = pageType.value === "order";
-
- const validateItem = (item, isTopLevel = false) => {
- if (!item.model) {
- ElMessage.error("璇烽�夋嫨瑙勬牸");
- isValid = false;
- return;
- }
- if (!isTopLevel && !item.processId) {
- ElMessage.error("璇烽�夋嫨娑堣�楀伐搴�");
- isValid = false;
- return;
- }
- if (!item.unitQuantity) {
- ElMessage.error("璇疯緭鍏ュ崟浣嶄骇鍑烘墍闇�鏁伴噺");
- isValid = false;
- return;
- }
- if (isOrderPage && !item.demandedQuantity) {
- ElMessage.error("璇疯緭鍏ラ渶姹傛�婚噺");
- isValid = false;
- return;
- }
-
- if (item.children && item.children.length > 0) {
- item.children.forEach(child => {
- validateItem(child, false);
- });
- }
- };
-
- bomDataValue.value.dataList.forEach(item => {
- validateItem(item, true);
- });
-
- return isValid;
- };
-
- const buildSubmitTree = items => {
- return items.map(item => {
- const current = { ...item };
- syncProcessOperationFields(current);
- current.children = Array.isArray(current.children)
- ? buildSubmitTree(current.children)
- : [];
- return current;
- });
- };
-
- const cancelEditBom = () => {
- bomDataValue.value.isEdit = false;
- fetchBomData();
- };
-
- const handleSaveBom = () => {
- bomDataValue.value.loading = true;
- console.log(bomDataValue.value.dataList, "bomDataValue.value.dataList");
-
- normalizeTreeData(bomDataValue.value.dataList);
-
- const valid = validateAllBom();
- if (valid) {
- add2({
- // bomId: Number(routeInfo.value.bomId),
- productionOrderBomId: Number(routeInfo.value.bomId) || null,
- children: buildSubmitTree(bomDataValue.value.dataList || []),
- })
- .then(() => {
- ElMessage.success("BOM淇濆瓨鎴愬姛");
- bomDataValue.value.isEdit = false;
- fetchBomData();
- })
- .catch(() => {
- ElMessage.error("BOM淇濆瓨澶辫触");
- })
- .finally(() => {
- bomDataValue.value.loading = false;
- });
- } else {
- bomDataValue.value.loading = false;
+ const refreshCurrentPage = () => {
+ getRouteInfo();
+ getList();
+ getProcessList();
+ if (pageType.value === "order") {
+ getAttachmentList();
}
};
onMounted(() => {
- getRouteInfo();
- getList();
- getProcessList();
- fetchBomData();
+ refreshCurrentPage();
});
onUnmounted(() => {
@@ -1619,4 +1254,4 @@
line-height: 1.5;
word-break: break-all;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3