• 通用后台管理系统前端界面Ⅹ——前端数据表格的删除、查找


    删除操作

     1、拿到id或者行数据对象

    2、查看后端接口方法,写api方法,将操作连接上后端

    后端请求操作成功,但是前端数据表格未更新,最简单的一种方法数据删除后要重新获取数据===》 

     依旧显示成功,但是前端数据表格未变化,排查后,看封装请求方法的api.js文件,发现:1、方法没有获取参数;2、url有问题

    错误的:                                                        正确的:

     查询操作  &   刷新(重置条件)操作

     1、找合适的组件

    2、引入页面,按需修改,绑定点击事件使用

    调整样式

     3、绑定输入框,获取输入框数据

    4、查看后端接口,封装前端api接口。

    查询之前做数据表格渲染的时候,已经封装过一次,但查的不是一个,而是全部数据,查看封装的查询api方法:

    发先封装好的api接口,是有接收参数的,当调用时不传参,则默认查所有。

    所以条件查询可以沿用之前的接口,直接调用,调用的时候传的参数是输入框对象。

    而重置则是先将数据对象内容清空后,再查询即查所有。

    删除前:删除后: 

     InfoList.vue

    1. <template>
    2. <div class="InfoList">
    3. <el-form :inline="true" :model="formInline" class="demo-form-inline" size="small">
    4. <el-form-item label="姓名">
    5. <el-input v-model="formInline.name" placeholder="请输入姓名">el-input>
    6. el-form-item>
    7. <el-form-item>
    8. <el-button type="primary" @click="find()">查询el-button>
    9. el-form-item>
    10. <el-form-item>
    11. <el-button type="danger" @click="refresh()">刷新el-button>
    12. el-form-item>
    13. el-form>
    14. <el-table
    15. :data="compData"
    16. height="450"
    17. border
    18. style="width: 100%"
    19. :default-sort="{ prop: 'number', order: 'Ascending' }"
    20. >
    21. <el-table-column type="selection" width="55"> el-table-column>
    22. <el-table-column prop="number" label="学号" align="center" sortable>
    23. el-table-column>
    24. <el-table-column prop="name" label="姓名" align="center">
    25. el-table-column>
    26. <el-table-column prop="sex_text" label="性别" align="center">
    27. el-table-column>
    28. <el-table-column prop="age" label="年龄" align="center" sortable>
    29. el-table-column>
    30. <el-table-column prop="class" label="班级" align="center">
    31. el-table-column>
    32. <el-table-column prop="state_text" label="状态" align="center">
    33. el-table-column>
    34. <el-table-column prop="address" label="地址" align="center">
    35. el-table-column>
    36. <el-table-column prop="phone" label="联系方式" align="center">
    37. el-table-column>
    38. <el-table-column fixed="right" label="操作" align="center">
    39. <template slot-scope="scope">
    40. <el-button
    41. @click="del(scope.row)"
    42. icon="el-icon-delete"
    43. type="danger"
    44. size="mini"
    45. circle
    46. >el-button>
    47. <el-button
    48. type="primary"
    49. icon="el-icon-edit"
    50. size="mini"
    51. circle
    52. >el-button>
    53. template>
    54. el-table-column>
    55. el-table>
    56. <el-pagination
    57. @size-change="handleSizeChange"
    58. @current-change="handleCurrentChange"
    59. :current-page="currentPage"
    60. :page-sizes="[5, 10, 20, 30, 50]"
    61. :page-size="pageSize"
    62. layout="total, sizes, prev, pager, next, jumper"
    63. :total="total"
    64. >
    65. el-pagination>
    66. div>
    67. template>
    68. <script>
    69. import { Info, InfoDel } from "@/api/api.js";
    70. export default {
    71. data() {
    72. return {
    73. tableData: [],
    74. currentPage: 1, //当前页数
    75. pageSize: 10, //每页显示条数
    76. total: 0,
    77. formInline: {
    78. name: ''
    79. }
    80. };
    81. },
    82. created() {
    83. this.getData();
    84. },
    85. computed: {
    86. compData() {
    87. return this.tableData.slice(
    88. (this.currentPage - 1) * this.pageSize,
    89. this.currentPage * this.pageSize
    90. );
    91. },
    92. },
    93. methods: {
    94. find(){
    95. this.getData(this.formInline)
    96. },
    97. refresh(){
    98. this.formInline = {}
    99. this.getData(this.formInline)
    100. },
    101. handleSizeChange(val) {
    102. this.pageSize = val;
    103. this.currentPage = 1;
    104. },
    105. handleCurrentChange(val) {
    106. this.currentPage = val;
    107. },
    108. getData(params) {
    109. Info(params).then((res) => {
    110. console.log(res.data);
    111. if (res.data.status === 200) {
    112. this.total = res.data.total;
    113. this.tableData = res.data.data;
    114. this.tableData.forEach((item) => {
    115. item.sex === 1 ? (item.sex_text = "男") : (item.sex_text = "女");
    116. item.state === "1"
    117. ? (item.state_text = "已入校")
    118. : item.state === "2"
    119. ? (item.state_text = "未入校")
    120. : (item.state_text = "休学中");
    121. });
    122. }
    123. });
    124. },
    125. del(row) {
    126. console.log(row);
    127. InfoDel(row.id).then((res) => {
    128. if (res.data.status === 200) {
    129. this.$message({ message: res.data.message, type: "success" });
    130. this.getData();
    131. }
    132. });
    133. },
    134. },
    135. };
    136. script>
    137. <style lang="scss">
    138. .InfoList {
    139. .demo-form-inline {
    140. text-align: left;
    141. }
    142. .el-pagination {
    143. text-align: left;
    144. margin-top: 20x;
    145. }
    146. }
    147. style>

    api.js 

    1. //列表信息的删除接口
    2. export function InfoDel(id){
    3. return service({
    4. method: 'delete',
    5. url: `/students/${id}`
    6. })
    7. }
  • 相关阅读:
    关于游戏公司组织架构的小讨论
    PMP认证证书的续证费用是多少?
    Github操作
    Java课设设计-酒店管理系统
    基于RPC接口的业务侧流量回放
    javascript二维数组(20)JSON对象
    Ubuntu打开VMware时报VMware Kernel Module Updater错时
    2022.08.01 洛谷P7845 「dWoi R2」Change
    【第三章:Java开发岗:Redis篇】
    centos7安装erlang23.3.4.11及rabbitmq3.9.16版本
  • 原文地址:https://blog.csdn.net/qq_45947664/article/details/128023093