spring-boot - 带有日期范围选择器的 Vue DataTable 来过滤日期
问题描述
我使用 Spring Boot 在 thymeleaf 模板中有 Vue DataTable,我想实现日期范围选择器来按开始和结束日期过滤数据。以下是 DataTable html 页面。
<div>
<input type="text" class="dateRangePicker"></input> -->
</div>
<script>
var logTable= new Vue({
el: "#logTable",
data: {
id: "logTB",
title: "[[#{label_logTable}]]",
headers: [
{ name: "[[#{label_time}]]", className: "sort pr-1 align-middle text-center" },
{ name: "[[#{label_name}]]", className: "sort pr-1 align-middle text-center" },
{ name: "[[#{label_log}]]", className: "sort pr-1 align-middle text-center" },
],
configs: { searchDelay: 1000, serverSide: true, processing: true, ajaxDataProp: "data",
ajax: parentUrl = contextPath + "rest/logs",
columns: [
{ data: "id", defaultContent: "", className: "text-center", orderable: false,
},
{ data: "time", defaultContent: "", className: "align-middle text-center" },
{ data: "name", defaultContent: "", className: "align-middle text-center" },
{ data: "log", defaultContent: "", className: "align-middle text-center" },
]
}
},
methods: {
},
computed: {
},
mounted() {
}
});
</script>
我有日期范围选择器功能可以在另一个 html 页面中选择开始和结束日期,如下所示。
<script th:inline="javascript">
$(function() {
$('.dateRangePicker').daterangepicker({
'autoApply' : false,
'autoUpdateInput': false,
"showDropdowns": true,
"linkedCalendars": false,
'showCustomRangeLabel' : true,
'opens': 'right',
'startDate': moment().subtract(3, 'month'),
'endDate': moment(),
'ranges' : {
'Today' : [moment(), moment()],
'This Week' : [moment().startOf('week').add(1, 'days'), moment().endOf('week').add(1, 'days')],
'This Month' : [moment().startOf('month'), moment().endOf('month')],
'This Year' : [moment().startOf('year'), moment().endOf('year')]
},
locale : {
'format': 'YYYY-MM-DD'
,'separator': " - "
,'applyLabel': 'Apply'
,"cancelLabel": 'Cancel'
,'customRangeLabel': 'Custom Range'
}
}, function(start, end, label) {
$('.dateRangePicker').val(start.format('YYYY-MM-DD') + ' - ' + end.format('YYYY-MM-DD'));
url = parentUrl + '?startDate=' + start.format('YYYY-MM-DD') + '&endDate=' + end.format('YYYY-MM-DD');
logTable.ajax.url(url).load;
});
});
</script>
最后,带有开始和结束日期的 URL 被传递给 Spring Rest Controller。
@JsonView(DataTablesOutput.View.class)
@GetMapping("/rest/logs")
public DataTablesOutput<Log> listAllLogs(@RequestParam(value = "startDate", required = false) String startDate, @RequestParam(value = "endDate", required = false) String endDate, DataTablesInput input) {
//Call Filter Function
}
我得到的最终结果是一个文本框,用于选择定义的日期,如今天、本周等。选择日期后,它会显示在文本框中。但是,不会将 URL 传递给 Rest Controller,并且不会重新加载表以反映更改。
解决方案
推荐阅读
- ios - 无法从 Cocoapods 渲染 SwiftUI 预览
- oracle - sqlplus 连接本地 Oracle 失败。连接失败,因为目标主机或对象不存在
- javascript - Javascript 在旧的 Windows Firefox 上失败
- asp.net-core - DotNet Core 3 EF 3 与 Cosmos DB 问题
- xml - 使用 xslt 替换 xml 中的值
- android - 无法连接到运行 Oreo 的 google android 模拟器上的端口
- c++ - QSerialPort readyRead() 信号无法正常工作
- javascript - 仅与 Socket.io 中的房间进行私人聊天对话
- arangodb - 如何在 ArangoDB 中创建边缘集合?
- c++ - 连接 RadioStream 和 MP3 解码器