<!--  -->
<template>
  <div class="updateHistory_box">
    <!-- 页面头部 -->
    <el-header>
      <el-page-header title @back="goBack" content="更新历史记录"></el-page-header>
    </el-header>

    <!-- 主内容 -->
    <el-main :style="'height:' + fullHeight + 'px'">
      <mescroll-vue ref="mescroll" :down="mescrollDown" :up="mescrollUp" @init="mescrollInit">
        <ul class="updateHistory-ul" v-if="redataShow">
          <li
            class="updateHistory-li"
            @click="particulars(item.id, item.app_num)"
            v-for="(item, index) in this.redata"
            :key="index"
          >
            <div class="versions_updateHistory_box_liBox">
              <div class="versions_updateHistory_box_liText">版本{{ item.app_num }}主要更新</div>
              <div class="versions_updateHistory_box_liTime">{{ item.upl_time }}</div>
            </div>
            <img
              src="../../assets/imageOne/right.png"
              alt
              class="versions_updateHistory_box_liImage"
            />
          </li>
        </ul>

        <!-- 暂无数据 -->
        <div class="versions_updateHistory_box_zanwu" v-else>
          <img src="../../assets/imageOne/wu.png" alt class="versions_updateHistory_box_zanwu_img" />
          <div class="versions_updateHistory_box_zanwu_text">暂无更新记录</div>
        </div>
        <!-- 暂无数据 -->
      </mescroll-vue>
    </el-main>
    <!-- 主内容 -->

    <!-- 版本更新主要内容弹框 -->
      <!-- <div v-if="show" class="mask_layer" :style="'height:' + fullHeight + 'px'">
        <div class="versions_updateHistory_box_popUp">
          <div class="versions_updateHistory_box_popUp_box">
            <div class="versions_updateHistory_box_popUp_box_title">{{ this.renum }}版本更新详细内容</div>
            <img
              @click="close($event)"
              src="../../assets/imageOne/cheng.png"
              alt
              class="versions_updateHistory_box_popUp_box_image"
            />
          </div>

          <div class="versions_updateHistory_box_popUp_box_content">{{ this.redataA.app_desc }}</div>
        </div>
      </div> -->
      <el-dialog
        :title="this.renum + '版本更新详细内容'"
        :visible.sync="dialogVisible"
        width="66%">
        <span>{{ this.redataA.app_desc }}</span>
        <span slot="footer" class="dialog-footer">
        </span>
      </el-dialog>

    <!-- 版本更新主要内容弹框 -->
  </div>
</template>

