009 批量删除

ops/2024/10/18 18:28:17/

文章目录

    • 前端
    • 后端

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

前端

vue">    <el-button type="danger" @click="batchDelete">批量删除</el-button><el-treeref="menuTree"
vue">    batchDelete() {console.log("批量删除菜单...");//封装要删除的idlet ids = [];//通过eltree菜单 获取let checkedNodes = this.$refs.menuTree.getCheckedNodes();console.log("被选中的元素",checkedNodes);for (let index = 0; index < checkedNodes.length; index++) {//把选中的CheckBox的id值 添加到ids集合中ids.push( checkedNodes[index].id );}this.$confirm(`是否批量删除[${ids}]菜单?`, "提示", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning",}).then(() => {this.$http({url: this.$http.adornUrl("/product/category/delete"),method: "post",data: this.$http.adornData(ids, false),}).then(({ data }) => {this.$message({type: "success",message: "菜单批量删除成功!",});//重新刷新当前菜单this.getMenus();//设置需要默认展开的菜单, 设置为 要删除节点的父节点// this.expandedKey = [node.parent.data.id];});}).catch(() => {});},},

后端

@RestController
@RequestMapping("product/category")
public class CategoryController {/*** 删除*/@RequestMapping("/delete")//@RequiresPermissions("product:category:delete")public R delete(@RequestBody Integer[] ids){//直接删除方式//categoryService.removeByIds(Arrays.asList(ids));//TODO 检查当前要删除的菜单,是否被别的地方引用//逻辑删除方式categoryService.removeMenuByIds(Arrays.asList(ids));return R.ok();}}
@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {/*** 逻辑删除菜单* @param asList*/@Overridepublic void removeMenuByIds(List<Integer> asList) {//TODO 检查当前要删除的菜单是否被别的地方引用//逻辑删除baseMapper.deleteBatchIds(asList);}
}
#mybatis
mybatis-plus:mapper-locations: classpath*:/mapper/**/*.xml#实体扫描,多个package用逗号或者分号分隔typeAliasesPackage: io.renren.modules.*.entityglobal-config:#数据库相关配置db-config:#主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";id-type: AUTOlogic-delete-value: -1logic-not-delete-value: 0banner: false#原生配置configuration:map-underscore-to-camel-case: truecache-enabled: falsecall-setters-on-nulls: truejdbc-type-for-null: 'null'

http://www.ppmy.cn/ops/102457.html

相关文章

无人机之航拍的优势

无人机航拍在多个方面展现出了显著的优势&#xff0c;这些优势使其在航拍领域具有强大的竞争力和广泛的应用前景。以下是无人机航拍的主要优势&#xff1a; 一、 独特的视角与视觉震撼 独特视角&#xff1a;无人机航拍提供了与传统拍摄截然不同的视角&#xff0c;尤其是垂直正…

网络编程(学习)2024.8.28

目录 TCP服务器代码优化 1.命令行传参 2.判错方式 3.自动绑定IP地址 4.来电显示功能 5.循环服务器 网络模型 1.网络的体系结构 2.OSI模型 3.TCP/IP模型 4.常见网络协议 域名 1.域名系统DNS 2.域名结构 3.DNS工作流程 虚拟机网络 &#xff08;1&#xff09;虚…

G722.1.C有三种编码参数 24kbps、32kbps、48kbps,但解码时能自动识别出码率参数,不需要外部设置参数

目录 一、编码参数二、解码时的自动识别能力三、实际应用中的优势 对于“G722.1.C有三种编码参数 24kbps、32kbps、48kbps&#xff0c;但解码时能自动识别出码率参数&#xff0c;不需要外部设置”这句话&#xff0c;我们可以从以下几个方面进行分析&#xff1a; 一、编码参数 …

企业网络安全挑战与应对策略

在激烈的市场竞争中&#xff0c;企业越来越依赖网络技术来提高效率、拓展业务。然而&#xff0c;网络安全问题也如影随形&#xff0c;给企业带来了巨大的挑战。 一方面&#xff0c;企业面临着日益复杂的网络攻击手段。黑客们不断创新攻击方式&#xff0c;从传统的病毒、木马到高…

uniapp + Vue3自定义封装弹窗组件

uniapp Vue3自定义封装弹窗组件 需求背景 在uniapp项目中&#xff0c;有时候需要弹出一个自定义的弹窗组件&#xff0c;比如提示框、确认框、选择框等。 实现方案 1. 创建弹窗组件 首先&#xff0c;我们需要创建一个弹窗组件&#xff0c;比如my-dialog.vue&#xff1a; …

结合令牌(JWT)和签名认证的系统登录及页面访问的详细实现原理和流程

结合令牌&#xff08;JWT&#xff09;和签名认证的系统登录及页面访问的详细实现原理和流程如下&#xff1a; 1. 实现原理 1.1 JWT&#xff08;JSON Web Token&#xff09;令牌 JWT是一种用于用户认证的紧凑、安全的令牌格式。它通常由三部分组成&#xff1a; Header&#…

Python + Playwright(16):处理HTTPS错误

Python + Playwright(16):处理HTTPS错误 前言一、什么是HTTPS错误?二、`ignore_https_errors=True` 的作用三、使用场景总结前言 当浏览器试图访问一个网站时,如果该网站的SSL证书无效或未被信任,浏览器通常会阻止访问,并显示一条安全警告。这种情况下,如何绕过这些错误…

震惊!传统企业转型社群团购的关键密码揭晓!链动 2+1 模式AI 智能名片S2B2C 商城小程序源码强势助力!

摘要&#xff1a;本文将带你深度探秘传统企业转型社群团购所面临的重重挑战&#xff0c;尤其聚焦不懂授权这一关键问题。同时&#xff0c;重磅引入链动 21 模式AI 智能名片S2B2C 商城小程序源码等创新元素&#xff0c;深入阐释它们在传统企业转型社群团购中的惊人应用价值&…