删除功能与添加功能遇到的问题

hello 今天我们来一起看看  删除功能常见的小bug 与添加功能的细节优化吧~

删除功能:

   步骤: 

   交互效果

        1.点击表格删除按钮事件,显示弹框 询问用户是否确定删除

        2.用户点击确定按钮之后进行删除操作(封装api,以备调用)

        3.用户点击取消按钮之后关闭弹框不进行任何操作

        elementUI中提供的弹出框

   删除功能逻辑实现

        1提炼一个单独的删除功能

        2.根据id去发ajax来做删除

        3.提示用户操作成功 调用删除功能

        4.更新页面,重发请求

        5.在删除按钮的回调函数中 弹出确认框, 并在用户确认删除时去调用删除功能


单独封装的请求   接收传过来的id
async doDel(id) {
  try {
    const res = await 删除接口要根据id来进行删除(id)
    console.log(res)
    // 1. 提示
    this.$message.success('删除成功')

    // 2. 重新请求
    this.调用单独封装的请求数据接口()

  } catch (err) {
    console.log(err)
    this.$message.error('删除失败')
  }
},


// 用户点击了删除 传入id 传给调用的接口
  hDel(id) {
     // 询问框  点击了确认进入.then 点击取消进入.catch
    this.$confirm('此操作将永久删除该角色, 是否继续?', '提示', {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }).then(() => {

       // 确认删除调用单独封装的接口 并给他传入id
      this.doDel(id)

    }).catch((err) => {
       // 点击取消 提示一下
      console.log(err)
      this.$message({
        type: 'info',
        message: '已取消删除'
      })
    })
  }

会遇到的问题: 删除分页数据的异常处理

   问题: 如果删除最后一页的最后一条数据之后,页面会显示不正常

   思路: 在删除成功之前,去检测一下存放数据的地方,当前删除的数据是否是当前页码的最后一条数据,如果是,就把页码-1,再发请求

data(){
 return{

    pageParams: {
        page: 1, // 页码数
        pagesize: 5 // 每页几条数据
      },

}}






async doDel(id) {
  try {
    const res = await deleteRole(id)
    console.log(res)
    // 1. 提示
    this.$message.success('删除成功')

    // 2. 如果当前表格中只有一条,删除之后自动请求上一页数据
     //判断当前存放数据list 里面的数据长度   等于1是因为 在删除之前数据还没来的级更新 常看Natwok
+    if (this.list.length === 1) {
        // 若果是 把当前的页码减减
+      this.pageParams.page--
+      if (this.pageParams.page <= 0) {  // 保险起见不能 如果删除完等于0  就让他等于1 
+        this.pageParams.page = 1    
+      }
+    }

    // 3. 在重新请求
    this.loadRoles()
  } catch (err) {
    console.log(err)
    this.$message.error('删除失败')
  }
}

添加功能:

        基本要求

          1. 点击新增角色事件 展示弹框

          2.弹框中有两个表单项:角色名称和角色描述,其中角色名称为必填项

          3.点击确定按钮先进行表单验证,验证通过之后调用新增接口创建角色

          4.点击取消按钮弹框关闭,并清空表单内容及验证内容

<!-- 新增弹框 -->
<el-dialog
    标题
   title="编辑弹层" 
    防止点击空空白处也会关闭页面
   :close-on-click-modal="false"
    防止按esc键关闭弹窗
   :close-on-press-escape="false"
    控制显示隐藏
   :visible.sync="showDialog">

  <el-form ref="roleForm" :model="roleForm" :rules="rules" label-width="100px">

    <el-form-item label="角色名称" prop="name">
      <el-input v-model="roleForm.name" />
    </el-form-item>

    <el-form-item label="角色描述">
      <el-input v-model="roleForm.description" />
    </el-form-item>

  </el-form>
  <!-- 底部 -->
  <el-row slot="footer" type="flex" justify="center">

    <el-col :span="6">
      <el-button size="small">取消</el-button>
      <el-button size="small" type="primary" @click="hSubmit">确定</el-button>
    </el-col>

  </el-row>
</el-dialog>

在data中补充添加3个数据项:

showDialog: 来表示弹层是否关闭

roleForm:表单数据,具体的字段名称与后端接口一致

rules:验证规则

data () {
  return {
    显示隐藏
    showDialog:false,
    自己定义的表单数据 要与接口文档要求的名称一致  添加时要显示true
    roleForm:{
      name: '',
      description: ''
    },
    校验规则
    rules:{
      name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }]
    }
}

思路

确定按钮要通过表单校验,调用接口,成功调用之后要完成三件事情

