vex-table根据时间加载列(动态加载),动态计算显示最后一行

2023-05-16

vex-table根据时间加载列(动态加载),动态计算显示最后一行

效果

在这里插入图片描述

div部分

 <vxe-table
        ref="xTable"
        border
        show-footer
        show-overflow
        :loading="loading"
        :data="partData"
        :column-config="{ resizable: false }"
        :edit-config="{ showIcon: false, trigger: 'click', mode: 'cell' }"
        :footer-method="footerMethod"
        :row-config="{ isHover: true }"
        :export-config="{}"
        class="editable-footer"
      >
        <vxe-column type="seq" title="序号" width="50" fixed="left"></vxe-column>
        <vxe-column field="partname" title="部件名称" width="200" fixed="left">
          <template #edit="{ row }">
            <vxe-input v-model="row.partname" type="number" placeholder="请输入数值"></vxe-input>
          </template>
        </vxe-column>
        <vxe-column field="detailqty" title="零件数" width="100" fixed="left">
          <template #edit="{ row }">
            <vxe-input v-model="row.detailqty" type="number" placeholder="请输入数值"></vxe-input>
          </template>
        </vxe-column>
        <vxe-column v-for="item in columnList" :key="item.field" :field="item.field" :title="item.title" :edit-render="{}" min-width="100">
          <template #edit="{ row }">
            <vxe-input v-model="row[item.field]" type="number" placeholder="请输入"></vxe-input>
          </template>
        </vxe-column>
      </vxe-table>

TS部分

