vue2项目 自定义详情组件

news2025/1/16 19:58:05

vue2项目 自定义详情组件

    • 效果
    • 组件代码
    • 组件引入以及传参格式
    • 寄语

效果

在这里插入图片描述

组件代码

DetailFormRow.vue已经封装好,根据数据格式直接引用即可。

<template>
  <div class="detail-form">
    <el-row class="detail-form-row" style="margin-bottom: 0;">
      <el-col class="detail-form-col" :span="24">
        <div class="detail-form__title">{{ title }}</div>
      </el-col>
    </el-row>
    <el-row class="detail-form-row border">
      <!-- col 插槽 -->
      <slot></slot>
      <el-col
        class="detail-form-col"
        v-for="item in data"
        :key="item.label"
        :span="item.span"
      >
        <div class="detail-form-item">
          <label class="detail-form-item__label">
            <span>{{ item.label }}</span>
          </label>
          <div v-if="!showToolTip(item)" class="detail-form-item__content">
            <span>{{ item.value }}</span>
          </div>
          <div v-else class="detail-form-item__content">
            <el-tooltip 
              effect="dark"
              :content="item.value"
              placement="top-end"
            >
              <span>{{ beautyValue(item) }}</span>
            </el-tooltip>
          </div>
        </div>
      </el-col>
    </el-row>
  </div>
</template>

<script>
/**
 * data内数据结构
 * const defaultItem = {
 *   label: String, // 标题
 *   value: String, // 内容
 *   span: Number,  // 一行内占比(0-24)
 *   maxLength: Number  // 显示内容最大长度,超过则以 tooltip 形式展示,不传则展示所有内容
 * };
 */
export default {
  name: 'DetailFormRow',
  props: {
    title: {
      type: String,
      default: "详情"
    },
    data: {
      type: Array,
      default: () => []
    }
  },
  methods: {
    beautyValue(item) {
      let _value = item.value || '';
      if (_value.length > item.maxLength) {
        return _value.slice(0, item.maxLength) + '...';
      }
      return _value;
    },
    showToolTip(item) {
      if (!item.value || !item.maxLength) return false;
      return item.value.length > item.maxLength;
    }
  }
}
</script>

<style lang="scss" scoped>
.detail-form {
  .detail-form-row {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    margin-bottom: 25px;

    .detail-form-col {

      .detail-form__title {
        margin: 0 0 15px 10px;
        font-size: 16px;
      }

      .detail-form__title::before {
        content: '';
        background-color: #1890ff;
        position: absolute;
        width: 4px;
        height: 18px;
        left: 0;
      }

      .detail-form-item {
        display: grid;
        height: 100%;
        grid-template-columns: 180px calc(100% - 180px);
        border-bottom: solid #ccc 1px;
        border-right: solid #ccc 1px;

        .detail-form-item__label, .detail-form-item__content {
          display: flex;
          align-items: center;
          padding: 6px 7.5px 10px;
        }

        .detail-form-item__label {
          min-height: 40px;
          border-right: solid #ccc 1px;
          background: #f7f7f7;
        }
      }
    }
  }

  .detail-form-row.border {
    border-left: solid #ccc 1px;
    border-top: solid #ccc 1px;
  }
}
</style>

组件引入以及传参格式

//组件传参
<detail-form title="工单详情" :data="formDataList" />

//动态插入数据
this.$api.getxxxxxDetail(this.id).then(response => {
   this.formData = response;
   this.formDataList = [
       { span: 8, label: "标题", value: response.code },
       { span: 8, label: "标题", value: response.faultyBranch },
       { span: 8, label: "标题", value: response.reportPersonUnit },
       { span: 8, label: "标题", value: response.reportPerson  },
       { span: 8, label: "标题", value: response.reportTime  },
       { span: 8, label: "标题", value: response.committedTime  },
       { span: 8, label: "标题", value: response.level  },
       { span: 8, label: "标题", value: response.type  },
       { span: 8, label: "标题", value: response.committedTime  },
       { span: 8, label: "标题", value: response.status  },
       { span: 8, label: "标题", value: response.evaluateState   },
       { span: 8, label: "标题", value: response.fzr   },
       { span: 24, label: "标题", value: response.faultyDescription  },
       { span: 24, label: "标题", value: response.workGroupMembers  },
     ];
});

