ViewUI DatePicker日期范圍限制


🍉場景需求

近期着手開發酒店住宿相關功能模塊,其間涉及到對日期進行相應條件的限制。最初因為公司網絡問題,無法訪問ElementUI網站進行開發,偶然間發現ViewUI,感覺代碼看起來比較簡潔,也符合我的選擇需求,最后就選擇了ViewUI進行開發。當初使用它時,還是免費的,現在逐步商業化了,但是需要使用高級功能的話可能就需要付費了,感覺沒有ElementUI香了。但是沒辦法,已經上了🚗了,再下👇就難了。
此次主要就ViewUI DatePicker日期選擇器的相關使用技巧做相應的介紹。因為在我的項目中需要指定可選擇的日期,故需要對可選日期的范圍做相應的限制,現將我所實現的效果做如下展示:

🍭示例展示

  • 【圖一】入住時間限制

入住時間段限制.png

        - **🌞 timeOut1**:入住最早時間
        - **🌜 timeOut2**:入住最晚時間
        - **🌝 timeNow**:當前時間    
  • 【圖二】離開時間限制

離開時間段限制.png

        - **🌞 timeOut1**:離開最早時間
        - **🌜 timeOut2**:離開最晚時間
        - **🌝 timeNow**:當前時間

🌱代碼案例

<template>
    <Form :model="bookInfo" :rules="rules" :label-width="80">
        <!-- 住店時間 -->
        <FormItem label="入住時間" prop="checkInTime">
            <DatePicker type="date" :editable="false" :value="bookInfo.checkInTime" :options="optionsIn"></DatePicker>
        </FormItem>
        <!-- 離開時間 -->
        <FormItem label="離開時間" prop="checkOutTime">
            <DatePicker type="date" :editable="false" :value="bookInfo.checkOutTime" :options="optionsOut"></DatePicker>
        </FormItem>
    </Form>
</template>

🍅:HTML代碼,使用ViewUI DatePicker 組件進行時間選擇限制。

import DayJS from "dayjs";

export default {
    name: "CenterBook",
    data() {
        return {
            bookInfo: {
                checkInTime: "" /* 入住時間 */,
                checkOutTime: "" /* 離開時間 */
            },
            /* 時間正則 */
            rules: {
                checkInTime: [{ required: true, message: "請選擇入住時間", trigger: "change" }],
                checkOutTime: [{ required: true, message: "請選擇離開時間", trigger: "change" }]
            },
            checkInEndTime: "" /* 入住開始時間 */,
            checkInStartTime: "" /* 入住截止時間 */,
            checkOutEndTime: "" /* 離店開始時間 */,
            checkOutStartTime: "" /* 離店截止截止 */,
            optionsIn: {
                disabledDate: date => {
                    let tmp1 = this.checkInStartTime,
                        tmp2 = this.checkInEndTime;
                    if (DayJS(tmp1).valueOf() < Date.now()) {
                        return date < DayJS().subtract(1, "day") || date > new Date(tmp2);
                    }
                    return date < DayJS(tmp1) || date > new Date(tmp2);
                }
            } /* 入住時間限制 */,
            optionsOut: {
                disabledDate: date => {
                    let tmp1 = this.checkOutStartTime,
                        tmp2 = this.checkOutEndTime;
                    if (DayJS(tmp1).valueOf() > Date.now()) {
                        return date < DayJS(tmp1) || date > new Date(tmp2);
                    }
                    return date < DayJS().subtract(1, "day") || date > new Date(tmp2);
                }
            } /* 離開時間限制 */
        };
    }
};

🍋:對日期選擇進行動態限制,options 參數接收一個含有指定參數 disabledDate 的對象,對要選擇的日期進行相關限制處理;
🍌:disabledDate 接收一個date參數,返回一個bolearn類型的布爾值,即限制不可選的日期。
🍎:借助 Dayjs 來處理時間數據,相對來說,功能API都比較豐富,建議學習一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM