位置: IT常识 - 正文

07---vue前端实现增删改查(vue.js前端)

编辑:rootadmin
07---vue前端实现增删改查

推荐整理分享07---vue前端实现增删改查(vue.js前端),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue前端页面设计,vue前端开发工具,vue前端页面设计,vue前段,vue.js前端,vue前端项目怎么运行,vue前端代码实例,vue前端开发教程,内容如对您有帮助,希望把文章链接给更多的朋友!

前端VUE通过请求后端实现增删改查,文末会有前端完整代码

1、实现查询功能07---vue前端实现增删改查(vue.js前端)

一、实现三个条件一起查询

后台需要实现这三个条件的模糊查询UserController.java //分页查询 @GetMapping("/page") public IPage<User> findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam(defaultValue = "") String username, @RequestParam(defaultValue = "") String email, @RequestParam(defaultValue = "") String address){ return userService.findPage(pageNum,pageSize,username,email,address); }UserService.java public IPage<User> findPage( Integer pageNum, Integer pageSize, String username, String email, String address) { IPage<User> page = new Page<>(pageNum, pageSize); QueryWrapper<User>queryWrapper=new QueryWrapper<>(); if (! "".equals(username)){ queryWrapper.like("username",username); } if (! "".equals(email)){ queryWrapper.like("email",email); } if (! "".equals(address)){ queryWrapper.like("address",address); } //增加的排在前面,倒序 queryWrapper.orderByDesc("id"); return this.page(page,queryWrapper); }前端请求这个page接口,即可实现查询2、实现批量删除UserController.java //批量删除 @PostMapping ("/del/batch") public boolean deleteBatch(@RequestBody List<Integer>ids){ return userService.removeBatchByIds(ids); }前端请求这个接口即可实现批量删除3、增、删、改后端代码之前已经写过package com.xqh.controller;import com.baomidou.mybatisplus.core.metadata.IPage;import com.xqh.entity.User;import com.xqh.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.List;import java.util.Map;@RestController //返回json@RequestMapping("/user")public class UserController { @Autowired private UserService userService; //插入和修改操作 @PostMapping public boolean save(@RequestBody User user){ return userService.saveOrUpdate(user); } //查询所有数据 @GetMapping public List<User> findAll(){ return userService.list(); } //删除 @DeleteMapping("/{id}") public boolean delete(@PathVariable Integer id){ return userService.removeById(id); }

前端只需要请求响应的接口即可

4、使用axios请求后端先下载axios组件

npm install axios --save

