记录vue开发实例

封装的表格组件

<template><div><div style="width: 100%" v-if="showList"><el-table v-loading.lock="loading" :data="dataList":header-cell-style="{background: '#F2FCFE',fontSize: '14px',color: '#50606D'}":row-style="{ height: '80px' }" class="menu_table"height="550"><el-table-column label="序号" type="index" width="80"></el-table-column><el-table-column width="1"></el-table-column><li v-for="(item,index) in settingOpts" :key="index"><el-table-column :key="Math.random()" :width="item.width" :fixed="item.fixed" :label="item.label"><template slot-scope="scope"><span v-if="item.isDisplay && item.isDisplay === true">{{(scope.row[item.id] && scope.row[item.id] != null && scope.row[item.id] != "") ? scope.row[item.id] : "--"}}</span><span v-if="item.isNeedMethod && item.isNeedMethod === true">{{ $parent.findMethod(item.methodName, scope.row[item.id]) }}</span><span v-if="item.isStatus && item.isStatus === true">{{ $parent.findMethod(item.statusMethodName,scope.row[item.id]) }}</span><span v-if="item.isSpecialStatus && item.isSpecialStatus === true" :class="$parent.findMethod(item.specialClass,scope.row)">{{ $parent.findMethod(item.specialMethod,scope.row) }}</span><span v-if="item.isNeedBack && item.isNeedBack === true" :class="$parent.findMethod(item.classMethod,scope.row)">{{ scope.row[item.displayName] }}</span><div v-if="item.isSwitch && item.isSwitch === true"><el-switch :value="scope.row[item.id].val" @input="$parent.findMethod(item.switchInfo.switchMethod,scope.row)" :active-value="item.switchInfo.activeVal" :inactive-value="item.switchInfo.inactiveVal" :active-color="item.switchInfo.activeColor" :inactive-color="item.switchInfo.inactiveColor"></el-switch></div><div v-if="item.isImg && item.isImg === true"><p v-if="(!scope.row[item.id] || scope.row[item.id] == null || scope.row[item.id].length== '')">暂无人脸</p><el-popover v-else aria-placeholder="top-start" trigger="hover"><div class="row_reserve"><img class="big-mig" :src="scope.row[item.id]"></div><div slot="reference"><img style="width: 50px;height: 50px;" :src="scope.row[item.id]"></div></el-popover></div><div v-if="item.isOperation && item.isOperation === true" class="flex jc-sa"><div v-for="(child,index) in item.operationOpts" :key="index" v-if="showOperation(child,scope)" style="color: #0080F7; cursor: pointer"><span @click="$parent.findMethod(child.method,scope.row)">{{ child.isNeedSpecial && child.isNeedSpecial === true ? $parent.findMethod(child.specialDisplay,scope.row) : child.name}}</span></div></div></template></el-table-column></li><template slot="empty"><div class="aic mt-20 mb-20"><img src="@/assets/empty.png" style="width: 45px; height: 36px" alt="" /><p style="margin: 0;font-size: 14px;height: 16px;line-height: 16px;color: #aba9bb;">暂无数据</p></div></template></el-table></div></div>
</template><script>/*项目列表参数属性详解* id String 用于关联props的属性名称* label String table中展示的列名* fixed Boolean/String 是否固定列,true默认左固定,可接收left或right* isDisplay Boolean 该属性是否可以直接用于展示* isNeedMethod Boolean 该属性是否需要经过自定义加工* methodName String/Object 自定义加工方法,若isNeedMethod为true,则须提供方法名称,不需要就默认null。* isStatus Boolean 该属性是否为状态值* statusMethodName String 目前状态的返回值在各列表中不统一,情况多样,所以单独提供一个加工方法。* isSpecialStatus Boolean 该状态是否需要特殊展示* specialClass String 特殊展示时的样式* specialMethod String 特殊展示时的方法(有些可能需要特殊处理)* isSwitch Boolean 是否为Switch开关类型* switchInfo Object switch开关需要用到的信息(激活值、颜色等),可参考客户(customer)模块Eg:switchInfo: {activeVal: "0",inactiveVal: "1",activeColor: "#13ce66",inactiveColor: "#DCDFE6",switchMethod: "updateCustomerStatus",},* isOperation Boolean 是否为操作列* operationOpts Array<object> 操作列所需要的方法、展示名称、是否需要条件筛选及筛选条件,可参考访客(visitor)模块operationOpts:[{method String  操作列关联方法名name String 操作列名称isCondition Boolean 该操作是否需要展示条件condition Function 展示条件函数isNeedSpecial Boolean 该操作是否需要特殊展示(如操作名称随状态值进行改变)specialDisplay String 进行特殊展示的方法名}]Eg: operationOpts: [{method: "auditVisitor",name: "审核",isCondition:true,condition:function(data){return data.status == 0}},{method: "editVisitor",name: "编辑",isCondition:true,condition:function(data){return data.status != 1}},},],* isImg Boolean 是否为图片* isNeedBack Boolean 字段是否需要背景* classMethod String 切换样式的方法* displayName String 属性展示名(有些列需要用到两个属性,此处填写所需要用到的另一个属性key)*/
export default {name: "TableList",props: {dataList: {type: Array,required: true,},showList: {type: Boolean,required: true,},loading: {type: Boolean,required: true,},settingOpts: {type: Array,required: true,},},data() {return {};},methods: {showOperation(child, scope) {if (child.isCondition && child.isCondition === true) {return child.condition(scope.row);} else {return true;}},},created() {},
};
</script><style lang="less" scoped>
.menu_table {width: 98%;margin: 0 auto;margin-top: 20px;
}
div::-webkit-scrollbar {// 直接修改样式就可以了width: 8px;display: none;
}// 	滚动条
::-webkit-scrollbar {width: 40px;// background-color: red;
}// 滚动条轨道
::-webkit-scrollbar-track {width: 40px;border-radius: 40px;background-color: #f4f8f7;
}// 滚动条滑块
::-webkit-scrollbar-thumb {border: 5px solid #c1c1c1;border-radius: 40px;// background-color: yellow;
}.connect {padding-left: 10px;padding-right: 10px;border-radius: 4px;background-color: #d6edff;
}.gateway {padding-left: 10px;padding-right: 10px;border-radius: 4px;background-color: #ffdde0;
}.gatewaySon {padding-left: 10px;padding-right: 10px;border-radius: 4px;background-color: #ffe8cb;
}.open {color: #16dbcc;
}.close {color: #e52a44;
}
</style>

 引入使用

 

 element组件fixed="right" 表格错位

 解决方法

