日期选择器多选换行

html 复制代码
<el-form-item label="日期选择">
	<div class="multi-date-picker">
		<div class="date-item">
			<span class="dateIcon">
				<el-icon><Calendar /></el-icon>
			</span>
			<span class="dateItem">{{ selectedList.toString() }}</span>
		</div>
		<!--把日期选择器隐藏起来 -->
		<el-date-picker class="datePicker" v-model="formData.abroadHolidayInfo" value-format="YYYYMMDD" type="dates" @change="addDate" @blur="handleDatePickerFocus" placeholder="请选择日期"></el-date-picker>
	</div>
</el-form-item>
typescript 复制代码
setup(props:any) {
	const state = reactive<any>({
		selectedList: ['请选择'], // 用来展示
	})
	function handleDatePickerFocus() {
		nextTick(() => {
			const divInner = document.querySelector('.date-item') as HTMLHtmlElement;
			const inputInner = document.querySelector('.datePicker .el-input__inner') as HTMLHtmlElement;
			if (inputInner) {
				inputInner.style.width = '220px';
				setTimeout(() => {
					// 让日期选择器是高度跟div保持一致
					inputInner.style.height = `${divInner.offsetHeight}px`;
				}, 100);
			}
		});
	}
	function addDate() {
		const dateItemHTML = document.querySelector('.dateItem') as HTMLHtmlElement;
		if (state.formData.abroadHolidayInfo) {
			dateItemHTML.style.color = '#606266';
			dateItemHTML.style.fontSize = '12px';
			// 处理一下格式
			state.selectedList = state.formData.abroadHolidayInfo.map((date: any) => {
				return date.substring(0, 4) + '-' + date.substring(4, 6) + '-' + date.substring(6);
			});
		} else {
			dateItemHTML.style.color = '#c4c7cf';
			dateItemHTML.style.fontSize = '13px';
			state.selectedList = ['请选择'];
		}
	}
	onMounted(() => {
		const dateItemHTML = document.querySelector('.dateItem') as HTMLHtmlElement;
		if (state.formData.abroadHolidayInfo) {
			dateItemHTML.style.color = '#606266';
		} else {
			dateItemHTML.style.color = '#c4c7cf';
			dateItemHTML.style.fontSize = '13px';
		}
	});
}
css 复制代码
.multi-date-picker {
	display: flex;
}
.date-item {
	display: flex;
	border: 1px solid #dcdfe6;
	border-radius: 4px;
	width: 220px;
	min-height: 32px;
	font-size: 12px;
	.dateIcon {
		display: flex;
		margin-top: 8px;
		width: 25px;
		justify-content: center;
		color: #c4c7cf;
		margin-left: 4px;
		font-weight: bolder;
	}
	.dateItem {
		display: flex;
		flex: 1;
		flex-wrap: wrap;
		color: #606266;
		padding-right: 10px;
	}
}
<!--不能写在scoped -->
.datePicker {
	position: absolute;
	left: 5px;
	opacity: 0;
}
相关推荐
东方小月9 小时前
从零开发一个 Coding Agent(四):使用状态机校验大模型事件流
前端·人工智能·后端
想做后端的前端9 小时前
WebGL实现FPS游戏
vue.js·游戏·webgl
Csvn9 小时前
🧩 ESM vs CJS 混用的 7 个「天坑」——从 TypeScript 编译到 Node 与浏览器
前端
Csvn9 小时前
🎯 Web 性能 API 集合:Performance Observer 的 5 个冷门妙用
前端
Csvn9 小时前
深入 React 闭包陷阱:从根源上理解并根治 stale closure
前端
whyfail9 小时前
前端学 Spring Boot(8):接口为什么越用越慢?
前端·spring boot·后端
用户0595401744610 小时前
LangChain 记忆测试踩坑实录:这两个坑让我排查了 4 小时
前端·css
程序员黑豆10 小时前
鸿蒙应用开发:@Monitor 装饰器使用教程
前端·harmonyos
用户9385156350710 小时前
从零构建《天龙八部》知识库:EPUB 加载→文本分割→向量嵌入→Milvus 存储→RAG 问答,一条链路打通
javascript·人工智能·全栈
SamChan9011 小时前
在Web应用中集成PDF多语言翻译功能:PDFTranslator API实战指南
前端·python·ai·pdf·yapi·机器翻译