CRMEB 基础 列表拖动排序1
2023-09-11 14:22:26 时间
前端排序代码
<script>
// 原文:https://blog.csdn.net/funche/article/details/106308936
var arr = [
{
id: 0,
name: 'Tom0'
}, {
id: 1,
name: 'Tom1'
}, {
id: 2,
name: 'Tom2'
}, {
id: 3,
name: 'Tom3'
}, {
id: 4,
name: 'Tom4'
}
]
// 把 Tom0 跟 Tom3 位置对调
var sourceIndex = 0
var targetIndex = 3
arr[sourceIndex] = arr.splice(targetIndex, 1, arr[sourceIndex])[0]
console.log(arr);
</script>
后端排序代码
/**
* 排序保存
*
* @param entities
* @return
*/
public boolean saveSort(List<T> entities) {
if (entities.size() <= 0) {
throw new ServiceException("数据不能为空");
}
List<Long> ids = entities.stream().map(c -> c.getId()).collect(Collectors.toList());
// 数据库中 根据sort排序后 的原始数据
List<T> items = listByIds(ids)
.stream()
.sorted(Comparator.comparing(T::getSort))
.collect(Collectors.toList());
// 前端传入的 根据索引排序后的数据 与数据库的数据 根据索引一一对应,然后改变其sort
for (int i = 0; i < entities.size(); i++) {
entities.get(i).setSort(items.get(i).getSort());
}
// 只改变数据库数据的sort字段
for (T item : items) {
T entity = entities.stream()
.filter(c -> item.getId().equals(c.getId()))
.findFirst()
.orElse(null);
if (Objects.nonNull(entity)) {
item.setSort(entity.getSort());
}
}
return updateBatchById(items);
}
相关文章
- 级联下拉列表
- Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表
- YII CGridView CListView 返回列表带记忆功能
- 【基础入门题054】随机整数列表
- 【基础入门题005】求列表(或数组)嵌套的最大深度
- SAP UI5 初学者教程之二十三 - 列表控件的排序 Sort 和分组 Group 试读版
- flutter在导航栏处实现对两个列表的点击事件
- Flutter 官网的列表点击收藏
- 零基础学Python(第十二章 列表【list】)
- 〖大前端 - 基础入门三大核心之 html 篇⑧〗- 无序列表
- 〖大前端 - 基础入门三大核心之 html 篇⑨〗- 有序列表与定义列表
- C++初始化参数列表对成员函数初始化(四十一)
- Collectors.collectingAndThen()&&Collectors.collectingAndThen 去重&&Stream分组groupBy后取单一字段值、取列表第一个值方式
- 锐捷策略路由+前缀列表基础实验
- Python基础数据之列表
- lapply apply详解sapply mapply 列表变成数据框 数据框变成列表 list和dataframe
- 基础SQL Server 操作问题——仅当使用了列表并且IDENTITY_INSERT为ON时,才能为表中的标识列制定显示值
- Python语言基础学习之Python基础之列表介绍和循环遍历