1,

2,

3,

 通过数组数量循环input标签数量填写表单

paramsInfo.fieldList的值

targetDataList的值

 表单循环targetDataList获取 label值(即有多少个input标签的生成),表单填写的内容绑定在 paramsInfo.fieldList[index].fieldValue

        <el-form-item v-for="(column, index) in targetDataList" :key="index" :label="column.fieldDesc"><el-input :id="column.targetId"v-model.trim="paramsInfo.fieldList[index].fieldValue":type="column.fieldName"style="width: 100%;"></el-input></el-form-item>

 根据表头获取输入框数量

 根据表头的数量,新增的输入框数量

    //增加按钮addBtn() {// 检查 scopeBranchLists 不为空且包含 fieldName 属性if (Array.isArray(this.scopeBranchLists) && this.scopeBranchLists.length > 0) {// 使用 map 函数从 scopeBranchLists 中提取 fieldName 值//fieldNames = ['index_name', 'dept_name', 'comment', 'dept_type', 'options', 'unit', 'source_priority']// let fieldNames = this.scopeBranchLists.reduce((acc, item) => {//   acc[item.fieldName] = '';//   return acc;// }, {});const fieldNames = this.scopeBranchLists.map(item => item.fieldName);var fieldNamesObj = {};for (var i = 0; i < fieldNames.length; i++) {fieldNamesObj[fieldNames[i]] = null;}//this.formData = fieldNamesObjthis.rows.push(fieldNamesObj);}},

 表头数据 

<div v-for="(item, index) in scopeBranchLists" :key="index" style="margin-right: 3%;width: 140px;">{{ item.fieldDesc }}
</div>

 生成的input框数量(5个表头,生成对应五个输入框 为一个对象,最后放入rows数组)

