|
|
- <template>
- <view>
- <picker mode="multiSelector" :range="range" @change="handleChange">
- <!-- <view class="picker">
- {{range[0][value[0]]}}年{{range[1][value[1]]}}月{{range[2][value[2]]}}日
- {{range[3][value[3]]}}时{{range[4][value[4]]}}分
- </view> -->
- <slot></slot>
- </picker>
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
- range: [
- // 年
- [],
- // 月
- [],
- // 日
- [],
- // 时
- [],
- // 分
- []
- ],
- value: [0, 0, 0, 0, 0] // 默认值
- };
- },
- mounted() {
- // 初始化年月日时分范围
- this.initDateRange();
- },
- methods: {
- initDateRange() {
-
- const now = new Date();
- const year = now.getFullYear();
- const yearx = now.getFullYear();
- const month = now.getMonth() + 1;
- const day = now.getDate();
- const hour = now.getHours();
- const minute = now.getMinutes();
-
- this.value = [yearx, month, day, hour, minute]
-
- const years = [];
- for (let i = year; i <= year + 10; i++) {
- years.push(i > 9 ? i : '0' + 1);
- }
-
- const months = [];
- for (let i = 1; i <= 12; i++) {
- months.push(i > 9 ? i : '0' + i);
- }
-
- const days = [];
- const daysInMonth = new Date(year, month, 0).getDate();
- for (let i = 1; i <= daysInMonth; i++) {
- days.push(i > 9 ? i : '0' + i);
- }
-
- const hours = [];
- for (let i = 0; i < 24; i++) {
- hours.push(i > 9 ? i : '0' + i);
- }
-
- const minutes = [];
- for (let i = 0; i < 60; i++) {
- minutes.push(i > 9 ? i : '0' + i);
- }
-
- this.range = [years, months, days, hours, minutes];
- //this.value = [
- // years.indexOf(year), months.indexOf(month), days.indexOf(day),
- // hours.indexOf(hour), minutes.indexOf(minute)
- //];
- },
- handleChange(e) {
- this.value = e.detail.value
- const str =
- `${this.range[0][this.value[0]]}-${this.range[1][this.value[1]]}-${this.range[2][this.value[2]]} ${this.range[3][this.value[3]]}:${this.range[4][this.value[4]]}:00`;
- if (!this.isFutureDate(str)) {
- uni.showToast({
- title: "不可以早于当前时间",
- icon: "none"
- })
- return;
- }
- this.$emit("selected", str)
- },
- isFutureDate(data) {
- let m = String(data).replace("年", "-").replace("月", "-").replace("日","").replace("时",":").replace("分",":00")
- let inputDate = new Date(m);
- let currentDate = new Date();
- return inputDate > currentDate;
- }
- }
- };
- </script>
-
- <style>
- .picker {
- padding: 15px;
- background-color: #f0f0f0;
- text-align: center;
- }
- </style>
|