const initSignFunc = () => {
  window.stuSigningAuditXueShengChu = (props) => {
    // 在这里搞事情
    //console.log(props);
    const {
      selectRows,
      setSubmitLoading,
      uaaRequest,
      examineMap,
      message,
      setVisible,
      callback,
      Modal
    } = props;
    let total = selectRows.length;
    let selectTotal = 0;
    let success = 0;
    let fail = 0;
    let messageList = [];

    /**
     * 
     * 第一步 获取选择的每一条审核数据需要盖章的图片
     * 一旦开始调接口 就需要 setSubmitLoading(true) 转圈圈 
     */
    console.log("selectRows",selectRows);
    const selectList =
      selectRows.map((g) => { 
        let json = {};
        json.isSealOrNot = g['LLzXaxdAYHU'] || "0";
        json.signaturePicture = g['LLMbGiXIkvE'];
        json.setUp = g['LLtAdXHnnVM'] &&  ( g['LLtAdXHnnVM'] != undefined && g['LLtAdXHnnVM'] != null ) ? JSON.parse(g['LLtAdXHnnVM']) : {objs: []};
        json.enclosure = g['LHfENWqbwZs'] ? g['LHfENWqbwZs'] : {files:[]};
        json.code = g['code'];
        json.taskId = g['taskId'];
        json.appId = g['appId'];
        json.signTypeId = g['LHeyaYVWuJA'];
        json.userName = g['LHexnzfpcdc'];
        return json;
      }) || []; 
    setSubmitLoading(true); // 显示为加载中
    uaaRequest('/DataColumnApi/getSqlColumn', {
      token: 1,
      json: 'LLyJBlByfFM',
      param: '{}',
      type: 1,
    }).then((result, com) => {
      let {
        XAxisOffset,
        YAxisOffset
      } = result;

      let promiseArray = [];

      // 姚
      for (var selectI in selectList) {
        let selectData = selectList[selectI];
        let {
          setUp,
          enclosure,
          signaturePicture,
          taskId,
          code,
          appId,
          isSealOrNot,
          signTypeId,
          userName
        } = selectData;  
        const oneStudentTask = async () => {
          let resOneStudentRes;
          // 这里还要加判断 如果没得图片能签章. 直接跳过这条数据
          if (Number(isSealOrNot) === 1) { //盖章流程
            if (enclosure.files == [] || enclosure.files.length == 0) {
              console.log('->>>>>>>>>',`学生：${userName}`+'没有签章图片');
              messageList.push({name:'学生没有上传签章图片',type:1,username:`学生：${userName}`});
              return false;
            } 
            selectTotal++;
            let background = enclosure.files[enclosure.files.length - 1].path;
            if ( setUp.objs == [] || setUp.objs.length == 0) {
              console.log('->>>>>>>>>',`学生：${userName}`+'上级没有签章，批量签章不生效');
              messageList.push({name:'上一级审核没有签章，批量签章不生效！',type:1,username:`学生：${userName}`});
              return false;
            }

            setUp.objs.forEach((sv, si) => { 
              let XGAxis = result[signTypeId] || null ;//根据下级类型配置了XY偏移量  否则使用最上级XY偏移量
              console.log("signTypeId",signTypeId)
              console.log("result",result)
              console.log("XGAxis",XGAxis)
              if(XGAxis != null){
                XAxisOffset = XGAxis.XAxisOffset;
                YAxisOffset = XGAxis.YAxisOffset;
              };
              sv.x += XAxisOffset;
              sv.y += YAxisOffset;
              if (sv.key === 'photo') {
                sv.path = signaturePicture.obtainEmploymentSeal;
              }
            });
            resOneStudentRes = await uaaRequest('/ImageLibApi/merge', {
              background: background,
              content: JSON.stringify(setUp),
            }).then((merge) => {
              if (!merge) {
                console.log('->>>>>>>>>', '印章失败');
                messageList.push({name:'印章失败',type:2,username:`学生：${userName}`});
                return false;
              }
              enclosure.files[enclosure.files.length - 1].originPath = background;
              enclosure.files[enclosure.files.length - 1].path = merge.path;
              let taskForm = {
                LLIZZkKNsdc: enclosure
              }; //就业处审核表单
              let examineMaps = {
                reason: '',
                ...JSON.parse(examineMap),
                code
              }; //审核意见
              let examineJson = {
                level: '',
                code: code,
                taskIds: taskId,
                examineMap: JSON.stringify(examineMaps),
                taskForm: JSON.stringify(taskForm),
              };
              //console.log('examineJson', examineJson);
              // return true;
              return uaaRequest('/UnifiedAppFormApi/examineProcess', examineJson).then((resProcess) => {
                if (!resProcess) {
                  console.log('->>>>>>>>>', '审核失败');
                  return false;
                }
                console.log('->>>>>>>>>', '审核成功');
                return true;
              });
            });
          } else { //无需盖章流程跳过  直接走审批接口  
            let examineMaps = {
              reason: '',
              ...JSON.parse(examineMap),
              code
            }; //审核意见
            let examineJson = {
              level: '',
              code: code,
              taskIds: taskId,
              examineMap: JSON.stringify(examineMaps),
              taskForm: JSON.stringify({}),
            };
            //console.log('examineJson', examineJson);
            
            resOneStudentRes =  
            await uaaRequest('/UnifiedAppFormApi/examineProcess', examineJson).then((resProcess) => {
              if (!resProcess) {
                console.log('->>>>>>>>>', '审核失败');
                return false;
              }
              //console.log('->>>>>>>>>', '审核成功');
              return true;
            });
          }
          if (resOneStudentRes) {
            success++;
          } else {
            fail++;
          }
          message.destroy();
          //message.info(`正在进行批量签章审核,请耐心等待, 当前共审核成功${success}条, 失败${fail}条。共需审核${total}条,其中盖章${selectTotal}条，无需盖章${total - selectTotal}条`, 2);
          return true;
        };
        promiseArray.push(oneStudentTask);
      }



      // 钟
      let taskFunc = async () => {
        for (let i = 0; i < promiseArray.length; i++) {
          let res1 = await promiseArray[i]();
          console.log(res1);
        }
        return true;
      }
      taskFunc().then((g) => {
        if (g) {
          let modalContent1 = `正在进行批量签章审核,请耐心等待, 共审核成功${success}条, 失败${fail}条。共需审核${total}条,其中盖章${selectTotal}条，无需盖章${total - selectTotal}条。`;
          //message.success('审核完成');
          let modalJosn = {
            title: '批量审批错误的信息',
            content: (
              <div>
                <p>{modalContent1}</p> 
                {
                  messageList.map((mV,mI)=>{
                    return <p key={mI}>{`(${mI+1})【${mV.username }】${mV.name}`}</p>
                  })  
                }
              </div>
            ),
            width:500
          };
          Modal.info(modalJosn);
          setSubmitLoading(false);
          setVisible(false);
          callback(true);
        }
      })


    });
    /**
     * 第二步 (执行签章 + 审批接口) * 审核条数.
     * 每成功执行一个学生 就应该 使用 message.info 提示用户
     *
     * */
    //  http://xg.qnzy.net:51352/produce/v1/api/onestop/ImageLibApi/merge

    //  background: /u/202112/29104212h6vg_m.png
    //  content: {"objs":[{"key":"photo","type":"image","path":"/u/202112/231612134ror.png","x":1282,"y":844,"w":149,"h":149,"index":3},{"key":"title","type":"image","index":2,"path":"/u/202112/2321581951ot.png","x":1200,"y":850,"w":94,"h":38},{"key":"time","type":"text","word":"2021　　12　29","fontSize":15,"x":1290,"y":957,"fontStyle":"bold","color":"#000000","index":1}]}
    //  token: 62d75935-6a06-4cd4-82aa-ee9cf9a22790

    //  http://xg.qnzy.net:51352/produce/v1/api/onestop/UnifiedAppFormApi/examineProcess

    //  taskIds: efd8bbca-6791-11ec-8172-de0a2bde8c17
    //  level:
    //  code: 1474735810300354560
    //  examineMap: {"examine":"0","reason":"","code":"1474735810300354560","sign":""}
    //  taskForm: {"LLIZZkKNsdc":{"files":[{"path":"/u/202112/25213627whnv.jpg","name":"1.jpg","originPath":"/u/202112/25213627whnv.jpg"},{"path":"/u/202112/2811544509gm_m.png","name":"2.jpg","originPath":"/u/202112/2811544509gm_m.png"}]}}
    //  token: 62d75935-6a06-4cd4-82aa-ee9cf9a22790
  };
};

export default initSignFunc;
