vxe-gird前端日期段查询,通过手工sql是有数据,但是在前端无数据。

发布时间 2023-11-22 20:35:58作者: jiduoduo

前端查询的时候,日期是返回这种数组:

["2023-11-01 20:00:00","2023-11-02 20:00:00"]

1、那么有二种方式,一直是直接传给服务端,由服务端去处理。

@RequestParam(value = "createDate[]", required = false) String[] createDates 用这种形式放到controller的参数列表里就可以。

2、前端处理好了,传给后端,然后返回。

查询方法中的参数,

let createDate_b = form.createDates != null ? form.createDates[0].toString().replace(/\"/g, '') : null;
let createDate_e = form.createDates != null ? form.createDates[1].toString().replace(/\"/g, '') : null;

然后

参数中处理如下:

createDate_b: dayjs(new Date(createDate_b)).format('YYYY-MM-DD HH:mm:ss'),
createDate_e: dayjs(new Date(createDate_e)).format('YYYY-MM-DD HH:mm:ss'),

这样参数的格式就正常了。

 

分析下具体的原因:

表面看参数是对的,但实际上,其实参数二侧多了一个"",导致查询不出数据来。

正常的参数,如下,(String)前面没有双引号。

 

整体查询方法:

import dayjs, { Dayjs } from 'dayjs';
  import weekday from 'dayjs/plugin/weekday';
  import localeData from 'dayjs/plugin/localeData';
  dayjs.extend(weekday);
  dayjs.extend(localeData);

 

 proxyConfig: {
      ajax: {
        query: async ({ page, form }) => {
          let createDate_b = null;
          let createDate_e = null;
          if (form.createDates != null) {
            createDate_b = form.createDates != null ? form.createDates[0].toString().replace(/\"/g, '') : null;
            createDate_e = form.createDates != null ? form.createDates[1].toString().replace(/\"/g, '') : null;
          }
          let params = {
            page: page.currentPage,
            pageSize: page.pageSize,
            createDate_b:
              createDate_b != null ? dayjs(new Date(createDate_b)).format('YYYY-MM-DD HH:mm:ss') : null,
            createDate_e:
              createDate_e != null ? dayjs(new Date(createDate_e)).format('YYYY-MM-DD HH:mm:ss') : null,
          };

          return getflows(params);
        },
        queryAll: async ({ form }) => {
          return await getflows(form);
        },
      },
    },