From c9318f50cc4b1cb1845adafa78fa1636ecab0d07 Mon Sep 17 00:00:00 2001 From: From-wh Date: Mon, 12 Oct 2026 15:05:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=95=86=E5=93=81):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E4=BB=B7=E4=B8=8E=E5=88=86=E4=BD=A3=E6=AF=94?= =?UTF-8?q?=E4=BE=8B=E8=81=94=E5=8A=A8=E8=BE=93=E5=85=A5=E5=B9=B2=E6=89=B0?= =?UTF-8?q?=E5=8F=8A=E9=99=A4=E9=9B=B6=E8=BE=B9=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../normal/add/components/PriceCommission.vue | 8 +++---- .../src/pages/plugin/normal/add/index.vue | 22 +++++++++---------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/frontend/admin/src/pages/plugin/normal/add/components/PriceCommission.vue b/frontend/admin/src/pages/plugin/normal/add/components/PriceCommission.vue index 7c91a735f..6de82cff9 100644 --- a/frontend/admin/src/pages/plugin/normal/add/components/PriceCommission.vue +++ b/frontend/admin/src/pages/plugin/normal/add/components/PriceCommission.vue @@ -70,7 +70,7 @@ :max="9999999999" class="priceBox input-number-unit-class" class-unit="元" - @input="changeVipPrice(0, 'oneFormValidate')" + @change="changeVipPrice(0, 'oneFormValidate')" > @@ -177,9 +177,9 @@ const newData = [...manyFormValidate]; newData[scope.$index + 1].vip_price = val; emit('update:manyFormValidate', newData); - changeVipPrice(scope.$index + 1); } " + @change="changeVipPrice(scope.$index + 1)" > diff --git a/frontend/admin/src/pages/plugin/normal/add/index.vue b/frontend/admin/src/pages/plugin/normal/add/index.vue index 26938f9ea..14e1e9fea 100644 --- a/frontend/admin/src/pages/plugin/normal/add/index.vue +++ b/frontend/admin/src/pages/plugin/normal/add/index.vue @@ -889,19 +889,16 @@ function see(data, name, index) { } // 修改分佣比例 function changeDiscount(index, type = 'manyFormValidate') { - // 根据分佣比例 vip_proportion 修改会员价 保留2位小数 - formTable(type)[index].vip_price = ( - formTable(type)[index].price * - (formTable(type)[index].vip_proportion / 100) - ).toFixed(2); + // 根据分佣比例 vip_proportion 修改会员价,写回数字(字符串会破坏 el-input-number 输入) + formTable(type)[index].vip_price = Number( + (formTable(type)[index].price * (formTable(type)[index].vip_proportion / 100)).toFixed(2), + ); } // 修改会员价 function changeVipPrice(index, type = 'manyFormValidate') { - // 根据会员价计算出分佣比例 - formTable(type)[index].vip_proportion = ( - (formTable(type)[index].vip_price / formTable(type)[index].price) * - 100 - ).toFixed(2); + // 售价为 0 时无法反推折扣,置 0 防止 Infinity 被钳制成极大值写回 + const row = formTable(type)[index]; + row.vip_proportion = row.price > 0 ? Number(((row.vip_price / row.price) * 100).toFixed(2)) : 0; } // 添加优惠券 function addGoodsCoupon(index, name) { @@ -1029,10 +1026,11 @@ function brokerageSetUp() { for (let val of manyFormValidate.value) { if (manyVipPrice.value != undefined) { val['vip_price'] = manyVipPrice.value; - val['vip_proportion'] = ((val.vip_price / val.price) * 100).toFixed(2); + // 售价为 0 时无法反推折扣,置 0 防止 Infinity + val['vip_proportion'] = val.price > 0 ? Number(((val.vip_price / val.price) * 100).toFixed(2)) : 0; } else { val['vip_proportion'] = manyVipDiscount.value; - val['vip_price'] = (val.price * (manyVipDiscount.value / 100)).toFixed(2); + val['vip_price'] = Number((val.price * (manyVipDiscount.value / 100)).toFixed(2)); } } }