创建一个utils包,在里面创建一个request.js文件import axios from 'axios'const request = axios.create({baseURL: 'http://localhost:8081', //这是请求后端的前面那串网址 timeout: 5000})// request 拦截器// 可以自请求发送前对请求做一些处理// 比如统一加token,对请求参数统一加密request.interceptors.request.use(config => { config.headers['Content-Type'] = 'application/json;charset=utf-8'; // config.headers['token'] = user.token; // 设置请求头 return config}, error => { return Promise.reject(error)});// response 拦截器// 可以在接口响应后统一处理结果request.interceptors.response.use( response => { let res = response.data; // 如果是返回的文件 if (response.config.responseType === 'blob') { return res } // 兼容服务端返回的字符串数据 if (typeof res === 'string') { res = res ? JSON.parse(res) : res } return res; }, error => { console.log('err' + error) // for debug return Promise.reject(error) })export default requestmain.js中注册import request from "@/utils/request"然后就可以在Home.vue中使用axios调用接口了,如 load(){ request.get("/user/page",{ params:{ pageNum:this.pageNum, pageSize:this.pageSize, username:this.username, email:this.email, address:this.address } }).then(res=>{ console.log(res) this.tableData=res.records this.total=res.total }) }5、前端Vue完整代码

Home.vue

<template> <el-container style="height: 100vh; border: 1px solid #eee"> <el-aside :width="sideWidth+'px'" style="background-color: rgb(238, 241, 246);height: 100%;" > <el-menu :default-openeds="['1', '3']" style="min-height:100%;overflow-x:hidden" background-color="rgb(48,65,86)" text-color="#fff" active-text-color="ffd04b" :collapse-transition="false" :collapse="isCollapse" class="el-menu-vertical-demo" > <div style="height:60px;line-height:60px;text-align:center"> <img src="../assets/logo.png" alt="" style="width:20px;position:relative;top:5px;margin-right: 5px;"> <b style="color:#ccc" v-show="logoTextShow">后台管理系统</b> </div> <el-submenu index="1"> <template slot="title"> <i class="el-icon-message"></i> <span slot="title">导航一</span> </template> <el-submenu index="1-4"> <template slot="title">选项4</template> <el-menu-item index="1-4-1">选项4-1</el-menu-item> </el-submenu> </el-submenu> <el-submenu index="2"> <template slot="title"><i class="el-icon-menu"></i> <span slot="title">导航二</span> </template> <el-submenu index="2-4"> <template slot="title">选项4</template> <el-menu-item index="2-4-1">选项4-1</el-menu-item> </el-submenu> </el-submenu> <el-submenu index="3"> <template slot="title"><i class="el-icon-setting"></i> <span slot="title">导航三</span> </template> <el-submenu index="3-4"> <template slot="title">选项4</template> <el-menu-item index="3-4-1">选项4-1</el-menu-item> </el-submenu> </el-submenu> </el-menu> </el-aside> <el-container> <el-header style=" font-size: 12px;border-bottom: 1px solid #ccc;line-height:60px;display: flex;"> <div style="flex:1;font-size:18px"> <span :class="collapseBtnClass" style="cursor:pointer" @click="collapse"></span> </div> <el-dropdown style="width:80px;cursor:pointer" > <span>Truthfully</span><i class="el-icon-arrow-down" style="margin-left:2px"></i> <i class="el-icon-setting" style="margin-right: 15px"></i> <el-dropdown-menu slot="dropdown"> <el-dropdown-item>个人信息</el-dropdown-item> <el-dropdown-item>退出</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </el-header> <el-main> <div style="margin-bottom:30px"> <el-breadcrumb separator="/"> <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item> <el-breadcrumb-item><a href="/">用户管理</a></el-breadcrumb-item> </el-breadcrumb> </div> <div style="padding:10px 0"> <el-input style="width:200px" placeholder="请输入用户名" suffix-icon="el-icon-search" v-model="username"></el-input> <el-input style="width:200px" placeholder="请输入邮箱" suffix-icon="el-icon-message" class="ml-5" v-model="email"></el-input> <el-input style="width:200px" placeholder="请输入地址" suffix-icon="el-icon-position" class="ml-5" v-model="address"></el-input> <el-button class="ml-5" type="primary" @click="load">搜索</el-button> <el-button type="warning" @click="reset">重置</el-button> </div> <div style="margin:10px 0"> <el-button type="primary" @click="handleAdd">新增<i class="el-icon-circle-plus-outline"></i></el-button> <el-popconfirm class="ml-5" confirm-button-text='确定' cancel-button-text='我再想想' icon="el-icon-info" icon-color="red" title="您确定要删除这些内容吗?" @confirm="delBatch" > <el-button type="danger" slot="reference">批量删除<i class="el-icon-remove-outline"></i></el-button> </el-popconfirm> <el-button type="primary">导入<i class="el-icon-top"></i></el-button> <el-button type="primary">导出<i class="el-icon-bottom"></i></el-button> </div> <el-table :data="tableData" border stripe :header-cell-calss-name="headerBg" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column prop="id" label="ID" width="80"></el-table-column> <el-table-column prop="username" label="用户名" width="140"></el-table-column> <el-table-column prop="nickname" label="昵称" width="120"></el-table-column> <el-table-column prop="email" label="邮箱" ></el-table-column> <el-table-column prop="phone" label="电话" ></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> <el-table-column label="操作" width="200" align="center"> <template slot-scope="scope" > <el-button type="success" @click="handleUpdate(scope.row)">编辑 <i class="el-icon-edit"></i></el-button> <el-popconfirm class="ml-5" confirm-button-text='确定' cancel-button-text='我再想想' icon="el-icon-info" icon-color="red" title="您确定要删除吗?" @confirm="handleDelete(scope.row.id)" > <el-button type="danger" slot="reference">删除<i class="el-icon-remove-outline"></i></el-button> </el-popconfirm> </template> </el-table-column> </el-table> <div style="padding:10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageNum" :page-sizes="[2, 4, 6, 10]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> <el-dialog title="用户信息" :visible.sync="dialogFormVisible" width="30%"> <el-form label-width="80px" size="small"> <el-form-item label="用户名" > <el-input v-model="form.username" autocomplete="off"></el-input> </el-form-item> <el-form-item label="昵称" > <el-input v-model="form.nickname" autocomplete="off"></el-input> </el-form-item> <el-form-item label="邮箱" > <el-input v-model="form.email" autocomplete="off"></el-input> </el-form-item> <el-form-item label="电话" > <el-input v-model="form.phone" autocomplete="off"></el-input> </el-form-item> <el-form-item label="地址" > <el-input v-model="form.address" autocomplete="off"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">取 消</el-button> <el-button type="primary" @click="save">确 定</el-button> </div> </el-dialog> </el-main> </el-container></el-container></template><script>import request from '@/utils/request'export default { name:'HomeView', data() { return { tableData:[], total: 0 , pageNum:1, pageSize:2, username:"", email:"", address:"", form:{}, dialogFormVisible:false, multipleSelection:[], collapseBtnClass:'el-icon-s-fold' , isCollapse:false, sideWidth:200 , logoTextShow:true, headerBg: 'headerBg' } }, created(){ // 请求分页查询数据 this.load() }, methods:{ collapse(){ //点击收缩按钮触发 this.isCollapse=!this.isCollapse if(this.isCollapse){ //收缩 this.sideWidth=64 this.collapseBtnClass='el-icon-s-unfold' this.logoTextShow=false }else{ //展开 this.sideWidth = 200 this.collapseBtnClass='el-icon-s-fold' this.logoTextShow=true } }, load(){ request.get("/user/page",{ params:{ pageNum:this.pageNum, pageSize:this.pageSize, username:this.username, email:this.email, address:this.address } }).then(res=>{ console.log(res) this.tableData=res.records this.total=res.total }) }, save(){ request.post("/user",this.form).then(res=>{ if(res){ this.$message.success("保存成功!") this.dialogFormVisible=false this.load() }else{ this.$message.error("保存失败!") } }) }, handleAdd(){ this.dialogFormVisible=true this.form={} }, handleUpdate(row){ this.form={...row} this.dialogFormVisible=true }, handleDelete(id){ request.delete("/user/" + id).then(res=>{ if(res){ this.$message.success("删除成功!") this.load() }else{ this.$message.error("删除失败!") } }) }, delBatch(){ let ids=this.multipleSelection.map(v=>v.id) //把对象数组转化为id数组【1,2,3】 request.post("/user/del/batch",ids).then(res=>{ if(res){ this.$message.success("批量删除成功!") this.load() }else{ this.$message.error("批量删除失败!") } }) }, handleSelectionChange(val){ this.multipleSelection=val }, reset(){ this.username="" this.email="" this.address="" this.load() }, handleSizeChange(pageSize){ this.pageSize=pageSize this.load() }, handleCurrentChange(pageNum){ this.pageNum=pageNum this.load() } }}</script>6、测试功能在前端页面上测试各功能能否正常使用

本文链接地址:https://www.jiuchutong.com/zhishi/295357.html 转载请保留说明!

上一篇:STGCN时空图卷积网络:用于交通预测的深度学习框架(时域卷积图解法)

下一篇:Table Transformer做表格检测和识别实践(clh锅)

  • 微信的笔记功能如何使用(微信的笔记功能有大小限制吗)

    微信的笔记功能如何使用(微信的笔记功能有大小限制吗)

  • 苹果手机如何下载动态壁纸(苹果手机如何下载第三方软件)

    苹果手机如何下载动态壁纸(苹果手机如何下载第三方软件)

  • soul注册设备已达上限(soul注册显示设备异常)

    soul注册设备已达上限(soul注册显示设备异常)

  • iqoo有系统分身吗(iqoo5系统分身)

    iqoo有系统分身吗(iqoo5系统分身)

  • 充会员能恢复几个火花(充会员能恢复几次信誉)

    充会员能恢复几个火花(充会员能恢复几次信誉)

  • 电话号码过期了充话费还可以用吗(电话号码过期了怎么查询号码)

    电话号码过期了充话费还可以用吗(电话号码过期了怎么查询号码)

  • 无线网信号差怎么增强(无线网信号差怎么办)

    无线网信号差怎么增强(无线网信号差怎么办)

  • 腾讯钻石充值能干什么(腾讯钻石购买)

    腾讯钻石充值能干什么(腾讯钻石购买)

  • tl10a华为是什么型号(华为tl10什么型号)

    tl10a华为是什么型号(华为tl10什么型号)

  • 屏幕切换快捷键是什么(屏幕切换快捷键是什么 双屏)

    屏幕切换快捷键是什么(屏幕切换快捷键是什么 双屏)

  • 爱奇艺会员下载的电影会员过期了还能看吗(爱奇艺会员下载了没有会员了还能看吗?)

    爱奇艺会员下载的电影会员过期了还能看吗(爱奇艺会员下载了没有会员了还能看吗?)

  • ip协议作用于什么层(ip协议的作用是)

    ip协议作用于什么层(ip协议的作用是)

  • 抖音直播怎么放音乐(抖音直播怎么放歌别人听)

    抖音直播怎么放音乐(抖音直播怎么放歌别人听)

  • 红米手机强制恢复出厂(红米手机强制恢复关机)

    红米手机强制恢复出厂(红米手机强制恢复关机)

  • 电脑上页面设置在哪里(电脑页面设置上下左右怎么设置)

    电脑上页面设置在哪里(电脑页面设置上下左右怎么设置)

  • 米8怎么设置呼叫转移(小米8怎么设置呼叫转移到另一个手机号)

    米8怎么设置呼叫转移(小米8怎么设置呼叫转移到另一个手机号)

  • iphone11什么屏幕(lcd屏和oled屏的优缺点)

    iphone11什么屏幕(lcd屏和oled屏的优缺点)

  • 苹果11定价多少(苹果定价多少欧元)

    苹果11定价多少(苹果定价多少欧元)

  • 网络凭据是什么(网络凭据是什么密码)

    网络凭据是什么(网络凭据是什么密码)

  • 抖音怎么保存静态壁纸(抖音怎么保存静态视频)

    抖音怎么保存静态壁纸(抖音怎么保存静态视频)

  • 华为p30 上市时间(华为p30上市时间配置)

    华为p30 上市时间(华为p30上市时间配置)

  • 设置屏幕亮度时间(设置屏幕亮度时自动变暗)

    设置屏幕亮度时间(设置屏幕亮度时自动变暗)

  • 拼多多商品描述怎么写(拼多多商品描述或质量抽检不合格怎么处罚)

    拼多多商品描述怎么写(拼多多商品描述或质量抽检不合格怎么处罚)

  • 怎么打印准考证(怎么打印普通话准考证)

    怎么打印准考证(怎么打印普通话准考证)

  • 为什么我发的抖音别人看不到(为什么我发的抖音评论别人看不到)

    为什么我发的抖音别人看不到(为什么我发的抖音评论别人看不到)

  • Cannot read properties of undefined (reading ‘validate‘)“(cannot read properties null)

    Cannot read properties of undefined (reading ‘validate‘)“(cannot read properties null)

  • 讲解HTML和CSS(超详细)(html和css介绍)

    讲解HTML和CSS(超详细)(html和css介绍)

  • Pytorch训练模型损失Loss为Nan或者无穷大(INF)原因(pytorch训练模型计算f1)

    Pytorch训练模型损失Loss为Nan或者无穷大(INF)原因(pytorch训练模型计算f1)

  • 基础GAN实例(pytorch代码实现)(基础kl)

    基础GAN实例(pytorch代码实现)(基础kl)

  • PHPCMS漏洞之文件poster.php(phpweb漏洞)

    PHPCMS漏洞之文件poster.php(phpweb漏洞)

  • 企业所得税的纳税人有哪些简答题
  • 啥叫总分类账
  • 个人与公司交的税怎么算
  • 投资者回售选择权是什么意思
  • 增加税收的方法有哪些
  • 小规模纳税人出售使用过的汽车
  • 快递行业的收入与成本
  • 免税的苗木发票抵扣税费怎么算
  • 建安企业预缴企业所得税税率
  • 开加工费的发票该如何抵扣?
  • 金税三期房产税源信息更改后
  • 契税如果没有按时交会怎么办
  • 存货扣税比是什么意思?
  • 航天金税盘费用怎么做账
  • 未取得发票怎么做纳税调增操作
  • 城市维护建设税属于什么税种
  • 房屋维修费属于固定资产吗
  • 免费WiFi万能钥匙
  • 辅助生产车间工人工资
  • 苹果icloud储存空间怎么查看内容
  • 关于工程材料的质量控制说法正确的是
  • 游戏出现d3d11lostdevice
  • 哪些支出可以计入成本科目
  • 建账初期的库存商品录入
  • 申报个人所得税是按应发工资还是实发工资
  • thinkphp框架介绍
  • php curl_init
  • php网页聊天室
  • 增值税发票已认证抵扣还可以进项税额转出吗
  • python如何将字典中的键值互换
  • 增值税专用发票有几联?
  • 图书为什么不能退货
  • python中fork函数
  • 帝国cms工作流
  • SQL SERVER 2008 64位系统无法导入ACCESS/EXCEL怎么办
  • SQL Server 2016 TempDb里的显著提升
  • 房租押金需要缴税吗
  • 清算机构收单机构和发卡行
  • 已经认证尚未抵扣的发票
  • 投资款要不要交企业所得税?
  • 税率变更协议怎么写
  • 企业应付账款的借方余额反映的是
  • 增值税专用发票抵扣期限
  • 长期闲置机器设备评估方法
  • 危废品处理费用会计处理
  • 企业开负数发票退货后如何处理?
  • 承租方承担的税费有哪些
  • 建安行业外地预审要多久
  • 境外企业向境内企业提供劳务
  • 医院收到卫生局拨款会计分录
  • 异地预缴增值税多交了怎么办,可以退吗
  • 残保金工资总额是按计提还是发放
  • 英语培训机构成人浦口区
  • 营业收入包括哪些内容?
  • 余额调节表怎么填写例题
  • 极速开票软件怎么开票
  • 公司不报税会怎样法人有责任么
  • mysqladmin ping
  • windows2008r2驱动包
  • win8驱动在哪个文件夹
  • mac键盘怎么开
  • linux中sed详细用法
  • 检测电脑屏幕
  • xp主题怎么改成win7
  • Cocos2d唯一死敌的崛起,OGEngine来了
  • 利用JQuery实现datatables插件的增加和删除行功能
  • [置顶]公主大人接下来是拷问时间31
  • 删除默认共享的文件夹
  • django pypi
  • js怎么检查错误
  • js计算字体宽度
  • javascript教程
  • python win10
  • jquery点击按钮左右滚动效果
  • 贸易公司的税率多少
  • 宜兴税务局长郁岚
  • 百旺税控盘口令认证失败PiN被锁
  • 河南省个人无犯罪证明书
  • 深圳拖欠工资举报网站
  • 一般纳税人办理退税流程及手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设