当前位置:网站首页>[SSM]前后台协议联调②
[SSM]前后台协议联调②
2022-07-23 23:28:00 【十八岁讨厌编程】
前后台协议联调
修改功能

需求:完成图书信息的修改功能
找到页面中的
编辑按钮,该按钮绑定了@click="handleUpdate(scope.row)"在method的
handleUpdate方法中发送异步请求根据ID查询图书信息根据后台返回的结果,判断是否查询成功,如果查询成功打开修改面板回显数据,如果失败提示错误信息
修改完成后找到修改面板的
确定按钮,该按钮绑定了@click="handleEdit()"在method的
handleEdit方法中发送异步请求提交修改数据根据后台返回的结果,判断是否修改成功。如果成功提示错误信息,关闭修改面板,重新查询数据,如果失败提示错误信息
scope.row代表的是当前行的行数据,也就是说,scope.row就是选中行对应的json数据,如下:
{
"id": 1,
"type": "计算机理论",
"name": "Spring实战 第五版",
"description": "Spring入门经典教程,深入理解Spring原理技术内幕"
}
修改handleUpdate方法
//弹出编辑窗口
handleUpdate(row) {
// console.log(row); //row.id 查询条件
//查询数据,根据id查询
axios.get("/books/"+row.id).then((res)=>{
if(res.data.code == 20041){
//展示弹层,加载数据
this.formData = res.data.data;
this.dialogFormVisible4Edit = true;
}else{
this.$message.error(res.data.msg);
}
});
}
修改handleEdit方法
handleEdit() {
//发送ajax请求
axios.put("/books",this.formData).then((res)=>{
//如果操作成功,关闭弹层,显示数据
if(res.data.code == 20031){
this.dialogFormVisible4Edit = false;
this.$message.success("修改成功");
}else if(res.data.code == 20030){
this.$message.error("修改失败");
}else{
this.$message.error(res.data.msg);
}
}).finally(()=>{
this.getAll();
});
}
至此修改功能就已经完成。
删除功能

