vue,element-ui,springboot,pageHelper操作多个页面的分页实例~~(自己记下的,便于学习)

对于有多个页面,切换,并要求每个页面进行上下页时wo的思路:记一笔,日后可以看看

后台查出3个页面分别对应的数据,得到pageInfo时,将3个页面的pageInfo用一个共同的pageInfo接,这样传前台的pageInfo只有一个,但是我们怎么知道传到前台的是哪个页面的pageInfo呢,很简单,将这2个参数放到返回给前台的json对象中,一个是pageInfo,另一个是针对页面的状态码,并且将这个json对象公共声明,每写完一个查询方法,就将这个json对象重新赋值,这样每次操作传到前台的就只有一个json对象,而前台可以根据带的状态吗来判断当前操作的那个页面,就可以对当前页面的pageInfo进行操作了,所有pageInfo的属性都是针对当前页面操作的,切记每次操作上下页,尾页时成功时一定要将当前页面pageInfo的pageNum重新赋值,因为我默认查询的就是第一页首页,所以操作首页时也只是调用页面里写好的查询方法,所以不用对当前页码进行操作~~
1 前台页面表格格式~

<template>
<div class="home_css">
  <el-container>
    <el-header>
      <h4>欢迎来到你的事项安排页呢~<i class="el-icon-notebook-2"></i></h4>
    </el-header>
    <el-container>
      <el-aside width="200px" align="center">
        <el-button size="medium" @click="Getalllist">所有事项<i class="el-icon-reading el-icon--right"></i></el-button>
      </el-aside>
      <el-container>
        <el-main>
          <!--数据显示-->
          <el-table :data="tableData" border  align="center">
            <el-table-column  label="id"  width="10" v-show="false">
              <template scope="scope"></template>
            </el-table-column>
            <el-table-column label="名字"  width="120">
              <template scope="scope">
                <span>{{scope.row.name}}</span >
              </template>
            </el-table-column>
            <el-table-column    label="内容" width="180">
              <template scope="scope"><span>{{scope.row.content}}</span ></template>
            </el-table-column>
            </el-table>
            <!--分页开始~~ -->
            <div>
            <el-button-group class="textpage">
              <el-button type="primary"  icon="el-icon-location-outline" @click="firstpage">
                首页</el-button>
              <el-button type="primary" icon="el-icon-arrow-left" :disabled="leftpagebutton" @click="leftpage">
                上一页</el-button>
              <el-button type="primary" :disabled="rightpagebutton" @click="rightpage" >
                下一页<i class="el-icon-arrow-right el-icon--right" ></i></el-button>
              <el-button type="primary" @click="laterpage">
                尾页<i class="el-icon-location-information el-icon--right"></i></el-button>
            </el-button-group>
          </div>
           <el-footer align="center">
          <h4>今天也要加油呢~<i class="el-icon-dessert"></i></h4>
        </el-footer>
         </el-container>
    </el-container>
  </el-container>
  </div>
</template>

2 定义前台de参数~~

