列表上移下移功能实现

news2024/11/30 6:08:45

后台管理某列表需实现上移下移功能,并与前端展示列表排序相关。

现将开发完成过程笔记记录下来。

目录

列表增加属性

JQuery脚本

服务端

控制器

服务层

总结


列表增加属性

在循环渲染时,在table表格的tr上增加id和排序的属性值,以便传输后端修改相应记录。

代码如下:

{foreach name="list" item="v"}
<tr class="hover edit" data-val="{$v.sort}" data-id="{$v.id}">
    <td>{$v.title}</td>
    <td>¥{$v.reward_price}</td>
    <td>{$v.sales_price}</td>
    <td>{if $v.type == 1} - {else} {$v.sales_num} {/if}</td>
    <td>
        {if $v.type == 1}
        -
        {else}
        <input type="button" class="dsui-btn-edit up" value="上移">
        <input type="button" class="dsui-btn-edit down" value="下移">
        {/if}
    </td>
    <td class="align-center">
        <a href="javascript:void(0)" onclick="rewardEdit({$v.id})" class="dsui-btn-edit"><i class="iconfont"></i>编辑</a>
        {if $v.type == 0}
        <a href="javascript:void(0)" onclick="submit_delete({$v.id})" class="dsui-btn-del"><i class="iconfont"></i>删除</a>
        {/if}
    </td>
</tr>
{/foreach}

 

JQuery脚本

在jquery脚本中,编写上移下移事件,通过按钮上绑定的类名进行触发。

获取通过tr上设定的id和sort,传递给后端修改相应记录。

上移时需判断表格行是否第一行,这里因为我的第一行没有上下移动功能,故改为这样。

下移时,需判断表格是否最后一行。

代码如下:

$(function () {
    // 上移
    var up = $(".up");
    up.click(function () {
        var $tr = $(this).parents('tr');
        var now_id = $tr.attr('data-id');
        var now_val = $tr.attr('data-val');
        if (now_val > 2) {
            var last_id = $tr.prev().attr('data-id');
            var last_val = $tr.prev().attr('data-val');
            var data = {'id1':now_id, 'sort1':now_val, 'id2':last_id, 'sort2':last_val};
            editSort(data);
        }
    });

    // 下移
    var down = $(".down");
    var len = down.length;
    down.click(function () {
        var $tr = $(this).parents('tr');
        var now_id = $tr.attr('data-id');
        var now_val = $tr.attr('data-val');
        if ($tr.index() != len) {
            var last_id = $tr.next().attr('data-id');
            var last_val = $tr.next().attr('data-val');
            var data = {'id1':now_id, 'sort1':now_val, 'id2':last_id, 'sort2':last_val};
            editSort(data);
        }
    });

    /**
     * 修改排序
     * @param data
     */
    function editSort(data) {
        $.getJSON("{:url('YttReward/editSort')}", data, function(res){
            if (res.code != 1) {
                layer.msg(res.msg, {icon: 1});
            } else {
                window.location.reload();
            }
        });
    }
});

 

服务端

控制器

/**
 * 编辑奖励排序
 * @return void
 */
public function editSort()
{
// 接收所有值
    $param = $this->request->param();
    $res = $this->Service->editSort($param);
// 返回json格式数据
    ds_json_encode($res['code'], $res['msg']);
}

服务层

在服务层处理具体业务:验证参数,查询记录,修改记录。

代码如下:

/**
 * 编辑奖励排序
 * @param $param
 * @return array
 */