封装好不管什么项目用到详情展示都可以直接拉过去使用,可以很快提高开发效率。

寄语

生活就像水中的鸭子,表面上从容淡定,其实水底下在拼命的划水。想要过好生活,就要拼命划,优雅需要底气,华丽需要实力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基本函数、常见曲线图像

基本函数图像是指一些常见的数学函数的图像&#xff0c;这些函数在数学和工程等领域中经常被使用。下面是一些常见的基本函数及其图像&#xff1a; 参考文献&#xff1a;同济版高等数学【第七版】上下册教材

几张表格搞定Mysql的SQL语句

一、数据库的登录与退出 登录Mysqlmysql -uroot -p123退出Mysqlexit 二、对数据库的操作 查询所有数据库show databases;创建数据库create database 数据库名字;删除数据库drop database 数据库名字;查询创建数据库的具体语句show create database 数据库名字;使用数据库use…

自学网络安全(黑客),遇到问题怎么解决

自学网络安全很容易学着学着就迷茫了&#xff0c;找到源头问题&#xff0c;解决它就可以了&#xff0c;所以首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题&#xff0c;看到后面有惊喜哦 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xf…

RocketMQ的系统设计

消息存储 下图为producer、broker、consumer的交互过程 1.消息存储整体架构 CommitLog&#xff1a;消息主体以及元数据的存储主体&#xff0c;存储Producer端写入的消息主体内容(即Producer端投递的消息都会先写入CommitLog中)&#xff0c;消息内容不是定长的。单个文件大小默…

代码随想录day8 | KMP 28.实现strStr() 459.重复的子字符串

文章目录 一、实现strStr()二、重复的子字符串 一、实现strStr() 先学学KMP算法&#xff0c;代码随想录 28.实现strStr() class Solution { public:void getNext(int* next, const string& s) {int j -1;next[0] j;for(int i 1; i < s.size(); i) { // 注意i从1开始…

win 安装虚拟机 再安装macos

0 视频教程 windows虚拟机一键安装苹果系统macos&#xff0c;轻松拥有xcode环境_哔哩哔哩_bilibili在windows环境下vmware虚拟机一键安装macos Catalina10.15.7苹果系统&#xff0c;帮助学习ios编程的朋友们实现xcode环境。文字教程&#xff1a;https://www.dhzy.fun/archives…

【Matlab】基于遗传算法优化 BP 神经网络的数据分类预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的数据分类预测&#xff08;Excel可直接替换数据&#xff09; 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

Qt ComboBox 下拉框设置多列

