elementUI自定义查看详情组件

2023-10-27

elementUI没有查看详情组件,每次都要自己写详情比较不方便

详情组件效果图,可以放弹出框,放页面当中

 声明seeData 要展示的顺序及类型

类型type的为selectList,将自动渲染成对应的数据。对于复杂的内容可以使用slot插槽来展示,span可以自定义一行展示的列数

 seeData:[
                   {
                title:"备案订单编号",
                key: "order_sn",
              }, {
                title:"鉴品名称",
                key: "treasure_name",
              },{
                title:"鉴定人姓名",
                key: "user_name",
              },{
                title:"鉴定人电话",
                key: "user_phone",
              },{
                title:"鉴定地址",
                key: "address_detail",
              },{
                title:"订单金额",
                key: "order_price",
              },{
                title:"使用优惠券",
                key: "coupon_id",
              },{
                title:"加急服务",
                key: "is_urgent",
                type: "select",
                selectList: [
                  { value: 0, label: "普通" },
                  { value: 1, label: "加急" },
                ]
              },{
                title:"鉴品描述",
                key: "treasure_description",
              },{
                title:"鉴品图片",
                slot: "img",
              },
   ]

 如下图独占一行span==24

 

接口返回的数据 赋值为 formValues

注意:seeform的key对应formValues对象的值,就可以了

 引用see组件,对于复杂的内容使用插槽来展示。

自己 import  see 组件

<see :list="seeData"  :formData.sync="formValues">
          <template v-slot:img>
              <div>
              <div v-viewer>
                <img :src="item" v-for="(item , i) in formValues.img_list.split(',')" :key="i"
                alt="" style="height:50px">
                </div>
              </div>
          
          </template>
       </see>

see组件 

span参数可以展示一行展示多少列,默认为一行两列对应数据,如果span为24时一行展示一列对应数据

<template>
    <div>
        <el-row>
            <el-col :span="item.span" v-for="(item,i) in seeList" :key="i" class="col">
                <div class="title">  {{item.title}}  </div>
                <div class="val">  
                    <template v-if="item.slot">
                        <slot :name="item.slot"></slot>
                    </template>
                    <template v-else>
                        {{item.value}}
                    </template>
                </div>
            </el-col>      
        </el-row>
    </div>
</template>

<script>
/**
 * @overview 自动渲染
 * @author <woods> [<2213127617@qq.com>]
 * @param {Array} list - 显示的名称
 * @param {Object} formData - 显示的值
 */
export default {
    props:{
        formData: {
            type: Object,
            default: () => {
                return {}
            }
        },
        list: {
            type: Array,
            default: () => []
        },
    },
    created(){
        console.log(this.formData)
    },
    computed:{
        seeList(){
            return this.list.reduce((acc, item, index) => {
                
                acc.push({
                    ...item,
                    span:item.span ? item.span : 12,
                    value:item.selectList ?  this.getSelectLabel(this.formData[item.key],item.selectList) : this.formData[item.key] ,
                     
                });
                return acc;
            }, []);
        }
    },
    data(){
        return {
             
        }
    },
    methods:{
        getSelectLabel(value,selectList){
         var list=   selectList.filter(item => item.value==value)
         return list.length>0 ? list[0].label : "列表无选项"
        }
    }
}
</script>

<style scoped lang="less">
.col{
    border: 1px solid #e6e9f0;
    height:55px;
    line-height: 55px;
    display: flex;
    
    div{
        padding-left:20px;
    }
    .title{
        min-width: 150px;
        background-color: #f5f5f5;
        color: #1F2E4D;
    }
    .val{
        flex: 1;
        border-left: 1px solid #e6e9f0;
        color: #3D4966;
    }
}
</style>

elementUI自定义查看详情组件

2.1版本

因为查看图片太常用了,所以升级了一下seeform组件。一般都是数组里有多个图片链接,或者单独的字符串图片链接。所以我做了个判断,还加了点击图片放大预览所有图片

*增加了type属性 如果是图片字段的话就type=“image”

<template>
    <div>
        <el-row>
            <el-col :span="item.span" v-for="(item,i) in seeList" :key="i" class="col">
                <div class="title">  {{item.title}}  </div>
                <div class="val">  
                    <template v-if="item.slot">
                        <slot :name="item.slot"></slot>
                    </template>
                    <template v-else> 
                        
                        <template v-if="item.type=='image'">
                            <el-image  style="height: 54px"  :src="valueChange(item.value)[0]" 
                                :preview-src-list="valueChange(item.value)">
                            </el-image>
                        </template>
                        <span v-else>{{item.value}}</span>
                    </template>
                </div>
            </el-col>      
        </el-row>
    </div>
