<!-- html -->
<template>
<!-- 控件样式 -->
<div class="select">
<div class="select_button" v-if="selectType === '1'" @click='selectAction'>
<div class="title_view">
<div class="title" v-if='selectValue.length===0'> {{title}} </div>
<div class="title" v-else> {{selectValue}} </div>
</div>
<img src="../../assets/select.png" class="select_photo">
</div>
<!-- 控件点选样式 -->
<div class="suite_view" ref='suite' v-if='isShow'>
<ul class="item_view" v-if="items.length > 0">
<li class="item" v-for='item in items' :key='item' @click='selectItemAction'>{{item}}</li>
</ul>
<ul class="item_view" v-else>
<li class="item" v-for='day in days' :key='day' @click='selectItemAction'>{{day}}</li>
</ul>
</div> <!--不可选-->
<div class="select_button" v-if="selectType === '2'">
<div class="title_view">
<div class="title" v-if='selectValue.length===0' style="color: gray"> {{title}} </div>
<div class="title" style="color: gray" v-else> {{selectValue}} </div>
</div>
<img src="../../assets/selectNO.png" class="select_photo">
</div> </div>
</template> <!-- js -->
<script>
export default {
name: 'select',
props: {
selectType: '', // 该值为1:可点选,2:不可点选
title: '',
unit: '',
items: {
type: Array,
default: function () {
return []
}
}
},
data () {
return {
isShow: false,
selectValue: '',
days: []
}
},
methods: {
// 点击 弹出套件
selectAction: function () {
this.isShow = !this.isShow
this.$emit('selectAction')
},
// 获取用户点选的数值 并且传给父控件
selectItemAction: function () {
this.isShow = !this.isShow
this.selectValue = event.target.innerText
this.$emit('itemSelectAction', this.selectValue)
},
// 通过 $refs 操作执行该方法(通过判断平年闰年来确定日期)
calculationOfDay: function (year, month) {
year = parseInt(year)
month = parseInt(month)
// 闰年
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
this.setDays(31)
} else {
// 二月份 闰年28天
if (month === 2) {
this.setDays(29)
} else {
this.setDays(30)
}
}
} else {
// 平年
if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
this.setDays(31)
} else {
// 二月份 闰年28天
if (month === 2) {
this.setDays(28)
} else {
this.setDays(30)
}
}
}
},
setDays: function (max) {
this.days = [] // 清空
for (var i = 1; i <= max; i++) {
this.days.push(i)
}
},
setDefaultValue: function (value) {
this.selectValue = value
}
},
created () {
// 设置日期默认值
this.setDays(30)
},
mounted () {
} }
</script> <!-- css -->
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.select {
height: 3rem;
width: 25vw;
}
.select_button {
height: 100%;
width: 100%;
border-style: solid;
border-width: 0.05rem;
border-color: black;
display: flex;
flex-direction: row;
align-items: center;
}
.title_view {
width: 18vw;
/*height: 100%;*/
/*background-color: red;*/
display: flex;
flex-direction: row;
align-items: center;
}
.title {
width: 100%;
font-size: 1rem;
text-align: center;
color: black;
/*background-color: blue;*/
}
.select_photo {
margin-left: 1vw;
height: 1rem;
width: 1rem;
}
.suite_view {
position: absolute;
-webkit-overflow-scrolling: touch;
/*margin-top: 0.1rem;*/
height: 13rem;
width: 25.5vw;
background-color: lightgray;
display: flex;
flex-direction: column;
align-items: center;
overflow-y: scroll;
font-size: 1rem;
text-align: center;
}
.item_view {
padding: 0;
width: 100%;
}
.item {
width: 100%;
margin-top: 0.5rem;
font-size: 1rem;
color: black;
text-align: center;
}
</style>

  

Vue 日期下拉框的更多相关文章

  1. vue获取下拉框值

    vue获取下拉框的值,用vue-modle,只有点击下拉框的值才会赋值到下拉框中,初始时下拉框没有数据,而改用$event就不会出现这样的问题,下面看代码以及图解: v-model解决方式: < ...

  2. vue select下拉框绑定默认值

    vue select下拉框绑定默认值: 首先option要加value值,以便v-model可以获取到对应选择的值 一.当没有绑定v-model,直接给对应的option加selected属性 二.当 ...

  3. VUE 单选下拉框Select中动态加载 默认选中第一个

    <lable>分类情况</lable> <select v-model="content.tid"> <option v-for=&quo ...

  4. vue实现下拉框全选和输入匹配

    实际项目中的一个需求: 点击文本框,弹出带有复选框的选项,然后获取选中项的数据,传给后面的一个功能.在文本框输入内容,也会动态的匹配下拉列表,并且列表带有全选功能. 朴素的效果图: 我选择了用vue实 ...

  5. vue自定义下拉框组件

    创建下拉框组件 Select.vue <template> <div class="selects"> <div :class="{sele ...

  6. vue+element下拉框样式的点击按钮

    项目中点击按钮实在太多了,怎么办呢?我们就可以将它们制作成像下拉框那样的类似操作 1.HTML样式部分:关键点在于command 方法和属性 1 <el-dropdown 2 size=&quo ...

  7. vue 根据下拉框动态切换form的rule

    taskCategorySelect (val) { // 任务类别下拉选择 if ( val == 5 ) { this.cameraORgateway = false; // true不可以使用 ...

  8. vue 树形下拉框 亲测 好用

    https://vue-treeselect.js.org/ 顺带说一个开发中使用这个组件遇到的问题,关于回显之后无法修改的问题  找了很长时间 原因是数据类型导致的问题,数组里面应该是数字类型,直接 ...

  9. Vue中-下拉框可以选择可以填写

    <el-form-item label="方法名称"> <el-autocomplete popper-class="my-autocomplete&q ...

随机推荐

  1. CentOS安装文件共享samba

    参考:https://jingyan.baidu.com/article/03b2f78cdf811c5ea237aebc.html https://www.linuxidc.com/Linux/20 ...

  2. Linear regression with one variable - Cost function

    摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第二章<单变量线性回归>中第7课时<代价函数>的视频原文字幕.为本人在视频学习过程中逐字逐句记录下 ...

  3. Ubuntu linux 下的基本操作

    防火墙相关: 关闭防火墙: ufw disable

  4. Windows服务操作帮助类

    /// <summary> /// 打开系统服务 /// </summary> /// <param name="serviceName">系统 ...

  5. Ext 默认时间

    Ext js 设置默认时间 实例效果: 实现代码:

  6. uwp,右键浮出获取DataContext(数据上下文)

    列表视图类控件,如ListView/GridView,有时项目需要按下右键浮出选项,来获取Item的DataContext. 下面的示例代码,事先我已经有了一个自定义类Video,并且已经绑定了数据源 ...

  7. Oracle游标的简易用法

    create or replace procedure NW_DelYW(iOPERATION_ID number, sUserID varchar2) is sCurDJBH yw_operatio ...

  8. C++经典类库

    现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有.本文为你介绍了十一种类库,有我们常见的,也有不常见的,一起来看. C++类库介绍 再次体现了C++保持核心语言的效率同时大 ...

  9. WUSTOJ 1241: 到底是几月几日?(Java)

    1241: 到底是几月几日? 题目   输入年月日,输出当前日期是当年的第几天,输入年份和第几天,输出当前日期.更多内容点击标题. 说明   算是水题吧,仅提供代码做参考,不做分析.代码没用JDK自带 ...

  10. 更改CodeBlocks注释的颜色