需求:完成页面的删除功能。
找到页面的删除按钮,按钮上绑定了
@click="handleDelete(scope.row)"method的
handleDelete方法弹出提示框用户点击取消,提示操作已经被取消。
用户点击确定,发送异步请求并携带需要删除数据的主键ID
根据后台返回结果做不同的操作
- 如果返回成功,提示成功信息,并重新查询数据
- 如果返回失败,提示错误信息,并重新查询数据
修改handleDelete方法
handleDelete(row) {
//1.弹出提示框
this.$confirm("此操作永久删除当前数据,是否继续?","提示",{
type:'info'
}).then(()=>{
//2.做删除业务
axios.delete("/books/"+row.id).then((res)=>{
if(res.data.code == 20021){
this.$message.success("删除成功");
}else{
this.$message.error("删除失败");
}
}).finally(()=>{
this.getAll();
});
}).catch(()=>{
//3.取消删除
this.$message.info("取消删除操作");
});
}
完整页面
<!DOCTYPE html>
<html>
<head>
<!-- 页面meta -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>SpringMVC案例</title>
<meta content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" name="viewport">
<!-- 引入样式 -->
<link rel="stylesheet" href="../plugins/elementui/index.css">
<link rel="stylesheet" href="../plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="../css/style.css">
</head>
<body class="hold-transition">
<div id="app">
<div class="content-header">
<h1>图书管理</h1>
</div>
<div class="app-container">
<div class="box">
<div class="filter-container">
<el-input placeholder="图书名称" v-model="pagination.queryString" style="width: 200px;" class="filter-item"></el-input>
<el-button @click="getAll()" class="dalfBut">查询</el-button>
<el-button type="primary" class="butT" @click="handleCreate()">新建</el-button>
</div>
<el-table size="small" current-row-key="id" :data="dataList" stripe highlight-current-row>
<el-table-column type="index" align="center" label="序号"></el-table-column>
<el-table-column prop="type" label="图书类别" align="center"></el-table-column>
<el-table-column prop="name" label="图书名称" align="center"></el-table-column>
<el-table-column prop="description" label="描述" align="center"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpdate(scope.row)">编辑</el-button>
<el-button type="danger" size="mini" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 新增标签弹层 -->
<div class="add-form">
<el-dialog title="新增图书" :visible.sync="dialogFormVisible">
<el-form ref="dataAddForm" :model="formData" :rules="rules" label-position="right" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="图书类别" prop="type">
<el-input v-model="formData.type"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="图书名称" prop="name">
<el-input v-model="formData.name"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="描述">
<el-input v-model="formData.description" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="handleAdd()">确定</el-button>
</div>
</el-dialog>
</div>
<!-- 编辑标签弹层 -->
<div class="add-form">
<el-dialog title="编辑检查项" :visible.sync="dialogFormVisible4Edit">
<el-form ref="dataEditForm" :model="formData" :rules="rules" label-position="right" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="图书类别" prop="type">
<el-input v-model="formData.type"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="图书名称" prop="name">
<el-input v-model="formData.name"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="描述">
<el-input v-model="formData.description" type="textarea"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible4Edit = false">取消</el-button>
<el-button type="primary" @click="handleEdit()">确定</el-button>
</div>
</el-dialog>
</div>
</div>
</div>
</div>
</body>
<!-- 引入组件库 -->
<script src="../js/vue.js"></script>
<script src="../plugins/elementui/index.js"></script>
<script type="text/javascript" src="../js/jquery.min.js"></script>
<script src="../js/axios-0.18.0.js"></script>
<script> var vue = new Vue({
el: '#app', data:{
pagination: {
}, dataList: [],//当前页要展示的列表数据 formData: {
},//表单数据 dialogFormVisible: false,//控制表单是否可见 dialogFormVisible4Edit:false,//编辑表单是否可见 rules: {
//校验规则 type: [{
required: true, message: '图书类别为必填项', trigger: 'blur' }], name: [{
required: true, message: '图书名称为必填项', trigger: 'blur' }] } }, //钩子函数,VUE对象初始化完成后自动执行 created() {
this.getAll(); }, methods: {
//列表 getAll() {
//发送ajax请求 axios.get("/books").then((res)=>{
this.dataList = res.data.data; }); }, //弹出添加窗口 handleCreate() {
this.dialogFormVisible = true; this.resetForm(); }, //重置表单 resetForm() {
this.formData = {
}; }, //添加 handleAdd () {
//发送ajax请求 axios.post("/books",this.formData).then((res)=>{
console.log(res.data); //如果操作成功,关闭弹层,显示数据 if(res.data.code == 20011){
this.dialogFormVisible = false; this.$message.success("添加成功"); }else if(res.data.code == 20010){
this.$message.error("添加失败"); }else{
this.$message.error(res.data.msg); } }).finally(()=>{
this.getAll(); }); }, //弹出编辑窗口 handleUpdate(row) {
// console.log(row); //row.id 查询条件 //查询数据,根据id查询 axios.get("/books/"+row.id).then((res)=>{
// console.log(res.data.data); if(res.data.code == 20041){
//展示弹层,加载数据 this.formData = res.data.data; this.dialogFormVisible4Edit = true; }else{
this.$message.error(res.data.msg); } }); }, //编辑 handleEdit() {
//发送ajax请求 axios.put("/books",this.formData).then((res)=>{
//如果操作成功,关闭弹层,显示数据 if(res.data.code == 20031){
this.dialogFormVisible4Edit = false; this.$message.success("修改成功"); }else if(res.data.code == 20030){
this.$message.error("修改失败"); }else{
this.$message.error(res.data.msg); } }).finally(()=>{
this.getAll(); }); }, // 删除 handleDelete(row) {
//1.弹出提示框 this.$confirm("此操作永久删除当前数据,是否继续?","提示",{
type:'info' }).then(()=>{
//2.做删除业务 axios.delete("/books/"+row.id).then((res)=>{
if(res.data.code == 20021){
this.$message.success("删除成功"); }else{
this.$message.error("删除失败"); } }).finally(()=>{
this.getAll(); }); }).catch(()=>{
//3.取消删除 this.$message.info("取消删除操作"); }); } } }) </script>
</html>
边栏推荐
- Grey correlation analysis (matlab)
- [nuxt 3] (IX) server routing
- Wechat applet implements a global event bus by itself
- [audio and video technology] video quality evaluation MSU vqmt & Netflix vmaf
- [leetcode ladder] the penultimate node in the 022 linked list
- Diabetes genetic risk testing challenge baseline
- H7-tool serial port offline burning operation instructions, support TTL serial port, RS232 and RS485 (2022-06-30)
- Entropy weight method to optimize TOPSIS (matlab)
- Remember an experience of being cheated by the Internet
- Lixia action 2022 Yuanqi digital round table forum will be launched soon
猜你喜欢

Redis集群搭建(Cluster 集群模式,分片集群)

1000 okaleido tiger launched binance NFT, triggering a rush to buy

The role of physical layer, link layer, network layer, transport layer and application layer of tcp/ip model of internet protocol stack

Data sorting and usage before torchvision.datasets.imagefolder

js把数字转大写

【音视频技术】视频质量评价 MSU VQMT & Netflix vmaf

Basic operations of AutoCAD

Tap series article 9 | application development accelerator

System memory introduction and memory management
![[leetcode ladder] the penultimate node in the 022 linked list](/img/72/d3e46a820796a48b458cd2d0a18f8f.png)
[leetcode ladder] the penultimate node in the 022 linked list
随机推荐
礪夏行動|源啟數字化:既有模式,還是開源創新?
Leetcode: palindrome number
Basic operations of AutoCAD
About: enable delivery optimization in enterprise LAN
Use boundschecker "suggestions collection"
TAP 系列文章4 | 基于 Backstage 的 TAP 开发者门户
STM32F4查看系统各部分频率
1000个Okaleido Tiger首发上线Binance NFT,引发抢购热潮
anchor free yolov1
Software architecture
Tap series article 5 | cloud native build service
[in depth study of 4g/5g/6g topic -40]: urllc-11 - in depth interpretation of 3GPP urllc related protocols, specifications and technical principles -5-5g QoS principle and Architecture: slicing, PDU s
Classification model - logistic regression, Fisher linear discriminant (SPSS)
难怪国内企业ERP应用效果普遍不理想
BGP basic experiment
Mongodb database + graphical tools download, installation and use
Entropy weight method to optimize TOPSIS (matlab)
Getting started database days3
Galaxy Securities opens an account online. Is it safe to open an account on your mobile phone
[leetcode ladder] linked list · 206 reverse linked list