<script>
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》 from '《组件路径》';
// 引入mescroll的vue组件
import MescrollVue from "mescroll.js/mescroll.vue";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
    MescrollVue // 注册mescroll组件
  },
  data() {
    //这里存放数据
    return {
      dialogVisible: false,
      fullHeight: document.documentElement.clientHeight,
      redata: [], //版本记录列表数据
      redataShow: true, //判断是否有数据
      renum: "", //版本号
      show: false, //弹框是否显示
      redataA: [], //详情数据
      //测试
      mescroll: null, // mescroll实例对象
      mescrollDown: {}, //下拉刷新的配置. (如果下拉刷新和上拉加载处理的逻辑是一样的,则mescrollDown可不用写了)
      mescrollUp: {
        // 上拉加载的配置.
        callback: this.upCallback, // 上拉回调,此处简写; 相当于 callback: function(page, mescroll) { }
        //以下是一些常用的配置,当然不写也可以的.
        page: {
          num: 0, //当前页 默认0,回调之前会加1; 即callback(page)会从1开始
          size: 10 //每页数据条数,默认10
        },
        isBounce: true, //根据记录的滚动条高度回弹
        htmlNodata: '<p class="upwarp-nodata">-- 已经到底了! --</p>',
        noMoreSize: 10, //如果列表已无数据,可设置列表的总数量要大于5才显示无更多数据;
        // 避免列表数据过少(比如只有一条数据),显示无更多数据会不好看
        // 这就是为什么无更多数据有时候不显示的原因
        toTop: {
          //回到顶部按钮
          // src: "../../../static/gotop.png", //图片路径,默认null,支持网络图
          src:
            "http://pic.51yuansu.com/pic3/cover/00/65/23/5896fa4bc81fc_610.jpg", //图片路径,默认null,支持网络图
          offset: 800 //列表滚动1000px才显示回到顶部按钮
        },
        onScroll: function(mescroll, y, isUp) {
          //监听滚动条
        },
        lazyLoad: {
          use: true // 是否开启懒加载,默认false
        }
      },
      aggregate: "" //后端传来数据的总条数
    };
  },
  //监听属性 类似于data概念
  computed: {},
  //监控data中的数据变化
  watch: {
    fullHeight(val) {
      //监控浏览器高度变化
      if (!this.timer) {
        this.fullHeight = val;
        this.timer = true;
        let that = this;
        setTimeout(function() {
          //防止过度调用监测事件，导致卡顿
          that.timer = false;
        }, 400);
      }
    }
  },
  beforeRouteEnter(to, from, next) {
    // 如果没有配置顶部按钮或isBounce,则beforeRouteEnter不用写
    next(vm => {
      // 滚动到原来的列表位置,恢复顶部按钮和isBounce的配置
      vm.$refs.mescroll && vm.$refs.mescroll.beforeRouteEnter();
    });
  },
  beforeRouteLeave(to, from, next) {
    // 如果没有配置顶部按钮或isBounce,则beforeRouteLeave不用写
    // 记录列表滚动的位置,隐藏顶部按钮和isBounce的配置
    this.$refs.mescroll && this.$refs.mescroll.beforeRouteLeave();
    next();
  },

  //方法集合
  methods: {
    // mescroll组件初始化的回调,可获取到mescroll对象
    mescrollInit(mescroll) {
      this.mescroll = mescroll; // 如果this.mescroll对象没有使用到,则mescrollInit可以不用配置
    },
    // 上拉回调 page = {num:1, size:10}; num:当前页 ,默认从1开始; size:每页数据条数,默认10
    upCallback(page, mescroll) {
      this.$axios({
        method: "get",
        url: "bigservers/app_all",
        params: {
          page: this.mescrollUp.page.num
        }
      })
        .then(res => {
          //判断data中的变量是否为空 ，为空的话存后端发来的总条数
          if (this.aggregate === "") {
            //存变量
            this.aggregate = res.data.num;
            var b = "10";
            this.aggregate = this.aggregate / b;
            this.aggregate = Math.ceil(this.aggregate); //将小数点转换为整数
          }

          //删除了默认的每页条数后判断数是否大于页码
          if (this.mescrollUp.page.num <= this.aggregate) {
            if (this.aggregate <= "1") {
              var hasNext = false;
            } else if (this.aggregate > "1") {
              var hasNext = true;
            }
            this.$axios({
              method: "get",
              url: "bigservers/app_all",
              params: {
                page: this.mescrollUp.page.num
              }
            })
              .then(res => {
                let arr = res.data.dat;
                // 如果是第一页需手动置空列表
                if (page.num === 1) this.redata = [];
                // 把请求到的数据添加到列表
                this.redata = this.redata.concat(arr);
                if (res.data.dat.length === null) {
                  this.redataShow = false;
                } else if (res.data.dat.length !== null) {
                  this.redataShow = true;
                  this.redata = res.data.dat;
                }

                // 数据渲染成功后,隐藏下拉刷新的状态
                this.$nextTick(() => {
                  mescroll.endSuccess(arr.length, hasNext);
                });
              })
              .catch(error => {
                mescroll.endErr();
              });
          } else if (this.mescrollUp.page.num > this.aggregate) {
            // 数据渲染成功后,隐藏下拉刷新的状态
            this.$nextTick(() => {
              mescroll.endSuccess(this.aggregate);
            });
          }

          if (res.data.dat.length === 0) {
            this.redataShow = false;
          } else if (res.data.dat.length !== 0) {
            this.redataShow = true;
            this.redata = res.data.dat;
          }
        })
        .catch(error => {
          mescroll.endErr();
        });
    },

    //动态获取浏览器高度
    get_boderHeight() {
      const that = this;
      window.onresize = () => {
        return (() => {
          window.fullHeight = document.documentElement.clientHeight;
          that.fullHeight = window.fullHeight;
        })();
      };
    },

    //点击返回到主页
    goBack() {
      let _this = this;
      // _this.$router.push("/system");
      _this.$router.replace("/system");
    },

    //点击显示版本更新的详细内容
    particulars(id, num) {
      let _this = this;
      _this.renum = num;
      let postData = _this.$qs.parse({
        id: id
      });
      _this
        .$axios({
          method: "post",
          url: "bigservers/app_all",
          data: postData
        })
        .then(res => {
          this.dialogVisible = true;
          _this.redataA = res.data[0];
        })
        .catch(err => {
          console.log(err);
        });
    },

    //点击关闭弹框
    close(e) {
      let _this = this;
      // if (e.target.className === "mask_layer") {
      //   this.show = false;
      // }
    }
  },
  //生命周期 - 创建完成（可以访问当前this实例）
  created() {},
  //生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {}
};
</script>
<style lang='scss'>
@import "../../assets/style/bus.scss";
@import "../../assets/style/scss/updateHistory.scss";
//@import url(); 引入公共css类
</style>