使用dayjs实现周切换

效果图:
在这里插入图片描述

 <div v-if="weekData.length > 0">
            <div class="week-moudel" v-for="(itemFirst, indexFirst) in weekData" :key="indexFirst">
                <div class="time-moudel" :class="determineColor(itemFirst) ? 'time-font' : ''">
                    <span>{{ itemFirst.day }}</span>
                    <p>{{ getWeek(itemFirst) }}</p>
                </div>
                <div style="flex: 1">
                    <div v-if="itemFirst.dcAffairPushes.length > 0">
                        <div class="content-moudel" v-for="(itemSecond, indexSecond) in itemFirst.dcAffairPushes" :key="indexSecond" @click="goDetails(itemSecond)">
                            <div class="first-box">
                                <span class="icon-title">厅领导</span>
                                <span class="title">{{ itemSecond.fTaskName }}</span>
                            </div>
                            <div class="second-box">
                                <span class="time">
                                    <svg-icon icon='time' class="week-icon-common"></svg-icon>{{ itemSecond.fStartTime + '~' + itemSecond.fEndTime }}
                                </span>
                                <span class="dept">
                                    <svg-icon icon='adressIcon' class="week-icon-common"></svg-icon>{{ itemSecond.fAddress }}
                                </span>
                            </div>
                        </div>
                    </div>
                    <div v-else>
                        <div class="content-moudel">
                            <div class="first-box">
                                <span class="no-title">无事件</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div v-else>
          <div class="notResult">
              <div>
                  <svg-icon icon='notResult' classNmae="search-box"></svg-icon>
              </div>
              <span>无相关内容</span>
          </div>
        </div>
```
方法
```js
preNextBtn (val) {
      const weekChangeDate = dayjs(this.currentDate)
      if (val === 'prev') { // 上一周
        this.currentDate = dayjs(weekChangeDate.subtract(7, 'day')).format('YYYY-MM-DD')
        this.weekNum = this.weekNum - 1
      } else { // 下一周
        this.currentDate = dayjs(weekChangeDate.add(7, 'day')).format('YYYY-MM-DD')
        this.weekNum += 1
      }
      this.$emit('selectWeek', this.currentDate, this.weekNum)
    },
    determineColor (item) {
      return item.date === dayjs(new Date()).format('YYYY-MM-DD')
    },
    // 转化格式
    getWeek (item) {
      const weekObj = [
        '周日',
        '周一',
        '周二',
        '周三',
        '周四',
        '周五',
        '周六'
      ]
      const week = dayjs(item.date).day()
      let weekLabel = ''
      for (const key in weekObj) {
        if (key * 1 === week) {
          weekLabel = weekObj[key]
        }
      }
      //   weekObj.forEach(res => {
      //     if (week === res.value) {
      //       weekLabel = res.label
      //     }
      //   })
      return weekLabel
    },
    // 进入详情页
    goDetails (item) {
      const params = {
        fId: item.fId
      }
      this.$router.push({ path: '/eidtDetails', query: params })
    }
```

注意使用dayjs的week方法要先定义
```js
import dayjs from 'dayjs'
var weekOfYear = require('dayjs/plugin/weekOfYear')
var weekday = require('dayjs/plugin/weekday')
dayjs.extend(weekOfYear)
dayjs.extend(weekday)
```

![在这里插入图片描述](https://img-blog.csdnimg.cn/9b01503c1fac4354a6ad235046aaa978.png)

知道了年份,周数和星期如何推算出具体日期

```js
dayjs('2023').week(17).day(6).format('YYYY-MM-DD')
```
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值