From d74613d83fb6e08523ae3501f54199a7a6439c3a Mon Sep 17 00:00:00 2001 From: chenhao Date: Tue, 25 Nov 2025 09:00:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E6=96=B0=E5=A2=9E=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E4=BA=A7=E5=93=81=E4=BF=A1=E6=81=AF=E5=A4=87=E4=BB=BD?= =?UTF-8?q?=E4=B8=8E=E6=81=A2=E5=A4=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 ProjectProductInfoBakService 接口定义备份和恢复方法 - 实现 ProjectProductInfoBakServiceImpl 类逻辑 - 提供 saveBakData 方法用于保存备份数据 - 提供 restoreData 方法用于恢复指定版本的数据 - 在恢复前校验备份数据是否存在 --- oms_web/oms_vue/src/views/login.vue | 4 ++-- .../src/views/project/info/ProductConfig.vue | 24 +++++++++++++++---- .../impl/InventoryDeliveryServiceImpl.java | 2 +- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/oms_web/oms_vue/src/views/login.vue b/oms_web/oms_vue/src/views/login.vue index 996992f2..6b2f50ba 100644 --- a/oms_web/oms_vue/src/views/login.vue +++ b/oms_web/oms_vue/src/views/login.vue @@ -72,8 +72,8 @@ export default { title: process.env.VUE_APP_TITLE, codeUrl: "", loginForm: { - username: "admin", - password: "admin@123", + username: "", + password: "", rememberMe: false, code: "" }, diff --git a/oms_web/oms_vue/src/views/project/info/ProductConfig.vue b/oms_web/oms_vue/src/views/project/info/ProductConfig.vue index d4aebb76..0a1a72c1 100644 --- a/oms_web/oms_vue/src/views/project/info/ProductConfig.vue +++ b/oms_web/oms_vue/src/views/project/info/ProductConfig.vue @@ -33,7 +33,7 @@ @@ -114,7 +114,7 @@ @@ -195,7 +195,7 @@ @@ -286,7 +286,8 @@ export default { selectProductVisible: false, currentProductType: '1', // 1:软件 2:硬件 11,22,99:服务 currentEditType: '', // software, hardware, maintenance - currentEditIndex: -1 + currentEditIndex: -1, + editableProductBomCodes: ['8813A3YA','8813A3YB','8813A7U4','8813A7U2'] }; }, computed: { @@ -527,6 +528,21 @@ export default { hardwareProjectProductInfoList: this.hardwareList, maintenanceProjectProductInfoList: this.maintenanceList }; + }, + isCataloguePriceEditable(row) { + return !this.isActionDisabled && this.editableProductBomCodes.includes(row.productBomCode); + }, + handleCataloguePriceChange(row) { + let cataloguePrice = parseFloat(String(row.cataloguePriceFormat).replace(/,/g, '')); + if (isNaN(cataloguePrice)) { + cataloguePrice = 0; + } + row.cataloguePrice = this.preciseCurrencyRound(cataloguePrice, 2); + row.cataloguePriceFormat = this.formatAmount(row.cataloguePrice); + + // Recalculate based on new catalogue price + this.calculateRow(row); + this.emitChange(); } } }; diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java index 471dd395..8f0a482c 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/InventoryDeliveryServiceImpl.java @@ -377,8 +377,8 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService { serviceInfo.setServiceLevel(productInfo.getProductBomCode()); serviceInfo.setServiceDescribe(productInfo.getProductDesc()); serviceInfo.setServiceStartTime(startTime); - serviceInfo.setServiceEndTime(DateUtils.addYears(startTime, year)); startTime = DateUtils.addYears(startTime, year); + serviceInfo.setServiceEndTime(DateUtils.addDays(startTime, -1)); serviceInfoList.add(serviceInfo); return startTime; }