Ben Lin
2024-06-03 8f5009a3d57821c2c97690b8419e428967b5e981
src/api/tigerapi/system.ts
@@ -1,4 +1,5 @@
import { UserConfigFn } from 'vite';
import { useGlobSetting } from '/@/hooks/setting';
import { buildUUID } from '../../utils/uuid';
import { DateFormat } from '../../utils/dataformat';
import { ApiAction, ApiActionJob, ApiActionPage } from '../model/baseModel';
@@ -25,9 +26,11 @@
  LoginLogPageListGetResultModel,
  iSYS_ROLE_ORG,
  iSYS_ROLE_WH,
  EntityParams,
  EntityList,
} from './model/systemModel';
import { defHttp } from '/@/utils/http/axios';
import { isNullOrEmpty } from '/@/utils/is';
import { isNullOrEmpty, isTimeType } from '/@/utils/is';
export enum Api {
  QueryUrl = '/Base/Query',
@@ -76,7 +79,10 @@
  //导入
  ValidateTableImport = '/SMT/ValidateTableImport',
  SaveValidateTableImport = '/SMT/SaveValidateTableImport',
  GetEntityNameList = '/System/Entitys/Get',
}
const globSetting = useGlobSetting();
/**
 * 生成apiaction,带分页
@@ -646,33 +652,160 @@
  );
};
/* 通用查询分页 */
export async function getListByPage<T>(params: T) {
  const Keys = Object.getOwnPropertyNames(params);
  let sqlcmd = '';
  let sqlcmd = '1=1 ';
  let order = '';
  for (const k in Keys) {
    console.log(`${k}:${Keys[k]}`);
    if (
      !isNullOrEmpty(params[Keys[k]]) &&
      Keys[k] != 'page' &&
      Keys[k] != 'pageSize' &&
      Keys[k] != 'TABLE_NAME'
      Keys[k] != 'TABLE_NAME' &&
      Keys[k] != 'order' &&
      Keys[k] != 'field' &&
      Keys[k] != '0'
    ) {
      sqlcmd += `And ${Keys[k]} like '%${params[Keys[k]]}%'`;
      if (!isNullOrEmpty(params[Keys[k]].length) && isTimeType(params[Keys[k]][0])) {
        sqlcmd += ` And ${Keys[k]} > '${params[Keys[k]][0]}'`;
        sqlcmd += ` And ${Keys[k]} < '${params[Keys[k]][1]}'`;
      } else {
        sqlcmd += `And ${Keys[k]} like '%${params[Keys[k]]}%'`;
      }
    }
  }
  const rParams = genActionPage(params['TABLE_NAME'], sqlcmd, params['page'], params['pageSize']);
  if (!isNullOrEmpty(params['order'])) {
    order = params['order'] == 'descend' ? params['field'] + ' desc' : params['field'];
  }
  const rParams = genAction(params['TABLE_NAME'], {
    QueryAble_T: '',
    where: sqlcmd,
    order: order,
    page: {
      pageAble_T: 'string',
      draw: 1,
      pageIndex: params['page'],
      pageSize: params['pageSize'],
    },
  });
  return getListByPageAsync(rParams);
}
async function getListByPageAsync(params: ApiActionPage) {
  const data = await defHttp.post<ApiActionPage>(
    { url: Api.EntityPageList, params },
async function getListByPageAsync(params: any) {
  const data = await defHttp.post(
    { url: Api.QueryUrl, params },
    {
      isTransformResponse: false,
    },
  );
  const model = {
    items: data.Data.data,
    total: data.Data.totals,
    items: data.Data.page.data,
    total: data.Data.page.totals,
  };
  return model;
}
export async function SaveEntity<T>(params: T, isUpdate: boolean, entityName: string) {
  let data;
  if (isUpdate) {
    data = await defHttp.post(
      { url: Api.UpdateEntity, params: genAction(entityName, params) },
      {
        errorMessageMode: 'none',
        isTransformResponse: false,
      },
    );
  } else {
    params.ID = buildUUID(); //生成GUID
    data = await defHttp.post(
      { url: Api.AddEntity, params: genAction(entityName, params) },
      {
        errorMessageMode: 'none',
        isTransformResponse: false,
      },
    );
  }
  return data;
}
export async function DeleteEntity<T>(params: T, entityName: string) {
  const usParams = genAction(entityName, [params]);
  return await defHttp.post(
    { url: Api.DeleteList, params: usParams },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
    },
  );
}
//获取服务器Json文件返回Json数据
export async function fetchJson(url: string) {
  try {
    const response = await fetch(url);
    return await response.json();
  } catch (error) {
    console.error('Error fetching columns:', error);
  }
}
// 泛型函数,获取类的名称
export function getClassName<T>(ctor: new () => T): string {
  return ctor.name;
}
export const getEntityList = (params?: EntityParams) =>
  defHttp.get<EntityList>(
    { url: Api.GetEntityNameList, params },
    {
      isTransformResponse: false,
      apiUrl: globSetting.sysApiUrl,
    },
  );
export async function getEntityNameList(params?: EntityParams) {
  const data = await defHttp.get<EntityList>(
    { url: Api.GetEntityNameList, params },
    {
      isTransformResponse: false,
      apiUrl: globSetting.sysApiUrl,
    },
  );
  const model = {
    items: data.Data,
    total: data.Total,
  };
  return model;
}
export async function getEntityPropertieList(params?: EntityParams) {
  const data = await defHttp.get<EntityList>(
    { url: Api.GetEntityNameList, params },
    {
      isTransformResponse: false,
      apiUrl: globSetting.sysApiUrl,
    },
  );
  const model = {
    items: data.Data.filter((x) => x.Name == params?.StartWith)[0].Properties,
    total: data.Total,
  };
  return model;
}
/* 通用获取实体记录 */
export const getEntity = async (params: { sqlcmd: string; entityName: string }) => {
  const usParams = genAction(params.entityName, {
    QueryAble_T: '',
    where: params.sqlcmd,
    order: '',
  });
  return await defHttp.post(
    { url: Api.QueryUrl, params: usParams },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
    },
  );
};