ElementUi el-date-picker封装

news/2024/7/24 7:59:44 标签: vue

前言:由于el-date-picker返回的是一个数组且没有格式化,使用起来并不是很方便,所有个人稍微封装了下,写的不好,有问题请多指教!

vue_2">第一步 新建vDatePicker.vue

<template>
	<el-date-picker 
		v-model="Times"  
		type="daterange" 
		:range-separator="rangeName" 
		:start-placeholder="startName"
		:end-placeholder="endName" 
		@change="getTime">
	</el-date-picker>
</template>

<script>
	import {
		ref,
	} from "vue";
	import utils from "../utils/utils.js"//这边日期格式的代码就不展示了,这个比较简单哈
	export default {
		props:{
			rangeName:{
				type:String,
				default:'至'
			},
			startName:{
				type:String,
				default:'开始日期'
			},
			endName:{
				type:String,
				default:'结束日期'
			},
		},
		setup(props,{ slots, attrs, emit }){
			  const Times = ref([]);
			  const getTime = ()=>{
				  if(Times.value && Times.value.length>0){
					let arr =[utils.dateFormat(Times.value[0]),utils.dateFormat(Times.value[1])];
					emit('itemChange', arr)
				  }else{
				  	emit('itemChange', [])
				  }
			  }
			  return{
				  Times,
				  getTime
			  }
			
		}
	}
</script>

<style>
</style>

第二步在父组件引用

<template>
	<!-- 可以根据自己的需求动态设置,组件中也设置了默认值 -->
	<!-- :rangeName="至" -->
	<!-- :startName="**开始日期" -->
	<!-- :endName:"**结束日期" -->
	<v-date-picker  @itemChange="getTime"/>
</template>
<script>
	import {
		ref,
		reactive,
		getCurrentInstance,
		h
	} from "vue";
	import {
		useStore
	} from "vuex";
	import {
		ElMessage,
		ElMessageBox
	} from "element-plus";
	import {
		getUserInfo
	} from "../../utils/auth.js"
	import utils from "../../utils/utils.js"
	import vPagination from '../../components/pagination.vue';
	import vTable from '../../components/table.vue';
	import vDatePicker from '../../components/vDatePicker.vue';
	export default {
		name: "records",
		components: {
			vPagination,
			vTable,
			vDatePicker
		},
		setup() {
			const config = reactive({
				loading:true,
				tableText:'',
				pageTotal:0,
				query:{
				//这边是我自己项目中用到的一些参数,根据自己的需求修改
					contractNos: '',
					repayStatus: "",
					repayTimeStart: '',
					repayTimeEnd: '',
					page: 1,
					limit: 10, //page第几页,limit是一页几个
				}
			});
			
			/这里给开始时间和结束时间赋值
			const getTime = (e)=>{
				config.query.repayTimeStart = e[0];
				config.query.repayTimeEnd = e[1];
			}
			
			
			return {
				getTime
			};
		},
	};
</script>

script setup 写法

<template>
	<el-date-picker v-model="Times" type="daterange" :range-separator="rangeName" :start-placeholder="startName"
		:end-placeholder="endName" @change="getTime">
	</el-date-picker>
</template>

<script setup>
	import {
		ref,
		//defineProps,defineEmits 是一个编译器宏,不再需要导入
	} from "vue";
	import utils from "../utils/utils.js"
	defineProps({
		rangeName: {
			type: String,
			default: '至'
		},
		startName: {
			type: String,
			default: '开始日期'
		},
		endName: {
			type: String,
			default: '结束日期'
		},
	})

	const Times = ref([]);
	const emit = defineEmits(['itemChange'])
	const getTime = () => {
		if (Times.value && Times.value.length > 0) {
			let arr = [utils.dateFormat(Times.value[0]), utils.dateFormat(Times.value[1])];
			emit('itemChange', arr)
		} else {
			emit('itemChange', [])
		}
	}
</script>

<style>
</style>


http://www.niftyadmin.cn/n/689730.html

相关文章

ACMUG

http://acmug.com/acmug-member/转载于:https://www.cnblogs.com/zengkefu/p/5072885.html

CMS本质上是什么

2015-121.数据可以任意取和构造&#xff0c;结构也很自由&#xff0c;不一定是“站点&#xff0d;栏目&#xff0d;文章&#xff0d;评论”。2.主要用于显示&#xff0c;前台不产生数据&#xff08;评论、浏览次数除外)。3.在模版进行循环、判断&#xff0c;也比后台写代码要方…

Java 面向对象编程_Java面向对象编程

面向对象的特点1.封装 2.继承 3.多态一、封装1. 类&#xff1a;把一类事物的静态属性和动态执行的操作组合在一起得到类。 抽象的2. 对象&#xff1a;类的实例 具体的 有生命周期3. 类的构造函数特点&#xff1a;函数名与类型相同&#xff1b;没有返回类型&#…

Vue3+ElementUi el-table简单封装

前言&#xff1a;一次简单的封装&#xff0c;还不够完善&#xff0c;主要是根据自己的需求封装的。。。直接贴代码&#xff01; 第一步 vTable.vue <template><el-table v-loading"config.loading"header-row-style"48px"height580border:class…

串联端接电阻对信号上升时间的影响

信号反射是信号完整性中一个最基本的问题&#xff08;因为阻抗不匹配产生反射波&#xff09;。串联端接是高速电路设计中是抑制信号反射最常用的措施。采用多大的端接电阻可以有效的解决信号反射的问题&#xff0c;通常采用仿真的方法来解决。也许你在做信号完整性仿真的时候会…

接收服务器返回的文件流并下载

下载或导出xlsx const exportExcel () >{proxy.$request({url: api/export,method: POST,responseType: arraybuffer,data:{//根据需求设置参数}}).then(response > {let fileName response.headers[content-disposition];//我们的fileName返回在headers&#xff0c;根…

iOS 的 Delegate Notification KVO

区别&#xff1a; delegate 的 优势 &#xff1a; 1.非常严格的语法。所有将听到的事件必须是在delegate协议中有清晰的定义。 2.如果delegate中的一个方法没有实现那么就会出现编译警告/错误 3.协议必须在controller的作用域范围内定义 4.在一个应用中的控制流程是可跟踪的并…

蜂窝布局+背景切换,适合官网的特效

直接贴代码 <template> <div :class"content-center cclassTag"><div class"tit brand">{{$t(content.aboutMes.contentTit2)}}</div><div class"honeycomb-div"><div class"wrap"><ul>&l…