Vue 通过条件变化,控制el-select的选中值变化
业务描述:根据时间条件查询记录,但是数据分表,月类型select选择,默认是当前一个月的数据,如果日期是历史的数据查询,得选择月份类型是3个月,才能组合表查询。要求:根据日期变化,设置select的选择值变化。查了很多,都是 select的值变化后执行的操作,发现一个 设置值的方法,借鉴下,测试可以用,实现如下直接代码<template><div class="mod-confi
业务描述:根据时间条件查询记录,但是数据分表,月类型select选择,默认是当前一个月的数据,如果日期是历史的数据查询,得选择月份类型是3个月,才能组合表查询。
要求:根据日期变化,设置select的选择值变化。
查了很多,都是 select的值变化后执行的操作,发现一个 设置值的方法,借鉴下,测试可以用,实现如下
直接代码
<template>
<div class="mod-config">
<el-form :inline="true" :model="filters">
<el-form-item>
<el-select v-model="monthType" placeholder="月份类型">
<el-option
v-for="item in monthTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<div class="block">
<el-date-picker
v-model="time1"
type="date"
placeholder="选择消费日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
:picker-options="this.changeDateSeletmonthType()">
</el-date-picker>
</div>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data () {
return {
time1:"",
monthTypeOptions: [
{
value: "1",
label: "一个月"
},
{
value: "2",
label: "三个月"
}
],
monthType: "1", // 选取默认值在里面就可以了,比如: select:"1"
}
},
methods: {
//选择日期后,联动变化选择月份类型
changeDateSeletmonthType(){
if (!this.time1) {
this.time1 = ""
//清空处理,默认选择
this.monthType = this.monthTypeOptions[0].value;
}
if(this.time1!=""){
//console.log('this.time1 = '+ this.time1)
var selectDate = new Date(this.time1);
var y,m;
y = new Date().getFullYear();
m = new Date().getMonth();
//console.log("y="+ y +"m="+ m)
var nowDate = new Date();
if(selectDate > nowDate){
this.$message.error("选择日期不能大于当前日期");
return false;
}
var startDate = new Date();
startDate.setFullYear(y, m, 1);
startDate.setHours(0, 0, 0);
//console.log("startDate="+startDate)
if (selectDate < startDate) {
//console.log("this.monthType = 2")
this.monthType = this.monthTypeOptions[1].value;
}else{
this.monthType = this.monthTypeOptions[0].value;
}
}
},
},
}
</script>
几个说明点:
1、默认选择:monthType: “1”, // 选取默认值在里面就可以了,比如: select:“1”。当然,默认选中好多种写法,自选。
2、日期清空:日期清空后 是null, 不是空字符,会传到后台字符“null”,处理数据带入参数,报错,也是跟踪测试,查询了好久才发现,借鉴解决
if (!this.time1) {
this.time1 = ""
}
3、日期的判断
y = new Date().getFullYear()使用此方法,浏览器都能用, 结果是 2021
4、设置select的值
this.monthType = this.monthTypeOptions[1].value;
monthType 是 v-model=“monthType”
此处,不能直接写 this.monthType = 2,思路也是根据变化赋值,但是显示
就这个地方困扰了很久, 看到一个设置select选中的方式 this.selectOptions[1].value;
借鉴试试,达到了目的。
当前月日期
历史月日期
可能还有好的方法实现,不是专业前端,有需要就想法解决,实现就好。
更多推荐



所有评论(0)