1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <template>
- <a-range-picker
- style="width:100%"
- :value="date"
- show-time
- :disabledDate="disabledDate"
- :format="dateFormat"
- @change="dateChange"
- @calendarChange="dateCalendarChange"
- :placeholder="['开始时间', '结束时间']" />
- </template>
- <script>
- import moment from 'moment'
- export default {
- props: {
- value: {
- type: Array,
- default: () => {
- return []
- }
- }
- },
- data () {
- return {
- date: this.value,
- dateFormat: 'YYYY-MM-DD HH:mm:ss',
- selectPriceDate: ''
- }
- },
- methods: {
- // 不可选日期
- disabledDate (current) {
- // 最早可倒推选择两年数据,最晚为今天
- const minYearVs = moment().subtract(2, 'years') // 两年前 负值
- const maxYearVs = moment().endOf('day') // 今天,包含今天
- // 限制最多只能查一年区间的数据
- if (this.selectPriceDate) {
- const oMinYearVs = moment(this.selectPriceDate, 'YYYY-MM-DD HH:mm:ss').subtract(1, 'years') // 当前选中开始日期前推一年
- const oMaxYearVs = moment(this.selectPriceDate, 'YYYY-MM-DD HH:mm:ss').add(1, 'years') // 当前选中开始日期后推一年
- // 判断两个时间段是否相差m天 第二个参数指相差单位,第三个参数指是否返回浮点形式(小数)
- const beginDate = minYearVs.diff(oMinYearVs, 'days') > 0 ? minYearVs : oMinYearVs // 若当前选中开始日期前推一年超出最多倒推两年数据时,则以两年为标准
- const endDate = maxYearVs.diff(oMaxYearVs, 'days') > 0 ? oMaxYearVs : maxYearVs // 若当前选中开始日期后推一年超出今天时,则以今天为标准
- return current && current < beginDate || current && current > endDate
- } else {
- return current && current > maxYearVs || current && current < minYearVs
- }
- },
- // 日期 change
- dateChange (date, dateStrings) {
- this.selectPriceDate = ''
- this.date = date
- this.$emit('change', dateStrings)
- },
- dateCalendarChange (date, dateStrings) {
- this.selectPriceDate = date[0]
- },
- resetDate (val) {
- this.date = val || []
- }
- }
- }
- </script>
|