Commit f6f1ee0952e5763ae86cabec00097af8f0ce1d37
1 parent
3bf6a85b
优化必填校验;
Showing
1 changed file
with
53 additions
and
33 deletions
src/components/QuickQuote/index.jsx
| ... | ... | @@ -166,6 +166,17 @@ const QuickQuoteEvent = props => { |
| 166 | 166 | props.onSaveState({ masterData: { ...props.masterData, sQuoConfig: JSON.stringify(addState.onGetFilterState(state)) }, quickQuoteModel: false }); |
| 167 | 167 | }; |
| 168 | 168 | |
| 169 | + // 获取国际化名称 | |
| 170 | + const getI18nName = (sFieldName, sDefault) => { | |
| 171 | + return commonFunc.showMessage(props.app?.commonConst, sFieldName) || sDefault; | |
| 172 | + }; | |
| 173 | + | |
| 174 | + addState.getI18nName = getI18nName; | |
| 175 | + | |
| 176 | + addState.getI18nNameList = (...list) => { | |
| 177 | + return list.map(item => getI18nName(...item)); | |
| 178 | + }; | |
| 179 | + | |
| 169 | 180 | addState.onDataChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => { |
| 170 | 181 | const { masterData = {}, slaveData = [], selectedNode = {}, manyData = [] } = state; |
| 171 | 182 | const extraState = { |
| ... | ... | @@ -277,12 +288,12 @@ const QuickQuoteEvent = props => { |
| 277 | 288 | } else { |
| 278 | 289 | if (iIndex === -1) { |
| 279 | 290 | slaveData.push({ |
| 291 | + ...commonFunc.getDefaultData(slaveConfig, { tree: selectedNode }), | |
| 280 | 292 | ...changeValue, |
| 281 | 293 | sId: commonUtils.createSid(), |
| 282 | 294 | handleType: "add", |
| 283 | 295 | sBoxModel: boxModel, |
| 284 | 296 | sTreeNodeName, |
| 285 | - ...commonFunc.getDefaultData(slaveConfig, { tree: selectedNode }), | |
| 286 | 297 | }); |
| 287 | 298 | } else { |
| 288 | 299 | slaveData[iIndex] = { |
| ... | ... | @@ -467,25 +478,22 @@ const QuickQuoteEvent = props => { |
| 467 | 478 | |
| 468 | 479 | // 核价按钮 |
| 469 | 480 | addState.handleCalcPrice = async () => { |
| 470 | - const { masterData = {}, slaveData = [], selectedNode = {}, extraParts = {} } = state; | |
| 481 | + const { masterConfig, masterData = {}, slaveConfig, slaveData = [], selectedNode = {}, extraParts = {} } = state; | |
| 471 | 482 | |
| 472 | 483 | if (commonUtils.isEmptyObject(selectedNode)) { |
| 473 | - message.error("请先选择产品"); | |
| 484 | + message.error("请先选择产品", 2); | |
| 474 | 485 | return; |
| 475 | 486 | } |
| 476 | - const mustFieldsMap = { | |
| 477 | - sCustomerName: "请先选择客户名称", | |
| 478 | - sProductName: "请先输入产品名称", | |
| 479 | - sProductUnit: "请先输入产品单位", | |
| 480 | - dLength: "请先输入长度", | |
| 481 | - dWidth: "请先输入宽度", | |
| 482 | - dProductQty: "请先输入数量", | |
| 483 | - }; | |
| 484 | 487 | |
| 485 | - const checkResult = Object.keys(mustFieldsMap).find(item => masterData[item] === undefined); | |
| 486 | - if (checkResult) { | |
| 487 | - message.error(mustFieldsMap[checkResult]); | |
| 488 | - return; | |
| 488 | + const errMsgList = []; | |
| 489 | + const masterConfigMust = masterConfig.gdsconfigformslave.filter(item => item.bVisible && item.bNotEmpty); | |
| 490 | + const checkResult = masterConfigMust.filter(item => !masterData[item.sName]); | |
| 491 | + if (checkResult.length) { | |
| 492 | + errMsgList.push( | |
| 493 | + checkResult.map(item => <span>【{item.showName}】</span>), | |
| 494 | + <span>{getI18nName("isNotNull")}</span>, | |
| 495 | + <br /> | |
| 496 | + ); | |
| 489 | 497 | } |
| 490 | 498 | |
| 491 | 499 | const { bBox, showName, sId } = selectedNode; |
| ... | ... | @@ -494,13 +502,36 @@ const QuickQuoteEvent = props => { |
| 494 | 502 | sAllPartsName = showName; |
| 495 | 503 | } |
| 496 | 504 | |
| 497 | - const slaveRowDataList = | |
| 498 | - slaveData | |
| 499 | - .filter(item => item.sTreeNodeName === showName && item.materialsInfo && !item.materialsInfo.some(x => !x.sMaterialsName)) | |
| 500 | - .filter(item => (bBox ? item.sName : true)) | |
| 501 | - .filter(item => item.sPrint !== undefined && item.sColor !== undefined && item.iPrintModePo !== undefined) || []; | |
| 502 | - if (!slaveRowDataList.length) { | |
| 503 | - message.error("请至少保证一个部件的材料信息填写完整"); | |
| 505 | + const slaveConfigMust = slaveConfig.gdsconfigformslave | |
| 506 | + .filter(item => item.bVisible && item.iTag && item.bNotEmpty && item.sName !== "sMaterialsName") | |
| 507 | + .filter(item => (bBox ? true : item.sName !== "sName")); | |
| 508 | + | |
| 509 | + const sMaterialsNameConfig = slaveConfig.gdsconfigformslave.find(item => item.sName === "sMaterialsName"); | |
| 510 | + | |
| 511 | + const errorList = []; | |
| 512 | + const partsList = []; | |
| 513 | + slaveData.forEach(slaveRowData => { | |
| 514 | + const list = slaveConfigMust.filter(item => !slaveRowData[item.sName]); | |
| 515 | + if (!slaveRowData.materialsInfo || slaveRowData.materialsInfo.some(item => !item.sMaterialsName)) { | |
| 516 | + list.push(sMaterialsNameConfig); | |
| 517 | + } | |
| 518 | + errorList.push(list); | |
| 519 | + partsList.push(slaveRowData.sBoxModel); | |
| 520 | + }); | |
| 521 | + | |
| 522 | + if (!errorList.some(item => !item.length)) { | |
| 523 | + errMsgList.push( | |
| 524 | + errorList.map((item, index0) => [ | |
| 525 | + <span>{partsList[index0]}:</span>, | |
| 526 | + ...item.map(config => <span>【{config.showName}】</span>), | |
| 527 | + <span>{getI18nName("isNotNull")}</span>, | |
| 528 | + <br />, | |
| 529 | + ]) | |
| 530 | + ); | |
| 531 | + } | |
| 532 | + | |
| 533 | + if (errMsgList.length) { | |
| 534 | + message.error(errMsgList, 3); | |
| 504 | 535 | return; |
| 505 | 536 | } |
| 506 | 537 | |
| ... | ... | @@ -958,17 +989,6 @@ const QuickQuoteEvent = props => { |
| 958 | 989 | } |
| 959 | 990 | }; |
| 960 | 991 | |
| 961 | - // 获取国际化名称 | |
| 962 | - const getI18nName = (sFieldName, sDefault) => { | |
| 963 | - return commonFunc.showMessage(props.app?.commonConst, sFieldName) || sDefault; | |
| 964 | - }; | |
| 965 | - | |
| 966 | - addState.getI18nName = getI18nName; | |
| 967 | - | |
| 968 | - addState.getI18nNameList = (...list) => { | |
| 969 | - return list.map(item => getI18nName(...item)); | |
| 970 | - }; | |
| 971 | - | |
| 972 | 992 | return { |
| 973 | 993 | ...props, |
| 974 | 994 | onDataChange0: props.onDataChange, | ... | ... |