</template>

<script>
/**
 * @overview 自动渲染
 * @author <woods> [<2213127617@qq.com>]
 * @param {Array} list - 显示的名称
 * @param {String} formData - 显示的值
 */
export default {
    props:{
        formData: {
            type: Object,
            default: () => {
                return {}
            }
        },
        list: {
            type: Array,
            default: () => []
        },
    },
    data(){
        return {
        }      
    },
    created(){
        console.log(this.formData)
    },
    computed:{
        seeList(){
            return this.list.reduce((acc, item, index) => {
                
                acc.push({
                    ...item,
                    span:item.span ? item.span : 12,
                    value:item.selectList ?  this.getSelectLabel(this.formData[item.key],item.selectList) : this.formData[item.key] ,
                    type:item.type ? item.type : "text",
                });
                return acc;
            }, []);
        }
    },
     
    methods:{
        getSelectLabel(value,selectList){
            var list=   selectList.filter(item => item.value==value)
            return list.length>0 ? list[0].label : "列表无选项"
        },
        valueChange(val){
            if (Array.isArray(val)){
                return val
            }else{
                return val.split(",")
            }             
        }
    }
}
</script>

<style scoped lang="less">
.col{
    border: 1px solid #e6e9f0;
    height:55px;
    line-height: 55px;
    display: flex;
    
    >div{
        padding-left:20px;
    }
    .title{
        min-width: 150px;
        background-color: #f5f5f5;
        color: #1F2E4D;
    }
    .val{
        flex: 1;
        border-left: 1px solid #e6e9f0;
        color: #3D4966;
    }
}
</style>

数据主要是这修改了

{
                title:"鉴品图片",
                type: "image",
                 key: "img",
              },
   ]

seeData:[
                   {
                title:"备案订单编号",
                key: "order_sn",
              }, {
                title:"鉴品名称",
                key: "treasure_name",
              },{
                title:"鉴定人姓名",
                key: "user_name",
              },{
                title:"鉴定人电话",
                key: "user_phone",
              },{
                title:"鉴定地址",
                key: "address_detail",
              },{
                title:"订单金额",
                key: "order_price",
              },{
                title:"使用优惠券",
                key: "coupon_id",
              },{
                title:"加急服务",
                key: "is_urgent",
                type: "select",
                selectList: [
                  { value: 0, label: "普通" },
                  { value: 1, label: "加急" },
                ]
              },{
                title:"鉴品描述",
                key: "treasure_description",
              },{
                title:"鉴品图片",
                type: "image",
                 key: "img",
              },
   ]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elementUI自定义查看详情组件 的相关文章