1.重新拉取角色列表,让新增的数据得以显示

2.提示用户本次操作已成功

3.关闭弹框

封装接口导出  并在用的组件导入

额外封装一个添加方法来实现添加功能。当添加成功后:

 1.重新加载数据

 2.提示用户

 3.关闭弹层

//单独封装的添加方法 
async doAdd() {
  try {
    const res = await 添加方法接口 参数是表单的数据后台接口要求(this.roleForm)
    console.log(res)

    成功添加后更新数据
    this.loadRoles()

    提示用户
    this.$message.success('添加成功')

    关闭弹窗
    this.showDialog = false
  } catch (err) {
    失败提示
    this.$message.error('添加失败')
    console.log(err)
  }
}  

手动兜底验证

// 用户点击了保存 手动兜底验证
hSave() {
    前提需要给表单绑定ref='from' 这里是什么 下面必须一样的名称
  this.$refs.from.validate(valid => {
    if (valid) {
      // 成功 调用接口
    	this.doAdd()
    }
  })
}

添加数据页码跳转不正常数据过去了 但是页码不跟着变动

elementUI中页码有一个事件  

<el-pagination
     layout="prev, pager, next"
     :total="total"
   // 这个事件是elementUI自带的能监听到页码的变化 curpage 单独在data中定义的数据
    //  this.curPage = this.pageParams.page 在更新数据接口的页码数 同步curpage page是页码数

+    :current-page.sync="curPage"

     :page-size="pageParams.pageSize"
     @current-change="hCurrentChange"
/>

计算属性 计算当前页码是不是漫数据 和第几页是数据

在计算计算属性中定义个方法

computed: {

    // 计算表格中最大的页码
    maxNum() {
            向上取整    一共几条数据      一个页面几个数据
      return Math.ceil(this.total / this.pageParams.pageSize)
    },
    // 计算最后一页是不是满的
    isLastPageFulled: function() {
             一共几条数据        页面数据是不是满的或者没有
      return this.total % this.pageParams.pageSize === 0
    }
  },

修改事件

async doAdd() {
      try {
        // 1. 调用接口
        const res = await addRole(this.form)
        // 2. 关闭弹层
        this.showDialog = false
        // if(表格的最后一页是满) {
        //   想查看最新添加的数据,要跳到最大页码的下一页
        //  }
               计算属性如果是没数据等于true
       + if (this.isLastPageFulled) {
              让页码数 +1付给data数据中的页码
       +   this.pageParams.page = this.maxNum + 1
       + } else {
                没有就是当前的页码
          // 想查看最新添加的数据,要跳到最大页码
       +   this.pageParams.page = this.maxNum
        }
       
        // 3. 重发请求
        this.loadRoles()
        console.log(res)
      } catch (err) {
        console.log(err)
      }
    },

好了 我们下次再见

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Javaweb项目房屋管理系统中,删除添加和修改功能可能会遇到一些常见问题。以下是一些可能出现的问题: 1. 数据库连接问题:在实现这些功能时,可能会遇到数据库连接失败的问题。这可能是由于数据库配置错误或数据库服务器不可用引起的。解决方法是检查数据库配置是否正确,并确保数据库服务器正常运行。 2. 输入验证问题:在添加和修改功能中,用户输入的数据需要进行验证,以确保数据的合法性和完整性。常见的问题包括缺少必填字段、输入格式错误等。解决方法是在前端和后端进行输入验证,例如使用JavaScript进行前端验证,并在后端使用正则表达式或其他验证方法进行验证。 3. 数据冲突问题:在多用户同时访问系统时,可能会出现数据冲突的问题。例如,两个用户同时删除同一个房屋,或者一个用户修改了某个房屋的信息,而另一个用户也在同时修改该房屋的信息。解决方法是使用事务管理和乐观锁等机制来处理并发访问,确保数据的一致性。 4. 错误处理问题:在删除添加和修改功能中,可能会出现各种错误,例如数据库操作失败、网络连接中断等。解决方法是在代码中适当地处理这些错误,并给用户提供友好的错误提示信息,以便他们了解出现了什么问题,并尽快解决。 5. 安全性问题:在进行删除添加和修改功能时,需要考虑系统的安全性。例如,防止未经授权的用户进行恶意操作或注入攻击。解决方法包括对用户身份进行验证、使用参数化查询来防止SQL注入等。 这些是在Javaweb项目房屋管理系统中实现删除添加和修改功能时可能遇到的一些常见问题。通过合理的设计和处理,可以确保这些功能的稳定和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值