zoukankan      html  css  js  c++  java
  • Vue数据列表倒计时展示

     

    <script src="//unpkg.com/vue/dist/vue.js"></script>
    <script src="//unpkg.com/element-ui@2.13.2/lib/index.js"></script>
    <template>
       <div class="all" ref="providall">
            <el-table stripe height="calc(100vh - 240px)" class="mt-10" v-for="(item) in iconlistall" >
              <el-table-column>
                <div v-if="item.pre_at > 0">计时:{{time(item.pre_at)}}</div>
                <div v-else>计时: 已超时</div>
              </el-table-column>
            </el-table>
       </div>
    </template>

    <script>
    export default {
      data() {
        return {
          iconlist: [],
          ticker: null,
          d: "",
          h: "",
          m: "",
          s: ""
        };
      },
      computed:{ //这里是监听自定义数组的变化 因为有一个计时器每秒都会减去数组中字段的时间 所以 数组是每秒更新的
        iconlistall:{
          get(){
            return this.iconlist
          }
        }
      },
      methods: {
        createds() {
        //这里是假的数据
          let list = [
            {
              pre_at: "2020-06-03 11:18:23",
              address:"测试1",
            },
            {
              pre_at: "2020-06-01 16:18:35",
              address:"测试2",
            },
            {
              pre_at: "2020-06-04 6:14:42",
              address:"测试3",
            }
          ];
          //首先循环数组 在 正常的情况下这个数组是后台传递过来的 然后将这个数组中的最后截止时间减去当前时间获得时间戳
          for (let i = 0, len = list.length; i < len; i++) {
            const item = list[i];
            item.pre_at = new Date(item.pre_at).getTime() - new Date().getTime();
          }
          this.iconlist = list; //将改变后的数组赋值给自定义的数组 然后调用计时器 每秒减去指定字段的时间戳 -1000毫秒
          if (this.ticker) { //这一段是防止进入页面出去后再进来计时器重复启动
            clearInterval(this.ticker);
          }
          this.beginTimer(); //启动计时器减指定字段的时间
        },
        beginTimer() { //这个计时器是每秒减去数组中指定字段的时间
          this.ticker = setInterval(() => {
            for (let i = 0, len = this.iconlist.length; i < len; i++) {
              const item = this.iconlist[i];
              if (item.pre_at > 0) {
                item.pre_at = item.pre_at - 1000;
              }
            }
          }, 1000);
        },
        time(time) { //这个函数是每秒把时间重新计算下
          if (time >= 0) {
            let d = Math.floor(time / 1000 / 60 / 60 / 24);
            let h = Math.floor((time / 1000 / 60 / 60) % 24);
            let m = Math.floor((time / 1000 / 60) % 60);
            let s = Math.floor((time / 1000) % 60);
             return '还有'+d+'天'+h+'时'+m+'分'+s+'秒';
          }
        },
      },

      mounted() {
        this.createds()
      },
      destroyed() {}
    };
    </script>

  • 相关阅读:
    Anaconda环境下安装库
    数据库定义、性质、演变
    web测试与app测试区别
    黑盒测试用例设计方法
    软件测试黑盒、灰盒、白盒测试的区别
    web端指什么?
    apache、tomcat和svn有什么作用,区别是什么
    H5如何测试?
    软件测试工具
    web与app测试重点
  • 原文地址:https://www.cnblogs.com/JOEH60/p/12966050.html
Copyright © 2011-2022 走看看