效果图:

在使用日历组件内套select会导致选择器选择后不会立马生效需要点击一下日历组件内任意位置才可以生效,这样的用户体验肯定是不行的源码:
<el-calendar v-model="value" v-loading="loading">
<template slot="dateCell" slot-scope="{data}">
<span>{{ data.day.split('-').slice(2).join('-') }}</span>
<div :class="'is-selected'">
<div class="left">
<div>白班</div>
<div>夜班</div>
<div>值日</div>
</div>
<div class="right" v-show="!clickEdit">
<div v-if="events && events[data.day]" :style="{ 'color' : events[data.day] ? 'green' : 'gray' }">
{{ events[data.day].morning? (events[data.day].morning).toString() : '' }}
</div>
<div v-if="events && events[data.day]" :style="{ 'color' : events[data.day] ? 'green' : 'gray' }">
{{ events[data.day].afternoon? (events[data.day].afternoon).toString() : '' }}
</div>
<div v-if="events && events[data.day]" :style="{ 'color' : events[data.day] ? 'green' : 'gray' }">
{{ events[data.day].night? (events[data.day].night).toString() : '' }}
</div>
</div>
<div class="editRight" v-show="clickEdit">
<div v-if="listData[data.day]">
<el-select :multiple-limit="2" v-model="listData[data.day].morningIds" size="mini" multiple
collapse-tags placeholder="请选择" style="padding: 0;margin:0" @change="chooseFn"
v-loading="calendarLoading">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</div>
<div v-if="listData[data.day]">
<!-- select -->
<el-select :multiple-limit="2" v-model="listData[data.day].afternoonIds" size="mini" multiple
collapse-tags placeholder="请选择" style="padding: 0;margin:0" @change="chooseFn"
v-loading="calendarLoading">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</div>
<div v-if="listData[data.day]">
<el-select :multiple-limit="2" v-model="listData[data.day].nightIds" size="mini" multiple collapse-tags
placeholder="请选择" style="padding: 0;margin:0" @change="chooseFn"
v-loading="calendarLoading">
<el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"/>
</el-select>
</div>
</div>
</div>
</template>
</el-calendar>
解决方法:
chooseFn() {
// select 延迟显示解决更新不及时问题
this.calendarLoading = true
setTimeout(() => {
this.calendarLoading = false
},)
},
1万+

被折叠的 条评论
为什么被折叠?



