Commit f6f1ee0952e5763ae86cabec00097af8f0ce1d37

Authored by zhangzzzz
1 parent 3bf6a85b

优化必填校验;

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 =&gt; {
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 =&gt; {
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,
... ...