家居分类的添加、修改、逻辑删除和批量删除

news2024/11/24 6:23:19

文章目录

    • 1.逻辑删除家居分类
        • 1.将之前的docker数据库换成云数据库
        • 2.树形控件增加添加和删除按钮
          • 1.找到控件
          • 2.粘贴四个属性到<el-tree 属性>
          • 3.粘贴两个span到<el-tree>标签里
          • 4.代码
          • 5.效果
          • 6.方法区新增两个方法处理添加和删除分类
          • 7.输出查看一下信息
          • 8.要求节点等级小于等于2允许有Add,没有子节点允许Delete
        • 3.MyBatis-Plus逻辑删除
          • 1.官方文档
          • 2.具体介绍
          • 3.配置方式
            • 1.在application.yml的db-config下添加logic的三句话,逻辑已删除值为0,未删除值为1
            • 2.com/sun/sunliving/commodity/entity/CategoryEntity.java 给相应字段添加 @TableLogic 注解
            • 3.如果没有在application.yml中配置逻辑删除的值,还可以直接在@TableLogic 注解中指定
          • 4.postman测试逻辑删除
            • 1.发送请求 http://localhost:9091/commodity/category/delete
            • 2.查看表字段
            • 3.使用MyBatis-Plus再查询一下 ,发现确实不会再被查到了 http://localhost:9091/commodity/category/list
          • 5.点击超链接完成删除
            • 1.点击删除查看返回信息
            • 2.输出查看id
            • 3.代码实现
            • 4.删除两个灯具测试
            • 5.数据库信息
          • 6.删除前弹出提示框
            • 1.完整代码
            • 2.删除测试
          • 7.删除后弹出操作成功
            • 1.添加代码
            • 2.删除测试
          • 3.树形控件展开设置
            • 1.设置默认全部展开
            • 2.设置删除分类之后保持原来状态
    • 2.添加子分类信息到数据库
        • 1.前端添加对话框控件
          • 1.查找控件
            • 1.官网
            • 2.具体控件
          • 2.部署控件
            • 1.将选中的部分粘贴到 category.vue的el-tree标签后
            • 2.使用div将两个控件包起来否则会有编译错误
            • 3.前端测试访问
          • 3.基础代码
            • 1.对话框控件
            • 2.数据池 category 表示表单数据 dialogVisible 表示是否显示弹窗
            • 3.方法池 add 显示对话框 addCategory 点击确定后触发这个方法
            • 4.测试
          • 4.初始化对话框
            • 1.数据池声明对话框数据
            • 2.方法池设置在弹出对话框之前给对话框赋默认值
            • 3.测试
          • 5.发送请求,将数据保存到数据库
            • 1.打开注释,显示对话框
            • 2.编写 addCategory方法
            • 3.测试
          • 6.注意事项
            • 1.如果添加中文乱码,就在数据库的请求地址中加一段
            • 2.ESLint检测介绍
            • 3.注释掉 build/webpack.base.conf.js 中的一段代码然后重启
    • 3.修改分类信息
        • 1.回显分类信息
          • 1.新增编辑按钮
          • 2.方法池编写edit方法,点击编辑按钮就回显表单
          • 3.测试
        • 2.向后端发送请求,入库
          • 1.增加标志位,判断是修改还是删除
            • 1.数据池增加标志位
            • 2.编辑和修改分类时设置标志位
          • 2.修改addCategory方法,完成修改入库操作
          • 3.测试
    • 4.批量逻辑删除家居分类
        • 1.获取批量选择的id
          • 1.问AI
          • 2.el-tree 增加属性 ref="treeRef"
          • 3.添加批量删除按钮
          • 4.编写handleBatchDelete方法,获取所有选中的id
          • 5.浏览器测试
        • 2.批量从数据库删除
          • 1.修改 handleBatchDelete 方法
          • 2.测试
            • 1.点击批量删除
            • 2.删除成功
            • 3.数据库信息

1.逻辑删除家居分类

1.将之前的docker数据库换成云数据库
2.树形控件增加添加和删除按钮
1.找到控件

image-20240412093004937

2.粘贴四个属性到<el-tree 属性>

image-20240412093250256

3.粘贴两个span到标签里

image-20240412093701331

