美文网首页
将el-select二次封装成年份选择表单

将el-select二次封装成年份选择表单

作者: Frank_Fang | 来源:发表于2023-04-20 15:46 被阅读0次
<template>
  <el-select v-model="years" multiple :clearable="clearable" :disabled="disabled" @change="changeSelect">
    <el-option v-for="item in yearsOptions" :key="item.value" :label="item.label" :value="item.value" />
  </el-select>
</template>
<script>
export default {
  name: 'YearSelect',
  props: {
    value: {
      type: Array,
      default: () => []
    },
    clearable: {
      type: Boolean,
      default: false
    },
    disabled: {
      type: Boolean,
      default: false
    }
  },
  data () {
    return {
      years: [],
      year: new Date().getUTCFullYear()
    }
  },
  computed: {
    yearsOptions () {
      const year = new Date().getUTCFullYear() + 1
      const result = []
      for (let i = 0; i <= 20; i++) {
        const temp = year - i
        result.push({
          label: temp,
          value: Number(temp)
        })
      }
      return result
    }
  },
  watch: {
    value: {
      handler (newVal, oldVal) {
        if (newVal && newVal.length) {
          if (newVal !== oldVal) {
            const arr = newVal.sort((a, b) => (a - b))
            this.years = arr
          }
        } else {
          this.years.push(this.year)
        }
      },
      immediate: true,
      deep: true
    }
  },
  methods: {
    changeSelect (val) {
      if (val && val.length) {
        this.$emit('input', val)
        this.$emit('change', val)
      } else {
        this.$emit('input', [this.year])
        this.$emit('change', [this.year])
      }
    }
  }
}
</script>
<style>
</style>

引用

<el-form-item prop="years">
  <YearSelect v-model="searchForm.years" placeholder=""></YearSelect>
</el-form-item>

相关文章

  • 二次封装el-select

    需求,多次使用el-select,进行二次封装 遇到的坑:一直获取不到option里的value值,最后使用@in...

  • 可视化表单设计工具,支持markdown, 地图, 代码, js

    可视化生成表单工具基于 element-ui form 的二次封装, 主要特点: 内置 20 多种表单类型, 包括...

  • vue3 二次封装el-form表单

    二次封装el-form,理由无非就是多个地方用同一个表单,懒得重复写校验。 表单组件 组件的使用

  • FormData对象

    FormData对象的作用 1.模拟HTML表单,相当于将HTML表单映射成表单对象,自动将表单对象中的数据拼接成...

  • 表单类型 单选 多选 评分 下拉选择 适用于选项非常多的情况如年份选择,地区选择等 单行文本input 多行文本

  • 解决 el-select 设置默认值后无法切换选项

    给form表单里面的 el-select 下拉框设置一个默认值,但是当下拉框重新选择时,页面下拉框的值却不变, 原...

  • element table中的内嵌组件不能自动更新

    1、如果没有将table二次封装: 声明一个key属性值为随机数即可 2、已将table二次封装 如果你已经将ta...

  • FormData

    FormData对象 作用:1 模拟HTML表单,相当于HTML表单映射成表单对象,自动将表单对象中的数据拼接成请...

  • vue elementUI 二次封装动态增减可编辑的表格,并获取

    场景:在项目的开发过程中,经常使用到表单中嵌套着可编辑的表格,这个时候就需要表单的双重校验。本文栗子为二次封装动态...

  • 程序心得

    前端表单提交: 获取点击事件传过来的表单值,封装成js对象 将其它比如小程序选择器等本地非表单属性添加到该对象中 ...

网友评论

      本文标题:将el-select二次封装成年份选择表单

      本文链接:https://www.haomeiwen.com/subject/kcnrjdtx.html