zoukankan      html  css  js  c++  java
  • vue scrolle在tab 中使用

    1. 使用npm 安装 
      npm i vue-scroller -S
      地址: https://github.com/wangdahoo/vue-scroller

    2. 引入 main.js:
      import Vue from 'vue'
      import VueScroller from 'vue-scroller'   Vue.use(VueScroller)

    3.页面使用

      1 <template>
      2     <div class="container" style="height:100%;overflow: scroll;">
      3         <section class="bg-white" style="height:100%;overflow: scroll;">
      4             <!-- navbar -->
      5             <mt-navbar class="page-part" v-model="selected">
      6                 <mt-tab-item :id="1">未完成</mt-tab-item>
      7                 <mt-tab-item :id="0">已完成</mt-tab-item>
      8             </mt-navbar>
      9             <!-- tabcontainer -->
     10             <mt-tab-container v-model="selected">
     11                 <scroller :on-infinite="infinite" ref="my_scroller">
     12                     <div style="height: 44px; margin-top: -44px;"></div>
     13                     <div class="itemContent clear" v-for="(item,index) in listData" :key="index" @click="toDetail(item.sign_url)">
     14                         <p class="itemTitle clear">
     15                             <span class="fl itemTitle-name">{{item.flow_id}}{{item.contract_name}}</span>
     16                             <span v-if="selected==0" :class="(item.sign_status_employee==1?'itemTitle-state-green':(item.sign_status_employee==3?'itemTitle-state-red':'itemTitle-state-gray'))" class="fr itemTitle-state">{{item.sign_status_employee | showState}}</span>
     17                             <span v-if="selected==1" class="fr itemTitle-state itemTitle-state-blue">待签署</span>
     18                         </p>
     19                         <div class="itemDetail m14">
     20                             <div class="fl itemTime">
     21                                 <p>开始日期:{{item.start_time}}</p>
     22                                 <p>失效日期:{{item.lose_efficacy_time}}</p>
     23                             </div>
     24                             <div  class="fr" v-if="selected==0">
     25                                 <div v-if="item.sign_status_employee==1" @click.stop="openDownload(item.flow_id)">
     26                                     <i class="itemBtn icon iconfont icon-upload_icon"></i>
     27                                 </div>
     28                             </div>
     29                         </div>
     30                     </div>
     31                 </scroller>
     32             </mt-tab-container>
     33         </section>
     34     </div>
     35 </template>
     36 
     37 <script>
     38     import { Navbar, TabItem, Toast, Indicator } from 'mint-ui';
     39     import { getListData, getDownloadUrl } from '@/api/api';
     40 
     41     export default {
     42         name: 'page-navbar',
     43         data() {
     44             return {
     45                 employeeId: '', //易路员工编号
     46                 selected: 1, //completed (0:已完成,1:未完成)
     47                 pageNo: 0,//当前页
     48                 pageSize: 10,//页面条数
     49                 maxpage: 0,//最大页码数
     50                 counts: 0,//总条数
     51                 listData: []//列表数据
     52             };
     53         },
     54         watch: {
     55             //监听tab切换
     56             selected: function(val, oldVal) {
     57                 this.pageNo = 0;
     58                 this.selected = val;
     59                 this.listData = [];
     60                 this.$refs.my_scroller.finishInfinite(false);  //详情见 备注
     61             }
     62         },
     63         mounted() {
     64             //截取易路员工编号
     65             this.employeeId = this.$utils.getUrlKey("accesskey");
     66 //            this.employeeId='yl001';
     67         },
     68         methods: {
     69             infinite(done) {
     70                 this.pageNo++; 
     71                 var self1 = this;
     72                 setTimeout(() => {
     73                     var params = {
     74                         accesskey: this.employeeId,
     75                         completed: this.selected,
     76                         page: this.pageNo,
     77                         pageSize: this.pageSize
     78                     };
     79                     //获取列表数据
     80                     getListData(params).then(res => {
     81                         if(res.data.code == 0) {
     82                             var re = res.data.model[0];
     83                             if(re.length > 0) {
     84                                 this.counts = re[0].rows;
     85                                 var n = re[0].rows;
     86                                 var m = this.pageSize;
     87                                 if(n % m > 0) {
     88                                     this.maxpage = parseInt(n / m) + 1;
     89                                 } else {
     90                                     this.maxpage = parseInt(n / m);
     91                                 }
     92                                 if(this.pageNo > this.maxpage) {
     93                                     self1.noData = "没有更多数据"
     94                                     done(true);
     95                                     return;
     96                                 } else {
     97                                     done();
     98                                     this.listData = this.listData.concat(res.data.model[0]);
     99                                 }
    100                             } else {
    101                                 self1.noData = "没有更多数据"
    102                                 done(true);
    103                                 return;
    104                             }
    105                         } else {
    106                             Toast({
    107                                 message: res.data.msg
    108                             });
    109                             done(true);
    110                             return;
    111                         }
    112                     })
    113                 }, 1500)
    114             },
    115 
    116             //row跳转详情页面
    117             toDetail(sign_url) {
    118                 console.log("列表id==" + sign_url)
    119                 window.location.href = sign_url;
    120             },
    121             //打开下载页面
    122             openDownload(flow_id) {
    123                 console.log("下载id==" + flow_id);
    124                 var params = {
    125                     flowId: 143
    126                 };
    127                 getDownloadUrl(params).then(res => {
    128                     console.log(res);
    129                     if(res.data.code == 0) {
    130                         window.location.href = res.data.model[0].downloadUrl;
    131                     }
    132                 })
    133             }
    134         }
    135     }
    136 </script>
    137 <style rel="stylesheet/less" lang="less" scoped>
    138     .container {
    139         overflow: auto;
    140         -webkit-overflow-scrolling: touch;
    141         /*修改nav默认样式*/
    142         .mint-navbar .mint-tab-item.is-selected {
    143             color: #788897 !important;
    144         }
    145         .mint-tab-item {
    146             .mint-tab-item-label {
    147                 font-size: 18px !important;
    148             }
    149         }
    150         .page-part {
    151             margin-bottom: 2px;
    152         }
    153         .scroller {
    154             overflow: scroll;
    155         }
    156         .itemContent {
    157             border-top: 1px solid #F2F2F2;
    158             padding: 20px 0;
    159             .itemTitle {
    160                 color: #2b2b2b;
    161                 margin: 0 14px;
    162                 .itemTitle-name {
    163                     font-weight: bolder;
    164                     font-size: 16px;
    165                 }
    166                 .itemTitle-state {
    167                     padding: 0 6px;
    168                     height: 16px;
    169                     line-height: 16px;
    170                     border-radius: 2px;
    171                 }
    172                 .itemTitle-state-blue {
    173                     border: 1px solid #617fde;
    174                     color: #617fde
    175                 }
    176                 .itemTitle-state-red {
    177                     border: 1px solid #f05d6e;
    178                     color: #f05d6e;
    179                 }
    180                 .itemTitle-state-green {
    181                     border: 1px solid #24c875;
    182                     color: #24c875;
    183                 }
    184                 .itemTitle-state-gray {
    185                     border: 1px solid #d8d8d8;
    186                     color: #d8d8d8
    187                 }
    188             }
    189             .itemDetail {
    190                 .itemTime {
    191                      calc(100% - 85px);
    192                     color: #bebebe;
    193                 }
    194                 .itemBtn {
    195                     padding: 0 14px;
    196                     height: 18px;
    197                     line-height: 18px;
    198                     color: #A4ACB6;
    199                 }
    200             }
    201         }
    202     }
    203 </style>                                                
     备注: finishInfinite(isNoMoreData :Boolean)   当参数为false时,上拉获取数据可以重新调用。
    当参数为true,上拉获取数据回调函数停止使用,下拉下部不再显示loading,会显示‘’暂无更多数据


    效果如下:





  • 相关阅读:
    ubuntu 16.04上源码编译glog和gflags 编写glog-config.cmake和gflags-config.cmake | compile glog and glags on ubuntu 16.04
    Windows 10上源码编译glog和gflags 编写glog-config.cmake和gflags-config.cmake | compile glog and glags on windows from source
    windows 10上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on windows 10
    Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04
    如何在C++中使用boost库序列化自定义class ?| serialize and deserialize a class in cpp with boost
    Ubuntu 16.04上源码编译Poco并编写cmake文件 | guide to compile and install poco cpp library on ubuntu 16.04
    Windows 10上源码编译Poco并编写httpserver和tcpserver | compile and install poco cpp library on windows
    ubuntu 16.04 和 windows 10系统安装mysql 允许远程访问 | mysql user guide on ubuntu 16.04 and windows 10
    编写自定义cmake配置文件FindXXX.cmake或者xxx-config.cmake | cmake with user defined entry
    [Part 4] 在Windows 10上源码编译PCL 1.8.1支持VTK和QT,可视化三维点云
  • 原文地址:https://www.cnblogs.com/zhaozhenzhen/p/10748814.html
Copyright © 2011-2022 走看看