SpringBoot + Vue项目(显示+删除+回显家居)

文章目录

1.显示家居信息

1.com/sun/furn/controller/FurnController.java 添加方法
java 复制代码
    /*
    * 返回所有家居信息*/
    @RequestMapping("/furns")
    public Result listFurns() {
        List<Furn> list = furnService.list();
        return Result.success(list);
    }
2.postman测试
3.src/views/HomeView.vue 修改el-table 并清空数据池tableData
vue 复制代码
    <el-table :data="tableData" stripe style="width: 100%">
      <el-table-column
          prop="id"
          label="ID" sortable
      >
      </el-table-column>
      <el-table-column
          prop="name"
          label="家居名" >
      </el-table-column>
      <el-table-column
          prop="maker"
          label="厂家">
      </el-table-column>
      <el-table-column
          prop="price"
          label="价格">
      </el-table-column>
      <el-table-column
          prop="sales"
          label="销量">
      </el-table-column>
      <el-table-column
          prop="stock"
          label="库存">
      </el-table-column>
      <el-table-column fixed="right" label="操作" width="100">
        <template #default="scope">
          <el-button @click="handleEdit(scope.row)" type="text">编辑</el-button>
          <el-button type="text">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
4.src/views/HomeView.vue 发送请求并取出数据
1.方法池
js 复制代码
    // 显示家居信息
    list() {
      request.post("/api/furns").then(
          res => {
            // 将返回的json对象数据赋值给tableData
            this.tableData = res.data.data
          }
      )
    }
2.created阶段调用list方法
3.结果展示
5.src/utils/request.js 添加response 拦截器,对返回结果拦截,统一处理
js 复制代码
// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
    response => {
        //取出返回 data 的内容
        let res = response.data;
        // 如果是返回的文件
        if (response.config.responseType === 'blob') {
            return res
        }
        // 如果返回的是 string ,就转成 json 对象
        if (typeof res === 'string') {
            res = res ? JSON.parse(res) : res
        }
        return res;
    }, error => {
        console.log('err' + error) // 输出错误信息
        return Promise.reject(error)
    }
)
6.src/views/HomeView.vue 修改取数据方式
7.src/views/HomeView.vue 添加家居之后刷新家居信息

2.修改家居

1.需求分析
2.思路分析
3.后端实现
1.com/sun/furn/controller/FurnController.java 添加方法
java 复制代码
    /**
     * 根据id修改家居信息
     * @param furn
     * @return
     */
    @PutMapping("/update")
    public Result update(@RequestBody Furn furn) {
        furnService.updateById(furn);
        return Result.success();
    }
2.postman测试
4.前端实现
1.src/views/HomeView.vue 点击编辑回显表单数据
1.方法池
js 复制代码
    handleEdit(row) {
      // 转换为json并且给提示框赋值
      let row_string = JSON.stringify(row);
      this.form = JSON.parse(row_string)
      //显示提示框
      this.dialogVisible = true
    }
2.结果展示
2.src/views/HomeView.vue 修改家居
1.方法池 save方法根据form的id来判断是添加家居还是修改家居
js 复制代码
    // 点击确定时触发,提交添加信息的表单
    save() {
      //根据id来区分是添加还是修改
      //添加逻辑
      if (!this.form.id) {
        request.post("/api/save", this.form).then(
            res => {
              console.log("res", res)
              this.dialogVisible = false
              // 刷新家居信息
              this.list()
            }
        )
      }
      else {
        //修改逻辑
        request.put("/api/update", this.form).then(
            res => {
              //修改成功则弹出提示框
              if (res.code === "200") {
                this.$message({
                  type: "success",
                  message: "更新成功!"
                })
              } else  {
                this.$message({
                  type: "error",
                  message: "更新失败!"
                })
              }
              this.dialogVisible = false
              // 刷新家居信息
              this.list()
            }
        )
      }
    }
2.异步问题
  • 这里的添加逻辑和修改逻辑,有重复的代码,但是不能够提到if-else后
  • 原因是axios请求是异步的,必须保证请求操作的原子性,否则会出问题
  • 只要发送一个axios请求,主程序会跟axios请求并发执行
5.结果展示

3.删除家居

1.需求分析
2.com/sun/furn/controller/FurnController.java 添加方法
java 复制代码
    /**
     * 根据id删除家居
     * @return
     */
    @DeleteMapping("/del/{id}") //这里使用路径变量的方式
    public Result delete(@PathVariable("id") Integer id) {
        furnService.removeById(id);
        return Result.success();
    }
3.postman测试
4.前端实现
1.src/views/HomeView.vue 添加确认删除提示框
js 复制代码
      <el-table-column fixed="right" label="操作" width="245">
        <template #default="scope">
          <el-button size="mini" @click="handleEdit(scope.row)" type="primary">编辑</el-button>
          <!-- 增加 popcomfirm 控件,确认删除 -->
          <el-popconfirm
              title="确定删除吗?" @confirm="handleDel(scope.row.id)">
            <template #reference>
              <el-button size="mini" type="danger">删除</el-button>
            </template>
          </el-popconfirm>
        </template>
      </el-table-column>
2.src/views/HomeView.vue 方法池添加方法
js 复制代码
    //处理删除逻辑
    handleDel(id) {
      request.delete(`/api/del/${id}`).then(
        res  => {
          if (res.code === "200") {
            this.$message({
              type: "success",
              message: "删除成功!"
            })
          } else {
            this.$message({
              type: "error",
              message: "删除失败!"
            })
          }
          //刷新页面
          this.list()
        }
    )
    }
5.结果展示
相关推荐
sky_ph7 分钟前
JAVA-GC浅析(二)G1(Garbage First)回收器
java·后端
涡能增压发动积12 分钟前
一起来学 Langgraph [第二节]
后端
疯狂的沙粒13 分钟前
在uni-app中如何从Options API迁移到Composition API?
javascript·vue.js·uni-app
TTDreamTT14 分钟前
SpringBoot十二、SpringBoot系列web篇之过滤器Filte详解
spring boot
hello早上好32 分钟前
Spring不同类型的ApplicationContext的创建方式
java·后端·架构
roman_日积跬步-终至千里32 分钟前
【Go语言基础【20】】Go的包与工程
开发语言·后端·golang
Revol_C1 小时前
【调试日志】我只是用wangeditor上传图片而已,页面咋就崩溃了呢~
前端·vue.js·程序员
HelloWord~2 小时前
SpringSecurity+vue通用权限系统2
java·vue.js
00后程序员2 小时前
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
后端
HyggeBest2 小时前
Mysql的数据存储结构
后端·架构