<script>
    import Qs from 'qs';
    export default {
        data() {
            return {
                tableData: [{
                    id:'',
                    name: '',
                }],
              //分页对象pageInfo
                page_info:{
                    pageNum:'',//当前第几页
                    pages:'',//共几页
                    total:'',//共几条记录
                },
                //页面对应的状态码,所有事项1,未完成试事项2,完成事项3
                pageInfo_code:'',
                };
        },

3 开始定义前台的定义方法喽~

 methods: {
          Getalllist:function(){
                alert("进入Gettodolist~");
                if(this.leftpagebutton=true){ //这是设置按钮是否禁用,如果按钮在别的页面禁用了,我就改成可以用
                    this.leftpagebutton=false;
                }
                this.$http.get('/tolist/getAllLists')
                    .then(response =>{
                        if(response.data.code===0){
                            //将页面状态码给本页面的对应的页面状态码对象,用于下面方法判断对那个页面进行操作~
                            this.pageInfo_code=response.data.pagecode;
                            //将分页对象给本页面的分页对象 重点~~
                            this.page_info=response.data.pageinfo;
                            this.tableData=[];
                            this.tableData=response.data.sata;
                            console.log(response);
                        }
                    }).catch(error =>{
                        console.log(error);
                    });
            },
             //上一页方法,后台响应的结果有可按和不可按 ->bingo
            leftpage:function () {
                if(this.page_info.pageNum===1){ //证明当前页面已经是第一页了
                    //上一页按钮禁用
                    //this.leftpagebutton=true;
                    alert("当前已经是第一页了~~")
                }else{
                    //发送请求
                    this.$http.post('/tolist/PageButton',
                        Qs.stringify({
                              pageNum:(this.page_info.pageNum-1),  //不是第一页就将当前页面减1 发送给后台
                              pageInfo_code:this.pageInfo_code
                            })
                        ).then(response =>{
                            if(response.data.code===0){
                                //将当前页码减一
                                this.page_info.pageNum=this.page_info.pageNum-1;
                                alert("leftpage当前页"+this.page_info.pageNum);
                                this.tableData=response.data.sata;
                            }
                        }).catch(error =>{
                            console.log(error);
                    })
                }
            },

            //下一页方法 ->bingo
            rightpage:function () {
                //如果当前页面已经是最后一页
                if(this.page_info.pageNum>=this.page_info.pages){
                    alert("当前已经是最后一页了~~")
                }else{
                    this.$http.post('/tolist/PageButton',
                        Qs.stringify({
                            pageNum:(this.page_info.pageNum+1),
                            pageInfo_code:this.pageInfo_code}))
                        .then(response =>{
                            if(response.data.code===0){
                                //将当前页码加一
                                this.page_info.pageNum=this.page_info.pageNum+1;
                                alert("rightpage当前页"+this.page_info.pageNum);
                                this.tableData=response.data.sata;
                            }
                        }).catch(error =>{
                        console.log(error);
                    })
                }
            },

            //尾页方法
            laterpage:function () {
                alert("laterpage~");
                //判断当前操作的是否为尾页
                if(this.page_info.pageNum===this.page_info.pages){
                    alert("已经在尾页喽~"+this.page_info.pageNum);
                }else{//不是尾页则向后台发送请求要数据
                    this.$http.post('/tolist/PageButton',
                         Qs.stringify({
                            pageNum:this.page_info.pages,
                            pageInfo_code:this.pageInfo_code}))
                        .then(response =>{
                            if(response.data.code===0){
                                //将当前页码改成尾页
                                this.page_info.pageNum=this.page_info.pages;
                                this.tableData=response.data.sata;
                            }
                        }).catch(error =>{
                            console.log(error);
                    });
                }
            }
    }

4 后台service层

/**
	 * 定义分页对象
	 */
	private PageInfo<ListBean> pageInfo =null;
	/**
	 * 得到所有事项的方法实现类
	 * pageinfoAll_code =1;
	 * @return
	 */
	@Override
	public JsonList getAllListService(Integer pageNum,Integer pageSize) {
		PageHelper.startPage(pageNum,pageSize);//进行分页
		List<ListBean> arr=listMapper.getAllLists();//从mapper层得到数据
		pageInfo = new PageInfo<ListBean>(arr);//对其进行分页
	    JsonList jsonList=new JsonList();
		if (arr!=null){
			jsonList.setCode(JsonResponse.success);
			jsonList.setMsg(JsonResponse.successMsg);
			jsonList.setSata(arr);
			//将分页标识符给到响应到页面的json的对象
			jsonList.setPagecode(JsonResponse.pageinfoAll_code);
			//将分页对象给到响应到页面的json对象
			jsonList.setPageinfo(pageInfo);
			return jsonList;
		}
		jsonList.setCode(JsonResponse.fail);
		jsonList.setMsg(JsonResponse.failMsg);
		return jsonList;
	}
/**
	 * 上一页,下一页方法,前台传来想要去的第几页页数,以及代表要操作那个页面的状态码
	 * 以及将这页的数据传回去,
	 * pageNum当前页数
	 * pageSize每页的数据 用默认值即可不用传数据
	 * pageInfo_code 代表每页的状态码
	 */
	public JsonList PageButton(Integer pageNum,Integer pageSize,Integer pageInfo_code){
		System.out.print("pageNum~~"+pageNum
				+"pageSize~~~"+pageSize+"pageInfo_code~~~"+pageInfo_code);
		JsonList jsonList=new JsonList();
		//得到总页数
		int countPages=pageInfo.getPages();
		//如果当前页面符合要求,才会进行操作
		if((pageNum<=countPages)&&(pageNum>0)) {
			//所有事项页面,所有事项方法返回值也是json类型
			if (pageInfo_code == 1) {
				return getAllListService(pageNum, pageSize);
			}
			//未完成事项页面
			else if (pageInfo_code == 2) {
				return getYesListsService(pageNum, pageSize);
			}
			//完成事项页面
			else if (pageInfo_code == 3) {
				return getNoListsService(pageNum, pageSize);
			}
		}
		return null;
	}

5 后台控制层

@RestController
public class ToListController {
	/**
	 * 注入得到所有事项的服务层
	 */
	@Autowired
	private ListServiceImp listServiceImp;

	/**
	 * 访问得到所有事项的方法
	 */
	@GetMapping(value = "/tolist/getAllLists")
	public JsonList getAllCon(
			@RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum,
			@RequestParam(defaultValue = "6",value = "pageSize")Integer pageSize){
		return listServiceImp.getAllListService(pageNum,pageSize);
	}
	/**
	 *上下页,默认显示pageInfo_code指定的第一页数据
	 */
	@PostMapping(value = "/tolist/PageButton")
	public JsonList getPageButton(
			@RequestParam(defaultValue = "1",value = "pageNum")Integer pageNum,
			@RequestParam(defaultValue = "6",value = "pageSize") Integer pageSize,
			Integer pageInfo_code){
		return listServiceImp.PageButton(pageNum,pageSize,pageInfo_code);
	}
}

到此 针对多个页面的分页实例完成,其实就是多一个代表页面的状态吗参数,当然啦我这个是比较笨的方法,有好的方法还请赐教呢~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值