1. <!-- html -->
  2. <template>
  3. <!-- 控件样式 -->
  4. <div class="select">
  5. <div class="select_button" v-if="selectType === '1'" @click='selectAction'>
  6. <div class="title_view">
  7. <div class="title" v-if='selectValue.length===0'> {{title}} </div>
  8. <div class="title" v-else> {{selectValue}} </div>
  9. </div>
  10. <img src="../../assets/select.png" class="select_photo">
  11. </div>
  12. <!-- 控件点选样式 -->
  13. <div class="suite_view" ref='suite' v-if='isShow'>
  14. <ul class="item_view" v-if="items.length > 0">
  15. <li class="item" v-for='item in items' :key='item' @click='selectItemAction'>{{item}}</li>
  16. </ul>
  17. <ul class="item_view" v-else>
  18. <li class="item" v-for='day in days' :key='day' @click='selectItemAction'>{{day}}</li>
  19. </ul>
  20. </div>
  21.  
  22. <!--不可选-->
  23. <div class="select_button" v-if="selectType === '2'">
  24. <div class="title_view">
  25. <div class="title" v-if='selectValue.length===0' style="color: gray"> {{title}} </div>
  26. <div class="title" style="color: gray" v-else> {{selectValue}} </div>
  27. </div>
  28. <img src="../../assets/selectNO.png" class="select_photo">
  29. </div>
  30.  
  31. </div>
  32. </template>
  33.  
  34. <!-- js -->
  35. <script>
  36. export default {
  37. name: 'select',
  38. props: {
  39. selectType: '', // 该值为1:可点选,2:不可点选
  40. title: '',
  41. unit: '',
  42. items: {
  43. type: Array,
  44. default: function () {
  45. return []
  46. }
  47. }
  48. },
  49. data () {
  50. return {
  51. isShow: false,
  52. selectValue: '',
  53. days: []
  54. }
  55. },
  56. methods: {
  57. // 点击 弹出套件
  58. selectAction: function () {
  59. this.isShow = !this.isShow
  60. this.$emit('selectAction')
  61. },
  62. // 获取用户点选的数值 并且传给父控件
  63. selectItemAction: function () {
  64. this.isShow = !this.isShow
  65. this.selectValue = event.target.innerText
  66. this.$emit('itemSelectAction', this.selectValue)
  67. },
  68. // 通过 $refs 操作执行该方法(通过判断平年闰年来确定日期)
  69. calculationOfDay: function (year, month) {
  70. year = parseInt(year)
  71. month = parseInt(month)
  72. // 闰年
  73. if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
  74. if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
  75. this.setDays(31)
  76. } else {
  77. // 二月份 闰年28天
  78. if (month === 2) {
  79. this.setDays(29)
  80. } else {
  81. this.setDays(30)
  82. }
  83. }
  84. } else {
  85. // 平年
  86. if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
  87. this.setDays(31)
  88. } else {
  89. // 二月份 闰年28天
  90. if (month === 2) {
  91. this.setDays(28)
  92. } else {
  93. this.setDays(30)
  94. }
  95. }
  96. }
  97. },
  98. setDays: function (max) {
  99. this.days = [] // 清空
  100. for (var i = 1; i <= max; i++) {
  101. this.days.push(i)
  102. }
  103. },
  104. setDefaultValue: function (value) {
  105. this.selectValue = value
  106. }
  107. },
  108. created () {
  109. // 设置日期默认值
  110. this.setDays(30)
  111. },
  112. mounted () {
  113. }
  114.  
  115. }
  116. </script>
  117.  
  118. <!-- css -->
  119. <!-- Add "scoped" attribute to limit CSS to this component only -->
  120. <style scoped>
  121. .select {
  122. height: 3rem;
  123. width: 25vw;
  124. }
  125. .select_button {
  126. height: 100%;
  127. width: 100%;
  128. border-style: solid;
  129. border-width: 0.05rem;
  130. border-color: black;
  131. display: flex;
  132. flex-direction: row;
  133. align-items: center;
  134. }
  135. .title_view {
  136. width: 18vw;
  137. /*height: 100%;*/
  138. /*background-color: red;*/
  139. display: flex;
  140. flex-direction: row;
  141. align-items: center;
  142. }
  143. .title {
  144. width: 100%;
  145. font-size: 1rem;
  146. text-align: center;
  147. color: black;
  148. /*background-color: blue;*/
  149. }
  150. .select_photo {
  151. margin-left: 1vw;
  152. height: 1rem;
  153. width: 1rem;
  154. }
  155. .suite_view {
  156. position: absolute;
  157. -webkit-overflow-scrolling: touch;
  158. /*margin-top: 0.1rem;*/
  159. height: 13rem;
  160. width: 25.5vw;
  161. background-color: lightgray;
  162. display: flex;
  163. flex-direction: column;
  164. align-items: center;
  165. overflow-y: scroll;
  166. font-size: 1rem;
  167. text-align: center;
  168. }
  169. .item_view {
  170. padding: 0;
  171. width: 100%;
  172. }
  173. .item {
  174. width: 100%;
  175. margin-top: 0.5rem;
  176. font-size: 1rem;
  177. color: black;
  178. text-align: center;
  179. }
  180. </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. 【C#设计模式2】简单工厂模式

    我们在编程的时候,每当"new"一个对象之后,这个对象就依赖于这个类了.如果在后期的维护过程中由于某些原因需要修改一下这个类,则唯一的做法就是打开源代码,进行修改,修改所有与这个对 ...

  2. Navicat安装及使用

    一.安装Navicat 1.下载安装文件:navicat11.0.17_premium_cs_x86.exe(32位) 2.Oracle 的 Instance Client:instantclient ...

  3. 区块链学习(四)truffle部署编译智能合约以太坊私有链

    前面我们介绍了以太坊私有链的搭建以及多节点私有链网络,这次我们介绍如何使用truffle框架来部署编译智能合约到我们之前搭建的私有链网络中. 搭建环境及需使用的工具:ubuntu18.04  Truf ...

  4. Win10下 jdk的安装

    jdk 的下载地址 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 在 D 盘 ...

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

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

  6. 轮播图CSS

    css3中的animation:动画名 持续时间 动画的速度曲线 动画开始之前的延迟 动画播放的次数 是否应该轮流反向播放动画 动画播放次数:n(定义应该播放多少次动画) : infinite(无限循 ...

  7. 图解JS

    弱语言 数据类型 隐式转换 弱等于 严格等于 包装对象 字符串转为包装对象 类型检测 表达式 运算符 块 try...catch 对象结构 创建对象,原型链 属性读写 getter,setter 序列 ...

  8. mac 已损坏 移至废纸篓

    1.问题描述: 从网页下载的安装包,总是提示“已损坏,移至废纸篓”这类的信息 2.原因: 系统版本过高,对安全性进行了校验. 3.解决方案:命令行输入以下命令,然后输入密码 sudo spctl -- ...

  9. [转帖]新手必读,16个概念入门 Kubernetes

    新手必读,16个概念入门 Kubernetes https://www.kubernetes.org.cn/5906.html 2019-09-29 22:13 中文社区 分类:Kubernetes教 ...

  10. 自定义 Win10 系统鼠标右键发送到的选项

    系统默认的右键「发送到」菜单只有几个特定的项目,如果要想发送到其他目标,可通过在资源管理器地址栏中访问 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\S ...