前端(二)VUE功能集锦

一、引言

        作者开发工具平台的时候,用到了vue和element-ui,这里写一下各种功能使用,有的是绕点弯路,有的是需要结合实现需要自己改写一下。

二、功能

        先看看环境,作者后端是SpringBoot,前端是VUE+ElementUI,前端文件直接放在esources的static里面,没有做前后端分离,毕竟这个平台是属于我们部门的,没有专门的前端人员

1、悬浮显示

        有些内容比较长,需要只展示一部分,还要把鼠标悬浮的时候,展示全部内容r

html:
<el-tooltip :content="code" placement="top">
  <div class="ellipsis">{{ code }}</div>
 </el-tooltip>


css:

        .ellipsis {
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

2、点击图标复制

html:
<el-button type="text" icon="el-icon-document-copy"
@click="copyContent(code)"></el-button>

js:
copyContent(content) {
                    const el = document.createElement('textarea');
                    el.value = content;
                    document.body.appendChild(el);
                    el.select();
                    document.execCommand('copy');
                    document.body.removeChild(el);
                    _this.$message.success('内容已复制');
                },

3、数据转换展示

        有时候需要把数据转换一遍再展示,比如日期

html:
<template slot-scope="scope">
     {{ formatDate(scope.row.createTime) }}
 </template>


js:
formatDate(timestamp) {
                    const date = new Date(timestamp);
                    return date.toLocaleDateString();
                },

4、文本输入框高度

        试了style样式的高度设置,还有!important之类的强设置,没用

        内容输入框只能使用 :rows进行设置高度或者重写组件,如果要重写就太麻烦了

<el-input placeholder="请输入" type="textarea" :rows="25"
                                      style="width: 100%;height:600px !important"
                                      size="medium"
                                      clearable
                                      v-model="createForm.content"></el-input>

5、输入或者选择事件

        在用户输入或者选择一些内容的时候,需要识别到内容是什么,有时候要特殊处理,比如数据库相关展示db、表,日志相关展示标题、信息等等

选择

html:
<el-select filterable placeholder="请选择" :disabled="detailFlag || detailStepFlag"
                                       v-model="createStepForm.stepType"
                                       @change="handleStepTypeChange">
                                <el-option :key="step.code" :label="step.name" :value="step.code"
                                           v-for="step in stepTypeList">
                                </el-option>
                            </el-select>

js:

handleStepTypeChange(value) {
   if (_this.createStepForm.stepType === 'log') {
        //业务处理
  }
},

输入框 

html:
<el-input placeholder="请输入" style="width: 200px;" size="mini" clearable
                                      @change="handleSecretChange"
                                      :disabled="detailFlag || detailStepFlag"
                                      v-model="createStepForm.secretKey"></el-input>


js:
handleSecretChange() {
                    //业务处理
                },

6、根据输入值加载远程数据

html:
<el-select
                                v-model="createForm.e"
                                multiple
                                filterable
                                remote
                                :remote-method="searchEe"
                                :loading="loadingE"
                                :options="es"
                                placeholder="请选择"
                                style="width: 200px;">
                            <el-option v-for="item in es" :key="item.e" :label="item.eDesc"
                                       :value="item.e"></el-option>
                        </el-select>


js:
searchEmail(queryString) {
                    _this.loadingEmail = true;
                    // 模拟异步加载数据
                    setTimeout(() => {
                        let url = '/eQuery/eInfo?value=' + queryString;
                        _this.axios.post(url)
                            .then(function (response) {
                                if (response.data && response.data.data) {
                                    _this.es = response.data.data.map(x => {
                                        let res = {};
                                        res.e = x.e;
                                        res.eDesc = xdisName;
                                        return res;
                                    })
                                    _this.loadingEmail = false;
                                }
                            });
                    }, 1000);
                },

7、表格内容互换 

        比如需要选择一些任务,点击到另外一个表格里面,把需要真正执行的任务发给后端

<el-table :data="sourceList"
                              @row-click="handleClickChange"
                              :row-class-name="tableRowClassName"
                              :highlight-current-row="false"
                              :header-cell-style="{
                                    color: '#fff',
                                    background: '#0a3370',
                                    fontWeight: '700',
                                  }"
                              :header-fixed="true"
                              @selection-change="moveSelectedData" style="height:300px;width: 100%;overflow: auto">
                        <el-table-column type="selection" width="55"></el-table-column>
                        <el-table-column
                                label="序号"
                                type="index"
                                width="80">
                        </el-table-column>
                    </el-table>
                    <el-row style='font-weight: bold;font-size: 18px;margin-bottom: 25px'>执行一览</el-row>
                    <el-table :data="executeList"
                              @row-click="handleClickChange"
                              :row-class-name="tableRowClassName"
                              :highlight-current-row="false"
                              :header-cell-style="{
                                    color: '#fff',
                                    background: '#0a3370',
                                    fontWeight: '700',
                                  }"
                              :header-fixed="true"
                              style="height:300px;width: 100%;overflow: auto">
                        <el-table-column
                                label="序号"
                                type="index"
                                width="80">
                        </el-table-column>
                        <el-table-column
                                label="操作"
                                prop="operate">
                            <template slot-scope="scope">
                                <el-button type="danger" size="mini" @click="removeFromRight(scope.row)">删除
                                </el-button>
                            </template>
                        </el-table-column>
                    </el-table>

        移动到任务表格


                moveSelectedData(selectedData) {
                    console.log("moveSelectedData selectedData:" + JSON.stringify(selectedData));
                    _this.executeList = _this.executeList.concat(selectedData);
                    console.log("moveSelectedData executeList:" + JSON.stringify(_this.executeList));
//把原始表格这条数据删除
                    _this.sourceList = _this.sourceList.filter(item => !selectedData.includes(item));
                },

        如果是点错了,需要能够把任务表格的数据删除,这里的删除也不是真的删除,是把数据放回原始表格


                removeFromRight(row) {
                    const index = _this.executeList.findIndex(data => data.code === row.code);
                    if (index !== -1) {
                        _this.executeList.splice(index, 1);
                        _this.sourceList.push(row);
                    }
                },

