Vue中使用Vue-scroll做表格使得在x轴滑动

news2024/9/25 13:19:36

页面效果

首先

npm i vuescroll

在main.js中挂载到全局

页面代码

<template>
    <div class="app-container">
        <Header :title='title' @goback='goBack'>
            <template v-slot:icon>
                <van-icon @click='goHome' class='icon' name='wap-home-o' />
            </template>
        </Header>
        <div class="table_box">
            <vue-scroll :ops="ops" style="width:100%;height:100%">
            <div class="data-box">
                <van-row class="th-row" style="display:flex;">
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">序号</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">门店名称</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">是否认购</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">认购目标(分)</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">本月完成(分)</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">是否达时序</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">当前进度</van-col>
                    <van-col style="width:90px;text-align: center;border-right: 1px solid #ddd;">是否需预警</van-col>
                </van-row>

                <!-- 数据循环展示,checkbox可以进行选择-->
                <van-row class="td-row" :style="{ background: index % 2 == 0 ? '#fefefe' : '#f3f3f3' }"
                    v-for="(item, index) in accountList" :key="index">
                    <van-col class="common-ellipsis" @click="showContent(item.workerNo)">{{ item.workerNo }}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.workerName)">{{ item.workerName }}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.salary)">{{ item.salary }}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.amount)">{{ item.amount }}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.amountTime, 1)">{{ item.amountTime
                        |dateFormat}}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.remark)">{{ item.remark }}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.remark)">{{ item.remark }}</van-col>
                    <van-col class="common-ellipsis" @click="showContent(item.remark)">{{ item.remark }}</van-col>
                </van-row>

            </div>
        </vue-scroll>
        </div>

        <!-- 弹出省略的内容 -->
        <van-popup v-model="showPopup" class="hidden-wrap">
            <van-row class="hidden-content">{{ ellContent }}</van-row>
        </van-popup>
    </div>
</template>
<script>
import Header from '../components/header'
export default {
    name: "vantTable",
    components: { Header },
    filters: {
        dateFormat: function (val) {
            //省略......
            return val;
        }
    },
    data() {
        return {
            title: "积分认购一览表",
            dataform: {
                queryStr: '',
            },
            isCheckAll: false,
            showPopup: false, // 显示省略的内容
            ellContent: "", // 省略的内容
            costName: "",
            checkedVal: [],
            accountList: [
                { workerNo: "1", workerName: "张良", salary: "1000", amount: "50000", amountTime: "20021201", remark: "弄啥咧" },
                { workerNo: "2", workerName: "天明", salary: "1111", amount: "40000", amountTime: "20021203", remark: "弄啥咧" },
                { workerNo: "3", workerName: "少司命", salary: "1222", amount: "60000", amountTime: "20021001", remark: "弄啥咧" },
                { workerNo: "4", workerName: "高渐", salary: "1333", amount: "20000", amountTime: "20021021", remark: "弄啥咧" },
                { workerNo: "5", workerName: "雪女", salary: "1444", amount: "10000", amountTime: "20020801", remark: "弄啥咧" },
            ],
            ops: {
                vuescroll: {},
                scrollPanel: {},
                rail: {
                    keepShow: true
                },
                bar: {
                    hoverStyle: true,
                    onlyShowBarOnScroll: false, //是否只有滚动的时候才显示滚动条
                    background: "#F5F5F5",//滚动条颜色
                    opacity: 0.5,//滚动条透明度
                    "overflow-y": "hidden" //使用横向滚动 竖向就是"overflow-x": "hidden"
                }
            }
        };
    },
    created() { },
    methods: {
        goBack() {
            this.$router.go(-1)
        },
        goHome() {
            this.$router.push('/index')
        },
        // 显示省略的内容
        showContent(content, type) {
            if (content == "") {
                return;
            } else {
                if (type == 1) {
                    var format = this.$options.filters['dateFormat'];
                    //日期通过过滤器格式化一下
                    this.ellContent = format(content)
                } else {
                    this.ellContent = content;
                }
                this.showPopup = true;
            }
        },
        checkAll() {
            if (!this.isCheckAll) {
                this.$refs.checkboxGroup.toggleAll(true);
                this.isCheckAll = true;
            } else {
                this.$refs.checkboxGroup.toggleAll();
                this.isCheckAll = false;
            }
        },
        onSearch() {

        },
        cLearSearch() {

        },
        checkChange() {

        },

    },
};
</script>

<style lang="less" scoped>
.app-container{
    background-color: #fff;
    height: 100vh;
    .table_box{
    padding: 10px;
    margin-top: 20px;
    .data-box {
    font-size: 13px;
    margin: 12px 0px;
    border: 1px solid #d0f2f0;

    .th-row {
        height: 30px;
        line-height: 30px;
        padding: 0px 12px;
        background: #d0f2f0;
    }

    .td-row {
        height: 30px;
        line-height: 30px;
        padding: 0px 12px;
    }

}

}
}