4.代码
<template>
  <el-tree :data="data"
           :props="defaultProps"
           show-checkbox
           node-key="id"
           :expand-on-click-node="false">
            <span class="custom-tree-node" slot-scope="{ node, data }">
              <span>{{ node.label }}</span>
              <span>
                <el-button
                  type="text"
                  size="mini"
                  @click="() => add(node, data)">
                  Add
                </el-button>
                <el-button
                  type="text"
                  size="mini"
                  @click="() => remove(node, data)">
                  Delete
                </el-button>
              </span>
            </span>
  </el-tree>
</template>
5.效果

image-20240412094500983

6.方法区新增两个方法处理添加和删除分类

image-20240412095736430

7.输出查看一下信息

image-20240412100327523

8.要求节点等级小于等于2允许有Add,没有子节点允许Delete

image-20240412101612954

image-20240412101622614

3.MyBatis-Plus逻辑删除
1.官方文档

https://baomidou.com/pages/6b03c5/#%E6%AD%A5%E9%AA%A4-1-%E9%85%8D%E7%BD%AEcom-baomidou-mybatisplus-core-config-globalconfig-dbconfig

2.具体介绍

image-20240412102203526

3.配置方式
1.在application.yml的db-config下添加logic的三句话,逻辑已删除值为0,未删除值为1
mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml # 这个表示扫描mapper文件夹下的所有xml文件,即使是子文件夹下的也会扫描
  global-config:
    db-config:
      logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 0 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 1 # 逻辑未删除值(默认为 0)
      id-type: auto # 主键策略自增,就是不给主键赋值也会自动增长,配置entity的注解@TableId使用
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 控制台打印sql语句,生产环境中可以去掉
2.com/sun/sunliving/commodity/entity/CategoryEntity.java 给相应字段添加 @TableLogic 注解

image-20240412102814677

3.如果没有在application.yml中配置逻辑删除的值,还可以直接在@TableLogic 注解中指定

image-20240412103100587

4.postman测试逻辑删除
1.发送请求 http://localhost:9091/commodity/category/delete

image-20240412104158021

2.查看表字段

image-20240412104227811

3.使用MyBatis-Plus再查询一下 ,发现确实不会再被查到了 http://localhost:9091/commodity/category/list

image-20240412104353138

5.点击超链接完成删除
1.点击删除查看返回信息

image-20240412110035433

2.输出查看id

image-20240412110123472

image-20240412110137607

3.代码实现
    // 删除分类
    remove(node, data){
      // 获取要删除的id
      var ids = [data.id]
      // 发送请求
      this.$http({
        url: process.env.BASEPATH + '/commodity/category/delete',
        method: 'post',
        data: this.$http.adornData(ids, false)
      }).then(({data}) => { // 解构了data
        this.getCategories() // 重新获取分类列表
      })
    }
4.删除两个灯具测试

image-20240412110902709

5.数据库信息

image-20240412110959377

