uni-app 月历选择插件(月账期选择)

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 月历选择插件(月账期选择)

希望能提供一个月份按年历展示的插件,可左右切换年份

1 回复

针对您提到的uni-app月历选择插件(月账期选择)的需求,以下是一个基于uni-app框架的简单月历选择组件实现示例。此示例将展示如何创建一个基本的月历界面,并允许用户选择一个月份作为账期。

1. 创建组件文件

首先,在您的uni-app项目中创建一个新的组件文件,例如MonthPicker.vue

<template>
  <view class="month-picker">
    <view class="calendar-header">
      <button @click="prevMonth">‹</button>
      <text>{{ currentYear }}年{{ currentMonth + 1 }}月</text>
      <button @click="nextMonth">›</button>
    </view>
    <view class="calendar-body">
      <view v-for="(day, index) in days" :key="index" class="calendar-day">
        <text v-if="day !== 0" @click="selectMonth(currentYear, currentMonth, day)">{{ day }}</text>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      currentYear: new Date().getFullYear(),
      currentMonth: new Date().getMonth(),
      daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    };
  },
  computed: {
    days() {
      const year = this.currentYear;
      const month = this.currentMonth;
      let daysInCurrentMonth = this.daysInMonth[month];
      if (month === 1 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0)) {
        daysInCurrentMonth = 29;
      }
      const firstDayOfMonth = new Date(year, month, 1).getDay();
      const daysArray = Array.from({ length: daysInCurrentMonth }, (_, i) => i + 1);
      const emptyDays = Array.from({ length: firstDayOfMonth }, () => 0);
      return [...emptyDays, ...daysArray];
    }
  },
  methods: {
    prevMonth() {
      if (this.currentMonth === 0) {
        this.currentMonth = 11;
        this.currentYear -= 1;
      } else {
        this.currentMonth -= 1;
      }
    },
    nextMonth() {
      if (this.currentMonth === 11) {
        this.currentMonth = 0;
        this.currentYear += 1;
      } else {
        this.currentMonth += 1;
      }
    },
    selectMonth(year, month, day) {
      this.$emit('select', { year, month, day });
    }
  }
};
</script>

<style>
/* 样式部分根据您的需求自行调整 */
.month-picker { /* ... */ }
.calendar-header { /* ... */ }
.calendar-body { /* ... */ }
.calendar-day { /* ... */ }
</style>

2. 使用组件

在需要使用月历选择的页面中引入并使用该组件:

<template>
  <view>
    <MonthPicker @select="onMonthSelect" />
  </view>
</template>

<script>
import MonthPicker from '@/components/MonthPicker.vue';

export default {
  components: {
    MonthPicker
  },
  methods: {
    onMonthSelect(selected) {
      console.log('Selected Month:', selected);
      // 处理选中的月份
    }
  }
};
</script>

此示例展示了基本的月历选择和展示功能,您可以根据实际需求进一步扩展和优化,例如添加样式、处理闰年、优化用户体验等。

回到顶部