Qt ComboBox 下拉框设置多列 通过设置listview实现。 class MultiColumnComboBoxItemDelegate; class MultiColumnComboBoxListView;class MultiColumnComboBox : public QComboBox {Q_OBJECT public:explicit MultiColumnComboBox(QWidget *parent nullptr);~MultiColumnCo…

Linux -- 进阶 自动挂载服务 ( autofs ) 介绍及安装 主配置文件分析

背景引入 &#xff1a; 针对于 挂载 &#xff0c; 大家有没有思考过一个问题&#xff0c;如果我们需要挂载的文件或访问的远程数据甚至只是挂载一些设备&#xff0c;如果太多的话&#xff0c;数量很大的话&#xff0c;那 光每次挂载 敲的 mount 命令&#xff0c;都得敲很多遍…

Flask 文件上传,删除上传的文件

目录结构 app.py from flask import Flask, request, render_template, redirect, url_for import osapp Flask(__name__) BASE_DIR os.getcwd() UPLOAD_FOLDER os.path.join(BASE_DIR, testfile)app.route(/) def home():files os.listdir(UPLOAD_FOLDER)return render_t…

如何对maven项目进行打jar包,出现不能打包的情况

若没有正确执行相应的操作,就会出现模块依赖无法找到的情况 Could not find artifact xxx:caro2o-system:pom:3.8.5 in public (https://maven.aliyun.com/repository/public)正确的打包操作 1.将现有的包清空 2.重新下载包 3.为确保数据正确,再次进行打包操作 4.观察控制…

【Python】基于Python和Qt的海康威视相机开发

文章目录 0 前期教程1 前言2 例程解析3 图像获取4 其他问题与解决办法5 使用到的python包 0 前期教程 【项目实践】海康威视工业相机SDK开发小白版入门教程&#xff08;VS2015OpenCV4.5.1&#xff09; 1 前言 此前写了一篇基于C开发海康威视相机的博客&#xff0c;貌似看的人…

设计模式结构型——享元模式

目录 什么是享元模式 享元模式的实现 享元模式的特点 什么是享元模式 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;享元模式中的“享元”指被共享的单元&#xff0c;享元模式通过复用对象&#xff0c;以达到节省内存的目的。要求能够…

[数学建模] [2019年A 模拟练习][层次分析法、熵值法、多目标优化、主成分分析法] 4. 深圳居民健康水平评估与测控模型研究

1、前言 2019年“深圳杯”数学建模挑战赛A题 原题&#xff0c;这个是当时学校内部校赛所作&#xff0c;为了拿到参加国赛名额&#xff0c;也权当是做一个简单的练手。 本次练习属于综合评判类&#xff0c;常用的方法无非 层次分析法、熵值法、多目标优化、主成分分析法 等&am…

简单了解内存泄漏(C++)

文章目录 定义举例内存泄漏的危害内存泄漏的种类如何避免内存泄漏 定义 内存泄漏是指在程序运行过程中&#xff0c;申请的内存空间没有被正确释放或回收&#xff0c;导致这些内存无法再次使用的情况。简而言之&#xff0c;内存泄漏就是程序中已经分配的内存没有被及时释放&…

APP抓包-代理转发绕过反代理+Xposed绕过证书校验

某牛牛安卓app防抓包 夜神模拟器打开牛牛&#xff0c;出现网络连接失败等情况。明明网络一切正常&#xff0c;为什么会这样呢&#xff1f; 因为牛牛设置了反代理&#xff0c;而我开启了代理 burp也无任何牛牛的数据包产生 关闭代理之后牛牛就正常了&#xff0c;可恶的牛牛啊&am…

Localizing Moments in Video with Natural Language论文笔记

0.文献地址 2017 Localizing Moments in Video with Natural Language 1.摘要 提出了Moment Context Network&#xff08;MCN&#xff09;有效地定位视频中的自然语言查询又提出了唯一识别对应时刻的文本描述的数据集DiDeMo 2.引言 作者提出了问题如果查询特定的时间段&am…

算法竞赛备赛之经典数据结构训练提升,暑期集训营培训

1.链表与邻接表&#xff1a;树与图的存储 我们将结构体和指针结合来实现链表 struct Node {int val;Node * next; }; ​ new Node;//这样创建结点是相当慢的 我们算法主要是用数组来模拟链表&#xff0c;这样效率会高一些。 数组模拟单链表 邻接表&#xff1a;存储图和树 实…

Spring Cloud【实现用户鉴权(什么是JWT、JWT原理、用户微服务、JWT工具类、用户服务实现JWT鉴权)】(八)

目录 Gateway解决如何允许跨域 服务网关Gateway实现用户鉴权_什么是JWT 服务网关Gateway实现用户鉴权_JWT原理 服务网关Gateway实现用户鉴权_用户微服务 服务网关Gateway实现用户鉴权_JWT工具类 服务网关Gateway实现用户鉴权_用户服务实现JWT鉴权 Gateway解决如何允许跨域…

5分钟开发一个AI论文抓取和ChatGPT提炼应用

5分钟开发一个AI论文抓取和ChatGPT提炼应用 第一步 点击“即刻开始” -选择模板 python -修改标题 “AIPaper”&#xff0c;项目标识“AIPaper”&#xff0c;点击“创建项目” 第二步 在编程区域右侧AI区域&#xff0c;输入框输入以下内容&#xff1a; 请根据下面的内容&…