当前位置: 首页 > news >正文

SSM项目实战-前端-添加分页控件-调正页面布局

1、Index.vue

<template><div class="common-layout"><el-container><el-header><el-row><el-col :span="24"><el-button type="primary" plain @click="toAdd">新增</el-button></el-col></el-row></el-header><el-main><el-row><el-col :span="24"><div style="widht:100%;border:0 solid red;"><el-table :data="schedulePageInfo.list" style="width: 800px;"><el-table-column label="编号" width="180"><template #default="scope"><div style="display: flex; align-items: center"><span style="margin-left: 10px">{{ scope.row.sid }}</span></div></template></el-table-column><el-table-column label="标题" width="180"><template #default="scope"><div style="display: flex; align-items: center"><span style="margin-left: 10px">{{ scope.row.title }}</span></div></template></el-table-column><el-table-column label="是否完成" width="180"><template #default="scope"><div style="display: flex; align-items: center"><span style="margin-left: 10px">{{ scope.row.completed ? '完成' : '未完成' }}</span></div></template></el-table-column><el-table-column label="其他操作"><template #default="scope"><el-button size="small" @click="handleEdit(scope.row)">Edit</el-button><el-button size="small" type="danger" @click="handleDelete(scope.row.id)">Delete</el-button></template></el-table-column></el-table></div></el-col></el-row></el-main><el-footer><el-row><el-col :span="24"><el-pagination layout="prev, pager, next" v-model:current-page="schedulePageInfo.pageNum":page-size="schedulePageInfo.pageSize":total="schedulePageInfo.total" @current-change="handleCurrentChange"/><el-dialog v-model="dialogFormVisible" title="Shipping address"><el-form :model="form"><el-form-item label="标题" ><el-input v-model="form.title" autocomplete="off" /></el-form-item><el-form-item label="Zones" ><el-radio-group v-model="form.completed"><el-radio :label="true">完成</el-radio><el-radio :label="false">未完成</el-radio></el-radio-group></el-form-item></el-form><template #footer><span class="dialog-footer"><el-button @click="dialogFormVisible = false">取消</el-button><el-button type="primary" @click="saveOrUpdate">确定</el-button></span></template></el-dialog></el-col></el-row></el-footer></el-container></div>
</template><script lang="ts" setup>
import {delSchedule, getScheduleList, saveSchedule, updateSchedule} from '../api/schedule.js';
import {onMounted, reactive, ref} from 'vue';
import {ElMessage, ElMessageBox} from "element-plus";
import {userStore} from '../store/sysUserStore';let currUser = userStore();let dialogFormVisible = ref(false);let form = reactive({id: 0,title: '',completed: false
})let form0 = reactive({id: 0,title: '',completed: false
})
let resetFormData = () => {Object.assign(form, form0);
}
let schedulePageInfo=reactive({total: 0,list:[],pageNum: 1,pageSize: 3,pages: 0,navigatepageNums: [],msg: '',
})
let scheduleList = reactive([])let queryvo=reactive({uid:1,pageNum: 1,
})let handleCurrentChange=(num)=>{queryvo.pageNum = num;loadData()
}let loadData = () => {getScheduleList(queryvo).then(response => {Object.assign(schedulePageInfo, response.data.data)})
}let saveOrUpdate = () => {if (form.id === 0) {save();} else {update();}
}let save = async () => {await saveSchedule(form)dialogFormVisible.value = falseresetFormData();loadData();
}let toAdd = () => {resetFormData();dialogFormVisible.value = true;
}onMounted(() => {queryvo.uid=currUser.uidqueryvo.pageNum=1loadData();
})let update = async () => {await updateSchedule(form)dialogFormVisible.value = falseloadData();
}interface scheduleList {id: Numbertitle: stringcompleted: boolean
}const handleEdit = row => {dialogFormVisible.value = true;Object.assign(form, row);
}
const handleDelete = id => {ElMessageBox.confirm('是否确认删除?','提示',{confirmButtonText: '是',cancelButtonText: '否',type: 'warning',}).then(async () => {await delSchedule(id)dialogFormVisible.value = falseloadData();}).catch(() => {ElMessage({type: 'info',message: '你取消了操作',})})
};
</script>

 2、@current-change

            <el-pagination layout="prev, pager, next" v-model:current-page="schedulePageInfo.pageNum":page-size="schedulePageInfo.pageSize":total="schedulePageInfo.total" @current-change="handleCurrentChange"/>

@current-change 是 Vue.js 的一个事件监听器,它监听的是current-page的变化。当current-page的值发生改变时,会触发这个事件,并执行handleCurrentChange方法。

在你的 <el-pagination> 组件中,v-model:current-page="schedulePageInfo.pageNum" 是一个双向数据绑定,它将 <el-pagination> 组件的当前页码与你的 Vue 实例的 schedulePageInfo.pageNum 属性绑定在一起。当用户通过 <el-pagination> 组件的 UI 改变当前页码时,schedulePageInfo.pageNum 的值也会相应地改变。

当 schedulePageInfo.pageNum 的值改变时(即当前页码发生改变),@current-change 事件就会被触发,然后调用 handleCurrentChange 方法。你可以在 methods 中定义 handleCurrentChange 方法,以处理当前页码变化后的逻辑。例如,你可能需要根据新的页码从服务器获取新的数据,或者更新 UI 来显示当前页码等。

http://www.lryc.cn/news/252304.html

相关文章:

  • C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现
  • nodejs+vue+elementui网上家电家用电器数码商城购物网站 多商家
  • 32.768KHz时钟RTC晶振精度PPM值及频差计算
  • SQL Server 数据库,创建数据表
  • Vue3引入markdown编辑器--Bytemd
  • JS实现基数排序
  • 【蓝桥杯】二分查找
  • 大于2T磁盘划分并挂接
  • 蓝桥杯每日一题2023.12.3
  • Nacos源码解读04——服务发现
  • SAP系统邮件功能配置 SCOT <转载>
  • 数据结构——二叉树(相关术语、性质、遍历过程)
  • 详细学习Pyqt5的9种显示控件
  • SpringBoot+vue美食外卖点餐系统的研究与设计
  • 行业分析:轻轨行业发展现状及市场投资前景
  • 智安网络|语音识别技术:从历史到现状与未来展望
  • 揭秘预付费电表怎么无线收费——方便快捷收费
  • OpenCV-Python:图像卷积操作
  • 创建Vue项目
  • T-SQL的多表查询
  • 适合学生备考的护眼台灯有哪些?五款公认优质台灯推荐
  • 机器人学英语
  • 51综合程序03-DS1302时钟
  • redis的缓存击穿,缓存穿透,缓存雪崩
  • AutoHotKey-study
  • Go to do list
  • JWT 认证机制
  • 内核启动时间信息打印
  • Web端专业级H264/H265 直播流播放器实现-JessibucaPro播放器
  • macOS sandbox 文件夹授权