<table><tr v-for="(obj, rowIndex) in rows" :key="rowIndex"><tdstyle="display: flex;justify-content: space-between;padding-bottom: 20px; border-bottom: 1px solid #e4e7ed;"><el-inputv-for="(value, key) in obj":key="key"v-model.trim="obj[key]"style="margin-right: 28px;margin-top: 5px;height: 30px;width: 140px;"type="text"/><div style="width: 4%;margin-top: 10px"><img src="../../../assets/cancel.png" style="width: 18px;height: 18px;cursor: pointer;"@click="deleteDict(rowIndex)"/></div></td></tr>
</table>

完整代码

          <div><div style="display: flex;padding-top: 3px;padding-bottom: 8px;border-bottom: 1px solid #ccc;background-color: #f2fcfe; color: #50606d"><div v-for="(item, index) in scopeBranchLists" :key="index" style="margin-right: 3%;width: 140px;">{{ item.fieldDesc }}</div></div><table><tr v-for="(obj, rowIndex) in rows" :key="rowIndex"><tdstyle="display: flex;justify-content: space-between;padding-bottom: 20px; border-bottom: 1px solid #e4e7ed;"><el-inputv-for="(value, key) in obj":key="key"v-model.trim="obj[key]"style="margin-right: 28px;margin-top: 5px;height: 30px;width: 140px;"type="text"/><div style="width: 4%;margin-top: 10px"><img src="../../../assets/cancel.png" style="width: 18px;height: 18px;cursor: pointer;"@click="deleteDict(rowIndex)"/></div></td></tr></table></div>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

因为在此系统上禁止运行脚本

问题&#xff1a; 解决办法&#xff1a; vue项目搭建中"因为在此系统上禁止运行脚本"报错&#xff0c;解决方法 - 你的剧本 - 博客园 (cnblogs.com)

详解链表oJ<反转链表,链表的中间节点及链表的回文>

hello&#xff0c;大家好&#xff0c;这里是Dark FlameMaster,今天和大家分享的是有关数据结构链表的几道题目&#xff0c;链表的中间节点&#xff0c;反转链表及判断链表是否为回文结构&#xff0c;放在一起讲解会印象更加深刻。 文章目录 一&#xff0c;链表的中间节点二&…

从0到1基于ChatGLM-6B使用LoRA进行参数高效微调

从0到1基于ChatGLM-6B使用LoRA进行参数高效微调 吃果冻不吐果冻皮 ​ 关注他 cliniNLPer 等 189 人赞同了该文章 ​ 目录 收起 ChatGLM-6B简介 具备的一些能力 局限性 LoRA 技术原理 环境搭建 数据集准备 数据预处理 参数高效微调 单卡模式模型训练 数据并行模式模型训练 模型推…

自动驾驶学习笔记(二)——Apollo入门

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 Ubuntu Linux文件系统 Linux指令…

水波纹文字效果动画

效果展示 CSS 知识点 text-shadow 属性绘制立体文字clip-path 属性来绘制水波纹 工具网站 CSS clip-path maker 效果编辑器 页面整体结构实现 使用多个 H2 标签来实现水波纹的效果实现&#xff0c;然后使用clip-path结合动画属性一起来进行波浪的起伏动画实现。 <div …

5分钟理解什么是卷积的特征提取

大家好啊&#xff0c;我是董董灿。 卷积算法之所以重要&#xff0c;关键在于其提取特征的能力。 5分钟入门卷积算法中提到&#xff0c;卷积模仿的就是人眼识图的过程&#xff0c;以“感受野”的视角去扫描图片&#xff0c;从而获取不同区域的图片信息。 在这一过程中&#x…

新风机注意事项有哪些?

选择和使用新风机时&#xff0c;有几个关键注意事项需要牢记&#xff1a; 安装位置&#xff1a;新风机的安装位置很重要。通常情况下&#xff0c;应将其安装在室外以避免室内产生噪音和减少室内的体积占据。确保选择合适的安装位置&#xff0c;以便新风机能够顺利引入新鲜空气。…

《从零开始学ARM》勘误

1. 50页 2 51页 3 236页 14.2.3 mkU-Boot 修改为&#xff1a; mkuboot 4 56页 修改为&#xff1a; 位[31&#xff1a;24]为条件标志位域&#xff0c;用f表示&#xff1b; 位[23&#xff1a;16]为状态位域&#xff0c;用s表示&#xff1b; 位[15&#xff1a;8]为扩展位域&…

