vux-upload组件

本文介绍了如何重写Vux的upload组件,增加了预览功能。在实现多上传组件预览时遇到一些问题,但并不妨碍正常预览功能的使用。
摘要由CSDN通过智能技术生成

上传组件重写,添加了预览,在使用多个的上传组件时预览有问题,但是不影响正常预览        

<template>
  <div class="weui-cell">
    <div class="weui-cell__bd">
      <div class="weui-uploader">
        <div v-show="showHeader" class="weui-uploader__hd">
          <p class="weui-uploader__title"> {
  { title }} </p>
          <div v-show="showHeader && showTip" class="weui-uploader__info">
            {
  { list.length }} / {
  { max }}
          </div>
        </div>

        <div class="weui-uploader__bd" :class="{small: size === 'small'}">
          <ul class="weui-uploader__files">
            <div>
              <div v-for="(item, index) in list" class="weui-uploader__file" style="position:relative;">
                <uploader-item class="previewer-demo-img" :background-image="item.src" :key="item.src" @click.native="preview(item, index)" style="float: right;"></uploader-item>
                <!--<img class="previewer-demo-img" width="65px" height="65px" :src="item.src" @click ="preview(item, index)" style="float: right;">-->
                <div v-if="!handleClick">
                    <x-icon type="ios-close" size="20" style="position:absolute;margin-left: 40px" @click.native="remove(item, index)"></x-icon>
                  </div>
              </div>
              <div v-transfer-dom>
                <previewer :list="HDImg" ref="previewer" :options="options"></previewer>
              </div>
            </div>
          </ul>

          <div v-show="!readonly && list.length < max" class="weui-uploader__input-box" @click="add">
            <input v-if="!handleClick" ref="input" class="weui-uploader__input" type="file" accept="image/jpg,image/jpeg,image/png,image/gif" :capture="showCapture" @change="change">
          </div>
        </div>
      </div>
    </div>
    <toast v-model="showPositionValue" type="warn"  :time="1500" is-show-mask  >网络异常,请检查网络</toast>
    <toast v-model="uploadFailure" type="warn"  :time="1500" is-show-mask  >上传失败</toast>
  </div>
</template>

<script>
import UploaderItem from './uploader-item.vue'
import {Previewer, TransferDom, Toast} from 'vux'
import axios from 'axios'
export default {
  name: 'upload',
  props: {
    list: {
      type: Array,
      default: () => []
    },
    HDImg: {
      type: Array,
      default: () => []
    },
    max: {
      type: Number,
      default: 1
    },
    val: { // 传递为上传图片的种类
      type: String,
      default: ''
    },
    showHeader: {
      type: Boolean,
      default: true
    },
    showTip: {
      type: Boolean,
      default: true
    },
    readonly: {
      type: Boolean,
      default: false
    },
    title: {
      type: String,
      default: '图片上传'
    },
    attachIds: { // 回调主键集合
      type: Array,
      default: () => []
    },
    // 是否接管+号的click事件,如果是,点击不弹出选择文件的框
    handleClick: {
      type: Boolean,
      default: false
    },
    // 选择文件后是否自动上传,如果不是,则emit change事件
    autoUpload: {
      type: Boolean,
      defau
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值