el-select 中嵌套时间选择器 el-time-picker 并且实现时间多选功能
需求是:时间可多选 element中时间的选择不支持多选 下面进行封装拼接时间多选
<el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" status-icon >
	<el-form-item prop="times" >
		<!-- 这里使用el-select嵌套div的形式 支持多选  -->
		<el-select v-model="ruleForm.times" multiple collapse-tags placeholder="请选择生效时间" clearable style="width: 100%;" ref="timeRef" @visible-change="visChange">
			<!-- el-option中嵌套dev形式 展示想显示的内容 为防止el-option选择影响使用 样式设置高度自适应 内边距为0 -->
		 	<el-option label="选项" value="1" style="min-height: 80px;height:auto;padding:0;">
		 			<!-- div设置点击stop不穿透其他点击 样式根据需求设置 -->
					<div @click.stop style="display: flex;flex-flow: column wrap;padding:10px;">
						<!-- 添加多个使用循环 -->
						<div v-for="(tis,tv) in ruleForm.times" :key="tv" style="height:30px;padding-bottom:10px;display: flex;">
							<el-time-picker v-model="ruleForm.times[tv]" @visible-change="visTimeChange" value-format="HH:mm:ss" is-range range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
							<!-- 支持删除 -->
							<el-button type="danger" style="width: 60px;margin-left:10px;" @click.stop="delTimeListFun(tv)">删除</el-button>
						</div>
						<!-- 支持新增时间 -->
						<el-button type="primary" style="width: 80px;" @click.stop="addTimeListFun">增加时间</el-button>
					</div>
			</el-option>
		</el-select>
	</el-form-item>
</el-form>
//定义数据
let ruleForm = reactive({
	times:[['00:00:00','23:59:59']],//初始值数组可多选['00:00:00','23:59:59']
})
//必填校验设置
const rules = reactive({
	times:[{ required: true, message: '请选择生效时间', trigger: 'change' },], 
})
//js代码部分
//生效时间 增加事件
function addTimeListFun(){
	ruleForm.times.push(['00:00:00','23:59:59'])
}
//生效时间 删除事件
function delTimeListFun(index:any){
	ruleForm.times.splice(index, 1)//删除制定下标的数据
}
//页面样式完成后  如果点击TimePicker选择时间 会触发 select 隐藏下拉框的方法  类似点击了空白区域
// 现在做如下设置 规避上述问题  select中添加@visible-change="visChange" 方法 和ref="timeRef"
//el-time-picker添加@visible-change="visTimeChange"
let visTimeChangeVal = ref(null)// 记录  TimePicker 的下拉列表出现/消失时触发 是否消失
let timeRef:any = ref() //下拉列表 ref
let ruleFormRef:any =ref()//表单ref
//当 select 的下拉列表出现/消失时触发
function visChange(val:any){
	// console.log(val,visTimeChangeVal.value);
	// 初始化时并且点击select下拉了 显示
	if(visTimeChangeVal.value == null && val == true){
		timeRef.value.visible = true
	}
	// 点击时间选择el-time-picker的下拉了 显示
	if(visTimeChangeVal.value == true){
		timeRef.value.visible = true
	}
	//隐藏select的下拉框时 判断是否有值 有值错误提示不显示
	if(ruleForm.times.length > 0){
		ruleFormRef.value.clearValidate('times')//清除校验错误信息
	}
}
//当 TimePicker el-time-picker 的下拉列表出现/消失时触发
function visTimeChange(val:any){
	visTimeChangeVal.value = val//记录数据
}
 
效果如下图
 


