public function editSort($param)
{
    $rules      = [
        'id1'   => 'require|number',
        'sort1' => 'require|number',
        'id2'   => 'require|number',
        'sort2' => 'require|number',
    ];
    $messages   = [
        'id1.require'   => '请选择奖励',
        'id1.number'    => '奖励id参数为数字',
        'sort1.require' => '请输入排序',
        'sort1.number'  => '排序值为数字',
        'id2.require'   => '请选择奖励',
        'id2.number'    => '奖励id参数为数字',
        'sort2.require' => '请输入排序',
        'sort2.number'  => '排序值为数字',

    ];
    $validate = validate($rules, $messages);
    if (!$validate->check($param)) {
        return ds_callback(0, $validate->getError());
    }

    try {
        $info1 = $this->getInfo(['id' => $param['id1']]);
        $info2 = $this->getInfo(['id' => $param['id2']]);
        if (!$info1 || !$info2) {
            return ds_callback(0, '该记录不存在');
        }
        if ($info1['type'] == 1 || $info2['type'] == 1) {
            return ds_callback(0, '新手奖励不可修改排序');
        }
        $this->editData(['sort' => $param['sort2']], ['id' => $param['id1']]);
        $this->editData(['sort' => $param['sort1']], ['id' => $param['id2']]);
        return ds_callback(1, '操作成功');
    } catch (\Exception $e) {
        return ds_callback(0, $e->getMessage());
    }
}

总结

上移下移的列表功能前端脚本加后端结合实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索Python WebSocket新境界:picows库揭秘

文章目录 探索Python WebSocket新境界&#xff1a;picows库揭秘第一部分&#xff1a;背景介绍第二部分&#xff1a;picows库概述第三部分&#xff1a;安装picows库第四部分&#xff1a;简单库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解决方案第…

【Linux】-学习笔记06

第二章、时间同步服务器 2.1时间同步服务器的使用 2.1.1系统时区时间的管理 timedatectl set-time "2024-02-13 10:41:55" ##设定系统时间 timedatectl list-timezones ##显示系统的所有时区 timedatectl set-timezone "Asia/Shangh…

Mac使用charles抓包

一、官网下载安装 二、配置Help--->SSL Proxying 有证书选择全部信任即可 三、设置系统代理&#xff0c;mac每次重启都需要选择&#xff0c;否则会没有数据 四、设置端口&#xff08;如果无法获取https&#xff09; 五、手机链接&#xff0c;从网页下载证书保存到手机&…

3d扫描建模产品开发-三维扫描检测蓝光检测

现当下&#xff0c;汽车制造、航空航天&#xff0c;还是消费电子、医疗器械&#xff0c;三维扫描检测与蓝光技术正以前所未有的精度和效率&#xff0c;推动着产品从概念到实物的快速转化。 三维扫描技术&#xff0c;简而言之&#xff0c;就是通过激光、结构光&#xff08;如蓝…

Hive中的基本数据类型和表的类型

Hive支持关系数据库中大多数据基本数据类型&#xff0c;同时还支持三种复杂类型。 示例&#xff1a; Hive表 创建表 – 直接建表法 create table t_page_view ( page_id bigint comment ‘页面ID’, page_name string comment ‘页面名称’, page_url string comment ‘页面…

Python PDF转JPG图片小工具

Python PDF转JPG图片小工具 1.简介 将单个pdf装换成jpg格式图片 Tip: 1、软件窗口默认最前端&#xff0c;不支持调整窗口大小&#xff1b; 2、可通过按钮选择PDF文件&#xff0c;也可以直接拖拽文件到窗口&#xff1b; 3、转换质量有5个档位&#xff0c;&#xff08;0.25&a…

剖析 SpringBoot 于夕阳红公寓管理系统架构搭建的核心作用

3 系统分析 本文作者在确定了研究的课题之后&#xff0c;从各大数字图书馆下载文献来阅读&#xff0c;并了解同类型的网站具备的大致功能&#xff0c;然后与本系统用户的实际需求结合进行分析&#xff0c;得出本系统要研究的具体功能与性能。虽然分析系统这一阶段性工作主要是确…

