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,6 +166,17 @@ const QuickQuoteEvent = props => { | ||
| 166 | props.onSaveState({ masterData: { ...props.masterData, sQuoConfig: JSON.stringify(addState.onGetFilterState(state)) }, quickQuoteModel: false }); | 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 | addState.onDataChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => { | 180 | addState.onDataChange = (name, sFieldName, changeValue, sId, dropDownData, isWait) => { |
| 170 | const { masterData = {}, slaveData = [], selectedNode = {}, manyData = [] } = state; | 181 | const { masterData = {}, slaveData = [], selectedNode = {}, manyData = [] } = state; |
| 171 | const extraState = { | 182 | const extraState = { |
| @@ -277,12 +288,12 @@ const QuickQuoteEvent = props => { | @@ -277,12 +288,12 @@ const QuickQuoteEvent = props => { | ||
| 277 | } else { | 288 | } else { |
| 278 | if (iIndex === -1) { | 289 | if (iIndex === -1) { |
| 279 | slaveData.push({ | 290 | slaveData.push({ |
| 291 | + ...commonFunc.getDefaultData(slaveConfig, { tree: selectedNode }), | ||
| 280 | ...changeValue, | 292 | ...changeValue, |
| 281 | sId: commonUtils.createSid(), | 293 | sId: commonUtils.createSid(), |
| 282 | handleType: "add", | 294 | handleType: "add", |
| 283 | sBoxModel: boxModel, | 295 | sBoxModel: boxModel, |
| 284 | sTreeNodeName, | 296 | sTreeNodeName, |
| 285 | - ...commonFunc.getDefaultData(slaveConfig, { tree: selectedNode }), | ||
| 286 | }); | 297 | }); |
| 287 | } else { | 298 | } else { |
| 288 | slaveData[iIndex] = { | 299 | slaveData[iIndex] = { |
| @@ -467,25 +478,22 @@ const QuickQuoteEvent = props => { | @@ -467,25 +478,22 @@ const QuickQuoteEvent = props => { | ||
| 467 | 478 | ||
| 468 | // 核价按钮 | 479 | // 核价按钮 |
| 469 | addState.handleCalcPrice = async () => { | 480 | addState.handleCalcPrice = async () => { |
| 470 | - const { masterData = {}, slaveData = [], selectedNode = {}, extraParts = {} } = state; | 481 | + const { masterConfig, masterData = {}, slaveConfig, slaveData = [], selectedNode = {}, extraParts = {} } = state; |
| 471 | 482 | ||
| 472 | if (commonUtils.isEmptyObject(selectedNode)) { | 483 | if (commonUtils.isEmptyObject(selectedNode)) { |
| 473 | - message.error("请先选择产品"); | 484 | + message.error("请先选择产品", 2); |
| 474 | return; | 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 | const { bBox, showName, sId } = selectedNode; | 499 | const { bBox, showName, sId } = selectedNode; |
| @@ -494,13 +502,36 @@ const QuickQuoteEvent = props => { | @@ -494,13 +502,36 @@ const QuickQuoteEvent = props => { | ||
| 494 | sAllPartsName = showName; | 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 | return; | 535 | return; |
| 505 | } | 536 | } |
| 506 | 537 | ||
| @@ -958,17 +989,6 @@ const QuickQuoteEvent = props => { | @@ -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 | return { | 992 | return { |
| 973 | ...props, | 993 | ...props, |
| 974 | onDataChange0: props.onDataChange, | 994 | onDataChange0: props.onDataChange, |