钉钉·小程序请求封装

138 阅读1分钟
function request(data, success, fail) {
  this.requestLoading(data, success, fail);
}
// 展示进度条的网络请求
// url:网络请求的url
// params:请求参数
// message:进度条的提示信息
// success:成功的回调函数
// fail:失败的回调
//token:用户token

function requestLoading(data, success, fail) {
  let url = data.url;
  let params = data.data || {};
  params.user_flags=util.user_flags;
  if(params.user_flags==99){
    params.rel_customer_id=util.rel_customer_id;
  }
  let pages = getCurrentPages(); //当前页面栈
  //当前页面为页面栈的最后一个元素
  let prevPage = pages[pages.length - 1];//当前页面
  // pop() 方法用于删除并返回数组的最后一个元素
  //let prevPage = pages.pop();//当前页面
  //console.log( prevPage.route) //得到当前页面路由,如‘pages/index/index’
  params.frontpage=prevPage.route;//后台增加前端页面(模块)控制逻辑,传递页面访问路由
  dd.hideLoading();//先隐藏之前可能出现的窗口
  dd.showLoading({
    content: '加载中...',
    delay: 0,
  });
  dd.httpRequest({
    url: util.getRequestUrl + url,
    data: params,
    dataType: 'json',
    headers: {
      "authorization": util.token
    },
    method: 'post',
    success: function(res) {
      console.log(util.getRequestUrl + url);//访问地址(入口)
      console.log(params);//发送参数
      console.log(res.data);//接口返回数据
      dd.hideLoading();
      if(res.data.code == 300){//登录失效(回首页刷新)
        dd.redirectTo({
          url: '/pages/index/index'
        });
      }else if (res.data.code == 200) {//成功
        success(res.data);//数据主体(无 headers等)
      }else{//接口判断异常返回
        if(res.data.code == 400){
          dd.showToast({
            type: 'none',
            content: res.data.message,
            duration: 2000,
          });
        }
        else{
          dd.showToast({
            type: 'none',
            content: res.data.message+'【请与开发者联系】',
            duration: 10000,
          });
        }
        fail(res.data);//转交调用函数处理
      }
    },
    fail: function(res) {
      console.log(res);//返回原始信息
      console.log(util.getRequestUrl + url);//访问地址(入口)
      console.log(params);//发送参数
      console.log(res.data);//异常可能为 undefined 数据(为方便排错展示)
      dd.hideLoading();
      let errorMessage='数据获取失败(请检查网络)';
      if(res.errorMessage) {
        errorMessage=res.errorMessage;
      }
      dd.showToast({
        type: 'fail',
        content: errorMessage,
        duration: 3000,
      });
      //消息结构如 error: 12   errorMessage: "似乎已断开与互联网的连接"  originalData:....
      fail(res);//注释后无需转交,直接中止执行
    },
    complete: function(res) {
      //+++
    },
  });
}