日期时间字段设置问题:在 ViewGrid/methods.js 中,所有日期和日期时间类型的查询字段都被强制设置为 range = true,意味着它们必须是范围查询
查询参数处理逻辑问题:在 getSearchParameters 方法中,对于日期时间类型的处理存在问题:
value 是字符串时,代码无法正确处理ViewGrid/methods.js:initFormOptions 方法中强制设置 range = true 的代码getSearchParameters 方法中的日期时间处理逻辑range 属性的设置,但允许通过配置覆盖getSearchParameters 方法,正确处理日期时间的单个值和范围值修改 getSearchParameters 方法:
```javascript
getSearchParameters() {
// 获取查询参数
if (!this.fiexdSearchForm) {
this.searchBoxShow = false;
}
let query = { wheres: [] };
for (const key in this.searchFormFields) {
let value = this.searchFormFields[key];
if (this.emptyValue(value)) continue;
if (typeof value == 'number') {
value = value + '';
}
let displayType = this.getSearchItem(key);
// 处理日期时间类型
if (['date', 'datetime'].indexOf(displayType) != -1) {
if (Array.isArray(value)) {
// 范围查询
for (let index = 0; index < value.length; index++) {
if (!this.emptyValue(value[index])) {
query.wheres.push({
name: key,
value: (value[index] + '').trim(),
displayType: index === 0 ? 'greaterorequal' : 'lessorequal'
});
}
}
} else {
// 单个值查询
query.wheres.push({
name: key,
value: (value + '').trim(),
displayType: 'equal'
});
}
continue;
}
// 处理其他类型
query.wheres.push({
name: key,
value: typeof value == 'string' ? (value + '').trim() : value.join(','),
displayType: displayType
});
}
return query;
}
```
修改 initFormOptions 方法:
```javascript
initFormOptions(formOptions, keys, formFields, isEdit) {
// 初始化查询、编辑对象的下拉框数据源、图片上传链接地址
// ... 其他代码 ...
// 移除或修改强制设置range=true的代码
// this.searchFormOptions.forEach((item) => {
// item.forEach((x) => {
// if (x.type == 'date' || x.type == 'datetime') x.range = true;
// });
// });
// ... 其他代码 ...
}
```
这样修改后,日期时间查询功能应该能够正常工作,无论是单个值查询还是范围查询都能正确处理。