# HolidayPicker 节假日设置

版本:1.14.0

开发:姜炎6

交互:苗任越

UI:江佳欢

规范:[已评审] http://10.33.43.73/BBG_UED/BUI_Design/bscs/v2.0/issues/24

# 安装

$ npm i @hui-pro/holiday-picker -D
# 或者
$ yarn add @hui-pro/holiday-picker --dev

# 引入

// main.js
import holidayPicker from '@hui-pro/holiday-picker';
import '@hui-pro/holiday-picker/theme/index.scss';
Vue.use(holidayPicker);

# 基础用法

2020年
1月
星期日 星期一 星期二 星期三 星期四 星期五 星期六
初四 29
初五 30
初六 31
初七 1
元旦
初八 2
腊八节
初九 3
初十 4
十一 5
小寒
十二 6
十三 7
十四 8
十五 9
十六 10
十七 11
十八 12
十九 13
二十 14
廿一 15
廿二 16
廿三 17
小年
廿四 18
廿五 19
廿六 20
大寒
廿七 21
廿八 22
廿九 23
三十 24
除夕
正月初一 25
春节
初二 26
初三 27
初四 28
初五 29
初六 30
初七 31
初八 1
初九 2
初十 3
十一 4
立春
十二 5
十三 6
十四 7
十五 8
元宵节
基础用法
<h-holiday-picker
  :holidayList.sync="currentHolidayList"
  @dateClick="dateClickHandler"
  @dateChange="dateChangeHandler"
></h-holiday-picker>

<script>
  export default {
    name: 'holiday-picker-page',
    data() {
      return {
        currentHolidayList: ['2019-03-05']
      };
    },
    methods: {
      dateClickHandler({ dateItem, holidayList }) {
        console.log(dateItem);
        console.log(holidayList);
      },
      currentDateChangeHandler(holidayList) {
        console.log(holidayList);
      }
    }
  };
</script>

# 自定义内容

2020年
1月
星期日 星期一 星期二 星期三 星期四 星期五 星期六
自定义内容
阴历:初四
阳历:29
自定义未选中
自定义内容
阴历:初五
阳历:30
自定义未选中
自定义内容
阴历:初六
阳历:31
自定义未选中
自定义内容
阴历:初七
阳历:1
元旦
自定义未选中
自定义内容
阴历:初八
阳历:2
腊八节
自定义未选中
自定义内容
阴历:初九
阳历:3
自定义未选中
自定义内容
阴历:初十
阳历:4
自定义未选中
自定义内容
阴历:十一
阳历:5
小寒
自定义未选中
自定义内容
阴历:十二
阳历:6
自定义未选中
自定义内容
阴历:十三
阳历:7
自定义未选中
自定义内容
阴历:十四
阳历:8
自定义未选中
自定义内容
阴历:十五
阳历:9
自定义未选中
自定义内容
阴历:十六
阳历:10
自定义未选中
自定义内容
阴历:十七
阳历:11
自定义未选中
自定义内容
阴历:十八
阳历:12
自定义未选中
自定义内容
阴历:十九
阳历:13
自定义未选中
自定义内容
阴历:二十
阳历:14
自定义未选中
自定义内容
阴历:廿一
阳历:15
自定义未选中
自定义内容
阴历:廿二
阳历:16
自定义未选中
自定义内容
阴历:廿三
阳历:17
小年
自定义未选中
自定义内容
阴历:廿四
阳历:18
自定义未选中
自定义内容
阴历:廿五
阳历:19
自定义未选中
自定义内容
阴历:廿六
阳历:20
大寒
自定义未选中
自定义内容
阴历:廿七
阳历:21
自定义未选中
自定义内容
阴历:廿八
阳历:22
自定义未选中
自定义内容
阴历:廿九
阳历:23
自定义未选中
自定义内容
阴历:三十
阳历:24
除夕
自定义未选中
自定义内容
阴历:正月初一
阳历:25
春节
自定义未选中
自定义内容
阴历:初二
阳历:26
自定义未选中
自定义内容
阴历:初三
阳历:27
自定义未选中
自定义内容
阴历:初四
阳历:28
自定义未选中
自定义内容
阴历:初五
阳历:29
自定义未选中
自定义内容
阴历:初六
阳历:30
自定义未选中
自定义内容
阴历:初七
阳历:31
自定义未选中
自定义内容
阴历:初八
阳历:1
自定义未选中
自定义内容
阴历:初九
阳历:2
自定义未选中
自定义内容
阴历:初十
阳历:3
自定义未选中
自定义内容
阴历:十一
阳历:4
立春
自定义未选中
自定义内容
阴历:十二
阳历:5
自定义未选中
自定义内容
阴历:十三
阳历:6
自定义未选中
自定义内容
阴历:十四
阳历:7
自定义未选中
自定义内容
阴历:十五
阳历:8
元宵节
自定义未选中
自定义内容
<h-holiday-picker :holidayList.sync="currentHolidayList2">
  <template slot-scope="scope">
    <div class="date-info">
      <!-- 日期信息 -->
      <span class="custom-date">
        自定义内容
        <br />
        阴历:{{ scope.item && scope.item.lunarDate.fmtStr }}
        <br />
        阳历:{{ scope.item && scope.item.date.getDate() }}
      </span>
    </div>
    <div class="festival-info">
      <!-- 节假日信息 -->
      <span class="festival">
        {{ scope.item && (scope.item.lunarDate.festival ||
        scope.item.lunarDate.Term) }}
      </span>
    </div>
    <div class="status">
      <!-- 当前状态信息 -->
      <span v-if="scope.item.isHoliday">自定义已选中</span>
      <span v-else>自定义未选中</span>
    </div>
  </template>
