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

1.显示家居信息

1.com/sun/furn/controller/FurnController.java 添加方法
    /*
    * 返回所有家居信息*/
    @RequestMapping("/furns")
    public Result listFurns() {
        List<Furn> list = furnService.list();
        return Result.success(list);
    }
2.postman测试

image-20240319090625391

3.src/views/HomeView.vue 修改el-table 并清空数据池tableData
    <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.方法池
    // 显示家居信息
    list() {
      request.post("/api/furns").then(
          res => {
            // 将返回的json对象数据赋值给tableData
            this.tableData = res.data.data
          }
      )
    }
2.created阶段调用list方法

image-20240319092556900

3.结果展示

image-20240319092615390

5.src/utils/request.js 添加response 拦截器,对返回结果拦截,统一处理
// 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 修改取数据方式

image-20240319093315273

7.src/views/HomeView.vue 添加家居之后刷新家居信息

image-20240319094110982

2.修改家居

1.需求分析

image-20240319094217854

2.思路分析

image-20240319094336314

3.后端实现
1.com/sun/furn/controller/FurnController.java 添加方法
    /**
     * 根据id修改家居信息
     * @param furn
     * @return
     */
    @PutMapping("/update")
    public Result update(@RequestBody Furn furn) {
        furnService.updateById(furn);
        return Result.success();
    }
2.postman测试

image-20240319095522862

4.前端实现
1.src/views/HomeView.vue 点击编辑回显表单数据
1.方法池
    handleEdit(row) {
      // 转换为json并且给提示框赋值
      let row_string = JSON.stringify(row);
      this.form = JSON.parse(row_string)
      //显示提示框
      this.dialogVisible = true
    }
2.结果展示

image-20240319102046851

2.src/views/HomeView.vue 修改家居
1.方法池 save方法根据form的id来判断是添加家居还是修改家居
    // 点击确定时触发,提交添加信息的表单
    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.结果展示

image-20240319105626984

image-20240319105641082

3.删除家居

1.需求分析

image-20240319105742480

2.com/sun/furn/controller/FurnController.java 添加方法
    /**
     * 根据id删除家居
     * @return
     */
    @DeleteMapping("/del/{id}") //这里使用路径变量的方式
    public Result delete(@PathVariable("id") Integer id) {
        furnService.removeById(id);
        return Result.success();
    }
3.postman测试

image-20240319110413891

4.前端实现
1.src/views/HomeView.vue 添加确认删除提示框
      <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 方法池添加方法
    //处理删除逻辑
    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.结果展示

image-20240319112448832

image-20240319112503818

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 09:14:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 09:14:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 09:14:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 09:14:04       20 阅读

热门阅读

  1. 【c语言篇】经典100例之第1-5例

    2024-03-20 09:14:04       19 阅读
  2. 企业产品网络安全建设实录日报规划

    2024-03-20 09:14:04       23 阅读
  3. 项目当中 签到功能 +多级缓存+介绍一下点赞功能

    2024-03-20 09:14:04       20 阅读
  4. python Jira库如何修改一个issue的status

    2024-03-20 09:14:04       23 阅读
  5. 爬虫基本原理介绍、实现以及问题解决

    2024-03-20 09:14:04       17 阅读
  6. 【Docker】Jaeger 容器化部署

    2024-03-20 09:14:04       18 阅读
  7. 单例模式:双重效验锁的懒汉实现方式

    2024-03-20 09:14:04       18 阅读
  8. opencv | 编译opencv卡在ADE: Download: v0.1.1f.zip

    2024-03-20 09:14:04       21 阅读
  9. PHP与Spring Boot在实现功能上的比较

    2024-03-20 09:14:04       17 阅读
  10. 关于sftp限制登录默认目录若干问题

    2024-03-20 09:14:04       17 阅读
  11. Go语言学习12-反射和Unsafe

    2024-03-20 09:14:04       20 阅读
  12. go 解决货币计算的难题:避免浮点数陷阱

    2024-03-20 09:14:04       17 阅读
  13. Rust 的 PhantomData

    2024-03-20 09:14:04       21 阅读
  14. ES进程除了kill之外,有什么优雅关闭的方式吗?

    2024-03-20 09:14:04       19 阅读