Vue3 ele-plus 关于日期选择范围不可跨月

需求:日期选择范围不可跨月(选了第一个之后,其他月份的日期变成灰色,不可选)

上图要变成下图满足需求

 解决:首先要了解几个事件

 然后就开始处理了

 然后这样可以初步满足需求,但有个小bug,当点击第一次的时候,但我不去点第二次就没有了结束时间,所以它会一直卡在那里,并且关闭弹窗都没用,而且我还找不到第一次点击他的值存放在哪里的。

所以我选择直接g,当然不是真g,我直接摧毁一波弹窗,直捣黄龙

 然后再加上关闭弹窗的时候,直接来一手偷梁换柱

 把月份开始日期和结束日期全部重置;并且把表单重置一手;这样就可以得到我们想要的效果了;

代码部分:

<el-date-picker 
	v-model="state.ruleForm1.time1" 
	type="daterange" 
	range-separator="-"
	start-placeholder="开始日期" 
	value-format="YYYY-MM-DD" 
	end-placeholder="结束日期" 
	size="default"
	style="width: 100%" 
	:clearable="true"
	@calendar-change="calendarChange"
	@visible-change="visibleChange" 
	:disabled-date="disabledFn" 
	@change="changeTime" />






let timeStar = ref(0)
let timeEnd = ref(0)
const calendarChange = (e: Date[]) => {
	let year = Number(formatDate(e[0], 'YYYY-mm-dd').substring(0, 4))
	let month = Number(formatDate(e[0], 'YYYY-mm-dd').substring(5, 7))
	let day = getMonthDay(year, month)
	let stringTime = year + '-' + month + '-' + day
	let stringTime2 = year + '-' + month + '-01'
	timeStar.value = Date.parse(new Date(stringTime2));
	timeEnd.value = Date.parse(new Date(stringTime));
};
const getMonthDay = (year: number, month: number) => {
	let days = new Date(year, month, 0).getDate()
	return days
}
const visibleChange = (e: any) => {
	if (e) {
	}
};
const changeTime = (e) => {
	if (!e) {
		timeEnd.value = 0
		timeStar.value = 0
	}
}
const disabledFn = (current) => {
	if (timeEnd.value == 0) return false
	return current.getTime() > timeEnd.value || current.getTime() < timeStar.value
};







// 关闭弹窗
const closeDialog = () => {
	timeEnd.value = 0
	timeStar.value = 0
	dialogRuleForm1Ref.value?.resetFields();
	dialogRuleForm2Ref.value?.resetFields();
}

有啥好的建议都可以说的,我可以学习学习

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
vue-ele-upload-image的使用方法如下: 1. 安装vue-ele-upload-image组件 你可以使用npm或者yarn来安装vue-ele-upload-image组件,具体命令如下: ``` npm install vue-ele-upload-image --save ``` 或者 ``` yarn add vue-ele-upload-image ``` 2. 引入vue-ele-upload-image组件 你可以在需要使用vue-ele-upload-image组件的地方引入该组件,具体代码如下: ```javascript import Vue from 'vue' import EleUploadImage from 'vue-ele-upload-image' Vue.use(EleUploadImage) ``` 3. 在模板中使用vue-ele-upload-image组件 你可以在模板中使用vue-ele-upload-image组件,具体代码如下: ```html <ele-upload-image :action="uploadUrl" :headers="uploadHeaders" :multiple="true" :limit="5" :size="1024 * 1024 * 2" :format="['jpg', 'jpeg', 'png']" :data="uploadData" :before-upload="beforeUpload" :on-success="onSuccess" :on-error="onError" :on-remove="onRemove" > <el-button type="primary">点击上传</el-button> </ele-upload-image> ``` 其中,各个参数的含义如下: - `action`:上传图片的地址。 - `headers`:上传图片时需要携带的请求头。 - `multiple`:是否支持多选图片,默认为false。 - `limit`:上传图片的最大数量,默认为1。 - `size`:上传图片的最大大小,默认为2MB。 - `format`:上传图片的格式限制,默认为['jpg', 'jpeg', 'png']。 - `data`:上传图片时需要携带的额外数据。 - `before-upload`:上传图片前的回调函数。 - `on-success`:上传图片成功的回调函数。 - `on-error`:上传图片失败的回调函数。 - `on-remove`:删除图片的回调函数。 以上就是vue-ele-upload-image组件的使用方法,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值