index.js 9.75 KB
import React, { useEffect } from "react";
import * as commonUtils from "@/utils/utils";
import useCommonBase from "@/components/Common/CommonHooks/useCommonBase";

import ShowType from "@/components/Common/CommonComponent";

import styles from "./index.less";
const titleTranslations = {
  sChinese: {
    '技术评审汇签': '技术评审汇签',
    '客户投诉': '客户投诉',
    '本批生产注意事项': '本批生产注意事项',
    '不合格报告': '不合格报告',
    '车间产前提醒(品管)': '车间产前提醒(品管)',
    '制程异常': '制程异常',
    '质检反馈': '质检反馈',
    '二维码提醒': '二维码提醒',
    '车间产前提醒': '车间产前提醒'
  },
  sEnglish: {
    '技术评审汇签': 'Technical Review',
    '客户投诉': 'Customer Complaint',
    '本批生产注意事项': 'Production Notes',
    '不合格报告': 'Nonconformance Report',
    '车间产前提醒(品管)': 'Pre-production Reminder(QC)',
    '制程异常': 'Process Exception',
    '质检反馈': 'Quality Feedback',
    '二维码提醒': 'QR Code Reminder',
    '车间产前提醒': 'Pre-production Reminder'
  },
  sBig5: {
    '技术评审汇签': '技術評審匯簽',
    '客户投诉': '客戶投訴',
    '本批生产注意事项': '本批生產注意事項',
    '不合格报告': '不合格報告',
    '车间产前提醒(品管)': '車間產前提醒(品管)',
    '制程异常': '製程異常',
    '质检反馈': '質檢反饋',
    '二维码提醒': '二維碼提醒',
    '车间产前提醒': '車間產前提醒'
  }
};
const usePrenatalReminderInfoEvent = props => {
  const { formData } = props;

  useEffect(
    async () => {
      if (commonUtils.isNotEmptyArr(formData)) {
        const result = await handleGetData(formData[0]);
        const result1 = await handleGetData(formData[1], 1);
        const result2 = await handleGetData(formData[2], 2);
        props.onSaveState({
          ...result,
          ...result1,
          ...result2,
          slaveConfig: formData[0],
          slave1Config: formData[1],
          slave2Config: formData[2],
          bFinish: true
        });
      }
    },
    [formData]
  );

  // 获取数据集
  const handleGetData = async (config, index = "") => {
    const { app } = props;
    const { userinfo = {} } = app;
    const globalData = commonUtils.convertStrToObj(
      localStorage.xlybusinessglobalData
    );
    const { sWorkshopId } = userinfo;
    const { currentSelectedMachineTaskDataRow = {} } = globalData;
    const { sOrderId } = currentSelectedMachineTaskDataRow;
    const conditonValues = props.onGetSqlConditionValues(config);
    const addState =
      (await props.onGetDataSet({
        name: `slave${index}`,
        configData: config,
        condition: {
          sSqlCondition: {
            ...conditonValues,
            sWorkshopId,
            sOrderId
          }
        },
        isWait: true
      })) || {};
    return addState;
  };

  return {
    ...props
  };
};
// 封装多语言处理方法
const getTranslatedTitle = (app, originalTitle) => {
  const language = app?.userinfo?.sLanguage || 'sChinese';
  return titleTranslations[language]?.[originalTitle] || originalTitle;
};
const PrenatalReminderInfo = baseProps => {
  const props = usePrenatalReminderInfoEvent(useCommonBase(baseProps));
  const { bFinish } = props;
  if (!bFinish) return "";

  const { app, slaveData, slave1Data, slave2Data, slave2Config } = props;

  const viewRow1 = commonUtils.isNotEmptyArr(slaveData) ? slaveData[0] : {};
  const viewRow2 = commonUtils.isNotEmptyArr(slave1Data) ? slave1Data[0] : {};
  const viewRow3 = commonUtils.isNotEmptyArr(slave2Data) ? slave2Data[0] : {};
  const viewRow = { ...viewRow1, ...viewRow2, ...viewRow3 };
  const tableName = "slave";

  const memoListFilter =
    slave2Config?.gdsconfigformslave
      .filter(item => item.bVisible)
      .map(({ sName, showName }) => ({ sName, showName })) || [];

  const leftSize = Math.ceil(memoListFilter.length / 2);
  const rightSize = memoListFilter.length - leftSize;
  const leftMemoList = memoListFilter.slice(0, leftSize);
  const rightMemoList = memoListFilter.slice(leftSize, memoListFilter.length);

  return (
    <div className={styles.prenatalReminderInfo}>
      {[
        "技术评审汇签",
        "客户投诉",
        "本批生产注意事项",
        "不合格报告",
        "车间产前提醒(品管)",
        "制程异常",
        "质检反馈",
        "二维码提醒",
        "车间产前提醒"
      ].map((title, index) => {
        const translatedTitle = getTranslatedTitle(app, title);

        let dataValueNew = "";
        const child = {
          sId: commonUtils.createSid(),
          sName: `sTempMemo${index}`,
          sControlName: "",
          bVisible: true,
          showName: title
        };

        const memoList = new Array(20)
          .fill("")
          .map((_, i) => viewRow[`sNoteMemo${i + 1}`]);

        const getMemoValue = (from, to) => {
          const tempList = memoList
            .slice(from, to)
            .filter(item => item !== undefined)
            .map((item, i) => `${i + 1}) ${item}`);
          return tempList.join("\n");
        };

        if (title === "客户投诉") {
          dataValueNew = getMemoValue(0, 4);
        } else if (title === "不合格报告") {
          dataValueNew = getMemoValue(4, 8);
        } else if (title === "制程异常") {
          dataValueNew = getMemoValue(8, 12);
        } else if (title === "质检反馈") {
          dataValueNew = getMemoValue(12, 16);
        } else if (title === "车间产前提醒(品管)") {
          dataValueNew = viewRow.sMemo;
        } else if (title === "本批生产注意事项") {
          dataValueNew = getMemoValue(16, 20);
        } else if (title === "技术评审汇签") {
          const dataValue1 = leftMemoList
            .map(
              ({ sName, showName }) => `${showName}${viewRow[sName] || ""}`
            )
            .join("\n");

          const dataValue2 = rightMemoList
            .map(
              ({ sName, showName }) => `${showName}${viewRow[sName] || ""}`
            )
            .join("\n");
          const showTypeProps1 = {
            app,
            className: styles.showType,
            iColValue: 24,
            name: tableName,
            record: viewRow,
            sId: commonUtils.createSid(),
            getSqlDropDownData: props.getSqlDropDownData,
            getSqlCondition: props.getSqlCondition,
            handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
            getFloatNum: props.getFloatNum,
            onChange: props.onDataChange,
            showConfig: { ...child, costomStyle: styles.hideRightBorder,  showName: getTranslatedTitle(app, child.showName)  },
            slaveConfig: props[`${tableName}Config`],
            formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } },
            textArea: true,
            enabled: false,
            dataValue: dataValue1,
            bTable: true,
            bViewTable: true,
            formRoute: props.formRoute,
            getDateFormat: props.getDateFormat
          };

          const showTypeProps2 = {
            app,
            className: styles.showType,
            iColValue: 24,
            name: tableName,
            record: viewRow,
            sId: commonUtils.createSid(),
            getSqlDropDownData: props.getSqlDropDownData,
            getSqlCondition: props.getSqlCondition,
            handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
            getFloatNum: props.getFloatNum,
            onChange: props.onDataChange,
            showConfig: { ...child, costomStyle: styles.hideLeftBorder, showName: getTranslatedTitle(app, child.showName) },
            slaveConfig: props[`${tableName}Config`],
            formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } },
            textArea: true,
            enabled: false,
            dataValue: dataValue2,
            bTable: true,
            bViewTable: true,
            formRoute: props.formRoute,
            getDateFormat: props.getDateFormat
          };

          return (
            <div>
              <div className={styles.title}>{translatedTitle}</div>
              <div className={styles.content1}>
                <ShowType {...showTypeProps1} />
                <ShowType {...showTypeProps2} />
              </div>
            </div>
          );
        }else if(title === '车间产前提醒'){
            dataValueNew = viewRow?.sCjMemo
        }else if(title === '二维码提醒'){
            dataValueNew = viewRow?.sBarcodeMemo
        }


        const showTypeProps = {
          app,
          className: styles.showType,
          iColValue: 24,
          name: tableName,
          record: viewRow,
          sId: commonUtils.createSid(),
          getSqlDropDownData: props.getSqlDropDownData,
          getSqlCondition: props.getSqlCondition,
          handleSqlDropDownNewRecord: props.handleSqlDropDownNewRecord,
          getFloatNum: props.getFloatNum,
          onChange: props.onDataChange,
          showConfig: { ...child, showName: getTranslatedTitle(app, child.showName) },
          slaveConfig: props[`${tableName}Config`],
          formItemLayout: { labelCol: { span: 0 }, wrapperCol: { span: 24 } },
          textArea: true,
          enabled: false,
          dataValue: dataValueNew,
          bTable: true,
          bViewTable: true,
          formRoute: props.formRoute,
          getDateFormat: props.getDateFormat
        };

        return (
          <div>
            <div className={styles.title}>{translatedTitle}</div>
            <div className={styles.content}>
              <ShowType {...showTypeProps} />
            </div>
          </div>
        );
      })}
    </div>
  );
};

export default PrenatalReminderInfo;