随机推荐

  • hibernate 总结

    hibernate 总结 Hibernate框架的总结 hibernate 简介 hibernate是一个开源框架 它是对象关联关系映射的框架 它对JDBC做了轻量级的封装 而我们java程序员可以使用 面向对象的思想来操纵数据库 提高生产
  • java代码规范插件之P3C安装及基础用法

    P3C插件主要是对今年发布的 阿里巴巴 Java 开发规约 的一个延伸 它以一个 IDE 的插件存在 可以自动对手册中的 Java 不规范的问题进行提示 现在主要支持 IDEA Eclipse Android Studio 是基于 IDEA
  • Charles web抓包

    首先打开Charles调试 如果关闭web端 如图所示 前面什么也没有 抓取浏览器数据包 一 打开Charles在Help里安装证书 二 点击安装证书 三 存储位置选择本地计算机 四 点击将所有的证书都放入下列存储 五 点击浏览 点击受信任
  • Opencv: 将 YUV 格式的图片转化成 JPG 保存

    昨天刚和同事一起去采集一些场地数据 用板子拍摄然后实时传到电脑上 得到的是 NV21 的 YUV 格式的照片 然后暂时需要将他们批量处理成 jpg 的文件方便在 windows 上面看 参考同事的代码 写了一个 c 的脚本 简简单单的一个程
  • 如何在Windows Subsystem for Android 中取得 root 权限

    都已经让手机取得root权限了 是时候去取得安卓子系统的root权限了 一 准备 首先确保你拥有8GB以上的内存 并且满足Windows 11的最低硬件需求 由于Windows Subsystem for Android 只兼容 Windo
  • python清洗数据 food ounces animal_pandas学习笔记 - 常见的数据处理方式

    1 缺失值处理 拉格朗日插值法 input file数据文件内容 存在部分缺失值 from scipy interpolate importlagrangeimportpandas as pd import numpy as np inpu
  • 【华为OD机试真题 JAVA】找城市

    JS版 华为OD机试真题 JS 找城市 标题 找城市 时间限制 1秒 内存限制 65536K 语言限制 不限 一张地图上有n个城市 城市和城市之间有且只有一条道路相连 要么直接相连 要么通过其它城市中转相连 可中转一次或多次 城市与城市之间
  • linux中常用目录的作用

    Linux目录和Windows目录有着很大的不同 Linux目录类似一个树 最顶层是其根目录 如下图 bin 二进制可执行命令 例如ls cat mkdir dev 设备特殊文件 所有linux的外围设备 etc 系统管理和配置文件 etc
  • Apache HTTPD 多后缀解析漏洞

    Apache HTTPD 多后缀解析漏洞 一 环境搭建 二 漏洞原理 三 漏洞复现 一 环境搭建 如下介绍kali搭建的教程 cd vulhub httpd apache parsing vulnerability 进入指定环境 docke
  • {青少年CTF} Markdown 详解

    用一个markdown编辑器打开就能看到 这边推荐Typora qsnctf 6dd6d3b1 e671 4555 828b a64caf7e39ef 溜了溜了
  • java自学笔记13:简易扑克牌游戏

    综合练习 洗牌发牌Easy版 功能描述 一 创建一副扑克牌 包括四种花色 黑桃 红桃 梅花 方片 十三中点数 2 10 J Q K A 不考虑大小王 二 创建两名玩家 玩家至少要有ID 姓名 手牌等属性 手牌为扑克牌的集合 三 洗牌 将之前
  • 图像分类、目标检测、语义分割、实例分割和全景分割的区别

    计算机视觉的任务很多 有图像分类 目标检测 语义分割 实例分割和全景分割等 那它们的区别是什么呢 1 Image Classification 图像分类 图像分类 下图左 就是对图像判断出所属的分类 比如在学习分类中数据集有人 person
  • cocosCreator 节点坐标和世界坐标的转换

    问题描述 同一个层上的不同节点下的元素移动 在C这个层上面有两个节点A和B 现在我想把A下的一个临时创建的节点移动到B下 这个时候 第一想到的是 获取两个创建的节点的坐标 然后cc Move 但是实际的效果不是这样的 元素都不知道移动到那里
  • 正弦信号频谱分析实验

    正弦信号频谱分析实验 实验目标 1 设定采样率fs 生成正弦波 频率为f0 量化比特数为Q 幅度为A 采集N点正弦波 用W窗对采样帧加窗 然后进行N点的FFT分析 观察对数尺度下的幅度谱S 通过配置信号的幅频特征参数以及分析参数 然后观察两
  • gdb多线程调试

    先介绍一下GDB多线程调试的基本命令 info threads 显示当前可调试的所有线程 每个线程会有一个GDB为其分配的ID 后面操作线程的时候会用到这个ID 前面有 的是当前调试的线程 thread ID 切换当前调试的线程为指定ID的
  • rabbitMq消费者角度:消息分发、消息应答(ACK)、公平分发

    rabbitMq交换机简介中介绍了rabbitMq的四种类型交换机 rabbitMq生产者角度一篇从生产者角度介绍如何保证消息被正确发送到服务器 如果未正确发送如何处理 本篇博客将从消费者角度介绍三个问题 队列分发消息到消费者的规则 如何确
  • 超详细图文保姆级教程:App开发新手入门(一)

    重要 想学习APP开发的新手同学 建议访问我发布的最新版本的文章教程 2023最新 超详细图文保姆级教程 App开发新手入门 1 关于APICloud PS 本段内容主要目的是去除官方语音描述 用通俗的语言来简单介绍一下APICloud 方
  • SpringBoot在配置拦截器后,拦截器不起作用

    按照网上诸多博客配置了SpringBoot拦截器 最终却惊奇的发现 拦截器不起作用 百般查找原因 sackoverflower google baidu 均不能解决问题 后来经过 ComponentScan basePackages com
  • 给html form添加formdata,JavaScript FormData的详细介绍及使用

    FormData的详细介绍及使用请点击此处 那里对FormData的方法和事件已经表述的非常清楚 这里就不再浪费时间在介绍一遍了 本文主要针对FormData对象的使用以及异步文件上传进行详细的说明 FormData对象可以让我们组织一个使
  • elementUI自定义查看详情组件

    elementUI没有查看详情组件 每次都要自己写详情比较不方便 详情组件效果图 可以放弹出框 放页面当中 声明seeData 要展示的顺序及类型 类型type的为selectList 将自动渲染成对应的数据 对于复杂的内容可以使用slot