首页 > 其他分享 >左侧表头单元格

左侧表头单元格

时间:2023-05-16 14:36:18浏览次数:40  
标签:const title 单元格 year 表头 销售额 key 左侧 Math

效果图:
左侧是表格项,顶部是年份
这种适合在手机等小屏展示表格数据
后段返回的数据格式 0: {key: 2010, year: 2010, aAmount: 946, bAmount: 681, cAmount: 469, …} 1: {key: 2011, year: 2011, aAmount: 543, bAmount: 869, cAmount: 80, …} 2: {key: 2012, year: 2012, aAmount: 442, bAmount: 385, cAmount: 412, …} 3: {key: 2013, year: 2013, aAmount: 847, bAmount: 703, cAmount: 539, …} ....
需要处理一下,将纵向年份的表格数据,改成横向的数据 处理后格式: 0: {title: "销售额 1", key: "aAmount", year0: 946, year1: 543, year2: 442, …} 1: {title: "销售额 2", key: "bAmount", year0: 681, year1: 869, year2: 385, …} 2: {title: "销售额 3", key: "cAmount", year0: 469, year1: 80, year2: 412, …} 3: {title: "销售额 4", key: "dAmount", year0: 13, year1: 86, year2: 408, …} 4: {title: "销售额 5", key: "eAmount", year0: 443, year1: 941, year2: 970, …}
还需要处理一下左侧第一列单元格的样式
完整代码

<template>

  <div>
    <h3>左侧表头表格</h3>
    <a-table
      class="container"
      :columns="columns"
      :data-source="fixedData"
      :scroll="{ x: 1200 }"
      bordered
    >
      <template #headerCell="{ record, index, column }">
        <template v-if="column.dataIndex === 'title'">
          <div class="title">
            <div class="left">销售额</div>
            <div class="line"></div>
            <div class="right">年份</div>
          </div>
        </template>
      </template>
    </a-table>
  </div>
</template>

<script>
import { ref, onMounted } from "vue";

export default {
  setup() {
    const fixedData = ref([]);
    for (let i = 2010; i < 2023; i += 1) {
      fixedData.value.push({
        key: i,
        year: i,
        aAmount: Math.floor(Math.random() * 1000),
        bAmount: Math.floor(Math.random() * 1000),
        cAmount: Math.floor(Math.random() * 1000),
        dAmount: Math.floor(Math.random() * 1000),
        eAmount: Math.floor(Math.random() * 1000),
      });
    }
    // 表头样式
    const customHeaderCell = () => {
      return {
        class: "custom-title-row",
      };
    };
    // 单元格样式
    const customCell = (column, index) => {
      //   console.log(column, index);
      return {
        class: "custom-row",
      };
    };
    const columns = ref([
      {
        title: "",
        dataIndex: "title",
        fixed: true,
        customCell: customCell,
        customHeaderCell: customHeaderCell,
      },
    ]);

    const handleData = () => {
      const columnsArr = [];
      const newTable = [
        { title: "销售额1", key: "aAmount" },
        { title: "销售额2", key: "bAmount" },
        { title: "销售额3", key: "cAmount" },
        { title: "销售额4", key: "dAmount" },
        { title: "销售额5", key: "eAmount" },
      ];
      fixedData.value.forEach((item, i) => {
        const obj = {
          title: item.year,
          dataIndex: `year${i}`,
        };
        columnsArr.push(obj);
      });
      newTable.forEach((item) => {
        fixedData.value.forEach((sItem, i) => {
          item[`year${i}`] = sItem[item.key];
        });
      });
      columns.value = columns.value.concat(columnsArr);
      console.log(fixedData.value, newTable);
      fixedData.value = newTable;
    };

    onMounted(() => {
      handleData();
    });
    return {
      fixedData,
      columns,
    };
  },
};
</script>

