51 lines
1.4 KiB
Vue
51 lines
1.4 KiB
Vue
<template>
|
||
<view class="date-picker-container">
|
||
<picker mode=multiSelector @change="bindPickerChange" :value="index" :range="range">
|
||
<slot />
|
||
</picker>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { ref } from 'vue'
|
||
import dayjs from 'dayjs'
|
||
|
||
// 定义生成 range 的值的方法
|
||
const getRange = () => {
|
||
const dateArr = [[], []]
|
||
for (var i = 2000; i <= 2099; i++) { dateArr[0].push(`${i}年`) }
|
||
for (var i = 1; i <= 12; i++) { dateArr[1].push(`${i}月`) }
|
||
return { dateArr }
|
||
}
|
||
|
||
export default {
|
||
name: 'date-picker',
|
||
setup(props) {
|
||
// range: 长度表示多少列,数组的每项表示每列的数据
|
||
const { dateArr } = getRange()
|
||
const range = ref(dateArr)
|
||
|
||
// index: 索引数组, 每一项的值表示选择了对应项中的第几个。
|
||
// date 获取时间
|
||
// 【[year, month]】 year、month 为选中的年月,例如选中2022年3月就是 year = 22、month = 2
|
||
const date = dayjs(props.date).format("YYYY-MM")
|
||
const year = Number(date.slice(2, 4))
|
||
const month = Number(date.slice(5, 7))
|
||
const index = ref([year, month - 1])
|
||
console.log(index.value)
|
||
|
||
// bindPickerChange: index 改变时触发该事件
|
||
const bindPickerChange = (e) => {
|
||
index.value = e.detail.value
|
||
console.log(`用户选中20${index.value[0]}年${index.value[1] + 1}月`)
|
||
}
|
||
|
||
return { index, range, bindPickerChange }
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.date-picker-container {
|
||
}
|
||
</style> |