// 超出 1 行显示省略号
.common-ellipsis {
    width: 90px;
    height: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    border-right: 1px solid #ddd;
    text-align: center;
}


// 滚动条位置 --展示横向
/deep/.__bar-is-vertical {
    display: none !important;
}

// 隐藏横向滚动条
/deep/.__bar-is-horizontal {
    bottom: -1px !important;
}
</style>

其中有个组件的代码header.vue

<template>
  <div class="head_box">
    <header>
      <div class="back">
        <img @click="goBack" src="../assets/back_on.png" alt="" />
      </div>
      <div class="home_title_container">
        <h3 style="font-weight: normal;font-size: 20px;">{{title}}</h3>
      </div>
      <div class="home_func">
        <slot name="icon"></slot>
      </div>
    </header>
  </div>
</template>
<script>
export default {
  name: 'org',
  props:{
    title:{

    }
  },
  data() {
    return {
    }
  },
  methods: {
    goBack() {
      this.$emit('goback')
    },
  },
}
</script>
<style lang="less" scoped>
.head_box{
  height: 2rem;
}
header {
  z-index: 999;
  color: red;
  text-align: center;
  height: 3rem;
  background: url('../assets/bg1.png');
  width: 100%;
  background-size: 100% 100%; // 可以使用cover
  background-repeat: no-repeat;
  background-origin: border-box; //从border开始填充
  background-clip: border-box;
  display: flex;
  justify-content: center;
  position: fixed;
  top: 0;
  .back {
    padding-left: 15px;
    img {
      align-self: center;
      display: flex;
      flex-direction: column;
      justify-content: center;
      height: 1.5rem;
    }
    width: 20%;
    height: 100%;
    text-align: left;
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  .home_func {
    display: flex;
    justify-content: center;
    flex: 1;
    width: 30%;
    height: 100%;
    font-size: 1.6rem;
    line-height: 1.5rem;
    color: #fff;
    .icon {
      display: flex;
      justify-content: center;
      flex-direction: column;
      text-align: center;
    }
    img{
      display: inline-block;
      width: 30px;
      height: 30px;
      align-self: center;
    }
  }
  .home_title_container {
    width: 70%;
    // height: 1.207729rem;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    font-size: 0.434783rem;
    line-height: 0.724638rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #fff;
    h4 {
      font-size: 0.434783rem;
      line-height: 0.483092rem;
      height: 0.483092rem;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
  }
}
</style>

注意

记得替换图片    !!!!

vant版本是2.x   !!!

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

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

相关文章

svix - webhooks

文章目录 一、关于 SvixClient Library Overview与 Svix 托管服务的区别 二、运行服务器1、部署1.1 Docker1) 使用 Docker Compose2) 独立容器 1.2 预编译的二进制文件1.3 从源代码构建 2、运行时依赖项3、Redis/Valkey 注意事项持久性 Eviction 政策4、服务器配置4.1 配置文件…

【探索数据之美】“从基础到精通——深入解析数据结构与二叉树的秘密“

gitee代码获取链接&#xff1a;https://gitee.com/flying-wolf-loves-learning/data-structure.git 一、树的概念 1.1 概念简述 数据结构中的树是一种层次结构&#xff0c;它由节点&#xff08;node&#xff09;和边&#xff08;edge&#xff09;组成。每个节点都有零个或多…

微服务-Nacos-安装-集成SpringBoot

微服务-SpringCloud-ALibaba-Nacos Nacos 是阿里巴巴推出的 SpringCloud的组件 官网:什么是 Nacos 主要是为了解决微服务的架构中 服务治理的问题服务治理就是进行服务的自动化管理&#xff0c;其核心是服务的注册与发现。 服务注册&#xff1a;服务实例将自身服务信息注册…

用友GRP-U8 sqcxIndex.jsp SQL注入漏洞(XVE-2024-12560)

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 用友GRP-U8是用友公司专注于国家电子政务事业&#…

使用 Spring HATEOAS 开发 REST 服务-浅显的理解

随笔&#xff0c;简单理解 一、restful是什么 1、第一层次&#xff08;Level 0&#xff09;的 Web 服务只是使用 HTTP 作为传输方式&#xff0c;实际上只是远程方法调用&#xff08;RPC&#xff09;的一种具体形式。 SOAP 和 XML-RPC 都属于此类 2、第二层次&#xff08;Lev…

三坐标测量机在汽车零部件质量控制中的应用

高质量的零部件能够确保汽车的性能达到设计标准&#xff0c;包括动力性能、燃油效率、操控稳定性等&#xff0c;从而提供更好的驾驶体验&#xff0c;建立消费者对汽车品牌的信任&#xff1b;也推动了汽车行业的技术创新&#xff0c;制造商不断研发新材料、新工艺&#xff0c;以…

汽车制造业安全有效的设计图纸文件外发系统是什么样的?

