Vue element 日期选择器 el-date-picker设置选择范围在一周内

时间:2024-04-04 21:45:28

需求:防止时间范围内的查询到数据过多,希望设置最大可选一周的是时间范围
完成效果:见下图
Vue element 日期选择器 el-date-picker设置选择范围在一周内
知道了怎么禁用时间,想要达到预期的效果,要拿到第一次选择的日期
查看element文档,onPick可返回每次选中的时间
完整代码如下:

   <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <!-- import CSS -->
        <link rel="stylesheet" href="../../public/common/css/index.css">
        <link rel="stylesheet" href="../../public/common/css/iconfont/iconfont.css">
    
    </head>
    <body>
    <div id="app">
        <template>
            <div class="block">
                <span class="demonstration">默认</span>
                <el-date-picker
                        v-model="value6"
                        type="daterange"
                        range-separator="至"
                        start-placeholder="开始日期"
                        end-placeholder="结束日期"
                        :picker-options="pickerOptions">
                </el-date-picker>
            </div>
        </template>
    </div>
    </body>
    <!-- import Vue before Element -->
    <script src="../../public/common/js/vue.min.js"></script>
    <!-- import JavaScript -->
    <script src="../../public/common/js/index.js"></script>
    <!--<script src="../../public/common/css/icon/iconfont.js"></script>-->
    <script>
        var vm =new Vue({
            el: '#app',
            data: {
                vue : this,
                value6: '',
                timeOptionRange: '',
                pickerOptions: {
                    disabledDate(time) {
                        let timeOptionRange = vm.timeOptionRange;
                        let secondNum = 60 * 60 * 24 * 7 * 1000;
                        if (timeOptionRange) {
                            return time.getTime() > timeOptionRange.getTime() + secondNum || time.getTime() < timeOptionRange.getTime() - secondNum;
                        }
                    }, onPick(time) {
                        //当第一时间选中才设置禁用
                        if (time.minDate && !time.maxDate) {
                            vm.timeOptionRange = time.minDate;
                        }
                        if (time.maxDate) {
                            vm.timeOptionRange = null;
                        }
                    }
                    },
                }
    
            })
    </script>
    
    </html>