element vue 日期时间组件封装

一、背景

年、月、周、日的时间范围类型,选择对应的日期类型,会传参给后端一个dateType参数,用于后端判断,进行数据抽稀。

二、实现效果

三、代码

完整代码:

//年月周日,组件封装
//vue3 setup
<script setup lang="ts">
const data = reactive({currentSwitch: "day",dateType: "day",valueTwoTimer: [],
});
let myType = [{label: "年",value: "year",},{label: "月",value: "month",},{label: "周",value: "week",},{label: "日",value: "day",},
];
const setTimeRange = (time) => {return time.getTime() >= Date.now() - 8.64e6;
};
const handleClickBtn = (_index, _value) => {data.currentSwitch = myType[_index];data.dateType = _value; //传参dateTypedata.valueTwoTimer = [];
};
const handleClickLook = () => {console.log("点了查看按钮");
};
</script><template><div class="myTimeRager_home"><div class="switchBox"><div class="typeChange-box"><span> </span></div><div class="leftBox"><!-- 简写 --><divclass="yearBtn"v-for="(item, index) in myType":class="data.currentIndex == index ? 'isActive' : 'yearBtn'":key="index"@click="handleClickBtn(index, item.value)">{{ item.label }}</div><!-- 完整 --><divclass="yearBtn":class="data.currentSwitch == 'year' ? 'isActive' : 'yearBtn'"@click="handleClickBtn(0)">年</div><divclass="yearBtn":class="data.currentSwitch == 'month' ? 'isActive' : 'yearBtn'"@click="handleClickBtn(1)">月</div><divclass="yearBtn":class="data.currentSwitch == 'week' ? 'isActive' : 'yearBtn'"@click="handleClickBtn(0)">周</div><divclass="yearBtn":class="data.currentSwitch == 'other' ? 'isActive' : 'yearBtn'"@click="handleClickBtn(1)">日</div></div><div class="search_right"><template v-if="data.currentSwitch == 'year'"><el-date-pickerv-model="data.valueTwoTimer[0]"type="year"format="YYYY"value-format="YYYY-MM-DD HH:mm:ss"placeholder="开始时间"style="width: 100px"></el-date-picker><div style="margin: 0px 15px 0px 30px">-</div><el-date-pickerv-model="data.valueTwoTimer[1]"format="YYYY"type="year"value-format="YYYY-MM-DD HH:mm:ss"placeholder="结束时间"style="width: 100px; margin-right: 20px"></el-date-picker></template><template v-if="data.currentSwitch == 'month'"><el-date-pickerv-model="data.valueTwoTimer"type="monthrange"start-placeholder="开始时间"end-placeholder="结束时间"value-format="YYYY-MM-DD HH:mm:ss"/></template><template v-if="data.currentSwitch == 'week'"><el-date-pickerv-model="data.valueTwoTimer"type="daterange"start-placeholder="开始时间"range-separator="-"end-placeholder="结束时间"value-format="YYYY-MM-DD HH:mm:ss":disabledDate="setTimeRange"/></template><templatev-if="data.formInline.dateType !== 'year' &&data.formInline.dateType !== 'month' &&data.formInline.dateType !== 'week'">><el-date-picker:disabledDate="setTimeRange"start-placeholder="开始时间"end-placeholder="结束时间"v-model="data.valueTwoTimer"type="daterange"range-separator="-"value-format="YYYY-MM-DD HH:mm:ss"unlink-panels/></template></div><div class="rightBox"><el-button class="hdtbutton look" @click="handleClickLook">查询</el-button></div></div></div>
</template><style lang="less" scoped>
.myTimeRager_home {width: 100%;height: 100%;.switchBox {width: 60%;height: 4.8%;margin-bottom: 10px;font-size: calc(100vw * 16 / 1920);display: flex;align-items: center;.isActive {font-weight: bold;color: #fff !important;background: #4279ca !important;}.switchBox1 {width: 110px;height: 90%;font-size: calc(100vw * 18 / 1920);color: rgba(93, 100, 110, 1);background: #f9fafc;// outline: 2px solid #fff;border-left: 4px solid rgba(93, 100, 110, 0.29);border-right: 4px solid rgba(93, 100, 110, 0.29);box-sizing: border-box;display: flex;justify-content: center;align-items: center;margin-right: 20px;}.leftBox {width: 24%;height: 100%;display: flex;.yearBtn {width: 36px;height: 100%;padding: 0px 10px;margin-right: 7px;color: #4279ca;background-color: #ebf0f5;border: 1px solid #fff;border-radius: 4px;display: flex;justify-content: center;align-items: center;&:hover {cursor: pointer;}}.yearBtn2 {.yearBtn;width: 70px;}}.search_right {width: 53%;height: 100%;display: flex;align-items: center;border-radius: 6px;border: 1px solid rgba(234, 243, 253, 1);background-color: rgba(247, 248, 250, 1);flex: 1;:deep(.el-date-editor) {--el-date-editor-datetimerange-width: 290px;.el-input__inner {text-align: center;}}:deep(.el-date-editor) {--el-date-editor-datetimerange-width: 290px;width: 400px !important;// height: 40px;--el-input-bg-color: rgba(247, 248, 250, 1);--el-input-border-color: rgba(247, 248, 250, 1);--el-input-focus-border-color: rgba(247, 248, 250, 1);--el-input-hover-border-color: rgba(247, 248, 250, 1);}.titleBox {width: 120px;height: 100%;text-align: center;background-color: #dae5f2;color: #5586cf;font-size: calc(100vw * 18 / 1920);display: flex;justify-content: center;align-items: center;overflow: hidden;}}.rightBox {.hdtbutton {width: 104px;height: 39px;border-radius: 6px 6px 6px 6px;padding: 0;display: inline-block;line-height: 39px;text-align: center;margin-left: 10px;font-size: calc(100vw * 20 / 1920);color: #ffffff;}.look {background-color: #4279ca;}.import {background-color: #3686bf;}}}
}
</style>

以上就是实现效果。。。

以下是分别实现的思路 

四、其它

分别实现思路:

1.选择年。实现思路:需要使用两个年的日期选择组件进行拼接,v-model 绑定对应的值。

2.选择月。element组件有现成的 

3.选择周。和选择日一样,选择开始日期和结束日期。 

实现效果:

根据传参dateType,后端返回不同的数据。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA毕业设计134—基于Java+Springboot+Vue的社区医院管理系统(源代码+数据库+万字论文)

毕设所有选题&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的社区医院管理系统(源代码数据库万字论文)134 一、系统介绍 本项目前后端分离&#xff0c;分为管理员、用户、医生、前台四种角色 1、用户&#xff1a; 注…

边缘计算采集网关如何助力制造企业解决数采问题-天拓四方

一、企业背景 某大型制造企业&#xff0c;位于国内某经济发达的工业园区内&#xff0c;拥有多个生产线和智能化设备&#xff0c;致力于提高生产效率、降低运营成本。随着企业规模的扩大和生产自动化的推进&#xff0c;该企业面临着海量数据处理、实时响应和网络安全等多重挑战…

Prompt最佳实践|大模型也喜欢角色扮演?

在OpenAI的官方文档中已经提供了Prompt Enginerring的最佳实践&#xff0c;目的就是帮助用户更好的使用ChatGPT 编写优秀的提示词我一共总结了9个分类&#xff0c;本文讲解第2个分类&#xff1a;要求模型扮演角色 提供更多的细节要求模型扮演角色使用分隔符指定任务步骤提供样…

Java Web这一路走来

大部分Java应用都是Web或网络应用&#xff0c;MVC框架在Java框架中有着举足轻重的地位&#xff0c;一开始的Web应用并不现在这样子的&#xff0c;一步一步走来&#xff0c;每一步都经历了无数的血和泪的教训&#xff0c;以史为镜可以知兴替。 1. 草莽时代 早期的Java服务端技…

Cortex-M4架构

第一章 嵌入式系统概论 1.1 嵌入式系统概念 用于控制、监视或者辅助操作机器和设备的装置&#xff0c;是一种专用计算机系统。 更宽泛的定义&#xff1a;是在产品内部&#xff0c;具有特定功能的计算机系统。 1.2 嵌入式系统组成 硬件 ①处理器&#xff1a;CPU ②存储器…

学习:面向云备份提供商的 Solidigm 固态硬盘

SSD与HDD的区别 SSD和HDD之间的主要区别在于它们如何存储和传输数据。HDD有一个旋转盘片或磁盘&#xff0c;用于读取和写入数据。HDD的每GB初始价格通常低于SSD&#xff0c;这使其成为大型机构&#xff08;如金融机构、政府数据存储设施、高性能计算中心&#xff08;HPC&#…

lua学习笔记11(表的一些相关操作)

print("*****************************表的公共操作*******************************") --table.insert remove sort concat(表名&#xff0c;"分割标识") print("*****************************连接两个表*******************************") a{…

Java常用API_正则表达式_分组——捕获分组与非捕获分组介绍与练习

在正则表达式中&#xff0c;从左到右第一个左括号确定为第一组&#xff0c;继续往右看再有左括号它表示的组数就加一。我们可以在正则表达式中使用 \\组数 的方法表示第几组&#xff0c;如\\1表示第一组的内容。 1.捕获分组 捕获分组就是把这一组的数据捕获出来&#xff0c;后…

2024年网络安全趋势前瞻:从AI攻击到云安全新挑战

随着2024年开展新的序幕&#xff0c;网络安全领域正面临着前所未有的挑战与机遇&#xff0c;一系列引人注目的趋势和预测逐渐浮出水面。 一、AI技术发展引发的安全问题 近年来&#xff0c;我们见证了AI技术的飞速进步&#xff0c;其中ChatGPT等引领潮流的AI服务成为公众瞩目的…

SpringBoot集成Redis快速入门Demo

目录 1. Redis概述 2.下载安装 3. Spring-data-redis概述 4. 快速入门 4.1 创建工程 4.2 导入依赖 4.3 添加配置文件 4.4 添加Redis配置 4.5 添加Redis工具类 4.6 添加测试类 5. Demo下载地址 1. Redis概述 Redis&#xff08;Remote Dictionary Server 远程…

接口自动化入门: Http请求的域名与IP地址概念!

在进行接口自动化测试时&#xff0c;经常需要与服务器进行通信&#xff0c;这就涉及到了使用Http协议发送请求。在发送请求时&#xff0c;我们需要指定目标服务器的域名或者IP地址。下面将从0到1详细介绍域名与IP地址的概念及其在接口自动化测试中的应用。 本文从5个方面来书写…

海外仓订单管理存在哪些问题?利用位像素海外仓系统能提升订单管理效率吗?

随着跨境电商业务的蓬勃发展&#xff0c;海外仓的订单量日益攀升&#xff0c;在海外仓的运作中&#xff0c;订单管理是一项看似简单实则复杂繁琐的任务。 然而&#xff0c;大批量订单的涌入&#xff0c;让其管理背后隐藏的问题也随机出现。让我们一起来看看有哪些问题吧&#…