From 98ac1534ea465157310aa61f3b8af9ad6880b233 Mon Sep 17 00:00:00 2001 From: linxd <544554903@qq.com> Date: Thu, 17 Jul 2025 08:45:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E4=BE=9B=E5=BA=94=E5=95=86=E8=AF=84?= =?UTF-8?q?=E4=BB=B7=E6=A8=A1=E6=9D=BF=E4=BF=9D=E5=AD=98=E6=97=B6=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E8=BF=9B=E8=A1=8C=E5=88=86=E5=80=BC=E5=88=A4=E6=96=AD?= =?UTF-8?q?=EF=BC=8C=E4=BA=8C=E7=BA=A7=E6=8C=87=E6=A0=87=E5=88=86=E5=80=BC?= =?UTF-8?q?=E7=9B=B8=E5=8A=A0=E5=BF=85=E9=A1=BB=E7=AD=89=E4=BA=8E=E4=B8=80?= =?UTF-8?q?=E7=BA=A7=E6=8C=87=E6=A0=87=E5=88=86=E5=80=BC=EF=BC=8C=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E4=B8=80=E7=BA=A7=E6=8C=87=E6=A0=87=E5=88=86=E5=80=BC?= =?UTF-8?q?=E7=9B=B8=E5=8A=A0=E5=BF=85=E9=A1=BB=E7=AD=89=E4=BA=8E100?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/ViewModal.tsx | 2 +- .../supplierTemplateManageAdd.tsx | 42 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/pages/supplier/category/SupplierEntryReview/components/ViewModal.tsx b/src/pages/supplier/category/SupplierEntryReview/components/ViewModal.tsx index 59e091b..e1e47af 100644 --- a/src/pages/supplier/category/SupplierEntryReview/components/ViewModal.tsx +++ b/src/pages/supplier/category/SupplierEntryReview/components/ViewModal.tsx @@ -96,7 +96,7 @@ const ViewModal: React.FC<{ ] return ( = ({ breadcrumb, dispatch } const handleBack = () => { history.goBack(); }; + // 提交时校验 全部一级指标分值相加必须等于100分 并且 二级指标分值相加必须等于一级指标分值 + const validateScore = () => { + // 校验一级指标总分必须等于100 + const totalScore = templateData.reduce( + (acc, stItem) => acc + parseFloat(stItem.score || '0'), + 0, + ); + + if (totalScore !== 100) { + message.error('一级指标分值相加必须等于100分'); + return false; + } + + // 校验每个一级指标下的二级指标之和是否等于该一级指标分值 + for (const stItem of templateData) { + const firstLevelScore = parseFloat(stItem.score || '0'); + const secondLevelTotal = stItem.indicatorNdList?.reduce( + (acc, ndItem) => acc + parseFloat(ndItem.score || '0'), + 0, + ) || 0; + + if (secondLevelTotal !== firstLevelScore) { + message.error(`二级指标分值之和必须等于其一级指标的分值`); + return false; + } + } + + return true; + }; // 提交数据的函数 const handleDataSubmit = async (values: FormValues) => { @@ -276,17 +305,8 @@ const SupplierTemplateManageAdd: React.FC = ({ breadcrumb, dispatch } message.error(intl.formatMessage({ id: 'supplierTemplateManage.message.addIndicator' })); return; } - // 校验每一个一级指标所属的所有二级指标分值是否超过一级指标的分值 - const hasInvalidScore = templateData.some((stItem) => { - const totalScore = stItem.indicatorNdList.reduce( - (acc, ndItem) => acc + parseFloat(ndItem.score || '0'), - 0, - ); - return totalScore > parseFloat(stItem.score || '0'); - }); - - if (hasInvalidScore) { - message.error('一级指标分值不能小于二级指标分值之和'); + // 校验分数 + if (!validateScore()) { return; }