因为element-ui组件没有开发季度选择的组件,但是我们在项目开发中会经常用到,所以我把我在开发中用到这个组件的一些问题进行了归纳,如下:

效果图:

 代码:

<div>
  <mark
   style="position:fixed;top:0;bottom:0;left:0;right:0;background:rgba(0,0,0,0);z-index:999;"
    v-show="showSeason"
    @click.stop="showSeason=false"
  ></mark>
  <el-input placeholder="请选择季度" v-model="showSeason" style="width:209px;"
            @focus="showSeason=true">
    <i slot="prefix" class="el-input__icon el-icon-date"></i>
  </el-input>
  <el-card
    class="box-card"
    style="width:322px;padding: 0 3px 20px;margin-top:10px;position:fixed;z-index:9999;background-color: white !important;"
    v-show="showSeason"
  >
    <div slot="header" class="clearfix" style="text-align:center;padding:0">
      <button
        type="button"
        aria-label="前一年"
        class="el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left"
        @click="prev"
      ></button>
      <span role="button" class="el-date-picker__header-label">{{ year }}年</span>
      <button
        type="button"
        aria-label="后一年"
        @click="next"
        class="el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right"
      ></button>
    </div>
    <div class="text item" style="text-align:center;">
      <el-button
        type="text"
        size="medium"
        style="width:40%;color: #606266;float:left;"
        @click="selectSeason(0)"
      >第一季度
      </el-button>
      <el-button
        type="text"
        size="medium"
        style="float:right;width:40%;color: #606266;"
        @click="selectSeason(1)"
      >第二季度
      </el-button>
    </div>
    <div class="text item" style="text-align:center;">
      <el-button
        type="text"
        size="medium"
        style="width:40%;color: #606266;float:left;"
        @click="selectSeason(2)"
      >第三季度
      </el-button>
      <el-button
        type="text"
        size="medium"
        style="float:right;width:40%;color: #606266;"
        @click="selectSeason(3)"
      >第四季度
      </el-button>
    </div>
  </el-card>
</div>

export default {
  data() {
    return {
      valueArr: ['-01', '-02', '-03', '-04'],//接口接受的格式(一个季度传一个整体时间)
      //valueArr: ['01-02-03', '04-05-06', '07-08-09', '10-11-12'],//接口接受的格式(一个季度传一个每个的时间,一个季度三个月)
      showSeason: false,
      season: '',
      year: new Date().getFullYear(),
    };
  },
methods: {
prev() {
  this.year = this.year - 1
},
next() {
  this.year = this.year + 1
},
selectSeason(i) {
  this.season = i + 1
  this.showSeason = `${this.year}` + this.valueArr[i]
  // let arr = this.valueArr[i].split('-')
  // arr.forEach(item => {
  //   this.showSeason += `${this.year}` + "-" + item + ","
  // })
  // // 截取最后一个字符之前的字符
  // this.showSeason = this.showSeason.slice(0, this.showSeason.length - 1)
  this.showSeason = false
  this.showSeason = `${this.year}年第${this.season}季度`
},

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