element ui的照片墙 默认显示照片

参考地址: element ui的照片墙 默认显示照片

照片显示的数据格式是:[{name: ‘‘, url: ‘‘}],:file-list=""默认显示的图片

实际项目开发中需要处理两个问题:① 从后端返回的二进制数据处理为前端image可识别的base64格式; ② 如果从后端返回的数据不为空,那么显示图片,并且隐藏上传按钮,只有当删除展示的图片后才可继续上传

问题①:处理方式可参照:前端imageBuffer设置图片src(后端返回二进制流图片)

问题②:处理方式如下:

// 页面架构
<tr>
    <td>项目截图:</td>
    <td>
        <el-upload action="" :class="{hide: hideUpload}" :http-request="uploadScreenShot" list-type="picture-card" :before-upload="isPic" :on-preview="handlePictureCardPreview" :on-remove="screenShotRemove" :on-change="screenShotChange" :limit="1" :file-list="dialogImageUrlArray">
            <i class="el-icon-plus"></i>
        </el-upload>
        <el-dialog :visible.sync="dialogVisible">
            <img width="100%" :src="dialogImageUrl" >
        </el-dialog>
    </td>
</tr>
data() {
  return {
        projectScreenShot: [],                              // 项目截图 - 用于存储url
        dialogImageUrl: ‘‘,                                 // 项目截图 - 图片的url
        dialogImageUrlArray: [{ url: ‘‘ }],                 // 项目截图 - 图片的url
        hideUpload: false,                                  // 项目截图:是否隐藏上传按钮
        dialogVisible: false,
    }
}

如果限制只能上传1张图片,且图片上传成功后隐藏上传按钮,需要设置以下几个属性: :on-preview = ‘‘、:on-remove =  ‘‘、:on-change=‘‘

// 项目截图:点击‘放大‘按钮,可以放大图片(点击文件列表中已上传的文件时的钩子)
handlePictureCardPreview(file) {
    this.dialogImageUrl = file.url;
    this.dialogVisible = true;
},
// 项目截图:删除上传文件on-remove事件(文件列表移除文件时的钩子)
screenShotRemove(file, fileList) {
    this.hideUpload = fileList >= 1;        // 上传的项目截图 < 1时,显示上传按钮
},
// 项目截图:上传文件on-change事件(文件上传时的钩子)
screenShotChange(file, fileList) {
    this.hideUpload = fileList.length >= 1; // 上传的项目截图 >= 1时,隐藏上传按钮
},

处理从后端返回的二进制数据,并把处理好的路径赋值给 this.dialogImageUrlArray[0].url ,隐藏上传按钮

// 获取‘项目截图‘的url
                        this.$http({
                            url: this.$http.adornUrl(‘/web/showimgFile‘),
                            method: ‘get‘,
                            responseType: "arraybuffer",
                            params: this.$http.adornParams({
                                ‘url‘ : infoModel.projectIndexUrl
                            })
                        }).then(({ data }) => {
                            let bytes = new Uint8Array(data);
                            let storeData = "";
                            let len = bytes.byteLength;
                            for (let i = 0; i < len; i++) {
                              storeData += String.fromCharCode(bytes[i]);
                            }
                            this.dialogImageUrlArray[0].url = "data:image/png;base64," + window.btoa(storeData);
                            this.screenShotChange(‘‘, this.dialogImageUrlArray);    // 隐藏上传按钮
});

原文地址:https://www.cnblogs.com/carriezhao/p/11429784.html

时间: 2024-10-09 03:12:49

element ui的照片墙 默认显示照片的相关文章

element ui 修改默认样式

修改element ui默认的样式 如果要组件内全局修改 首先在浏览器里F12找到element默认的UI类名 找到要修改的默认类名以后 在文件中修改代码,重写属性 <style> .el-form-item__label{ //你要修改的CSS属性 } </style> 但是如果已经在全局内修改了默认样式,但又想在某一个标签内再次重写样式,则可以给要修改的标签加一个父类,在父类里重写样式,这样可以避免代码污染,也可以叫做局部修改 <el-form-item class=&q

vue+element UI实现分页组件

1.前言 在web页面中,常常需要将后台查询到的数据以表格形式展示出来,而这些数据量往往会非常庞大,如果将所有要展示的数据一次性请求获取并展示到页面上,那页面长度势必会变得非常的长,很不美观.更重要的是,如果数据量过于大,在页面加载时一次性请求全部数据将会耗费大量网络资源,性能极低.但是,如果我们可以将数据分页展示,这样页面首先不会变的冗长,另外只有用户点击页码才会发出请求并且每次请求的数据量也不会很大,这就极大的节省了网络资源,提高了性能.本文就以vue结合element UI实现一个数据分页

覆盖element ui 的样式

我们可以使用 !important  来覆盖element ui 的样式 首先先在浏览器中找到 我们所要修改的样式 ,然后找到她的 class  重新写他的样式 ,例如 . app  { width :10ox ! important ; } 注意 :本来element  ui 默认的width 为5px 我们要覆盖他的样式,就在要修改的 width 后面加上    ! important 原文地址:https://www.cnblogs.com/guangzhou11/p/9710497.ht

Element ui使用心得

Element ui使用心得 滑块: <template> <div class="block"> <span class="demonstration">默认</span> <el-slider v-model="value1"></el-slider> </div> <div class="block"> <span cl

Element UI 中被隐藏的滚动条

Element UI 官网中有用到自定义的滚动条组件,但是发布的所有版本中都不曾提及,个中原因我们不得而知,不过我们还是可以拿过来引用到自己的项目中. 使用的时候,放在 <el-scrollbar></el-scrollbar> 标签内即可如: <div style="height:100%"> <el-scrollbar class="m-scroll" style="height:100%">

element ui改写实现两棵树

使用element ui组件库实现一个table的两棵树的效果 效果如下,左边树自动展开一级,右边树默认显示楼层,然后可以一个个展开 代码如下 <el-table :data="relativeData" :fit="isFit" height="700px" :row-style="showTr" :row-class-name="tableRowClassName" :header-row-cla

Vue 基于node npm &amp; vue-cli &amp; element UI创建vue单页应用

基于node npm & vue-cli & element UI创建vue单页应用 开发环境   Win 10   node-v10.15.3-x64.msi 下载地址: https://nodejs.org/en/ 安装node 安装vue-cli 1.安装node-v10.15.3-x64.msi 2.设置注册地址 因为npm官方仓库在国外,有时候下载速度会非常慢,不过有淘宝镜像可以使用,下载包的速度很快.而且淘宝镜像是定时更新同步npm的官方仓库的. npm config set

Vue框架Element UI教程(二)

原文:https://www.jianshu.com/p/1704b5935a8 [时间选择器] Element UI手册:https://cloud.tencent.com/developer/doc/1270 中文文档:http://element-cn.eleme.io/#/zh-CN github地址:https://github.com/ElemeFE/element 前一篇已经安装好了Element UI环境,现在开始来实际操作框架提供的一些组件的运用了. 在准备好以下文章里面的内容

vue模块化(echart+element ui)

最近看了下vue的框架,随手做了个项目,记录分享下 技术框架: vue.js + webpack + element ui + echart 首先看下npm package.js 上面的图 主要是配置的是npm 打包命令 和引入vue-route vue的路由文件 和element ui 文件 下面这个是 引入echart.js 文件, 基本资料就这些. 首先我们开始构建一个vue-cli项目 1.首先node环境(这里就不多啰嗦了) 2.执行vue-cli命令 npm install --gl