<style  lang="less">
.ant-table-thead > tr > .custom-title-row {
  padding: 0;
}
.custom-row {
  background-color: rgb(156, 236, 26);
}
tr.ant-table-row:hover > td.custom-row {
  background-color: rgb(156, 236, 26);
}
/* 表头样式 */
.title {
  position: relative;
  height: 55px;
  .left {
    position: absolute;
    left: 5px;
    bottom: 5px;
  }
  .right {
    position: absolute;
    right: 5px;
    top: 5px;
  }
  .line {
    position: absolute;
    height: 1px;
    background: #ddd;
    width: 104px;
    transform: rotate(33deg);
    top: 27px;
    left: -10px;
  }
}
</style>

 

标签:const,title,单元格,year,表头,销售额,key,左侧,Math
From: https://www.cnblogs.com/steamed-twisted-roll/p/17405521.html

相关文章

  • fullcalendar设置单元格高度,修改了样式但是没效果(已解决)
    首先是设置里面的contenthieght设置不了,然后就尝试直接修改css样式,这里我直接用的控制台工具 拖动这个高度设置的时候我发现是可以改变单元格大小的,然后直接把这一段都复制到代码里,但是用不了,前前后后尝试了很多,为什么css设置的样式没有显示出来?这篇文章里的方法都试了下,但是......
  • Excel合并单元格拆分后数据补录
    原始数据: 期望数据步骤:1、补录为空的数据2、拆分单元格、选择数据选择数据后执行Ctr+G定位数据定位条件:空值定位到第一个数据后,编写公式【=】然后选择它的上一个单元格然后执行Ctrl+回车,被定位到的数据全部执行等于上一单元格值的公式 ......
  • wps word设置table单元格内容不换行
    wpsword设置table单元格内容不换行,文字挤在一起方法:右键表格属性》单元格》选项》勾选适应文字 ......
  • Vue内 ElementUI 动态表头渲染顺序错乱问题
    column渲染顺序不正确数据如下:['增加','描述','修改时间']错误显示:原因自定义:同一层级下条件渲染复数个<el-table-column>标签导致的正确做法在一个<el-table-column>标签内通过<template>条件渲染度娘上的一些其他做法添加一个宽度为1的列<el-table-columnwidth......
  • excel中判断某个单元格包含某个字符的方法
    在Excel中,你可以使用FIND或SEARCH函数来判断一个单元格是否包含某个字符。这两个函数都会返回子字符串在单元格内容中的起始位置,如果没有找到子字符串,则返回错误。FIND和SEARCH函数的基本语法是相似的,但FIND函数区分大小写,而SEARCH函数不区分大小写。以下是FIND和SEARCH函数的基......
  • webstorm左侧导航栏背景变成黄色的,文件搜索,定位等一系列功能都不好用了?
     解决办法:简单说,就是关闭webstorm,然后在终端把.idea目录删除。再打开。 参考:https://www.cnblogs.com/monozxy/p/13932067.html ......
  • EasyCVR视频融合平台视频广场左侧列表样式错乱问题的优化
    EasyCVR平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、集群、电子地图、H.265视频自动转码、智能分析等......
  • 【Vue】vue3 vue-pdf-embed 实现pdf预览、缩放、拖拽、旋转和左侧菜单选择
    实际效果安装插件pnpminstallvue-pdf-embedpnpminstallvue3-pdfjs左侧pdf菜单组件<template><divclass="pdf-view-list"><divclass="itemactive-item"v-for="(item,index)inpageTotalNum"@click="itemClcik(i......
  • Markdown表格-换行、合并单元格
    1.表格中对其、换行处理1.1一般我们都会这样用表格如下:|排名|姓名||--|--||第一名|隔壁老王||第二名|隔壁小王、隔壁小小王|实现效果图:排名姓名第一名隔壁老王第二名隔壁小王、隔壁小小王1.2当然这里也可以通过设置|:--|左对齐,|--:|右对齐比如下面的......
  • element ui抽屉组件蒙版取消后,左侧内容可点击,可处理
    elementui抽屉组件都在用,然后需求提了一个底部蒙版不要,左侧正常点击,输入框正常输入,滚动正常滚动。在做的时候发现蒙版去了只是将当前蒙版的透明度更改了而已,蒙版还是在的,左侧依然点击不了后来想想把蒙版的宽度处理一下跟抽屉的宽度一样不就行了吗?说做就做 抽屉上定义class,......