</h-holiday-picker>
<script>
  export default {
    name: 'holiday-picker-page',
    data() {
      return {
        currentHolidayList2: []
      };
    }
  };
</script>

# API

# Attributes

参数 说明 类型 可选值 默认值
holiday-list 传入节假日列表,可用.sync 实现双向绑定 Array<YYYY-MM-DD> - []
first-day-of-week 周起始日 Number 1-7(周一~周日) 7
text 日历选中时显示的文本 String - '休'(注意,如果使用了 slot 自定义内容,此属性无效。)
readonly 是否只读模式(只读模式不能选中日期) Boolean true/false false
cell-height 日历单元格高度 Number 单位是 px 111(这里建议最小就是 80,再小会影响样式了)

# events

事件名 说明 参数
dateClick 当某一天被点击时抛出该事件 ({dateItem, holidayList}),被点击的日期的信息和当前选中的节假日列表
dateChange 当拖动多选时,每次选中日期发生变化都会抛出该事件 (holidayList),当前状态下,选中的节假日列表
calendarChange 当日期控件切换日期时,会抛出该事件 (currentYear, currentMonth),当前日期对应的年、月

# dateItem 属性

属性名 说明 类型
date 被点击日期 0 点的标准时间对象 Date
isCurrentMonth 被点击日期是否在当前月份 Boolean
isFirstLunarDate 被点击日期是否阴历第一天 Boolean
isHoliday 被点击日期是否被设置为节假日 Boolean
isNextMonth 被点击日期是否在下个月(阳历) Boolean
isPrevMonth 被点击日期是否在上个月(阳历) Boolean
isToday 被点击日期是否是当日 Boolean
lunarDate 被点击日期的阴历日期对象,详细属性见下表 Object
solarDateStr 被点击日期的格式化显示(YYYY-MM-D),注意,这里的日不是双位的 String

# lunarDate 属性

属性名 说明 类型
Animal 当前阴历年的生肖 String
IDayCn 当前阴历日的写法 String
IMonthCn 当前阴历月的写法 String
Term 当前节气 String
festival 当前节日 String

# slots

插槽名称 类型 说明
default 1.5.1+ slot-scope 可以通过 slot-scope="scope"默认插槽自定义日历中每个单元格的内容,同时可以获取当前 item 的各项属性值,数据结构与 dateItem 属性一致,属性访问方式举例:scope.item.date。详细用法查看自定义内容的 demo。

提示

1.4.1 ~ 1.5.0 之间的版本,插槽只能自定义选中状态部分;1.5.1 之后修改为插槽自定义整个日期单元格内的内容。