vue踩坑

vue图片缩略图及预览功能(VuePreview)

2020-01-08  本文已影响0人  月中眠_d56d

1、安装控件:

cnpm i vue-preview

2、引入控件

找到main.js 文件,添加 :

import VuePreview from 'vue-preview'
Vue.use(VuePreview)

别忘了编译: npm run serve

3、在图片页面引入样式

import VuePreview from 'vue-preview';
import Vue from 'vue'
Vue.use(VuePreview, {
  mainClass: 'pswp--minimal--dark',
  barsSize: {top: 0, bottom: 0},
  captionEl: false,
  fullscreenEl: false,
  shareEl: false,
  bgOpacity: 0.85,
  tapToClose: true,
  tapToToggleControls: false
})

4、页面代码

<template>
  <div>
    <checkLogin ></checkLogin>
    <!--头部 begin-->
    <cheader :title="'查看收据'"></cheader>
    <vue-preview :slides="details" @close="handleClose"  class="preview"></vue-preview>
  </div>
</template>
<script>
import VuePreview from 'vue-preview';
import Vue from 'vue'
Vue.use(VuePreview, {
  mainClass: 'pswp--minimal--dark',
  barsSize: {top: 0, bottom: 0},
  captionEl: false,
  fullscreenEl: false,
  shareEl: false,
  bgOpacity: 0.85,
  tapToClose: true,
  tapToToggleControls: false
})
export default {
  name: 'shouju',
  data () {
    return {
      details:[{w}]
    }
  },
  created() {
     this.getPicByOrderNo()
  },
  methods:{
    getPicByOrderNo(){ 
        api.getPicByOrderNo({orderNO : this.orderNO}).then(res => {
          if(res.success){
            var data = res.data.data
            if (data!=null) {
              data.forEach(item => {
                item.w = 1000;   //设置以大图浏览时的宽度
                item.h = 900;     //设置以大图浏览时的高度
                item.src = item.src;  //大图
                item.msrc = item.msrc;  //小图
                item.title = item.title  //标题
              });
              this.details =data
            } else {
              Toast('获取图片信息失败!');
            }
          }
        })
    }
  }
}
</Script>
<style>
  .preview figure {
    float: left;
    width: 30%;
    height:auto;
    margin: 1.5%;
  }

  .preview figure img {
    width: 100%;
    height: 75%;
  }
</style>


上面 preview figure img 、preview figure class可以根据实际情况调整图片展示样式
说明: vue-preview规定,用来绑定的数据源必须是一个数组,数组里的每一项都要是个js对象,数据格式:

[{w: 600, h: 500, src: xxxx, msrc: xxxxxx},{w: 600, h: 500, src: xxxx, msrc: xxxxxx}]
接口定义的图片实体可以定义为:

public class PayPictureDTO implements Serializable{

    @ApiModelProperty("宽度")
    private int w;

    @ApiModelProperty("高度")
    private int h;

    @ApiModelProperty("标题")
    private String title;

    @ApiModelProperty("小图")
    private String msrc;

    @ApiModelProperty("大图")
    private String src;

}

查询后用 List<PayPictureDTO> 格式返回即可
最后看一下效果:


image.png
image.png
上一篇下一篇

猜你喜欢

热点阅读