8、表格样式 

        表格如果光秃秃的直接用组件,也不好看,所以需要修改一下样式,上面作者的表格也能看的html里面的一些样式

css


        .el-table,
        .el-table__expanded-cell {
            background-color: transparent;
            color: #93dcfe;
            font-size: 20px;
        }

        .el-table th,
        .el-table tr,
        .el-table td {
            background-color: transparent;
            border: 0px;
            color: #93dcfe;
            font-size: 16px;
            height: 5px;
            font-family: Source Han Sans CN Normal, Source Han Sans CN Normal-Normal;
            font-weight: Normal;
        }

        .el-table::before {
            height: 0px;
        }

        .el-table__body tr,
        .el-table__body td {
            padding: 0;
            height: 12px;
        }

        .el-table tbody tr:hover > td {
            background: #063570 !important;
        }


        .el-table__header-wrapper {
            border: solid 1px #04c2ed;
        }

        .el-table__row.warning-row {
            background: #063570;
        }

        .el-table__body-wrapper::-webkit-scrollbar-track {
            background-color: #063570;
        }

        .el-table__body-wrapper::-webkit-scrollbar {
            width: 10px;
            opacity: 0.5;
        }

        .el-table__body-wrapper::-webkit-scrollbar-thumb {
            border-radius: 12px;
            background-color: #0257aa;
        }

        看看效果呢 ,鼠标放上去还会变色的

三、总结

        前端就是做画面的,应该什么逻辑都不要有,而不是看一些逻辑前后端谁做会省力,不过看我们这边的前端部门,做的大了之后还是不可避免的会有一些逻辑,只能说尽量保持纯净吧。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘高生产力设计工具!15款原型设计软件推荐大公开!