springboot336社区物资交易互助平台pf(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 社区物资交易互助平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff…

嵌入式linux系统中网络编程的具体实现

1.网络编程简介 要编写通过计算机网络通信的程序,首先要确定这些程序同通信的协议(protocol),在设计一个协议的细节之前,首先要分清程序是由哪个程序发起以及响应何时产生。 举例来说,一般认为WEB服务器程序是一个长时间运行的程序(守护进程deamon),它只在响应来自网…

vue3.0 根据富文本html页面生成压缩包(含视频在线地址、图片在线地址、前端截图、前端文档)

vue3.0生成压缩包&#xff08;含在线地址、前端截图、前端文档&#xff09; 需求描述效果开始下载插件包基本代码构造 点击下载按钮1.截图content元素&#xff0c;并转化为pdfcanvas putImageData、getImageDatagetImageData 获取指定矩形区域的像素信息putImageData 将这些数据…

由于导包而引发的错误

今天在调试时发现删除功能无论如何都无法实现&#xff0c;于是调试找到了mapper层的错误但不知道为什么报错。以下是报错信息。 Caused by: org.apache.ibatis.binding.BindingException: Parameter userIds not found. Available parameters are [arg0, collection, list]at o…

黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业

视频地址&#xff1a;哔哩哔哩 讲义作业飞书地址&#xff1a;day04作业&#xff08;IOC&DI&#xff09; 作业很简单&#xff0c;主要是练习拆分为三层架构controller、service、dao&#xff0c;并基于IOC & DI进行解耦。 1、结构&#xff1a; 2、代码 网盘链接&…

【LeetCode: 145. 二叉树的后序遍历 + 栈】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

哈希表算法题

目录 题目一——1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 1.1.暴力解法1 1.2.暴力解法2 1.2.哈希表解法 题目二——面试题 01.02. 判定是否互为字符重排 - 力扣&#xff08;LeetCode&#xff09; 题目三——217. 存在重复元素 - 力扣&#xff08;LeetCode&…

Galaxy预测比特币期权活跃交易将持续至2027年,特朗普执政中期

随着比特币及其相关产品的交易量不断增加&#xff0c;加密货币市场的期权交易也迎来了前所未有的活跃。Galaxy Digital的交易团队指出&#xff0c;贝莱德IBIT ETF期权在美国股市的交易量已经创下了新纪录。首日交易量高达353,716份合约&#xff0c;几乎与2012年Facebook期权上线…

Java-GUI(登录界面示例)

简述&#xff1a; 步骤&#xff1a; (1)构造界面(将组件对象加入容器对象,注意&#xff1a;应设定对容器对象的布局策略&#xff09; (2)为界面加入事件响应处理(如单击按钮&#xff09; 实现&#xff1a; 两种方式实现&#xff0c;只有用户名为"admin"且密码为…

屏幕分辨率|尺寸|颜色深度指纹

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度&#xff0c;横屏竖屏信息。 二、window.screen c接口实现&#xff1a; 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …

【论文阅读】三平面相关与变体

文章目录 1. 【CVPR2023】Tri-Perspective View for Vision-Based 3D Semantic Occupancy Prediction动机可视化方法Pipeline 2. 【2023/08/31】PointOcc: Cylindrical Tri-Perspective View for Point-based 3D Semantic Occupancy Prediction动机&#xff08;针对雷达点云、与…

Java - JSR223规范解读_在JVM上实现多语言支持

文章目录 1. 概述2. 核心目标3. 支持的脚本语言4. 主要接口5. 脚本引擎的使用执行JavaScript脚本执行groovy脚本1. Groovy简介2. Groovy脚本示例3. 如何在Java中集成 Groovy4. 集成注意事项 6. 与Java集成7. 常见应用场景8. 优缺点9. 总结 1. 概述 JSR223&#xff08;Java Spe…

定时/延时任务-ScheduledThreadPoolExecutor的使用

文章目录 1. 概要2. 固定速率和固定延时2.1 固定速率2.2 固定延时 3. API 解释3.1 schedule3.2 固定延时 - scheduleWithFixedDelay3.2 固定速率 - scheduleWithFixedDelay 4. 小结 1. 概要 前三篇文章的地址&#xff1a; 定时/延时任务-自己实现一个简单的定时器定时/延时任…