字段配置类型名修改
笑笑 编写于 2023-04-26 22:42:15
NewLife.CubeVue
import { changeToCamelCase } from '@/config/config';
import type { AxiosInstance } from 'axios';

/**
 * 请求基类
 */
class ApiBase {
  /** axios实例 */
  public request: AxiosInstance;

  constructor(request: AxiosInstance) {
    this.request = request;
    return this;
  }

  /**
   * 获取表对应的列
   * @param {*} path 基础请求路径
   * @type List-列表、Detail-详情、Add-添加、Edit-编辑
   * @returns
   */
  public getColumns(path: string, type: string = 'List') {
    const request = this.request;
    // 1-列表List、2-详情Detail、3-添加Add、4-编辑Edit
    let kind = 1;
    switch (type) {
      case 'List':
        kind = 1;
        break;
      case 'Detail':
        kind = 2;

        break;
      case 'Add':
        kind = 3;
        break;
      case 'Edit':
        kind = 4;
        break;
      case 'Search':
        kind = 5;
        break;
      default:
        break;
    }
    return request({
      url: path + '/GetFields',
      method: 'get',
      params: {
        kind: kind,
      },
    }).then((res) => {
      let list = res.data;
      for (const item of list) {
        item.name = changeToCamelCase(item.name);
      }
      return res;
    });
  }

  public getDataList(path: string, page: any) {
    const request = this.request;
    return request({
      url: path,
      method: 'get',
      params: page,
      // data: page,
    });
  }

  public getData(path: string, id: any) {
    const request = this.request;
    const params = {
      id,
    };
    return request({
      url: path,
      method: 'get',
      params,
    });
  }

  public getDetailData(path: string, id: any) {
    const request = this.request;
    const params = {
      id,
    };
    return request({
      url: path + '/Detail',
      method: 'get',
      params,
    });
  }

  public deleteById(path: string, id: any) {
    const request = this.request;
    const params = {
      id,
    };
    return request({
      url: path,
      method: 'delete',
      params,
    });
  }

  public add(path: string, entity: any) {
    const request = this.request;
    return request({
      url: path,
      method: 'post',
      data: entity,
    });
  }

  public edit(path: string, entity: any) {
    const request = this.request;
    return request({
      url: path,
      method: 'put',
      data: entity,
    });
  }
}

export default ApiBase;