季度到季度的组件选择

在这里插入图片描述

组件:
<template><div class="quarter"><div class="input-wrap" id="closeId" @mouseover="handler" @click.stop="btn" :style="{color:colorItem}"><i class="el-icon-date"></i>{{seasonValue}}<i class="el-icon-circle-close" :style="{display:displayShow}" @click.stop="close"></i></div><div v-show="showSeason" ref="shows" class="selectPop"><div v-for="(item, index) in timeList" :key="index" style="width: 47%; height: 140px;"><template><div class="card-header"><el-row style="width: 100%; height: 100%;"><el-col :span="6" style="height: 100%; text-align:left"><div class="el-icon-d-arrow-left" v-show="prevShow(index)" @click="prev(item)" style="width: 16px;cursor: pointer; "></div></el-col><el-col :span="12"><div class="text-year" style="text-align:center">{{ item.year }}</div></el-col><el-col :span="6" style="height: 100%; text-align:right"><div class="el-icon-d-arrow-right" v-show="nextShow(index)" @click="next(item)" style="width: 16px;cursor: pointer; "></div></el-col></el-row></div></template><div class="text-item" style="text-align:center;"><el-button type="text" size="medium" class="no-choose" :class="{choose: item.QOneSelect}" style="cursor: pointer;width:46%; float:left;" @click="selectSeason(index, 1, '第一季度')">第一季度</el-button><el-button type="text" size="medium" class="no-choose" :class="{choose: item.QTwoSelect}" style="cursor: pointer;float:right;width:46%;" @click="selectSeason(index, 2, '第二季度')">第二季度</el-button></div><div class="text-item" style="text-align:center;"><el-button type="text" size="medium" class="no-choose" :class="{choose: item.QThreeSelect}" style="cursor: pointer;width:46%;float:left;" @click="selectSeason(index, 3, '第三季度')">第三季度</el-button><el-button type="text" size="medium" class="no-choose" :class="{choose: item.QFourSelect}" style="cursor: pointer;float:right;width:46%;" @click="selectSeason(index, 4, '第四季度')">第四季度</el-button><!--  --></div></div></div></div>
</template>
<script>
export default {computed: {prevShow() {return (data) => {//右边部分年份左箭头显示判断if (data === 1 && this.timeList[1].year - this.timeList[0].year === 1) {return false;} else {return true;}};},nextShow() {return (data) => {//左边部分年份右箭头显示判断if (data === 0 && this.timeList[1].year - this.timeList[0].year === 1) {return false;} else {return true;}};},},data() {return {showSeason: false, //是否显示选择季度面板year: new Date().getFullYear(), //默认当前年seasonValue: "请选择季", //input中显示的内容time: {stTime: "",edTime: "",},colorItem: "#c0c4cc",displayShow: "none",timeList: [{year: new Date().getFullYear() - 1,QOneSelect: false,QTwoSelect: false,QThreeSelect: false,QFourSelect: false,},{year: new Date().getFullYear(),QOneSelect: false,QTwoSelect: false,QThreeSelect: false,QFourSelect: false,},],selectNum: 0, //计数器firstSelect: "", //第一次选中的值拼接firstSelectQuarter: "", //第一次选中的季度firstIndex: "", //第一次选中的是数组中的哪一个secondSelect: "", //第二次选中的值拼接secondSelectQuarter: "", //第二次选中的季度secondIndex: "", //第二次选中的是数组中的哪一个};},created() {// 点击页面的任何一个地方,都隐藏提示this.text();},watch: {//方法1seasonValue(newVal, oldVal) {//  color: #606266;if (newVal == "请选择季") {this.colorItem = "#c0c4cc";} else {this.colorItem = "#606266";}},},methods: {handler() {if (this.seasonValue == "请选择季") {this.displayShow = "none";} else {this.displayShow = "block";}},text() {document.addEventListener("click", (e) => {if (this.$refs.shows) {let self = this.$refs.shows.contains(e.target);if (!self) {this.showSeason = false;}}});},btn() {this.showSeason = !this.showSeason;//再次打开的时候回显上次选中的 必须是之前选过而非首次打开if (this.showSeason && this.firstSelectQuarter && this.secondSelectQuarter) {const nameOne = this.transQuarter(this.firstSelectQuarter);this.timeList[this.firstIndex][nameOne] = true;const nameTwo = this.transQuarter(this.secondSelectQuarter);this.timeList[this.secondIndex][nameTwo] = true;}},close() {this.seasonValue = "请选择";this.showSeason = false;},//年向前prev(obj) {obj.year -= 1;// this.year = +this.year - 1;},//年向后next(obj) {obj.year += 1;// this.year = +this.year + 1;},//选择季度处罚selectSeason(index, quarterNum, quarterString) {//每选中一次计数器加一 计数器是2的时候重置计数器this.selectNum += 1; //非首次打开 会回显上次选中的结果再次选中会清空上次选中this.timeList.forEach(item => {item.QOneSelect = falseitem.QTwoSelect = falseitem.QThreeSelect = falseitem.QFourSelect = false})//将选中的季度项改变颜色const attName = this.transQuarter(quarterNum);this.timeList[index][attName] = true;//选中赋值const selectValue = this.timeList[index].year.toString() + quarterString;const selectQuarter = quarterNum;const selectIndex = index;if (this.selectNum === 1) {//打开选择框选中第一个季度项赋值this.firstSelect = selectValue;this.firstSelectQuarter = selectQuarter;this.firstIndex = selectIndex;} else {//打开选择框选中第二个季度项赋值this.secondSelect = selectValue;this.secondSelectQuarter = selectQuarter;this.secondIndex = selectIndex;}//当计数器为2时,说明已经选中了两个季度,比较两次选中的值 进行赋值if (this.selectNum === 2) {//索引小的为选择框左边  索引大的为选择框右边if (this.firstIndex < this.secondIndex) {//从左往右选直接拼接this.seasonValue = this.firstSelect + " - " + this.secondSelect;} else if (this.firstIndex > this.secondIndex) {//从右往左选反过来拼接this.seasonValue = this.secondSelect + " - " + this.firstSelect;} else {//索引一样说明两次选的是同一边 须比较两次选的季度值的大小if (this.firstSelectQuarter < this.secondSelectQuarter) {this.seasonValue = this.firstSelect + " - " + this.secondSelect;} else {this.seasonValue = this.secondSelect + " - " + this.firstSelect;}}//选择结束,关闭弹窗以及计数器重置处理this.selectEnd();}// this.seasonValue = this.year.toString() + "-" + quarter.toString();// this.showSeason = false;// switch (quarter) {//   case "第一季度"://     this.time.stTime = this.year.toString() + "-01-01" + " " + "00:00:00";//     this.time.edTime = this.year.toString() + "-03-31" + " " + "23:59:59";//     break;//   case "第二季度"://     this.time.stTime = this.year.toString() + "-04-01" + " " + "00:00:00";//     this.time.edTime = this.year.toString() + "-06-30" + " " + "23:59:59";//     break;//   case "第三季度"://     this.time.stTime = this.year.toString() + "-07-01" + " " + "00:00:00";//     this.time.edTime = this.year.toString() + "-09-30" + " " + "23:59:59";//     break;//   case "第四季度"://     this.time.stTime = this.year.toString() + "-10-01" + " " + "00:00:00";//     this.time.edTime = this.year.toString() + "-12-31" + " " + "23:59:59";//     break;// }// this.$emit("getQuarter", this.time); //传值给父组件},selectEnd() {this.showSeason = false;this.selectNum = 0;// this.timeList.forEach(item => {//   item.QOneSelect = false//   item.QTwoSelect = false//   item.QThreeSelect = false//   item.QFourSelect = false// })},transQuarter(quarterNum) {let name = "";switch (quarterNum) {case 1:name = "QOneSelect";break;case 2:name = "QTwoSelect";break;case 3:name = "QThreeSelect";break;case 4:name = "QFourSelect";break;}return name;},},
};
</script>
<style lang="scss" scoped>
.quarter {position: relative;.input-wrap {width: 260px;height: 36px;border: 1px solid #dcdfe6;border-radius: 4px;color: #606266;position: relative;.el-icon-date {color: #c0c4cc;margin-left: 10px;margin-right: 8px;}.el-icon-circle-close {position: absolute;top: 50%;transform: translateY(-50%);right: 10px;color: #c0c4cc;display: none;cursor: pointer;}}.no-choose {color: #606266;}.choose {color: #409eff;}.selectPop {display: flex;justify-content: space-between;width: 400px;position: absolute;background: #fff;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);border: 1px solid #dfe4ed;border-radius: 4px;color: #606266;padding: 8px 15px 15px 15px;top: 52px;z-index: 10;.card-header {width: 100%;height: 40px;border-bottom: 1px solid #e6ebf5;display: flex;justify-content: space-between;align-items: center;margin-bottom: 10px;.text-year {font-size: 16px;}}&::before {content: "";border-bottom: 10px solid #dfe4ed;border-left: 8px solid transparent;border-right: 8px solid transparent;position: absolute;left: 13%;-webkit-transform: translateX(-50%);transform: translateX(-50%);top: -8px;border-radius: 5px;}&::after {content: "";border-bottom: 8px solid #fff;border-left: 8px solid transparent;border-right: 8px solid transparent;position: absolute;left: 13%;-webkit-transform: translateX(-50%);transform: translateX(-50%);top: -6px;border-radius: 5px;}}
}
</style>
使用:
 <QuarterRange @getQuarter="getQuarter"></QuarterRange>//获取季度子组件传回的数据
getQuarter(val) {console.log("季节:", val);
},

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

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

相关文章

【Java】BF算法(串模式匹配算法)

☀️ 什么是BF算法 BF算法&#xff0c;即暴力算法&#xff0c;是普通的模式匹配算法&#xff0c;BF算法的思想就是将目标串S的第一个与模式串T的第一个字符串进行匹配&#xff0c;若相等&#xff0c;则继续比较S的第二个字符和T的第二个字符&#xff1b;若不相等&#xff0c;则…

【计算机视觉|生成对抗】用深度卷积生成对抗网络进行无监督表示学习(DCGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 链接&#xff1a;[1511.06434] Unsupervised Representation Learning with Deep Conv…

腾讯云CVM服务器竞价实例是什么?和按量计费有什么区别?

腾讯云服务器CVM计费模式分为包年包月、按量计费和竞价实例&#xff0c;什么是竞价实例&#xff1f;竞价实例和按量付费相类似&#xff0c;优势是价格更划算&#xff0c;缺点是云服务器实例有被自动释放风险&#xff0c;腾讯云服务器网来详细说下什么是竞价实例&#xff1f;以及…

NLP——操作步骤讲义与实践链接

数据集与语料 语料是NLP的生命之源&#xff0c;所有NLP问题都是从语料中学到数据分布的规律语料的分类&#xff1a;单语料&#xff0c;平行语料&#xff0c;复杂结构 语料的例子&#xff1a;Penn Treebank, Daily Dialog, WMT-1x翻译数据集&#xff0c;中文闲聊数据集&#xf…

大数据:Numpy基础应用详解

Numpy基础应用 Numpy 是一个开源的 Python 科学计算库&#xff0c;用于快速处理任意维度的数组。Numpy 支持常见的数组和矩阵操作&#xff0c;对于同样的数值计算任务&#xff0c;使用 NumPy 不仅代码要简洁的多&#xff0c;而且 NumPy 的性能远远优于原生 Python&#xff0c;…

mysql-5.5.62-win32安装与使用

1.为啥是这个版本而不是当前最新的8.0&#xff1f; 因为我要用32位。目前mysql支持win32的版本最新只到5.7.33。 首先&#xff0c;到官网MySQL :: MySQL Downloads 然后选 选一个自己喜欢的版本就好。我这里是如标题版本。下载32位的zip。然后回来解压。 完了创建系统环境变…

项目实施方案案例模板-拿来即用

《项目实施方案》实际案例模板&#xff0c;拿来即用&#xff0c;原件可获取。 项目背景 项目目标 项目范围 项目总体计划 项目组织架构 5.1. 项目职责分工 项目风险点 6.1. 项目风险分析 6.2. 项目实施关键点 项目管理规范 7.1. 项目实施约束 7.2. 项目变更冻结 7…

(三) CUDA 硬件实现

一组带有on-chip 共享内存的SIMD多处理器 GPU可以被看作一组多处理器, 每个多处理器使用单一指令&#xff0c;多数据架构(SIMD)【单指令流多数据流】 在任何给定的时钟周期内&#xff0c;多处理器的每个处理器执行同一指令&#xff0c;但操作不同的数据 每个多处理器使用以下…

HASH索引,AVL树,B树,B+树的区别?

1. 什么是 Hash 1.1 Hash 函数 Hash 本身其实是一个函数&#xff0c;又被称为散列函数&#xff0c;它可以大幅提高我们对数据的检索效率。因为它是散列的&#xff0c;所以在存储数据的时候&#xff0c;它也是无序的。 Hash 算法是通过某种确定性的算法(例如MD5&#xff0c;S…

virtualBox桥接模式下openEuler镜像修改IP地址、openEule修改IP地址、openEule设置IP地址

安装好openEuler后,设置远程登入前,必不可少的一步,主机与虚拟机之间的通信要解决,下面给出详细步骤: 第一步:检查虚拟机适配器模式:桥接模式 第二步:登入虚拟机修改IP cd /etc/sysconfig/network-scripts vim ifcfg-enpgs3 没有vim的安装或者用vi代替:sudo dnf …

关于consul的下载方法

linux下 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consulwindow下 https://developer.hashicorp.com/consul/downloads 然后把里面的exe文件放在gopath下就行了 验证…

打造专属花店展示小程序

在当今社会&#xff0c;微信小程序已经成为了各行各业拓展客户资源的利器&#xff0c;而花店行业也不例外。通过打造一个独特的花店小程序&#xff0c;你可以为你的花店带来更多的曝光和客户资源。那么&#xff0c;如何制作一个专属的花店小程序呢&#xff1f;下面我们就来一步…

图像像素梯度

梯度 在高数中&#xff0c;梯度是一个向量&#xff0c;是有方向有大小。假设一二元函数f(x,y)&#xff0c;在某点的梯度有&#xff1a; 结果为&#xff1a; 即方向导数。梯度的方向是函数变化最快的方向&#xff0c;沿着梯度的方向容易找到最大值。 图像梯度 在一幅模糊图…

【实际开发19】- 压测 / 调优准备

目录 1. Jmeter 2. Jmeter 环境部署 1. 配置 : 临时修改语言 ~ Options → Choose Language → Chinese 3. Jmeter 并发测试 0. 提示 : Postman 测试是“串行”的 , 无法测试并发请求 1. daiding 1. Jmeter 下载 : Apache JMeter - Download Apache JMeter 详参&#xf…

【已解决】mac端 sourceTree 解决remote: HTTP Basic: Access denied报错

又是在一次使用sourcetree拉取或者提交代码时候&#xff0c;遇到了sourcetree报错&#xff1b; 排查了一会&#xff0c;比如查看了SSH keys是否有问题、是否与sourcetree账户状态有问题等等&#xff0c;最终才发现并解决问题 原因&#xff1a; 因为之前公司要求企业gitlab中…

JavaEE初阶:多线程 - 编程

1.认识线程 我们在之前认识了什么是多进程&#xff0c;今天我们来了解线程。 一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行 着多份代码. 引入进程这个概念&#xff0c;主要是为了解决并发编程这样的…

编译工具:CMake(三)| 最简单的实例升级

编译工具&#xff1a;CMake&#xff08;三&#xff09;| 最简单的实例升级 前言过程语法解释ADD_SUBDIRECTORY 指令 如何安装目标文件的安装普通文件的安装&#xff1a;非目标文件的可执行程序安装(比如脚本之类)目录的安装 修改 Helloworld 支持安装测试 前言 本篇博客的任务…

解决右键打印html只能识别1页的问题

hello,大家好久不见,昨天在开发中遇到了一个问题,就是在自己开发的网页中右键-->打印&#xff0c;由于页面内容过多&#xff0c;打印出来的内容只被识别到一页。 针对这一问题&#xff0c;查阅了好多资料最终解决啦。 1.问题重现 大家可以看到这个是我们开发的页面,公司需要…

2023最新最全最细版本~ESP8266/ESP01S烧录AT固件

硬件准备 图上有两种型号的模块均可刷写AT固件 ① ESP01S ② ESP8266NODEMCU 软件准备(私聊免费分享) ESP01S1烧录方式 如图使用模块烧录座的方式~ 模块插入烧录座后直接连接电脑的USB接口即可~ ESP8266NODEMCU烧录方式 如图usb直接连接的方式~ 一端接模块的USB口&…

数据暴涨时代,该如何数据治理?_光点科技

随着信息技术的迅猛发展&#xff0c;数据已经成为现代社会的核心资源。在这个被称为"数据暴涨时代"的时代里&#xff0c;大量的数据源源不断地被产生和积累&#xff0c;但如何有效地管理、分析和利用这些数据成为了一个迫切需要解决的问题。数据治理&#xff0c;作为…