1、Proto.io Proto.io是一个特殊的手机原型开发平台——可以构建和部署全交互式移动程序的原型&#xff0c;并可以模拟类似的成品。它可以在大多数浏览器中运行&#xff0c;并提供三个重要的界面&#xff1a;dashboard、编辑器和播放器。 dashboard可以用来管理项目。编辑器是…

spring常见漏洞(3)

CVE-2017-8046 Spring-Data-REST-RCE(CVE-2017-8046)&#xff0c;Spring Data REST对PATCH方法处理不当&#xff0c;导致攻击者能够利用JSON数据造成RCE。本质还是因为spring的SPEL解析导致的RCE 影响版本 Spring Data REST versions < 2.5.12, 2.6.7, 3.0 RC3 Spring Bo…

亚信安慧AntDB数据库自主研发技术再获国际认可

亚信安慧AntDB数据库最新宣布喜讯&#xff1a;成功通过了GB 18030-2022《信息技术 中文编码字符集》的最高级别认证&#xff0c;从而荣幸地成为首批获得此认证的数据库产品之一。这一认证的取得不仅是AntDB在技术上的重要里程碑&#xff0c;更是对其一贯积极践行国家政策和标准…

护眼台灯哪个品牌更好?汇总好用的护眼台灯前五名

随着对健康生活的追求不断增长&#xff0c;越来越多的人开始关注眼睛健康问题。在日常生活和工作中&#xff0c;台灯作为常用的照明设备之一备受关注&#xff0c;尤其是护眼台灯的问世引起了广泛关注。尤其是对于那些经常长时间用眼的人群&#xff0c;比如面临较重课业负担的学…

转载 | 深耕数据安全 创新“智”高点-天空卫士获评金智奖“年度最具影响力企业奖”

近日&#xff0c;以“并肩聚力&#xff0c;协同创新&#xff0c;共谋网络安全产业新发展”为主题的2022-2023年度中国网络安全与信息产业“金智奖”颁奖盛典在上海隆重举行。北京天空卫士网络安全技术有限公司&#xff08;以下简称“天空卫士”&#xff09;凭借其高速成长能力、…

【书生·浦语】大模型实战营——第五次课程作业

基础作业——使用LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署InternLM-Chat-7B模型&#xff0c;生成300字的小故事 环境准备 除了安装所需依赖之后&#xff0c;重要的是进行模型转化&#xff08;转换成TurboMind格式&#xff09;&#xff0c;这里需要注意转化命…

Android项目架构怎么做

项目架构指南 本指南包含一些最佳做法和推荐架构&#xff0c;有助于构建强大而优质的应用。 注意&#xff1a; 本页假定您对 Android 框架有基本的了解。 移动应用用户体验 典型的 Android 应用包含多个应用组件&#xff0c;包括 Activity、Fragment、Service、内容提供程序…

计算机毕业设计----SSH滑雪场场地租赁管理系统

项目介绍 该项目主要包括三个角色&#xff1a;管理员、收银员、用户&#xff1b; 用户角色包含以下功能&#xff1a; 用户登录,修改个人信息,查看我的订单等功能。 管理员角色包含以下功能&#xff1a; 管理员登录,滑雪场管理,订单管理,教练管理,器材管理,会员管理,收银员管…

docker容器和常用命令

1.什么是容器 容器是隔离的环境中运行的一个 进程 , 如果进程结束 , 容器就会停止. 细致: 容器的隔离环境 , 拥有自己的 ip 地址 , 系统文件 , 主机名 , 进程管理 , 相当于一个 mini的系统 2.容器 vs 虚拟机 3.Docker极速上手指南 #1.安装相关依赖. sudo yum install -y …

黑龙江教育杂志黑龙江教育杂志社黑龙江教育编辑部2023年第11期目录

卷首/开篇 科学的“加法”是什么 陆鹤鸣; 1 聚焦/管理_家校合作 “双减”背景下高中家校共育的现状与成因探析——哈尔滨市第九中学调查问卷分析 李佰嵩;张雨萌;李丹丹;岳彤; 4-6 共筑家校成长共同体 开创家校共育新生态 李隽;李俊峰;胡胜男; 7-9《黑龙江教育》投稿…

