自定义el-date-picker组件,添加一个新的属性,接取一个数组(例如,dates: ["2023-05-23", "2023-05-22", "2023-05-19"]),当获取到例子中的日期格式数组时,el-date-picker的日期下拉框,对应的日期下方会出现一个小蓝点提示(不影响组件原有格式,长宽),请给出代码实例
时间: 2024-02-09 22:09:00 浏览: 39
要实现在 `el-date-picker` 组件的日期下拉框中显示小蓝点提示,可以通过自定义组件的方式来实现。具体步骤如下:
1. 在 `el-date-picker` 组件基础上,添加一个新的属性 `dates`,用于接收一个日期格式的数组。
```html
<template>
<el-date-picker
v-model="value"
:editable="false"
type="date"
:disabled-date="disabledDate"
ref="picker">
</el-date-picker>
</template>
<script>
export default {
props: {
dates: {
type: Array,
default: () => [],
},
},
data() {
return {
value: null,
};
},
methods: {
disabledDate(date) {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const dateString = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
return this.dates.includes(dateString);
},
},
};
</script>
```
在 `el-date-picker` 组件中,我们使用 `:disabled-date` 属性来指定一个方法 `disabledDate`,用于判断日期是否可以选中。在 `disabledDate` 方法中,我们将 `dates` 数组中的日期字符串与当前日期进行比较,如果相等则返回 `true`,表示该日期不可选。
2. 在样式表中添加小蓝点提示的样式,例如:
```css
.el-date-picker__cell--in-range.is-disabled::before {
content: '';
display: block;
position: absolute;
bottom: 0;
left: 50%;
width: 4px;
height: 4px;
border-radius: 50%;
background-color: #409EFF;
transform: translateX(-50%);
}
```
在上述样式中,我们使用 `::before` 伪元素来添加一个小蓝点提示,使用 `position: absolute` 将其定位在日期单元格的下方,使用 `background-color` 属性来设置小蓝点的颜色。
3. 在模板中引入样式表,并将 `el-date-picker` 组件的 `ref` 属性指定为 `picker`,例如:
```html
<template>
<div>
<link rel="stylesheet" href="./style.css">
<el-date-picker
v-model="value"
:editable="false"
type="date"
:disabled-date="disabledDate"
ref="picker">
</el-date-picker>
</div>
</template>
```
4. 在组件的 `mounted` 钩子函数中,使用 `this.$refs.picker.$el.querySelectorAll('.el-date-picker__cell--in-range.is-disabled')` 获取所有不可选日期的单元格,然后给它们添加一个 `has-dot` 类名,用于在样式表中对它们进行样式设置。
```html
<script>
export default {
props: {
dates: {
type: Array,
default: () => [],
},
},
data() {
return {
value: null,
};
},
methods: {
disabledDate(date) {
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const dateString = `${year}-${month.toString().padStart(2, '0')}-${day.toString().padStart(2, '0')}`;
return this.dates.includes(dateString);
},
},
mounted() {
const disabledCells = this.$refs.picker.$el.querySelectorAll('.el-date-picker__cell--in-range.is-disabled');
disabledCells.forEach((cell) => {
cell.classList.add('has-dot');
});
},
};
</script>
```
通过以上步骤,就可以实现在 `el-date-picker` 组件的日期下拉框中显示小蓝点提示了。
阅读全文