InterFaceFactory.ts 3.2 KB
/**
 * 接口工厂类 -- lbb
 */
import Api from "@/services/api.service";
// import resJon from "@/public/factory/ResJson";
import { Toast } from "vant";
import { NativeUI } from "@/public/ts/NativeUI";
import { MethodType } from "@/constants/enum/general/method-type.enum";
import { HeaderType } from "@/constants/enum/general/header-type.enum";
export default class InterFaceFactory {
  static service_control = "1"; //服务调用控制开关 - 0:不调用服务 1:调用服务
  static pinfo = {
    code: "9999", //响应码
  };
  /**
   * 公共接口
   * @param method
   * @param params
   * @param query??
   * @param requestConfig?
   * @returns {Promise<AxiosResponse<*>>}
   */
  static transferDataInter(method: { methodType: string; headerType: string; url: string }, params: any, query?: any, requestConfig?: any) {
    const path = query ? Api.urlQueryConvert(method.url, query) : method.url;
    Api.getRequestConfig(method.headerType || "", requestConfig);
    if (!params.tc || params.tc == "MCEP") {
      //移动后台
      params.tc = "MCEP";
      params.user_code = sessionStorage.getItem("user_code");
    } else {
      //TODO外围系统, 个贷没改造先处理
      console.log("外围系统");
      params.employee_id = sessionStorage.getItem("workcode"); //人力资源代码,
      params.USERCODE = sessionStorage.getItem('user_code'); //人力资源代码,s
      params.user_code = sessionStorage.getItem("user_code");
    }
    if (!params.hrCode) params.hrCode = sessionStorage.getItem("workcode"); //人力资源代码

    console.log("**请求参数**:",params.tc,params);
    switch (method.methodType) {
      case MethodType.POST.code:
        return Api.post(path, params, query, requestConfig).catch((err: any) => {
          NativeUI.toast(err.msg);
        });
      case MethodType.GET.code:
        return Api.get(path, query, requestConfig);
      case MethodType.PUT.code:
        return Api.put(path, params, query, requestConfig);
      case MethodType.DELETE.code:
        return Api.delete(path, query, requestConfig);
      default:
        return new Promise(() => {});
    }
  }

  /**
   * 文件传输
   * @param method
   * @param params
   * @param requestConfig requestConfig.onUploadProgress, requestConfig.onDownloadProgress
   * @returns {Promise<AxiosResponse<any>>}
   */
  static transferFile(method: any = { url: "", headerType: HeaderType.UPLOAD_AUTH, methodType: MethodType.POST.code }, params: any, requestConfig = {}) {
    requestConfig = Api.getRequestConfig(method.headerType || "", requestConfig);
    params = this.jsonToFormData(params);
    return Api.uploadFile(method.url, params, requestConfig);
  }

  /**
   * JSON转Form
   * @param params
   * @returns {FormData}
   */
  static jsonToFormData(params: { [x: string]: string | Blob; files?: any } | null) {
    if (params != null) {
      const formData = new FormData();
      Object.keys(params).forEach((key) => {
        if ("files" == key) {
          // 多文件上传
          params.files.forEach((file: string | Blob) => {
            formData.append("files", file);
          });
        } else {
          formData.append(key, params[key]);
        }
      });
      return formData;
    }
  }
}