表格内日期比较计算
需求:在表格中新增数据,计算开始日期中最早的和结束日期中最晚的,回显到下方。
<el-formref="formRef":model="ruleForm":rules="rules"style="margin-top: 20px;"label-position="top"><el-button style="margin:10px 0" :disabled="disabledEdit" @click="handleAddList">新增</el-button><el-table :data="ruleForm.tableData" border style="width: 100%"><el-table-column label=""><template slot="header"><span class="required">*</span>开始日期</template><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.startDate'" :rules="[{required: true, row:scope.row, validator:validStartDate, trigger: 'change'}]" label=""><el-date-pickerv-model="scope.row.startDate":disabled="disabledEdit"type="date"value-format="yyyy-MM-dd"placeholder="选择日期"@change="handleStartDate(scope.$index)"style="width: 100%;"></el-date-picker></el-form-item></template></el-table-column><el-table-column label=""><template slot="header"><span class="required">*</span>结束日期</template><template slot-scope="scope"><el-form-item :prop="'tableData.' + scope.$index + '.endDate'" :rules="[{required: true, row:scope.row, validator:validEndDate, trigger: 'change'}]" label=""><el-date-pickerv-model="scope.row.endDate":disabled="disabledEdit"type="date"value-format="yyyy-MM-dd"placeholder="选择日期"@change="handleEndDate(scope.$index)"style="width: 100%;"></el-date-picker></el-form-item></template></el-table-column><el-table-column label="操作" width="80"><template slot-scope="scope"><el-form-item label=""><el-buttonsize="mini"type="text":disabled="disabledEdit"class="required"@click.stop="handleDelTable(scope.$index)">删除</el-button></el-form-item></template></el-table-column></el-table><section><el-form-item label="开始时间">{{ ruleForm.startDate?.substring?.(0,10) }}</el-form-item><el-form-item label="结束时间">{{ ruleForm.endDate?.substring?.(0,10) }}</el-form-item></section></el-form>
data() {return {ruleForm: {tableData: [],startDate:"",endDate:"",},rules:[],}},methods: {//开始日期validStartDate(rule, value, callback) {let row = rule.rowif(!row.startDate) {callback(new Error("开始日期不能为空"))} else if(row.endDate&&value&&new Date(value) > new Date(row.endDate)) {callback(new Error("开始日期不能大于结束日期"))}else{callback()}},//结束日期validEndDate(rule, value, callback) {let row = rule.rowif(!row.endDate) {callback(new Error("结束日期不能为空"))} else if(row.startDate&&value&&new Date(row.startDate) > new Date(value)) {callback(new Error("结束日期不能小于开始日期"))}else{callback()}},// 日期大小比较compare(attr, rev) {rev = (rev || typeof rev === 'undefined') ? 1 : -1;return (a, b) => {a = a[attr];b = b[attr];if (a < b) { return rev * -1; }if (a > b) { return rev * 1; }return 0;};},handleStartDate(i) {if(!this.ruleForm.tableData.length) {this.ruleForm.startDate = ''} else {let arr = this.ruleForm.tableData.filter(item=>{return item.startDate !== null})const DESC = arr.sort(this.compare("startDate", true)); // 降序this.ruleForm.startDate = !arr.length ? '' : this.newDate(DESC[0].startDate)this.$refs.formRef.validateField('tableData.' + i + '.endDate');}},handleEndDate(i) {if(!this.ruleForm.tableData.length) {this.ruleForm.endDate = ''} else {let arr = this.ruleForm.tableData.filter(item=>{return item.endDate !== null})const DESC = arr.sort(this.compare("endDate", false)); // 降序this.ruleForm.endDate = !arr.length ? '' : this.newDate(DESC[0].endDate)this.$refs.formRef.validateField('tableData.' + i + '.startDate');}},// 中国标准时间转为年月日newDate(time) {var date = new Date(time)var y = date.getFullYear()var m = date.getMonth() + 1m = m < 10 ? '0' + m : mvar d = date.getDate()d = d < 10 ? '0' + d : dreturn y + '-' + m + '-' + d},// 新增handleAddList() {this.ruleForm.tableData.push({id: this.$route.query.id * 1,content: '', startDate: '', endDate: '', responsible: '',})},// 删除handleDelTable(index) {this.ruleForm.tableData.splice(index,1 )this.handleStartDate()this.handleEndDate()}, },
相关文章:
表格内日期比较计算
需求:在表格中新增数据,计算开始日期中最早的和结束日期中最晚的,回显到下方。 <el-formref"formRef":model"ruleForm":rules"rules"style"margin-top: 20px;"label-position"top">…...
Linux内核启动流程-第二阶段start_kernel 函数
一. Linux内核启动 上一篇文章简单介绍了 Linux内核启动的第一阶段,即执行汇编流程。 本文简单了解一下,Linux内核启动的第二阶段:start_kernel函数,这是一个 C 函数。 本文续上一篇文章的学习,地址如下:…...
Disruptor:无锁队列设计的背后原理
简介 在高并发场景下,队列的速度和效率是关键。而Disruptor,一种高性能的并发队列,通过独特的设计,解决了传统队列在处理高并发时可能遇到的性能瓶颈。本文将深入分析Disruptor如何通过环形数组结构、元素位置定位以及无锁设计&a…...
网络编程-UDP协议(发送数据和接收数据)
需要了解TCP协议的,可以看往期文章 https://blog.csdn.net/weixin_43860634/article/details/133274701 TCP/IP参考模型 通过此图,可以了解UDP所在哪一层级中 代码案例 发送数据 package com.hidata.devops.paas.udp;import java.io.IOException; …...
AI绘画普及课【一】绘画入门
文章目录 一、AI 绘画入门1、Stable Diffusion VS. MidJourney2、Stable Diffusion 介绍3、Stable Diffusion 环境搭建4、文生图与图生图 一、AI 绘画入门 1、Stable Diffusion VS. MidJourney Midjourney 优点: 操作简单、出图绚丽多彩 缺点: 订阅付费充钱 内容有限制&a…...
Selenium和Requests搭配使用
Selenium和Requests搭配使用 前要1. CDP2. 通过requests控制浏览器2. 1 代码一2. 2 代码2 3. 通过selenium获取cookie, requests携带cookie请求 前要 之前有提过, 用selenium控制本地浏览器, 提高拟人化,但是效率比较低,今天说一种selenium和requests搭配使用的方法 注意: 一定…...
【JDK 8-函数式编程】4.4 Supplier
一、Supplier 接口 二、实战 Stage 1: 创建 Student 类 Stage 2: 创建方法 Stage 3: 调用方法 Stage 4: 执行结果 一、Supplier 接口 供给型 接口: 无入参,有返回值(T : 出参类型) 调用方法: T get(); 用途: 如 无参的工厂方法&#x…...
后端大厂面试-16道面试题
1 java集合类有哪些? List是有序的Collection,使用此接口能够精确的控制每个元素的插入位置,用户能根据索引访问List中元素。常用的实现List的类有LinkedList,ArrayList,Vector,Stack。 ArrayList是容量…...
产品经理认证(UCPM)备考心得
UCPM是联合国训练所CIFAL中心颁发的产品经理证书。如今,ESG是推动企业可持续发展的新潮流。UCPM作为一种可持续发展证书,为我们带来了一套先进科学、系统全面的产品管理模式,是产品管理领域公认的权威证书。那么,如何准备这张证书…...
E : A DS顺序表_删除有序表中的重复元素
Description 给定一个按升序排列的顺序表,请删除所有重复的元素,使得每个元素只出现一次,并输出处理后的顺序表。 Input 第一行输入t,表示有t个测试样例。 第二行起,每一行首先输入n,表示有n个元素&…...
前端教程-vite
官网 Vite中文网 视频教程 Vite世界指南(带你从0到1深入学习 vite)...
Java笔记三
包机制: 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间。 包语句的语法格式为:pack pkg1[. pkg2[. pkg3...]]; 般利用公司域名倒置作为包名;如com.baidu.com,如图 导包: 为了能够…...
ElementUI之首页导航与左侧菜单
目录 一、Mock 1.1 什么是Mock.js 1.2 安装与配置 1.2.1 安装mock.js 1.2.2 引入mock.js 1.3 mock.js使用 1.3.1 定义测试数据文件 1.3.2 mock拦截Ajax请求 1.3.3 界面代码优化 二、总线 2.1 定义 2.2 类型分类 2.3 前期准备 2.4 配置组件与路由关系 2.4.1 配置…...
java项目之在线教育资源管理系统(ssm源码+文档)
项目简介 在线教育资源管理系统实现了以下功能: 管理员:个人中心、学生管理、教师管理、公告信息管理、课程信息管理、试题管理、留言板管理、管理员管理、试卷管理、系统管理、考试管理。学生:个人中心、留言板管理、考试管理,…...
C/S架构学习之UDP服务器
UDP服务器的实现流程:一、创建用户数据报套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择数据报式; int sockfd socket(AF_INET,SOCK_DGRAM,0); 二、填充服务器的网络信息结构体:1.定义网络信…...
磁盘占用率100% 的优化方案
1.禁用不必要的系统服务 右键点击此电脑,打开管理 打开服务 寻找SysMain 右键属性 》 禁用 》 停止 》 应用 SysMain的作用:当开机后,windows会加载大量的应用程序预加载到内存中,会在后台预加载数据(如果是旧版本win…...
vue组件的通信
文章目录 组件通信父传子父传子:通过prop来进行通信 子传父先在父组件用注册方法 , 在子组件触发使用 emit 函数 组件间通信-平行组件使用事件总线的方法,也就是把整个vue提出来,当为一个事件总线 其他组件通信父组件 provide来提供变量,然后再子组件中通过inject来注入变量 组…...
(搞定)排序数据结构(1)插入排序 选择排序+冒泡排序
目录 本章内容如下 一:插入排序 1.1插入排序 1.2希尔排序 二:选择排序 2.1选择排序 三:交换排序 3.1冒泡排序 一:插入排序 1.1直接插入排序 说到排序,其实在我们生活中非常常见&…...
C++ 类访问修饰符 public、private、protected
数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。 一个类可以有多个 public、protected…...
pytorch学习笔记——BCE与CE
BCELoss的话只需要网络输出一个通道,CE Loss(Cross Entropy Loss)需要输出n_class个通道。 对于二分类任务可以使用CE Loss输出两个通道,也可以使用BCE Loss输出一个通道。 https://www.jianshu.com/p/5b01705368bb https://zhuanlan.zhihu.com/p/372628…...
3种智能解析技术:VideoDownloadHelper如何突破网页视频下载限制
3种智能解析技术:VideoDownloadHelper如何突破网页视频下载限制 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 在当今数字内容爆…...
Seraphine英雄联盟战绩查询工具终极指南:智能排位助手完全教程
Seraphine英雄联盟战绩查询工具终极指南:智能排位助手完全教程 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否在英雄联盟排位赛中经常因为BP阶段手忙脚乱而错失先机?是否希望快…...
数据血缘是什么?怎么建设数据血缘?
今年跟十几个企业老板聊AI落地,发现大家都有一个共识:不上AI是等死,乱上AI是找死。为什么?因为AI这玩意儿就像顶级厨师,食材不新鲜、来历不明,做出来的菜照样能毒倒一片。这里的食材,就是数据。…...
EFFACT架构:全同态加密硬件加速的创新设计
1. EFFACT架构概述:当硬件设计遇上全同态加密在密码学加速器的世界里,我们一直在寻找一个平衡点——如何在有限的芯片面积和功耗预算下,处理那些看似无解的复杂计算?EFFACT架构的诞生,正是为了解决全同态加密ÿ…...
数据流计算模型在边缘到云场景的优化实践
1. 数据流计算模型的演进与挑战数据流计算模型自诞生以来,已经成为分布式系统领域处理大规模数据的核心范式。这种模型通过将计算过程抽象为有向无环图(DAG),其中顶点代表数据处理算子,边代表数据流动路径,…...
大空间中庭水平防火卷帘防火分隔技术应用探讨
摘要大空间中庭广泛应用于商业综合体、大型会展中心、高端写字楼等现代公共建筑,具备通透开阔、流线连贯、美观性强的空间优势,但多层贯通的结构特性极易造成火灾烟气快速扩散、火势纵向蔓延,大幅提升建筑消防防控难度。水平防火卷帘作为柔性…...
listmonk数据库查询缓存键命名规范:一致性与可读性
listmonk数据库查询缓存键命名规范:一致性与可读性 在高性能自托管邮件列表管理器listmonk中,数据库查询缓存是提升系统响应速度的关键组件。本文将深入解析listmonk项目中数据库查询缓存键的命名规范,探讨如何通过一致性的命名规则和良好的…...
番茄小说下载器终极指南:3分钟掌握全平台电子书制作技巧 [特殊字符]
番茄小说下载器终极指南:3分钟掌握全平台电子书制作技巧 🚀 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款基于Rust语言开发的专…...
如何用OpenWebRTC实现音视频通话:完整开发教程
如何用OpenWebRTC实现音视频通话:完整开发教程 【免费下载链接】openwebrtc A cross-platform WebRTC client framework based on GStreamer 项目地址: https://gitcode.com/gh_mirrors/op/openwebrtc OpenWebRTC是一个基于GStreamer的跨平台WebRTC客户端框架…...
智能体进化蓝图:构建具备持续学习能力的AI系统架构设计
1. 项目概述:一个开源智能体进化蓝图最近在开源社区里,一个名为planck-lab/hermes-evolving-agents-public-blueprint的项目引起了我的注意。乍一看这个标题,包含了几个关键信息:planck-lab(普朗克实验室,一…...