关于C#中的async/await的理解

1. 使用async标记的方法被认为是一个异步方法&#xff0c;如果不使用await关键字&#xff0c;调用跟普通方法没有区别 static async Task Main(string[] args){Console.WriteLine("主线程id&#xff1a;" Thread.CurrentThread.ManagedThreadId);TestAwait();Consol…

表的增删改查CURD(一)

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;MySql&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 新增&#xff08;Create&#xff09; 全列插入 指定列…

docker使用nginx部署vue刷新页面404

docker使用nginx部署vue刷新页面404 从docker内部复制出来的配置文件是这样的&#xff0c;但是刷新页面之后就显示404&#xff0c;关键是我两个前端项目都是用的这一个配置文件&#xff0c;但是只有一个项目出现刷新浏览器显示404的问题&#xff0c;这给我搞懵了&#xff01;&…

一些面试会问到的奇怪问题与面试总结

1.v-for、v-if先后顺序。 官方不建议一起使用&#xff0c;但是有时候面试的时候会问到。 在vue2中是v-for先与v-if的。 源码js编译结果&#xff1a; _c()就是vm.$createElement()&#xff0c;意思是创建一个虚拟的element&#xff0c;就是返回值是VNode。 _l就是renderlist…

关于java创建对象内存分析

关于java创建对象内存分析 我们在前面的文章中&#xff0c;了解了类和对象&#xff0c;以及创建对象&#xff0c;给对象赋值等&#xff0c;我们本篇文章来进一步了解一下创建对象的时候&#xff0c;堆和栈的情况&#xff0c;以及对内存的分析&#x1f600; 1、创建一个类 我…

虚拟机连接(与主机断开连接)U盘的按钮为灰色之解决方法

在WIN11中&#xff0c;虚拟机“连接(与主机断开连接)U盘”选项为灰色&#xff0c;解决方法如下&#xff1a; 1、关闭虚拟机电源&#xff0c;得到下面的界面&#xff1a; 2、根据上述提示&#xff0c;找到虚拟机所在磁盘 3、配置文件属性见下图&#xff1a; 4、使用记事本打开…

【深度学习:Synthetic Training Data 】合成训练数据简介

【深度学习&#xff1a;Synthetic Training Data 】合成训练数据简介 计算机视觉模型的视频标签视频注释与图像注释‍Data 数据‍Annotation process ‍标注流程‍Accuracy 准确性 ‍注释视频的优点易于数据收集时间背景实用功能 视频注释用例自动驾驶汽车姿态估计交通监控医学…

Python源码26:海龟画图turtle画向日葵

---------------turtle源码集合--------------- Python教程43&#xff1a;海龟画图turtle画小樱魔法阵 Python教程42&#xff1a;海龟画图turtle画海绵宝宝 Python教程41&#xff1a;海龟画图turtle画蜡笔小新 Python教程40&#xff1a;使用turtle画一只杰瑞 Python教程39…

KT148A语音芯片智能锁扩展语音地址以及如何支持大量小文件的打包

一、语音芯片应用于智能锁的需求 智能锁的语音播放需求中&#xff0c;有很多需要多国语言合并在一起的需求 其中语音文件数多&#xff0c;并且每个语音文件小的特点 如果使用OTP的语音芯片&#xff0c;就很麻烦&#xff0c;因为用户不可烧录&#xff0c;调试也很繁琐 同时大…

Java 开源扫雷游戏 JMine 发布新版 3.0 及介绍视频

Java 开源扫雷游戏 JMine 发布新版 3.0 及介绍视频 Java 开源扫雷游戏 JMine 是笔者开发的基于 Swing 的 Java 扫雷游戏&#xff0c;现已发布新版 3.0 及其介绍视频。视频请见&#xff1a; https://www.bilibili.com/video/BV1RK4y1z7Qz/ 老版本 JMine 1.2.5 的介绍视频请见…