6.删除前弹出提示框
1.完整代码
    // 删除分类
    remove(node, data){
      // 获取要删除的id
      var ids = [data.id]
      // 弹出确认框
      this.$confirm(`确定对【${data.name}】进行删除操作?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then( () => {
          // 发送请求
          this.$http({
            url: process.env.BASEPATH + '/commodity/category/delete',
            method: 'post',
            data: this.$http.adornData(ids, false)
          }).then(({data}) => { // 解构了data
            this.getCategories() // 重新获取分类列表
          })
      }).catch(() => {})

    }
2.删除测试

image-20240412113549741

image-20240412113557180

image-20240412113612812

image-20240412113618482

7.删除后弹出操作成功
1.添加代码
        // 添加成功提示
        this.$message({
          message: '操作成功',
          type: 'success'
        })

image-20240412113952220

2.删除测试

image-20240412113904714

3.树形控件展开设置
1.设置默认全部展开

image-20240412114210909

image-20240412114218818

2.设置删除分类之后保持原来状态
  • 设置属性

image-20240412115454629

  • 设置数据池

image-20240412115509873

  • 在获取分类列表之后展开父节点

image-20240412115536613

image-20240412115436704

2.添加子分类信息到数据库

1.前端添加对话框控件
1.查找控件
1.官网

https://element.eleme.cn/#/zh-CN/component/dialog

2.具体控件

image-20240412133244122

2.部署控件
1.将选中的部分粘贴到 category.vue的el-tree标签后

image-20240412133541842

image-20240412133707242

2.使用div将两个控件包起来否则会有编译错误

image-20240412134211184

3.前端测试访问

image-20240412134250818

3.基础代码
1.对话框控件
<!--    dialogVisible 表示是否显示对话框-->
    <el-dialog title="收货地址" :visible.sync="dialogVisible">
<!--   categorydao 是表单的数据  -->
      <el-form :model="category">
        <el-form-item label="分类名">
          <el-input v-model="category.name" autocomplete="off"></el-input>
        </el-form-item>

      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="addCategory">确 定</el-button>
      </div>
    </el-dialog>
2.数据池 category 表示表单数据 dialogVisible 表示是否显示弹窗

image-20240412135819766

3.方法池 add 显示对话框 addCategory 点击确定后触发这个方法
    // 添加分类信息到数据库,点击确定按钮时触发
    addCategory() {
      alert("addCategory")
      this.dialogVisible = false
    },
    // 添加分类
    add(data) {
      console.log("data", data) // data是当前节点的数据
      this.dialogVisible = true // 显示添加对话框
    }
4.测试

image-20240412140018043

image-20240412140028210

4.初始化对话框
1.数据池声明对话框数据
      category : { // 表单数据
        id: null,
        name: '',
        parentId: 0,
        catLevel: 0,
        isShow: 1,
        sort: 0,
        icon: '',
        proUnit: '',
        proCount: 0
      }
2.方法池设置在弹出对话框之前给对话框赋默认值
    // 添加分类
    add(data) {
      console.log("data", data) // data是当前节点的数据
      // 设置对话框初始数据
      this.category = {
        id: null,
        name: '',
        parentId: data.id, // 父层级id
        catLevel: data.catLevel + 1, // 父层级的级别 + 1
        isShow: 1,
        sort: 0,
        icon: '',
        proUnit: '',
        proCount: 0
      }
      // this.dialogVisible = true // 显示添加对话框
      // 输出查看
      console.log("this.category", this.category)
    }
3.测试

image-20240412141928964

5.发送请求,将数据保存到数据库
1.打开注释,显示对话框

image-20240412144746713

2.编写 addCategory方法
    // 添加分类信息到数据库,点击确定按钮时触发
    addCategory() {
      // 获取表单数据
      var category = this.category
      // 发送请求
      this.$http({
        url: process.env.BASEPATH + '/commodity/category/save',
        method: 'post',
        data: this.$http.adornData(category, false)
      }).then(({data}) => { // 解构了data
        // 添加成功提示
        this.$message({
          message: '添加成功',
          type: 'success'
        })
        // 关闭对话框
        this.dialogVisible = false
        // 刷新分类列表
        this.getCategories() // 重新获取分类列表
        // 设置需要展开的菜单
        this.expandedkeys = [this.category.parentId]
      })
    }
3.测试

image-20240412144926500

image-20240412144937201

6.注意事项
1.如果添加中文乱码,就在数据库的请求地址中加一段

image-20240412145154168

2.ESLint检测介绍

image-20240412145622192

image-20240412145659195

3.注释掉 build/webpack.base.conf.js 中的一段代码然后重启

image-20240412145919734

image-20240412150053809

3.修改分类信息

1.回显分类信息
1.新增编辑按钮

image-20240412161524705

2.方法池编写edit方法,点击编辑按钮就回显表单
    // 编辑分类
    edit(data) {
      // 将当前节点的数据赋值给表单
      this.category = data
      // 显示对话框
      this.dialogVisible = true
    }
3.测试

image-20240412161710760

2.向后端发送请求,入库
1.增加标志位,判断是修改还是删除
1.数据池增加标志位

image-20240412165112271

2.编辑和修改分类时设置标志位

image-20240412165144650

image-20240412165153876

2.修改addCategory方法,完成修改入库操作
      if (this.dialogType == '修改') {
        // 发送请求入库
        this.$http({
          url: process.env.BASEPATH + '/commodity/category/update',
          method: 'post',
          data: this.$http.adornData(category, false)
        }).then(({data}) => { // 解构了data
          // 添加成功提示
          this.$message({
            message: '修改成功',
            type: 'success'
          })
          // 关闭对话框
          this.dialogVisible = false
          // 刷新分类列表
          this.getCategories() // 重新获取分类列表
          // 设置需要展开的菜单
          this.expandedkeys = [this.category.parentId]
        })
      }

image-20240412165358713

3.测试

image-20240412165423628

image-20240412165439269

4.批量逻辑删除家居分类

1.获取批量选择的id
1.问AI

image-20240412174927340

2.el-tree 增加属性 ref=“treeRef”

image-20240412175032592

3.添加批量删除按钮
    <!-- 批量删除按钮 -->
    <el-button
      type="danger"
      size="mini"
      icon="el-icon-delete"
      @click="handleBatchDelete"
      >
      批量删除
    </el-button>

image-20240412175051838

4.编写handleBatchDelete方法,获取所有选中的id
    // 处理批量删除操作
    handleBatchDelete() {
      // 获取id
      const selectedIds = this.$refs.treeRef.getCheckedKeys();
      console.log('Selected node IDs:', selectedIds);
    }
5.浏览器测试

image-20240412175455434

image-20240412175503500

2.批量从数据库删除
1.修改 handleBatchDelete 方法
    // 处理批量删除操作
    handleBatchDelete() {
      // 获取id
      const selectedIds = this.$refs.treeRef.getCheckedKeys();
      // 发送请求,批量删除
      this.$http({
        url: process.env.BASEPATH + '/commodity/category/delete',
        method: 'post',
        data: selectedIds
      }).then(({data}) => { // 解构了data
        // 添加成功提示
        this.$message({
          message: '批量删除成功',
          type: 'success'
        })
        // 刷新分类列表
        this.getCategories() // 重新获取分类列表
      })
    }
2.测试
1.点击批量删除

image-20240412180643341

2.删除成功

image-20240412180721828

3.数据库信息

image-20240412180756660

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

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

相关文章

Spring AI项目Open AI绘画开发指导

Spring AI项目创建 Spring AI简介创建Spring AI项目配置项目pom和application文件controller接口开发运行测试 Spring AI简介 Spring AI 是 AI 工程的应用框架。其目标是将 Spring 生态系统设计原则&#xff08;如可移植性和模块化设计&#xff09;应用于 AI&#xff0c;并推广…

自作聪明的AI? —— 信息处理和传递误区

一、背景 在人与人的信息传递中有一个重要问题——由于传递人主观处理不当&#xff0c;导致信息失真或产生误导。在沟通交流中&#xff0c;确实存在“自作聪明”的现象&#xff0c;即传递人在转述或解释信息时&#xff0c;根据自己对信息的理解、经验以及个人意图进行了过多的…

SpringSecurity6实现动态权限,rememberMe、OAuth2.0授权登录,退出登录等功能

本文章对应视频可在B站查看SpringSecurity6对应视频教程&#xff0c;记得三连哦&#xff0c;这对我很重要呢&#xff01; 温馨提示&#xff1a;视频与文章相辅相成&#xff0c;结合学习效果更强哦&#xff01; 系列文章链接 1、初识SpringSecurity&#xff0c;认识主流Java权限…

AI+文旅|当智慧遇见风景,感受文旅新体验

今年的五一假期,公众出游热度持续升温&#xff0c;全国多地景区再现“人山人海”&#xff0c;在这样的背景下&#xff0c;促使文旅行业不断通过数字化手段&#xff0c;提升旅游体验质量、探索新的服务方式&#xff0c;AI技术的加入为旅游业带来了革命性的变化。智能导游、智能推…

FOTS:一种用于机器人操作技能Sim2Real学习的快速光学触觉仿真器

类 GelSight的视触觉传感器具有高分辨率和低制造成本的优势&#xff0c;但是在与现实中的物体进行频繁接触时易受磨损。而触觉仿真器可大幅降低硬件成本&#xff0c;同时为后续技能学习任务提供仿真训练环境。为此&#xff0c;来自东南大学自动化学院的钱堃副教授研究团队和伦敦…

大厂常见算法50题-两数相加

专栏持续更新50道算法题&#xff0c;都是大厂高频算法题&#xff0c;建议关注, 一起巧‘背’算法! 文章目录 题目解法总结 题目 解法 定义一个节点pre&#xff0c;用于初始化结果链表的头部&#xff0c;cur指向pre&#xff0c;它将在遍历过程中用于构建新的链表。初始化进位变…

基于单片机的直流电机测速装置研究与设计

摘要: 基于单片机的直流电机测速装置采用了对直流电机的中枢供电回路串联取样电阻的方式实现对电机转速的精确实时测量。系统由滤波电路、信号放大电路、单片机控制电路以及稳压电源等功能模块电路构成。工作过程中高频磁环作为载体&#xff0c;利用电磁感应的基本原理对直流电…

使用Flask部署Web应用:从入门到精通

文章目录 第一部分&#xff1a;准备工作第二部分&#xff1a;部署Flask应用到AWS部署到AWS Lambda 第三部分&#xff1a;部署Flask应用到腾讯云服务器部署到腾讯云服务器 第四部分&#xff1a;优化和扩展结论 在现代软件开发中&#xff0c;Web应用的部署是一个至关重要的环节。…

面试题:调整数字顺序,使奇数位于偶数前面

题目&#xff1a; 输入一个整数数组&#xff0c;实现一个函数&#xff0c;来调整该数组中数字的顺序 使得所有奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分 算法1&#xff1a; 利用快速排序的一次划分思想&#xff0c;从2端往中间遍历 时间复杂度&#x…

【漏洞复现】泛微OA E-Cology ResourceServlet文件读取漏洞

漏洞描述&#xff1a; 泛微OA E-Cology是一款面向中大型组织的数字化办公产品&#xff0c;它基于全新的设计理念和管理思想&#xff0c;旨在为中大型组织创建一个全新的高效协同办公环境。泛微OA E-Cology ResourceServlet存在任意文件读取漏洞&#xff0c;允许未经授权的用户…

网络安全之OSPF进阶

该文针对OSPF进行一个全面的认识。建议了解OSPF的基础后进行本文的一个阅读能较好理解本文。 OSPF基础的内容请查看&#xff1a;网络安全之动态路由OSPF基础-CSDN博客 OSPF中更新方式中的触发更新30分钟的链路状态刷新。是因为其算法决定的&#xff0c;距离矢量型协议是边算边…

【java-数据结构14-双向链表的增删查改2】

上一篇文章中&#xff0c;我们已经对双向链表进行一些基本操作&#xff0c;本篇文章我们继续通过对链表的增删查改来加深对链表的理解~同时有任何不懂的地方可以在评论区留言讨论&#xff0c;也可以私信小编~觉得小编写的还可以的可以留个关注支持一下~话不多说正片开始~ 注意…

「JavaEE」多线程案例分析3:线程池

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 线程池 &#x1f349;简介&#x1f349;标准库中的线程池&#x1f349;Executors&#x1f349;实现一个简单的线程池 &#x1f349;简介…

初始Django

初始Django 一、Django的历史 ​ Django 是从真实世界的应用中成长起来的&#xff0c;它是由堪萨斯&#xff08;Kansas&#xff09;州 Lawrence 城中的一个网络开发小组编写的。它诞生于 2003 年秋天&#xff0c;那时 Lawrence Journal-World 报纸的程序员 Adrian Holovaty 和…

识别AI论文生成内容,降低论文高AI率

AI写作工具能帮我们在短时间内高效生成一篇毕业论文、开通报告、文献综述、任务书、调研报告、期刊论文、课程论文等等&#xff0c;导致许多人开始使用AI写作工具作为撰写学术论文的辅助手段。而学术界为了杜绝此行为&#xff0c;开始使用AIGC检测系统来判断文章是由AI生成还是…

机器学习中的聚类

目录 认识聚类算法 聚类算法API的使用 聚类算法实现流程 聚类算法模型评估 认识聚类算法 聚类算法是一种无监督的机器学习算法。 它将一组数据分成若干个不同的群组&#xff0c;使得每个群组内部的数据点相似度高&#xff0c;而不同群组之间的数据点相似度低。常用的相似…

【3dmax笔记】028:倒角的使用方法

一、倒角描述 在3dmax中创建倒角效果可以通过多种方法实现,以下是几种常见的方法: 使用倒角修改器。首先创建一个图形(如矩形和圆),然后对齐它们,将它们转化为可编辑样条线,并附加在一起,选择要倒角的边缘,然后使用倒角修改器来调整高度、轮廓等参数。使用倒角剖面修…

Davinci工程vBaseEnv模块讲解

配合的模块 要正常使用vBaseEnv模块&#xff0c;要同时使能EcuC、OS、vBRS和vLinkGen模块。 OS是操作系统&#xff0c;除了FBL以外&#xff0c;其他都需要用到OS。 vBaseEnv是基础环境 vBRS是基本运行系统 vLinkGen脚本链接生成器 EcuC是ECU配置 EcuC配置 需要配合vBaseEnv模…

程序员的神奇应用:从代码创造到问题解决的魔法世界之持续集成/持续部署

文章目录 持续集成/持续部署 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 在当今数字化的世界里&…

数字水印 | Arnold 变换的 Python 代码实现

&#x1f96d; 参考博客&#xff1a; Arnold 阿诺德置乱&#xff08;猫脸变换&#xff09;图像盲水印注入预处理&#xff08;Python&#xff09; 1 回顾&#xff1a;Arnold 公式 A r n o l d \mathsf{Arnold} Arnold 变换公式如下&#xff1a; [ x n 1 y n 1 ] [ 1 b a a b…