• Vue3分页组件基础使用 以及 给表格增加自增序列


     分页组件使用

    1. <div class="demo-pagination-block">
    2. <el-pagination
    3. v-model:current-page="dataVo.pageNum"
    4. v-model:page-size="dataVo.pageSize"
    5. :page-sizes="[100, 200, 300, 400]"
    6. :small="small"
    7. :disabled="disabled"
    8. background="background"
    9. layout="total, prev, pager, next, jumper"
    10. :total="total"
    11. @size-change="handleSizeChange"
    12. @current-change="handleCurrentChange"
    13. />
    14. </div>

     1. - `

    ` 是一个用于展示分页组件的容器。
     2.- `<el-pagination>` 是 Element UI 提供的分页组件,可以实现分页功能。

    3. - `v-model:current-page="dataVo.pageNum"` 表示将 `dataVo.pageNum` 的值绑定到当前页数,通过 `v-model` 双向绑定,即可实现当用户点击页码时,自动更新 `dataVo.pageNum` 的值。

    4. - `v-model:page-size="dataVo.pageSize"` 表示将 `dataVo.pageSize` 的值绑定到每页显示数量,同样通过 `v-model` 双向绑定。

    5. - `:page-sizes="[100, 200, 300, 400]"` 是一个数组,表示用户可以选择的每页显示数量的选项。
    - `:small="small"` 表示是否使用小型分页样式,`small` 是一个变量。

    6. - `:disabled="disabled"` 表示是否禁用分页组件,`disabled` 是一个变量。

    7. - `background="background"` 表示是否使用背景色,默认为透明。

    8. - `layout="total, prev, pager, next, jumper"` 表示分页组件内部布局的顺序。

    9. - `:total="total"` 表示总共有多少条记录。

    10. - `@size-change="handleSizeChange"` 是一个事件监听器,当用户改变每页显示数量时,会执行 `handleSizeChange` 方法。

    11.- `@current-change="handleCurrentChange"` 是一个事件监听器,当用户改变当前页数时,会执行 `handleCurrentChange` 方法。

    script标签中

    1. <script setup>
    2. import { ref, nextTick, onMounted, onUnmounted, reactive , getCurrentInstance } from 'vue';
    3. import { getStandardList, getList, addStandardList } from '@/api/template/index'
    4. import { useRouter } from 'vue-router'
    5. const router = useRouter();
    6. const { proxy } = getCurrentInstance()
    7. onMounted(() => {
    8. getTemplateFn()
    9. });
    10. // 获取数据的数据
    11. const dataVo = reactive(
    12. {
    13. template: '',
    14. standard:'',
    15. pageSize:10,
    16. pageNum:1,
    17. }
    18. );
    19. // 条数
    20. const total = ref(0)
    21. // 分页方法 触发上一页下一页方法时 将当前页 当前条数赋予设定的变量 并执行重新获取数据的方法
    22. const handleSizeChange = (val) => {
    23. dataVo.pageSize = val
    24. getTemplateFn()
    25. }
    26. const handleCurrentChange = (val) => {
    27. dataVo.pageNum = val
    28. getTemplateFn()
    29. }
    30. // 表格数据
    31. let tableData = ref([]);
    32. // 获取表格数据
    33. function getTemplateFn() {
    34. //执行获取数据的请求
    35. getStandardList(dataVo).then(res => {
    36. console.log(res);
    37. tableData.value = res.data.data
    38. //将后台返回的总条数赋予设置的条数变量
    39. total.value = res.data.count
    40. })
    41. };
    42. </script>

     二, 序号自增

    1. <el-table-column label="序号" align="center" type="index" width="100">
    2. <template #default="scope">
    3. <span>{{ (dataVo.pageNum - 1) * dataVo.pageSize + scope.$index + 1 }}</span>
    4. </template>
    5. </el-table-column>

    //完整代码 

    1. <template>
    2. <div class="template-box">
    3. <!-- 表格 -->
    4. <el-table :data="tableData" border style="width: 100%" :header-cell-style="{ textAlign: 'center' }"
    5. :cell-style="{ textAlign: 'center' }" :fit="true">
    6. <el-table-column label="序号" align="center" type="index" width="100">
    7. <template #default="scope">
    8. <span>{{ (dataVo.pageNum - 1) * dataVo.pageSize + scope.$index + 1 }}</span>
    9. </template>
    10. </el-table-column>
    11. <el-table-column prop="templateName" label="基础模板名称" show-overflow-tooltip/>
    12. <el-table-column prop="standardName" label="评分标准名称" show-overflow-tooltip/>
    13. <el-table-column prop="createBy" label="创建人" width="180" />
    14. <el-table-column prop="createTime" label="创建时间" width="180" show-overflow-tooltip/>
    15. <el-table-column label="操作" align="center" width="180">
    16. <template #default="scope">
    17. <span @click="details(scope.row)">
    18. <img src="../../assets/images/look.png" alt="">
    19. </span>
    20. </template>
    21. </el-table-column>
    22. </el-table>
    23. <!-- 分页 -->
    24. <div class="demo-pagination-block">
    25. <el-pagination
    26. v-model:current-page="dataVo.pageNum"
    27. v-model:page-size="dataVo.pageSize"
    28. :page-sizes="[100, 200, 300, 400]"
    29. :small="small"
    30. :disabled="disabled"
    31. background="background"
    32. layout="total, prev, pager, next, jumper"
    33. :total="total"
    34. @size-change="handleSizeChange"
    35. @current-change="handleCurrentChange"
    36. />
    37. </div>
    38. </div>
    39. </template>
    40. <script setup>
    41. import { ref, nextTick, onMounted, onUnmounted, reactive , getCurrentInstance } from 'vue';
    42. import { getStandardList, getList, addStandardList } from '@/api/template/index'
    43. import { useRouter } from 'vue-router'
    44. const router = useRouter();
    45. const { proxy } = getCurrentInstance()
    46. onMounted(() => {
    47. getTemplateFn()
    48. });
    49. // 获取数据的数据
    50. const dataVo = reactive(
    51. {
    52. template: '',
    53. standard:'',
    54. pageSize:10,
    55. pageNum:1,
    56. }
    57. );
    58. // 条数
    59. const total = ref(0)
    60. // 表格数据
    61. let tableData = ref([]);
    62. // 获取表格数据
    63. function getTemplateFn() {
    64. //执行获取数据的请求
    65. getStandardList(dataVo).then(res => {
    66. console.log(res);
    67. tableData.value = res.data.data
    68. total.value = res.data.count
    69. })
    70. };
    71. // 跳转方法
    72. const details = (scope) => {
    73. // console.log(scope.templateId);
    74. router.push({path:'/evaluate/standard/detail',query: {id:scope.templateId} })
    75. }
    76. // 分页方法
    77. const handleSizeChange = (val) => {
    78. dataVo.pageSize = val
    79. getTemplateFn()
    80. }
    81. const handleCurrentChange = (val) => {
    82. dataVo.pageNum = val
    83. getTemplateFn()
    84. }
    85. </script>
    86. <style lang="scss" scoped>
    87. // 分页
    88. .el-pagination{
    89. justify-content: center;
    90. margin-top: 15px;
    91. }
    92. // 弹窗样式
    93. ::v-deep().el-dialog:not(.is-fullscreen){
    94. margin-top: auto !important;
    95. }
    96. </style>

  • 相关阅读:
    前后端分离毕设项目之产业园区智慧公寓管理系统设计与实现(内含源码+文档+教程)
    uboot DM驱动注册与初始化
    Python 内置函数详解 (2) 逻辑运算
    FPN模型
    Maven详细笔记
    【无人机】基于拓展卡尔曼滤波时序四旋翼无人机状态跟踪附matlab代码
    探索体感互动游戏的多重优势
    nginx 的使用
    专为年轻人打造!2022骨传导百元旗舰标杆,南卡Runner CC3重磅出击
    使用IDEA 将Eclipse java工程转为maven格式
  • 原文地址:https://blog.csdn.net/m0_65607651/article/details/132687879