<script lang="ts">
import { defineComponent, reactive } from "vue";
export default defineComponent({
  setup() {
    return reactive({
      visible: false as boolean,
      loading: false as boolean,
      proPlan: {
        dateValue: [] as any
      } as any,
      columnList: [] as any,
      partData: [] as any,
    });
  },
  computed: {
    dataRule() {
      return {};
    }
  },
  methods: {
    footerMethod({ columns, data }: any) {
      return [
        columns.map((column: { property: string }, columnIndex: number) => {
          if (columnIndex === 0) {
            return "";
          }
          if (columnIndex === 1) {
            return "汇总";
          }
          if (!["partname"].includes(column.property)) {
            return this.sumNum(data, column.property);
          }
          return null;
        }),
        columns.map((column: { property: string }, columnIndex: number) => {
          if (columnIndex === 0) {
            return "";
          }
          if (columnIndex === 1) {
            return "人数";
          }
          if (!["partname"].includes(column.property)) {
            if (this.capDate.length > 0) {
              for (let i = 0; i < this.capDate.length; i++) {
                if (this.capDate[i].date.includes(column.property)) {
                  return this.sumPerson(data, column.property, Number(this.capDate[i].number));
                }
              }
            }
          }
          return null;
        })
      ];
    },
    sumNum(list: { [x: string]: any }[], field: string | number) {
      let count = 0;
      list.forEach((item: { [x: string]: any }) => {
        if (item[field]) {
          count += Number(item[field]);
        }
      });
      return count;
    },
    sumPerson(list: { [x: string]: any }[], field: string | number, num: number) {
      let count = 0;
      list.forEach((item: { [x: string]: any }) => {
        if (item[field]) {
          count += Number(item[field]);
        }
      });
      return Math.ceil(count / num);
    },
    /**
     * 根据时间加载列
     * @param val
     */
    changeDate(val: any) {
      this.getCapDate(val);
    },
    InitColumns(val: any) {
      let all = this.getAll(val[0], val[1]);
      this.columnList = reactive([]);
      for (let i = 0; i < all.length; i++) {
        let column = reactive({
          field: all[i],
          title: all[i]
        });
        this.columnList.push(column);
      }
      //排序
      this.columnList.sort(function (A: number, B: number) {
        return A - B;
      });
    },
    //根据时间加载 每一天时间
    getAll(start: any, end: any) {
      let dateList = [];
      let startTime = this.getDate(start);
      let endTime = this.getDate(end);

      while (endTime.getTime() - startTime.getTime() >= 0) {
        let year = startTime.getFullYear();
        let month = startTime.getMonth() + 1 < 10 ? "0" + (startTime.getMonth() + 1) : startTime.getMonth() + 1;
        let day = startTime.getDate().toString().length == 1 ? "0" + startTime.getDate() : startTime.getDate();
        dateList.push(year + "-" + month + "-" + day);
        startTime.setDate(startTime.getDate() + 1);
      }
      return dateList;
    },
    /**
     * 时间格式处理 2022-11-11
     * @param datestr
     */
    getDate(datestr: any) {
      let temp = datestr.split("-");
      let date = new Date(temp[0], temp[1] - 1, temp[2]);
      return date;
    },
  });  
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vex-table根据时间加载列(动态加载),动态计算显示最后一行 的相关文章

  • 字符串文本匹配神器———Java正则表达式

    什么是正则表达式 xff1f 正则表达式是一种特殊的字符串模式 xff0c 用于匹配一组字符串 xff0c 就好比用模具做产品 xff0c 而正则就是这个模具 xff0c 定义一种规则去匹配符合规则的字符 为什么要学正则表达式 对于正则表达
  • Android打印调用堆栈(dump backtrace)的方法

    1 为什么要打印函数调用堆栈 xff1f 打印调用堆栈可以直接把问题发生时的函数调用关系打出来 xff0c 非常有利于理解函数调用关系 比如函数A可能被B C D调用 xff0c 如果只看代码 xff0c B C D谁调用A都有可能 xff
  • Ubuntu Linux通过apt库安装WireShark

    华灯璀璨1 秒前 回复 根据文章Ubuntu安装wireshark 小菜鸟要高飞的博客 CSDN博客写成了脚本 脚本如下 xff1a bin bash 编译环境配置 sudo apt get install bison flex libpc
  • (C++)1002 A+B for Polynomials

    笔记 xff1a 1 两个不为0的数相加可能为0 2 浮点数的比较方法 3 输出的时候格式怎么办 本题空格放在哪有门道 4 不需要三个数组 xff0c 一个就可以了 xff0c 第二个 数组 输入的时候直接加在第一个上面 include l
  • 如何轻松把mysql数据表对齐?!正解在这儿

    初学数据库 xff0c 很多小白就会发现自己的数据表总是对不齐 xff1a 怎么对齐 xff1f 只需要输入时 xff1a charset gbk xff1b 就ok了 简单易操作 xff0c 别问我怎么知道的 xff0c 百度是个好东西
  • websocket+定时任务实现实时推送

    websocket 43 定时任务实现实时推送 TaskScheduler定时任务实现websocket 43 定时任务实时推送 有时候业务要求websocket连接后 xff0c 服务端实时每隔一段时间就将数据推送给客户端进行响应 xff
  • Linux系统下运行bash脚本提示/usr/bin/env: ‘bash\r’: No such file or directory

    1 问题现象 在Linux系统中使用 searchsploit 启动 xff0c 运行失败 xff0c 并报错提示如下所示 xff1a 2 错误原因 xff1a 主要是应用bash后面多了 r 字符的原因 xff0c 在Linux终端下 x
  • 面试:每发送一个http请求就要建立一个tcp连接吗(非持久连接/持久连接)

    非持久连接 xff1a HTTP 1 0 中 的首部字段Connection 默认值为 close xff0c 即每次请求都会重新建立和断开 TCP 连接 持久连接 xff1a HTTP 1 1 中 的首部字段Connection 默认值为
  • 实例:用C#.NET手把手教你做微信公众号开发(16)--事件消息处理之点击菜单2

    微信用户点击菜单时 xff0c 会通过微信服务器转发两种事件给你的服务器 xff0c 一种是拉取消息时的事件推送 xff1b 另一种是跳转链接时的事件推送 上篇讲了第一种 xff0c 本篇先讲第二种 一 消息格式 推送XML数据包示例 xf
  • 合理清除AlibabaProtect进程

    1 在 任务管理器 的 进程选项中 xff0c 找到AlibabaProtect进程 xff0c 单击后 xff0c 右键选择 打开文件所在位置 xff0c 找到该进程对应文件所在位置 xff0c 并将其上级目录做成 桌面快捷方式 xff0
  • Sublime Text 4安装使用(完整教程)

    Sublime Text 4安装使用 安装使用语言汉化 OK啦 xff0c 觉得有用的点个赞吧 xff01 xff01 xff01 写这篇博客的意义希望能够将我走过的路 踩过的坑记录下来 在后来在遇到的时候能够更好的翻阅 未经允许 xff0
  • Xlaunch启动后无法显示图形界面,提示connection refused

    解决方案 xff1a 重启远程端
  • 【PR】零基础快速入门教程

    PR 零基础快速入门教程 PR xff08 Premiere xff09 能做什么 xff1f PR欢迎界面及新建项目工作区及窗口说明导入文件建立序列视频剪辑添加字幕导出视频 使用软件 xff1a Premiere2020 新年卷起来 xf
  • 【PR】源窗口

    PR 源窗口 源窗口粗剪源窗口按钮功能标记按钮出入点相关插入与覆盖插入覆盖 导出帧 使用软件 xff1a Premiere2020 源窗口粗剪 我们手上可能有一些很长的视频 xff0c 但是我就想要其中的几段 xff0c 这个时候粗剪就很方
  • 【PR】时间轴窗口

    PR 时间轴窗口 时间轴窗口工具按钮 视频轨道切换轨道输出切换同步锁定目标切换轨道锁定轨道对插入和覆盖进行源修补 工具按钮 音频轨道静音轨道独奏轨道画外音录制 时间轴窗口基础操作添加轨道查看完成视频和音频缩放轨道删除轨道 添加关键帧 使用软
  • 【PR】来,一起做一个简单的剪辑视频吧

    PR 来 xff0c 一起做一个简单的剪辑视频吧 前言新建项目导入素材创建序列裁剪视频视频导入序列 图片背景音频处理多视频素材处理添加字幕导出上传学了上面能做到什么程度 xff1f 可以看一下我用上面的方法做出成品 新手教程哈 xff0c
  • 【PR】视频剪裁

    PR 视频剪裁 把素材文件导入PR问题1 xff1a 删除多余部分 xff08 主要是录制范围 xff09 导出视频 xff08 问题1解决方案看我 xff09 问题2 导出的视频还有黑边导出视频 xff08 问题2解决方案看我 xff09
  • 【PR】图片处理

    PR 图片处理 导入图片将图片文件拖拽进时间轴点击图片选择效果 xff08 时间轴上的那个条 xff09 改变图片位置修改图片大小图片不透明度旋转与锚点 xff08 视频层 xff09 图层 PR不光能导入视频 xff0c 还可以导入图片
  • 【PR】音频处理及过度效果

    PR 音频处理及过度效果 导入音频插入时间轴中的A轨道 xff08 声音轨道 xff09 音频处理调整音量 音频剪贴音频过度效果淡入 xff0c 淡出 xff0c 过度淡入淡出过度 工具按钮 音频轨道 xff08 不充内容 xff0c 可以
  • 实例:用C#.NET手把手教你做微信公众号开发(17)--公众号主动给粉丝发信息之模板消息

    前面讲了那么多 xff0c 都是微信用户主动向公众号发送信息或某个操作触发公众号响应并给予用户回复 如果在微信用户没有主动发起互动的情况下 xff0c 公众号应该如何向微信用户发送消息呢 xff1f 本篇给出一种解决方案 xff1a 模板消

随机推荐

  • 【PR】视频转场与视频粗剪

    PR 视频转场与视频粗剪 视频转场转场使用方法 粗剪与标记 xff08 多个视频合并的小技巧 xff0c 可以不看 xff09 粗剪标注 今天我们来搞一下视频 xff0c 主要是搞一下转场效果 转场 xff1a 让不同场景的画面间过渡更加自
  • 【PR】字幕处理

    PR 字幕处理 添加字幕新建字幕基础设置多字幕添加 其他调整基础效果 效果控件 字幕特效 PR2022版本有字幕插件 xff0c 可以更轻松的处理字幕 我用的是PR2020 xff0c 没有这个功能 xff0c 只能一个一个添加 xff0c
  • 【外设零基础通用教程】GPIO 上

    外设零基础通用教程 GPIO 上 视频 文章结构外设 xff1a GPIO代码编写GPIO输入方法GPIO输出方法 视频地址 xff1a 咸鱼的外设通用教程之GPIO 本教程适合 xff1a 硬件零基础纯小白 上手了硬件不知从何开始 xff
  • 【外设零基础通用教程】GPIO 下

    外设零基础通用教程 GPIO 下 使用方法GPIO 值输入读取值输出设置值 GPIO输入输出应用GPIO输入应用GPIO输出应用文档使用 理论补充输出方式推挽输出开漏输出 上篇连接 xff1a 外设零基础通用教程 GPIO 上 xff0c
  • 硬件外设使用方法——GPIO

    硬件外设使用 GPIO用法 GPIO基本概念GPIO应用pyb与micropython什么是pyb什么是micropythonpyb与micropython关系 GPIO在micropython中的用法什么是pyb库pyb库中的GPIO用法
  • 【硬件外设使用】——ADC

    硬件外设使用 ADC ADC基本概念ADC使用方法pyb adcmachine adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器 xff08 Analog to Digital Converter xff09 的缩写 xf
  • 【硬件外设使用】——DAC

    硬件外设使用 DAC DAC基本概念DAC使用方法pyb dacmachine dac DAC可用的传感器 DAC基本概念 DAC是数字模拟转换器 xff08 Digital to Analog Converter xff09 xff08
  • 【硬件外设使用】——PWM

    硬件外设使用 PWM PWM基本概念PWM使用方法pyb pwm方法属性 machine pwm方法属性 PWM可用的传感器 PWM基本概念 PWM是脉冲宽度调制 xff08 Pulse Width Modulation xff09 的缩写
  • 【硬件外设使用】——I2C

    硬件外设使用 I2C I2C基本概念I2C通信协议I2C使用方法pyb i2cmachine i2c I2C可用的传感器 I2C基本概念 I2C是 34 Inter Integrated Circuit 34 的缩写 xff0c 也被称为T
  • 【硬件外设使用】——SPI

    硬件外设使用 SPI SPI基本概念SPI通信协议SPI使用方法pyb spimachine spi SPI可用的传感器 SPI基本概念 SPI是一种串行端口通信接口 xff0c 它是一种同步的全双工协议 xff0c 用于在数字电路之间传输
  • 实例:用C#.NET手把手教你做微信公众号开发(18)--使用微信支付给粉丝发红包

    前面讲的所有都没有涉及到钱 xff0c 一旦关联到钱都是非常敏感的 xff0c 所以开通微信支付的过程和配置过程相对比较繁琐 xff0c 本篇给出主要入口 xff0c 因篇幅原因一篇文章讲不太细 xff0c 但已足以帮你解决问题 xff0c
  • 【硬件外设使用】——UART

    硬件外设使用 UART UART基本概念UART通信协议UART使用方法pyb uartmachine uart UART 可用的传感器 UART基本概念 UART全称为Universal Asynchronous Receiver Tra
  • 【硬件外设使用】——can

    硬件外设使用 can can基本概念can 通讯can使用方法pyb can can可用的传感器 can基本概念 CAN是Controller Area Network的缩写 xff0c 即控制器局域网 它是一种多主机串行通信协议 xff0
  • 【计算机是怎么跑起来的】基础:计算机三大原则

    计算机是怎么跑起来的 基础 xff1a 计算机三大原则 计算机的三个根本性基础1 计算机是执行输入 xff0c 运算 xff0c 输出的机器输入 xff0c 运算 xff0c 输出 2 软件是指令和数据的集合指令数据 3 计算机的处理方式有
  • 5GC中名词解释

    5GC中常见名词解释 5GC各网元名词解释 UPF xff0c User Plane Function 用户平面功能PCF xff0c Policy Control Function 策略控制功能AMF xff0c Access and M
  • iOS Swift No.1 基础部分 - 常量与变量

    第一章 基础部分 1 Constants and Variables 1 1 Declaring Constants and Variables 声明常量和变量 span class token comment 声明常量 span span
  • 位运算:按位与、按位或、按位异或、按位左移、按位右移

    目录 一 基础知识补充 xff08 1 xff09 位运算 xff08 2 xff09 二进制的详细操作 二 位运算 xff08 1 xff09 按位与 xff08 amp xff09 xff08 2 xff09 按位或 xff08 xff
  • 复习笔记:软件工程基础

    概述 Q1 xff1a 软件的概念和特点 xff1f 软件的概念 xff1a 软件 61 程序 43 数据 43 文档 软件的特点 xff1a xff08 1 xff09 软件是开发的或者是工程化的 xff0c 并不是制造的 xff08 2
  • win11下电脑开热点,手机连接时显示无IP分配

    1 进入设置 gt 网络和Internet gt 移动热点 xff0c 打开电脑热点 xff0c 热点打开时wlan会自动打开 2 进入设置 gt 网络和Internet gt 高级网络设置 gt 更多网络适配器选项 3 右键以太网 gt
  • vex-table根据时间加载列(动态加载),动态计算显示最后一行

    vex table根据时间加载列 xff08 动态加载 xff09 xff0c 动态计算显示最后一行 效果 div部分 span class token tag span class token tag span class token p