在汽车制造的世界里&#xff0c;那些设计图不仅仅是公司智慧的闪光点&#xff0c;更是它们竞争的秘密武器。但问题来了&#xff0c;当公司需要和供应商、合作伙伴频繁交换数据时&#xff0c;怎样安全又高效地发送这些设计图&#xff0c;就成了一个头疼的问题。这篇文章会深挖一…

图解 BERT 模型

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

go使用letteravatar生成圆形透明头像图标

官网地址&#xff1a;GitHub - disintegration/letteravatar: Letter avatar generation for Go 我对其中函数改了一下&#xff0c;支持多个字符&#xff0c;效果如下&#xff1a; func TestCreateAvatar(t *testing.T) {GenerateAvatar("Bird Fish", 0, "Bird…

【包邮送书】你好!C语言

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

56. UE5 RPG 给敌人添加AI实现跟随玩家

在这一篇里&#xff0c;我们要实现一下敌人的AI&#xff0c;敌人也需要一系列的行为&#xff0c;比如朝向英雄攻击&#xff0c;移动&#xff0c;在满足条件时施放技能。这些敌人的行为可以通过使用UE的内置的AI系统去实现。 在UE里&#xff0c;只要是基于Character类创建的蓝图…

【从零开始学习RabbitMQ | 第一篇】如何确保生产者的可靠性

目录 前言&#xff1a; 生产者重连机制&#xff1a; 生产者确认机制&#xff1a; Publisher Confirm&#xff08;生产者者确认&#xff09; Publish Return&#xff08;发布返回&#xff09; 总结&#xff1a; 前言&#xff1a; 在现代的分布式系统中&#xff0c;消息队…

5个将文本转语音的工具,高考复习的绝佳助手

高考倒计时10天&#xff01; 在这最后的冲刺阶段&#xff0c;同学们都在拼命刷题&#xff0c;但面对已经整理好的知识点&#xff0c;时间紧迫&#xff0c;如何高效复习呢&#xff1f; 别急&#xff0c;今天我要和大家分享一个绝佳的复习方法——文字转语音。这个方法可以让你…

鸿蒙4.2小版本推出,鸿蒙5.0已经不远了

上个月&#xff0c;市场上迎来了华为鸿蒙系统4字开头的小升级&#xff0c;版本来到了4.2版本。 我们先来看看4.2版本都给用户带来哪些特色&#xff1a; 界面切换更流畅&#xff1a;无论是响应速度还是操作手感&#xff0c;用户都将感受到更加迅速和顺滑的体验 搜星速度的显著…

人类和小鼠转录组上游分析

基础软件 conda install cutadapt, trimmomatic, samtools, hisat2, subread, deeptools -y人类转录组上游分析 # 样本名称 sample_namesample# 线程 threads4# 双端测序原始fastq1和fastq2路径 fastq1_path/path/${sample_name}_1.fq.gz fastq2_path/path/${sample_name}_2.…

【LeetCode】【9】回文数(1047字)

文章目录 [toc]题目描述样例输入输出与解释样例1样例2样例3 提示进阶Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;LeetCode 刷题指南&#xff1a;LeetCode刷题指南 题目描述 给一个整数x&#xff0c;如果x是一个回文整数&#xff0c;返回true&#xff1b;否…

CATIA二次开发VBA入门(2)——认识CATIA内置的VBA开发界面

目录 引出VBA界面介绍工具条介绍view下拉菜单insert下拉format下拉debug下拉tool下拉help下拉【重要】补充窗口窗体的模态【重要】 总结认识CATIA二次开发刘瑞欣 vb程序设计教程Excel中的vba开发catia中的vba开发 宏的录制、回放和编辑宏代码精简画圆柱阵列宏Macro文件的3种类型…

mysql内存和磁盘的关系

mysql内存和磁盘的关系 1.MySQL的内存和磁盘之间的关系是密切的。MySQL的数据存储在磁盘上&#xff0c;但为了高效地执行查询操作&#xff0c;它也会将数据页&#xff08;每个页通常为16KB&#xff09;读入内存。MySQL的缓冲池&#xff08;buffer pool&#xff09;是在内存中的…

数据通信基本概念汇总

1. 数据通信基础 网关: 提供协议转换&#xff0c;路由选择&#xff0c;数据交换的网络设备 报文: 网络中所传递的一个数据单元。 数据载荷: 最终要传递的信息 封装: 给数据载荷添加头部和尾部的过程(形成新的报文) 解封装: 给数据载荷去掉头部和尾部的过程(获取数据载荷) 终端设…

JAVA语言开发的一套云HIS医院管理系统源码 HIS源码 医院管理系统源码 HIS系统是否可以与LIS和RIS进行集成

系统概述 云HIS系统是一种基于云计算的医疗卫生信息系统&#xff0c;它运用云计算、大数据、物联网等新兴信息技术&#xff0c;按照现代医疗卫生管理要求&#xff0c;在一定区域范围内以数字化形式提供医疗卫生行业数据收集、存储、传递、处理的业务和技术平台。云HIS的主要功…