【Unity C#_菜单Window开发系列_Inspector Component UnityEditor开发】

GUI系列操作 1.枚举菜单实现文件1&#xff1a;Assets/MyScript/Test1.cs代码如下&#xff1a; 文件2&#xff1a;Assets/MyScript/Editor/Test1Editor.cs代码如下&#xff1a; 测试一下新建一个场景&#xff0c;新建一个Empty 节点&#xff0c;用来测试枚举组件将文件1&#xf…

Nginx详细学习记录

1. Nginx概述 Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 1.1 Nginx基础架构 Nginx默认采用多进程工作方式&#xff0c;Nginx启动后&#xff0c;会运行…

ArcMap:第二届全国大学生GIS技能大赛(广西师范学院)详解-上午题

目录 01 题目 1.1 第一小题 1.2 第二小题 1.3 第三小题 1.4 数据展示 02 思路和实操 2.1 第一问思路 2.2 第一问操作过程 2.2.1 地理配准 2.2.2 镶嵌 2.2.2.1 第一种镶嵌方法 2.2.2.2 第二种镶嵌方法 2.2.3 裁剪 2.2.4 DEM信息提取 2.2.5 分类 2.3 第二问思路 …

网络安全:个人信息保护,企业信息安全,国家网络安全的重要性

在当前的数字化时代&#xff0c;无论是个人&#xff0c;企业&#xff0c;还是国家&#xff0c;都会面临严重的网络安全威胁。网络安全不仅涉及我们的日常生活&#xff0c;也涉及到社会的稳定和国家的安全。这就需要我们高度重视网络安全&#xff0c;强化个人信息保护&#xff0…

数据库配置mysql5.7

1 创建数据库 """ 1.管理员连接数据库 mysql -uroot -proot2.创建数据库 create database hello default charsetutf8;3.查看用户 select user,host,password from mysql.user;# 5.7往后的版本 select user,host,authentication_string from mysql.user; "…

机器学习:决策树

决策树 决策树是一种基于树形结构的模型&#xff0c;决策树从根节点开始&#xff0c;一步步走到叶子节点&#xff08;决策&#xff09;&#xff0c;所有的数据最终都会落到叶子节点&#xff0c;既可以做分类也可以做回归。 特征选择 根节点的选择该用哪一个特征呢&#xff…

【单元测试】如何使用 JUnit5 框架?

JUnit5 单元测试框架使用教程 一、Junit5 是什么&#xff1f; Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成&#xff1a;JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform&#xff1a;定义了测试引擎的 API&#xff0c;是…

软考程序员考试大纲(2023)

文章目录 前言一、考试说明1.考试目标2.考试要求3&#xff0e;考试科目设置 二、考试范围考试科目1&#xff1a;计算机与软件工程基本知识1&#xff0e;计算机科学基础2&#xff0e;计算机系统基础知识3&#xff0e;系统开发和运行知识4&#xff0e;网络与信息安全基础知识5&am…

pnpm、npm、yarn 包管理工具『优劣对比』及『环境迁移』

前言 博主在开发前端网站的时候&#xff0c;发现随着开发的项目的逐渐增多&#xff0c;安装的依赖包越来越臃肿&#xff0c;依赖包的安装速度也是非常越来越慢&#xff0c;多项目开发管理也是比较麻烦。之前我就了解过 pnpm&#xff0c;但是当时担心更换包管理环境可能会出现的…

十、2023.10.4.计算机网络(one).10

文章目录 1、简述静态路由和动态路由&#xff1f;2、说说有哪些路由协议&#xff0c;都是如何更新的&#xff1f;3、简述域名解析过程&#xff0c;本机如何干预域名解析&#xff1f;4、简述 DNS 查询服务器的基本流程是什么&#xff1f;DNS 劫持是什么&#xff1f;5、简述网关的…

FFmpeg 基础模块:容器相关的 API 操作

目录 AVFormat 模块 AVFormat 前处理部分 AVFormat 读写处理部分 小结 思考 FFmpeg 目录中包含了 FFmpeg 库代码目录、构建工程目录、自测子系统目录等&#xff0c;具体内容如下&#xff1a; 现在你知道 FFmpeg 的源代码目录中都包含了哪些内容&#xff0c;在之后使用 FFm…