vue+iview自定义季度选择器组件

先看看效果:样式和当前iview的DatePicker类似。这里用到了iview的Input和一个自定义的下拉面板。整体思路:当点击Input聚焦时,触发on-focus事件设置visible=true显示下拉面板。下拉面板分为上下两部分,上半部分为左、中、右。左右两边进行翻页显示上下年份,中间显示年份(默认为当前年份)。下半部分为所选年份的四个季度(首次打开时当前季度标亮)。选择对应季度后组成将要在Input框上显示的内容。Input框内添加删除按钮,当存在数据时并且鼠标在范围内则显示,点
摘要由CSDN通过智能技术生成

先看看效果:
在这里插入图片描述
样式和当前iviewDatePicker类似。这里用到了iviewInput和一个自定义的下拉面板。

整体思路:

  1. 当点击Input聚焦时,触发on-focus事件设置visible=true显示下拉面板。
  2. 下拉面板分为上下两部分,上半部分为左、中、右。左右两边进行翻页显示上下年份,中间显示年份(默认为当前年份)。下半部分为所选年份的四个季度(首次打开时当前季度标亮)。
  3. 选择对应季度后组成将要在Input框上显示的内容。
  4. 添加不可选日期。使用options设置不可选季度,格式与DatePickeroptions相同。
  5. Input框内添加删除按钮,当存在数据时并且鼠标在范围内则显示,点击删除清空数据。
  6. Input进行只读设定。(按个人需求,如果可编辑,需要对编辑的数据进行处理。我这里直接设成了只读)
  7. 鼠标离开后关闭下拉面板(自定义v-clickoutside事件)。
    完整代码
    父组件引用:
<template>
 	<quarter-picker v-model="value" @on-change="changeQuarter"></quarter-picker>
</template> 
<script>
  import quarterPicker from './quarter-picker.vue';
    export default {
        name: 'demo',
        components: {
            quarterPicker
        },
        data () {
            return {
              value: null,
              options: {}
            };
        },
        mounted: {
       		const currentYear = new Date().getFullYear();
       		this.options = {
                 disabledDate (y, q) {
                        return y < currentYear || (y === currentYear && q < 4);
                   }
            };
        },
        methods: {
        	changeQuarter() {
        	}
        }
   }
</script>
 

quarter-picker季度选择器组件

<template>
    <div v-clickoutside="closePicker" style="width: 100px; display: inline-block">
        <Input v-model="message" :icon="arrowType" readonly
               @on-focus="show"
               @on-click="clickIcon"
               @mouseenter
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值