1:因为项目需求,需要做一个复选月份,网上和UI组件库都是单选的,所以就得自己捣鼓一个。废话不多说上效果图


2:介绍流程引入组件

3:selectDate组件里面 init函数 初始化数据,获取前十年,然后循环 每一年里面都有12个月的 得到数组 opTime 和 DateList

created(){this.init();},methods:{// info 选中的数据 type 可传可不传 主要做区分showModal(info,type){this.visible = true;this.ctype = typethis.optTimes = info ? info.split(',') : nullif( info ) this.editTime(info);},init(){const _this = this;let _opt = {};let _optTime = {}let arr = new Array(12);let optDate = this.getDateList();optDate.map((item,index)=>{_opt[index] ={TimeYear:item,queryTime:[]}_optTime[index] ={TimeYear:item,queryTime:[]}for(let i = 1; i<= arr.length; i++){_opt[index].queryTime.push(i)}})_this.optTime = _optTime_this.DateList = _opt;},    //获取前十年getDateList(){let Dates = new Date();let year = Dates.getFullYear();this.OneY = year;let  optDate = [];for( let i = year -20; i<=year; i++ ){optDate.push(i)}return optDate.reverse()},

4:完整代码

<template><a-modal:title="title"style="top: 20px;"v-model="visible"@ok="handleSubmit":width="'900px'":zIndex="12000"><a-row><a-col :span="4"  style="margin-right:10px" ><a-form-item:labelCol="labelCol":wrapperCol="wrapperCol"label="年份"><a-select  style="width:80px" :getPopupContainer="triggerNode=>triggerNode.parentNode"@change="selectTime"placeholder="请选择" v-model="OneY" ><a-select-option  v-for="(i,j) in DateList" :key="j" :value="i.TimeYear">{{i.TimeYear}}</a-select-option></a-select> </a-form-item></a-col><a-col :span="19"><div class="conterList"><a-checkbox-group v-model="optTime[curIndex].queryTime" @change="onChange" ><a-checkbox v-for="(item,index) in DateList[curIndex].queryTime":key="index" :value="`${DateList[curIndex].TimeYear}-${(item<=9)?`0${item}`:item}`"   class="onSelect">{{item}}月</a-checkbox></a-checkbox-group></div></a-col></a-row><a-row style="margin-top:5px;"><a-col :span="24"><div><label style="margin: 5px 5px 0 0;display:inline-block;"><span   style="color:#f00">*</span>已选择:</label><a-tag color="#40a9ff" style="margin-bottom: 3px;" closable @close="()=>closeTime(curIndex,v)" v-for="v in optTimes" :key="v + '-1'">{{ v }}</a-tag></div></a-col></a-row></a-modal>
</template>
<script>
export default {data(){return{visible:false,title:'日期选择',DateList:[],labelCol: {xs: { span: 24 },sm: { span: 10 }},wrapperCol: {xs: { span: 24 },sm: { span: 13 }},optTime:[],OneY:null,curIndex:0,optTimes:null,ctype:null}},created(){this.init();},methods:{// info 选中的数据 type 可传可不传 主要做区分showModal(info,type){this.visible = true;this.ctype = typethis.optTimes = info ? info.split(',') : nullif( info ) this.editTime(info);},init(){const _this = this;let _opt = {};let _optTime = {}let arr = new Array(12);let optDate = this.getDateList();optDate.map((item,index)=>{_opt[index] ={TimeYear:item,queryTime:[]}_optTime[index] ={TimeYear:item,queryTime:[]}for(let i = 1; i<= arr.length; i++){_opt[index].queryTime.push(i)}})_this.optTime = _optTime_this.DateList = _opt;},getDateList(){let Dates = new Date();let year = Dates.getFullYear();this.OneY = year;let  optDate = [];for( let i = year -20; i<=year; i++ ){optDate.push(i)}return optDate.reverse()},editTime(info){const _this = this;let _optTime = this.optTime;let _opt = this.optTimes.map(v=>{ return v.substring(0,4)});for( let item in _optTime ){_opt.map((items,indexs)=>{if( items == _optTime[item].TimeYear ){_optTime[item].queryTime.push(this.optTimes[indexs])}})}// console.log(_optTime,'_optTime_optTime')},handleSubmit(){const _this = this;_this.visible = false;_this.$emit('ok',_this.optTimes,_this.ctype)_this.optTimes = [];for( let i in _this.optTime  ){_this.optTime[i].queryTime =[]}},selectTime(info,Node){const _this = this;_this.OneY = info_this.curIndex = parseInt(Node.key) },onChange(info){const _this = this;let _opt = _this.optTime;let arr = [];for(let item in _opt ){if(_opt[item].queryTime.length > 0)  _opt[item].queryTime.filter(v=>{arr.push(v)})}_this.optTimes = arr},closeTime (index,time) {this.optTime[index].queryTime  =  this.optTime[index].queryTime.filter(v=>{return  v !== time})// let _opt = this.optTime;// let s = {};// for ( let i in _opt ){//  if(_opt[i].queryTime.length > 0) _opt[i].queryTime.filter(v=>{//         return v !== time//     })// }this.optTimes = this.optTimes.filter(v => {return v !== time})},}
}
</script>
<style lang="less" scoped>
.conterList{display: block;width: 100%;border-radius: 6px;.onSelect{width: 150px;margin: 0;}
}
</style>

5:组件调用方法 根据refs 控制组件

 <selectDate  ref="OnDate" @ok="getDateValue" />
selectTime(type){const _this = this;let data = type == 1 ? _this.timeX :_this.timeY_this.$refs.OnDate.showModal(data,type)},getDateValue(info,cType){if( cType == 1  ){this.timeX = info.join(',')}else{this.timeY = info.join(',')}},

6:好了就这样实现了。

vue实现月份选择复选(多选)相关推荐

  1. 复选框全选效果,根据单个复选框的选择情况确定全选复选框是否被选

    复选框全选与全不选效果 逻辑:复选框的checked属性与复选框全选效果对应起来,全选复选框checked:true 时,全部复选框checked:true: 全选框checked:false 时,全 ...

  2. php 复选框 单选 全选,复选框全选/不全选,选择结果提交

    $(function(){ $("#CheckedAll").click(function(){ if(this.checked) //如果当前点击的多选框被选中 { $('inp ...

  3. vue+elementUI 添加多个可以全选的多选框

    elementUI-checkbox官网:https://element.eleme.cn/#/zh-CN/component/checkbox 一.要做上面这种效果,首先要了解全选框中indeter ...

  4. 学计算机要6选3选什么学科,北京高考6选3组合有多少种?选择学科对有哪些影响?...

    北京高考6选3都有哪些组合呢?其实对于新高考我们部分省份还是很陌生的,面对新的变化以及新的政策,我们的学生和家长们其实更应该注意,小编今天为大家整理了关于北京高考6选3组合的相关情况,以及我们在选科的 ...

  5. vue 带全选和多选的表格怎么写_vue实现下拉列表多选全选以及模糊查询的vue组件...

    vue实现下拉列表多选全选以及模糊查询的vue组件 发布时间:2018-09-12 17:41, 浏览次数:3776 , 标签: vue <>前端,有时有这样的需求,需要一个下拉列表,还要 ...

  6. VUE:checkbox 单选框(单选、多选)、一选全选 / 全选一选、表格单选列实现

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 效果:如红框中部分. 一选全选:表头上的单选框选中则下面每行都选中. 全选一选:表中数据每行都 ...

  7. 统计订单:复选+全选+计算 的列表

    话不多说,先上效果图.带选择框和全选按钮的列表,因一些特殊要求还加上些计算功能,这并不是难就是稍微繁琐了些,如 "统计订单功能" 不要说,就是干,那就直接上代码 1,主页面的布局文 ...

  8. jQuery - 通过文本描述设置选择控件的选定值

    本文翻译自:jQuery - setting the selected value of a select control via its text description I have a sele ...

  9. 关于如何获取复选框选中行的数据

    前两天遇到一个需求,需要获取复选框选中行的数据再进行数据的操作,找了几篇文章,发现要么是获取不了,要么是只能获取单行,总之就是挺模糊的,不够细致,所以就自己通过摸索实现了,现在将这个方法进行整理分享给 ...

最新文章

  1. 独家 | 从零开始用python搭建推荐引擎(附代码)
  2. dlib 获取人脸姿态 6个关键点
  3. python ui自动化_pythonUI自动化整理
  4. java开发学不会_JAVA学不会,快期末了,怎么办?
  5. hdoj-1005-Number Sequences
  6. java coin介绍_代码示例中的Java 7:Project Coin
  7. (转)#ifndef的用法
  8. 计算机有必要报英语四级吗,我已工作了,现在有必要去考英语四级吗?还是 – 手机爱问...
  9. 从h264码流中获取图像的宽高---版本2(简洁版)
  10. web页面加载、解析、渲染过程
  11. github每次push时自动输入用户名密码
  12. 3dmax9.0 简体中文正式版(官方非汉化版本)下载网址
  13. MATLAB自动设置仿真曲线颜色和线型属性
  14. js转换金额,元,万元
  15. html dom onblur,html的DOM中Event对象onblur事件用法实例
  16. iOS6、7、8、9新特性总汇和适配说明
  17. 人生不该有如此压力,来吃下这口缓解焦虑的良药[50P]
  18. 口语语汇单词篇(5)
  19. w3cschool菜鸟教程离线版chm手册正式发布
  20. Android开发面试经典题目

热门文章

  1. A-Level经济真题每期一练(54)
  2. 比快排更快的排序 ——桶排序
  3. python 方差齐性检验_Python数据科学:方差分析
  4. Linux 虚拟机联网 connect: Network is unreachable
  5. rk3399 | 通用驱动框架点灯测试
  6. 体系认证,荣誉证书,商标版权
  7. windows media player 视频解码 win7codecs
  8. 细说做外链效果最好的十大博客
  9. 国民经济核算:全球183个国家最新佩恩表(1950-2019年)
  10. 万能五笔输入法导致vs2013 xshell中文乱码