encodeQuery.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. export default function encodeQuery(params: any) {
  2. if (!params) return {};
  3. const queryParam = {
  4. // pageIndex: 0,
  5. current: params.current,
  6. };
  7. const { terms, sorts } = params;
  8. Object.keys(params).forEach((key: string) => {
  9. if (key === 'terms') {
  10. let index = 0;
  11. if (!terms) return;
  12. Object.keys(terms).forEach((k: string) => {
  13. if (
  14. !(
  15. terms[k] === '' ||
  16. terms[k] === undefined ||
  17. terms[k].length === 0 ||
  18. terms[k] === {} ||
  19. terms[k] === null
  20. )
  21. ) {
  22. if (k.indexOf('$LIKE') > -1 && terms[k].toString().indexOf('%') === -1) {
  23. terms[k] = `%${terms[k]}%`;
  24. }
  25. if (k.indexOf('$IN') > -1) {
  26. terms[k] = terms[k].toString();
  27. } else if (k.indexOf('$START') > -1) {
  28. terms[k] = `%${terms[k]}`;
  29. } else if (k.indexOf('$END') > -1) {
  30. terms[k] = `${terms[k]}%`;
  31. }
  32. if (k.indexOf('@') > -1) {
  33. const temp = k.split('@');
  34. // eslint-disable-next-line prefer-destructuring
  35. queryParam[`terms[${index}].column`] = temp[0];
  36. // eslint-disable-next-line prefer-destructuring
  37. queryParam[`terms[${index}].type`] = temp[1];
  38. } else {
  39. queryParam[`terms[${index}].column`] = k;
  40. }
  41. queryParam[`terms[${index}].value`] = terms[k];
  42. index += 1;
  43. }
  44. });
  45. } else if (key === 'sorts') {
  46. // 当前Ant Design排序只支持单字段排序
  47. if (!sorts) return;
  48. Object.keys(sorts).forEach((s, index) => {
  49. queryParam[`sorts[${index}].name`] = s;
  50. queryParam[`sorts[${index}].order`] = sorts[s].replace('end', '');
  51. });
  52. // if (Object.keys(sorts).length > 0) {
  53. // queryParam[`sorts[0].name`] = sorts.field;
  54. // queryParam[`sorts[0].order`] = (sorts.order || '').replace('end', '');
  55. // }
  56. } else {
  57. queryParam[key] = params[key];
  58. }
  59. });
  60. // queryParam.pageIndex = current - 1;
  61. return queryParam;
  62. }