From 3c99f29d47c7ec452398f1fdf6f8a6f9fb739085 Mon Sep 17 00:00:00 2001
From: fengyuan_yang <1976974459@qq.com>
Date: Tue, 17 Mar 2026 15:34:04 +0800
Subject: [PATCH] =?UTF-8?q?2026-03-17=20=E4=BA=A7=E5=93=81BOM=E3=80=81?=
=?UTF-8?q?=E9=85=8D=E6=96=B9BOM=E3=80=81Routing=E6=96=B0=E5=A2=9E?=
=?UTF-8?q?=E3=80=90=E5=BC=82=E5=B8=B8=E8=BD=AC=E6=AD=A3=E5=BC=8F=E3=80=82?=
=?UTF-8?q?=E3=80=82=E3=80=82=E3=80=91=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/part/bomManagement.js | 7 +++++
src/api/part/recipeManagement.js | 7 +++++
src/api/part/routingManagement.js | 5 +++
src/views/modules/part/bomManagement.vue | 33 ++++++++++++++++++++
src/views/modules/part/recipeManagement.vue | 32 +++++++++++++++++++
src/views/modules/part/routingManagement.vue | 33 ++++++++++++++++++++
6 files changed, 117 insertions(+)
diff --git a/src/api/part/bomManagement.js b/src/api/part/bomManagement.js
index 35d599c..853051f 100644
--- a/src/api/part/bomManagement.js
+++ b/src/api/part/bomManagement.js
@@ -155,6 +155,13 @@ export const copyAlternative = data => createAPI(`/plm/bomManagement/copyAlterna
*/
export const toBecomeOfficialBom = data => createAPI(`/plm/bomManagement/toBecomeOfficialBom`,'post',data)
+/**
+ * 异常转正式Bom(IFS已存在时直接更新official_flag)
+ * @param data
+ * @returns {*}
+ */
+export const toOfficialBomByIfs = data => createAPI(`/plm/bomManagement/toOfficialBomByIfs`,'post',data)
+
/**
* 新编辑副产品成本分配
* @param data
diff --git a/src/api/part/recipeManagement.js b/src/api/part/recipeManagement.js
index 60cbe6b..17ed200 100644
--- a/src/api/part/recipeManagement.js
+++ b/src/api/part/recipeManagement.js
@@ -155,6 +155,13 @@ export const copyAlternative = data => createAPI(`/plm/recipeManagement/copyAlte
*/
export const toBecomeOfficialRecipe = data => createAPI(`/plm/recipeManagement/toBecomeOfficialRecipe`,'post',data)
+/**
+ * 异常转正式Recipe(IFS已存在时直接更新official_flag)
+ * @param data
+ * @returns {*}
+ */
+export const toOfficialRecipeByIfs = data => createAPI(`/plm/recipeManagement/toOfficialRecipeByIfs`,'post',data)
+
/**
* 新编辑副产品成本分配
* @param data
diff --git a/src/api/part/routingManagement.js b/src/api/part/routingManagement.js
index 0cc2f55..de314fe 100644
--- a/src/api/part/routingManagement.js
+++ b/src/api/part/routingManagement.js
@@ -144,6 +144,11 @@ export const copyAlternative = data => createAPI(`/plm/routingManagement/copyAlt
*/
export const toBecomeOfficialRouting = data => createAPI(`/plm/routingManagement/toBecomeOfficialRouting`,'post',data)
+/**
+ * 异常转正式Routing(IFS已存在时直接更新official_flag)
+ */
+export const toOfficialRoutingByIfs = data => createAPI(`/plm/routingManagement/toOfficialRoutingByIfs`,'post',data)
+
/**
* 查询最大工序号
*/
diff --git a/src/views/modules/part/bomManagement.vue b/src/views/modules/part/bomManagement.vue
index 7ab1fac..ee57a73 100644
--- a/src/views/modules/part/bomManagement.vue
+++ b/src/views/modules/part/bomManagement.vue
@@ -189,6 +189,8 @@
@click="updateStatusToObsolete" :loading="toBecomeOfficialLoading">Retire
转正式BOM
+ 异常转正式BOM
数据同步-反向
@@ -1167,6 +1169,7 @@ import {
copyBom, // 复制bom
copyAlternative, // 复制alternative,
toBecomeOfficialBom, // 转正式Bom
+ toOfficialBomByIfs, // 异常转正式Bom
updateManufStructCostDistrib, // 新编辑副产品成本分配
queryBomComponentTable, // 刷新子物料
queryBomByProductTable, // 刷新副产品
@@ -5226,6 +5229,36 @@ export default {
})
},
+ // 异常转正式Bom(IFS已存在时直接更新official_flag)
+ toOfficialBomByIfsClick () {
+ this.$confirm('该操作将检查IFS中是否已存在该BOM替代,若存在则直接将该替代转为正式,是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.detailData.updateBy = this.$store.state.user.name
+ this.toBecomeOfficialLoading = true
+ toOfficialBomByIfs(this.detailData).then(({data}) => {
+ if (data && data.code === 0) {
+ this.getDataList()
+ this.modalFlag = false
+ this.$message({
+ message: '操作成功',
+ type: 'success',
+ duration: 1500,
+ onClose: () => {}
+ })
+ } else {
+ this.$alert(data.msg, '错误', {
+ confirmButtonText: '确定'
+ })
+ }
+ }).finally(() => {
+ this.toBecomeOfficialLoading = false
+ })
+ })
+ },
+
// 正向同步替代下的数据 PLM-IFS
syncPlmToIfs () {
this.$confirm(`警告:该操作将会更新此替代下的所有信息,是否继续?`, '提示', {
diff --git a/src/views/modules/part/recipeManagement.vue b/src/views/modules/part/recipeManagement.vue
index 62d26b4..1a312e7 100644
--- a/src/views/modules/part/recipeManagement.vue
+++ b/src/views/modules/part/recipeManagement.vue
@@ -176,6 +176,7 @@
Build
Retire
转正式Recipe
+ 异常转正式Recipe
数据同步-反向
@@ -995,6 +996,7 @@ import {
copyRecipe, // 复制recipe
copyAlternative, // 复制alternative,
toBecomeOfficialRecipe, // 转正式Recipe
+ toOfficialRecipeByIfs, // 异常转正式Recipe
updateManufStructCostDistrib, // 新编辑副产品成本分配
queryRecipeComponentTable, // 刷新子物料
queryRecipeByProductTable, // 刷新副产品
@@ -4684,6 +4686,36 @@ export default {
})
},
+ // 异常转正式Recipe(IFS已存在时直接更新official_flag)
+ toOfficialRecipeByIfsClick () {
+ this.$confirm('该操作将检查IFS中是否已存在该Recipe替代,若存在则直接将该替代转为正式,是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.detailData.updateBy = this.$store.state.user.name
+ this.toBecomeOfficialLoading = true
+ toOfficialRecipeByIfs(this.detailData).then(({data}) => {
+ if (data && data.code === 0) {
+ this.getDataList()
+ this.modalFlag = false
+ this.$message({
+ message: '操作成功',
+ type: 'success',
+ duration: 1500,
+ onClose: () => {}
+ })
+ } else {
+ this.$alert(data.msg, '错误', {
+ confirmButtonText: '确定'
+ })
+ }
+ }).finally(() => {
+ this.toBecomeOfficialLoading = false
+ })
+ })
+ },
+
// 反向同步替代下的数据 IFS->PLM
syncIfsToPlm () {
this.$confirm(`警告:该操作将会更新此替代下的所有信息,是否继续?`, '提示', {
diff --git a/src/views/modules/part/routingManagement.vue b/src/views/modules/part/routingManagement.vue
index 4fccdaf..f9eb191 100644
--- a/src/views/modules/part/routingManagement.vue
+++ b/src/views/modules/part/routingManagement.vue
@@ -182,6 +182,8 @@
@click="updateStatusToObsolete" :loading="toBecomeOfficialLoading">Retire
转正式Routing
+ 异常转正式Routing
数据同步-反向
@@ -1214,6 +1216,7 @@ import {
copyRouting, // 复制routing
copyAlternative, // 复制alternative
toBecomeOfficialRouting, // 转正式Routing
+ toOfficialRoutingByIfs, // 异常转正式Routing
queryMaxOperationNo, // 查询最大工序号
queryToolList, // 获取工具集合
queryLaborClassByWorkCenterNo, // 通过加工中心查人员等级
@@ -5261,6 +5264,36 @@ export default {
})
},
+ // 异常转正式Routing(IFS已存在时直接更新official_flag)
+ toOfficialRoutingByIfsClick () {
+ this.$confirm('该操作将检查IFS中是否已存在该Routing替代,若存在则直接将该替代转为正式,是否继续?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.detailData.updateBy = this.$store.state.user.name
+ this.toBecomeOfficialLoading = true
+ toOfficialRoutingByIfs(this.detailData).then(({data}) => {
+ if (data && data.code === 0) {
+ this.getDataList()
+ this.modalFlag = false
+ this.$message({
+ message: '操作成功',
+ type: 'success',
+ duration: 1500,
+ onClose: () => {}
+ })
+ } else {
+ this.$alert(data.msg, '错误', {
+ confirmButtonText: '确定'
+ })
+ }
+ }).finally(() => {
+ this.toBecomeOfficialLoading = false
+ })
+ })
+ },
+
// 反向同步替代下的数据 IFS-PLM
syncIfsToPlm () {
this.$confirm(`警告:该操作将会更新此替代下的所有信息,是否继续?`, '提示', {