Ben Lin
2024-07-30 cc88111d61a350a4d24cf339b526d4357f934ddf
src/api/tigerapi/system.ts
@@ -1,4 +1,3 @@
import { UserConfigFn } from 'vite';
import { useGlobSetting } from '/@/hooks/setting';
import { buildUUID } from '../../utils/uuid';
import { DateFormat } from '../../utils/dataformat';
@@ -29,9 +28,11 @@
  EntityParams,
  EntityList,
  iSYS_ROLE_PROD,
  pParams,
} from './model/systemModel';
import { defHttp } from '/@/utils/http/axios';
import { isArray, isDate, isNullOrEmpty, isTimeType, isTimeViaRegExp8601, isTimeViaRegExpSimple } from '/@/utils/is';
import { isArray, isNullOrEmpty, isTimeViaRegExp8601 } from '/@/utils/is';
import { isNumber } from 'xe-utils';
export enum Api {
  QueryUrl = '/Base/Query',
@@ -39,10 +40,12 @@
  EntitySqlList = '/Base/QuerySQL',
  EntityPageList = '/Base/QueryCustomPage',
  IsAccountExist = '/Base/IsExist',
  AddAfterDelete = '/Base/AddAfterDelete',
  setRoleStatus = '/system/setRoleStatus',
  MenuList = '/SYS/getMenuListAll',
  SaveMenu = '/SYS/SaveMenu',
  SaveRole = '/SYS/SaveRole',
  getSysParam = '/SYS/getSysParam',
  AddEntity = '/Base/Add',
  AddListEntity = '/Base/AddList',
  UpdateEntity = '/Base/Update',
@@ -283,20 +286,20 @@
/**
 * @description: 树形表结构转树形Json
 * @param {T} data
 * @param {string} parentId
 * @param {string} id
 * @param {string} pid
 * @param {string} parentField 父字段名
 * @param {string} idField 唯一key字段名
 * @param {string} pid_val 父id值
 * @return {*}
 */
export function convertToTree<T>(data: T[], parentId: string, id: string, pid?: string) {
export function convertToTree<T>(data: T[], parentField: string, idField: string, pid?: string) {
  const result: T[] = [];
  let temp: T[] = [];
  const _pid = isNullOrEmpty(pid) ? '' : pid;
  for (let i = 0; i < data.length; i++) {
    const currPid = data[i][parentId] == null ? '' : data[i][parentId];
    const currPid = data[i][parentField] == null ? '' : data[i][parentField];
    if (currPid === _pid) {
      const obj = data[i] as {};
      temp = convertToTree(data, parentId, id, data[i][id]);
      const obj = data[i] as T;
      temp = convertToTree(data, parentField, idField, data[i][idField]);
      if (temp.length > 0) {
        obj['children'] = temp;
      }
@@ -704,48 +707,31 @@
 * @return {*}
 */
export async function getListByPage<T>(params: T) {
  const Keys = Object.getOwnPropertyNames(params);
  let sqlcmd = '1=1 ';
  const sqlcmd = ReturnSqlcmd(params);
  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] != 'order' &&
      Keys[k] != 'field' &&
      Keys[k] != '0' &&
      !Keys[k].toString().endsWith('PSelect_0')
    ) {
      if (!isNullOrEmpty(params[Keys[k]].length) && isTimeViaRegExp8601(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]]}%'`;
      }
    }
  }
  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'],
  const rParams = genAction(
    params['TABLE_NAME'],
    {
      QueryAble_T: '',
      where: sqlcmd,
      order: order,
      page: {
        pageAble_T: 'string',
        draw: 1,
        pageIndex: params['page'],
        pageSize: params['pageSize'],
      },
    },
  });
    params['option'],
  );
  return getListByPageAsync(rParams);
}
async function getListByPageAsync(params: any) {
  const data = await defHttp.post(
    { url: Api.QueryUrl, params },
    { url: Api.QueryUrl, params, timeout: 50000 },
    {
      isTransformResponse: false,
    },
@@ -757,8 +743,46 @@
  return model;
}
/**
 * @description: 根据查询条件参数拼接查询条件
 * @param {T} params
 * @return {*}
 */
export function ReturnSqlcmd<T>(params: T) {
  const Keys = Object.getOwnPropertyNames(params);
  let sqlcmd = '1=1 ';
  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] != 'order' &&
      Keys[k] != 'field' &&
      Keys[k] != 'option' &&
      Keys[k] != '0' &&
      !Keys[k].toString().endsWith('PSelect_0')
    ) {
      if (!isNullOrEmpty(params[Keys[k]].length) && isTimeViaRegExp8601(params[Keys[k]][0])) {
        sqlcmd += ` And ${Keys[k]} > '${params[Keys[k]][0]}'`;
        sqlcmd += ` And ${Keys[k]} < '${params[Keys[k]][1]}'`;
      } else if (isNumber(params[Keys[k]])) {
        sqlcmd += `And ${Keys[k]} = ${params[Keys[k]]}`;
      } else {
        sqlcmd += `And ${Keys[k]} like '%${params[Keys[k]]}%'`;
      }
    }
  }
  return sqlcmd;
}
export async function SaveEntity<T>(params: T, isUpdate: boolean, entityName: string, ...args) {
  let data;
  /* 针对模板地址做替换,特殊处理 */
  if(params['TEMP_PATH']){
    params['TEMP_PATH'] = params['TEMP_PATH'].toString().replace('/','//');
  }
  if (isUpdate) {
    data = await defHttp.post(
      { url: Api.UpdateEntity, params: genAction(entityName, params) },
@@ -769,12 +793,12 @@
    );
  } else {
    var check = await isExist(genAction(entityName, args[0]));
    if(check.Data){
    if (check.Data) {
      check.IsSuccessed = false;
      check.Message = '记录已经存在,不能新增!';
      return check;
    }
    params.ID = buildUUID(); //生成GUID
    params['ID'] = args[1] == true ? params['ID'] : buildUUID(); //生成GUID
    data = await defHttp.post(
      { url: Api.AddEntity, params: genAction(entityName, params) },
      {
@@ -806,6 +830,31 @@
      isTransformResponse: false,
    },
  );
}
/**
 * @description: 先删除后添加Api
 * @param {T} params
 * @param {string} entityName
 * @param {*} items
 * @return {*}
 */
export async function AddAfterDelete(entityName: string, items: [], where: string) {
  let data = await defHttp.post(
    {
      url: Api.AddAfterDelete,
      params: genAction(entityName, {
        QueryAble_T: '',
        where: where,
        Items: items,
      }),
    },
    {
      errorMessageMode: 'none',
      isTransformResponse: false,
    },
  );
  return data;
}
/**
@@ -884,11 +933,11 @@
}
/* 通用获取实体记录 */
export const getEntity = async (params: { sqlcmd: string; entityName: string }) => {
export const getEntity = async (params: { sqlcmd: string; entityName: string; order: string }) => {
  const usParams = genAction(params.entityName, {
    QueryAble_T: '',
    where: params.sqlcmd,
    order: '',
    order: params.order,
  });
  return await defHttp.post(
    { url: Api.QueryUrl, params: usParams },
@@ -913,3 +962,16 @@
  }
  return values;
}
/**
 * @description: 获取参数
 * @param {pParams} params
 * @return {*}
 */
export const getSysParam = (params?: pParams) =>
  defHttp.get<ApiAction<treeParamsListItem[]>>(
    { url: Api.getSysParam, params },
    {
      isTransformResponse: false,
    },
  );