MesToolbar.js 6.25 KB
/* eslint-disable */
import { message } from "antd";
import * as commonUtils from "@/utils/utils";
import * as commonFunc from "@/components/Common/commonFunc";
const ToolbarFun = async (props) => {
  const { btnConfig, bMesBill } = props;
  const currentMesPane = commonUtils.getAppData("currentMesPane");
  const { sModelType = '' } = currentMesPane;
  const { sControlName } = btnConfig;
  const btnName = sControlName.replace('BtnLeft.', '').replace('BtnRight.', '').toLowerCase();
  if ((btnName.includes('btnscanface')) && !bMesBill) {
    handleScanFace(props);
    return true
  } else if (!["/indexPage/commonList", "/indexPage/commonBill"].includes(sModelType) && !bMesBill) {
    return false;
  }

  // const { sControlName } = btnConfig;
  // const btnName = sControlName.replace('BtnLeft.', '').replace('BtnRight.', '').toLowerCase();
  if (btnName === 'btnadd') {
    handleAdd(props);
  } else if (btnName === 'btnsave') {
    handleSave(props);
  } else if (btnName === 'btnupd') {
    props.onSaveState({ enabled: true });
  } else if (btnName.includes('btnscanface')) {
    handleScanFace(props);
  } else if (btnName === 'btncancel') {
    props.onCancel()
  } else if (btnName === 'btndel') {
    props.onDel(props)
  } else if (btnName.includes('btnexamine')) {
    let flag = 0;
    let interfaceArr = btnConfig.interface;
    if (commonUtils.isNotEmptyArr(interfaceArr)) {
      const beforeInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "1");
      const afterInterfaceArr = interfaceArr.filter(item => item.sInterfaceCallMethod === "2");
      if (commonUtils.isNotEmptyArr(beforeInterfaceArr)) {
        /* 之前调用 */

        const asyncFunc = async () => {
          for (let i = 0; i < beforeInterfaceArr.length; i++) {
            const data = await handleInterfaceCall(beforeInterfaceArr[i]);
            if (!data) {
              flag += 1;
              return;
            }
          }
        };
        await asyncFunc();
      }
      let result;
      if (flag == 0) {
        result = await props.onBtnExamine();
      } else {
        props.onSaveState({
          loading: false,
        });
      }

      if (commonUtils.isNotEmptyArr(afterInterfaceArr)) {
        /* 之后调用 */
        // const result = await this.props.onBtnExamine();
        if (result) {
          /* 只有审核成功 才能调用接口 -5代表审核失败 */
          const asyncFunc = async () => {
            for (let i = 0; i < afterInterfaceArr.length; i++) {
              await handleInterfaceCall(afterInterfaceArr[i], true);
            }
          };
          await asyncFunc();

        }
      }
    } else {
      console.log(props, 'masterData');
      // props.onBtnExamine();
    }
  }


  return true;
}

// 新增
const handleAdd = (props) => {
  const { slaveConfig } = props;
  const picArrConfig = slaveConfig.gdsconfigformslave.find(item => item.sName === 'picArr');
  if (!picArrConfig) {
    message.error('请先配置picArr字段');
    return;
  }

  const { sActiveId } = picArrConfig;
  if (!sActiveId) {
    message.error('请先配置弹窗界面');
  }

  const { app } = props;
  const { managementData } = app;
  // const menuList = managementData.reduce((result, item) => {
  //   // ✅ 安全展开:确保children是数组,否则使用空数组
  //   result = [...result, ...(Array.isArray(item?.children) ? item.children : [])];
  //   return result;
  // }, []);

  // const menu = menuList.find(item => item.sId === sActiveId);
  // if (!menu) {
  //   message.error('弹窗界面不在MES菜单中');
  //   return;
  // }
  props.onOpenCommonModal({
    type: "commonModal",
    sActiveId,
    title: props?.btnConfig?.showName,
    parentProps: props,
    onOk: data => {
      window.debugger && console.log("=====onOk", data);
    },
    onCancel: () => {
      window.debugger && console.log("=====onCancel");
    }
  });
  // app.globalFun.onChangeRouter({
  //   type: "id",
  //   path: [menu.sParentId, menu.sId],
  //   sModelType: menu.sName,
  //   // sParentConditions,
  //   copyTo: {
  //     master: { maxBillNo: 'sBillNo' }
  //   }
  // });
}

// 保存
const handleSave = (props) => {
  props.onExecInstructSet({
    btnConfig: {
      showName: "保存",
      sInstruct: JSON.stringify([
        {
          opr: "save",
        },
        {
          opr: "refresh",
        },
      ])
    },
    inscallback: () => {
      props.onSaveState({
        currentId: props.masterData.sId,
      });
    }
  });
}

// 人脸数据采集
const handleScanFace = (props) => {
  const { btnConfig } = props;
  const { sButtonParam: sButtonParamStr } = btnConfig;
  const sButtonParam = commonUtils.convertStrToObj(sButtonParamStr);
  const { addData } = sButtonParam;

  props.onExecInstructSet({
    btnConfig: {
      showName: "保存",
      sInstruct: JSON.stringify([
        {
          opr: "faceauth",
          newDataset: "face"
        },
      ])
    },
    inscallback: (result) => {
      const { faceData = [] } = result;
      props.onProcedureCall({
        btnConfig,
        faceData: { sFaceParentId: faceData[0].sParentId, sFaceEmployeeNo: faceData[0].sEmployeeNo },
        onSuccess: (_, dataset) => {
          const { proData = [] } = dataset.rows[0].dataSet;
          const { [`${addData}Data`]: tableData = [], [`${addData}Config`]: config = {} } = props;
          const copyConfig = config?.gdsconfigformslave?.find(item => item.sControlName.toLowerCase().includes('btnscanface'))
          proData.forEach(item => {
            const data = commonFunc.getAssignFieldValue(copyConfig?.sAssignField, item)
            const index = tableData.findIndex(x => x.sEmployeeNo === item.sEmployeeNo)
            if (index !== -1) {
              message.error('人员重复,请重新添加', 5)
            } else {
              tableData.push({
                ...item,
                ...data,
                sId: commonUtils.createSid(),
                handleType: "add",
                sParentId: props.masterData.sId,
                slaveId: props?.slaveData ? props?.slaveData[0].sId : ''
              })
            }

          });

          props.onSaveState({
            [`${addData}Data`]: tableData
          });
        },
        onConfirm: () => { },
        onError: () => { }
      });
    },
  });


}

export default ToolbarFun;